ノート
[BUG] 8372325: Refactor tests under jdk/java/net/httpclient to use ${test.main.class}
HttpClient 配下のテストの @run タグを ${test.main.class} へ置き換えました。
概要#
test/jdk/java/net/httpclient 配下の多数のテストでは,JTReg(OpenJDK 独自のリグレッション・テスト・フレームワーク)
の @run タグにテスト・クラス名を直接書いていました。
たとえば,以下のような指定です。
@run junit/othervm AltServiceUsageTest
しかしながら,このように自己参照的なテスト・クラス名がコード内にあると,少々厄介な問題が生じます。 テストは往々にしてコピ・ペされるものですから,これの変更を忘れると意図しないテストを実行してしまいます。
これを受けて JTReg 7.5.2 からは ${test.main.class} というプレース・ホルダが導入されました1。
これは JTReg アノテーションが付けられたクラスをメタ的に指定するもので,
例えば Main クラスに @run ${test.main.class} がついていれば @run Main というふうになります。
さて,今回の修正ではこのような @run タグ上の明示的なクラス名を ${test.main.class} に置き換えるようにしました。
@run junit/othervm ${test.main.class}
変更対象は 313 ファイルで,機械的な置換が中心です2。
2026/03/18 JBS で発見#
本件を JBS で発見し,java/net/httpclient 配下のテストを確認しました。
@run タグにテスト・クラス名を直接書いているファイルが多数あり,形式も main,junit,othervm,timeout 付きなど複数ありました。
PR では @run タグで実行対象として現れるクラス名だけを ${test.main.class} へ置き換える方針にしました3。
一方で @build に残っている明示的なクラス名は,ビルド依存として別の意味を持つ可能性があるため,この PR では触らないことにしました。
変更量は大きいものの,内容は以下のような単純な置換です。
- * @run main/othervm BasicAuthTest
+ * @run main/othervm ${test.main.class}
- * @run main/othervm CertificateTest GOOD_CERT expectSuccess
+ * @run main/othervm ${test.main.class} GOOD_CERT expectSuccess
2026/04/02 レビュー対応#
Daniel Fuchs 氏4から,差分を確認したうえで,master の変更を取り込んで conflict を解消するようコメントをいただきました。
また,SendaoYan 氏5から,HttpClientExceptionTest の @build やシステム・プロパティ中のクラス名も ${test.main.class} にできるか,というコメントをいただきました。
これについては Fuchs 氏4によると,@build 句やシステム・プロパティはこの PR では触らない方がよいとのことでした。
その後,SendaoYan 氏5から HttpVersionsTest.java が漏れているとの指摘があり,これを追加で修正しました。
2026/04/09 レビュー#
SendaoYan 氏5と Fuchs 氏4にレビューをいただき,Approve されました。
レビューを確認したのち,/integrate を行いました。
2026/04/09 統合#
Fuchs 氏4に /sponsor をしていただき,261011a6 として JDK へ統合されました。
Footnotes#
-
https://bugs.openjdk.org/browse/CODETOOLS-7903981bugs.openjdk.org↩
-
8372325: Refactor tests under jdk/java/net/httpclient to use ${test.main.class} by PeyaPeyaPeyang · Pull Request #30307…This change updates httpclient tests to use ${test.main.class} in @run tags instead of explicitly referencing the test class name. This aligns with the newer jtreg and avoids issu…GitHub
↩
-
8372325: Refactor tests under jdk/java/net/httpclient to use ${test.main.class} by PeyaPeyaPeyang · Pull Request #30307…JDK main-line development https://openjdk.org/projects/jdk - 8372325: Refactor tests under jdk/java/net/httpclient to use ${test.main.class} by PeyaPeyaPeyang · Pull Request #3030…GitHub
↩
-
https://openjdk.org/census#dfuchsopenjdk.org↩ ↩2 ↩3 ↩4
-
https://openjdk.org/census#syanopenjdk.org↩ ↩2 ↩3
-
8372325: Refactor tests under jdk/java/net/httpclient to use ${test.m… · openjdk/jdk@261011aJDK main-line development https://openjdk.org/projects/jdk - 8372325: Refactor tests under jdk/java/net/httpclient to use ${test.m… · openjdk/jdk@261011aGitHub
↩