@@ -203,7 +203,7 @@ func (l javaLang) GenerateRules(args language.GenerateArgs) language.GenerateRes
203203 libName := filepath .Base (args .Rel )
204204 if testHelperJavaClasses .Contains (m ) {
205205 isTestOnly = true
206- libName += "-test-lib"
206+ libName = testHelperLibname ( libName )
207207 }
208208 l .generateJavaBinary (args .File , m , libName , isTestOnly , & res )
209209 }
@@ -235,7 +235,7 @@ func (l javaLang) GenerateRules(args language.GenerateArgs) language.GenerateRes
235235 case "file" :
236236 for _ , tf := range testJavaFiles .SortedSlice () {
237237 extraAttributes := separateTestJavaFiles [tf ]
238- l .generateJavaTest (args .File , args .Rel , cfg .MavenRepositoryName (), tf , isModule , testJavaImportsWithHelpers , extraAttributes , & res )
238+ l .generateJavaTest (args .File , args .Rel , cfg .MavenRepositoryName (), tf , isModule , testJavaImportsWithHelpers , nil , extraAttributes , & res )
239239 }
240240
241241 case "suite" :
@@ -274,7 +274,11 @@ func (l javaLang) GenerateRules(args language.GenerateArgs) language.GenerateRes
274274 sortedSeparateTestJavaFiles .Add (src )
275275 }
276276 for _ , src := range sortedSeparateTestJavaFiles .SortedSlice () {
277- l .generateJavaTest (args .File , args .Rel , cfg .MavenRepositoryName (), src , isModule , testJavaImportsWithHelpers , separateTestJavaFiles [src ], & res )
277+ var testHelperDep * string
278+ if testHelperJavaFiles .Len () > 0 {
279+ testHelperDep = ptr (testHelperLibname (suiteName ))
280+ }
281+ l .generateJavaTest (args .File , args .Rel , cfg .MavenRepositoryName (), src , isModule , testJavaImportsWithHelpers , testHelperDep , separateTestJavaFiles [src ], & res )
278282 }
279283 }
280284 }
@@ -484,7 +488,7 @@ func (l javaLang) generateJavaBinary(file *rule.File, m types.ClassName, libName
484488 })
485489}
486490
487- func (l javaLang ) generateJavaTest (file * rule.File , pathToPackageRelativeToBazelWorkspace string , mavenRepositoryName string , f javaFile , includePackageInName bool , imports * sorted_set.SortedSet [types.PackageName ], extraAttributes map [string ]bzl.Expr , res * language.GenerateResult ) {
491+ func (l javaLang ) generateJavaTest (file * rule.File , pathToPackageRelativeToBazelWorkspace string , mavenRepositoryName string , f javaFile , includePackageInName bool , imports * sorted_set.SortedSet [types.PackageName ], depOnTestHelpers * string , extraAttributes map [string ]bzl.Expr , res * language.GenerateResult ) {
488492 className := f .ClassName ()
489493 fullyQualifiedTestClass := className .FullyQualifiedClassName ()
490494 var testName string
@@ -516,6 +520,10 @@ func (l javaLang) generateJavaTest(file *rule.File, pathToPackageRelativeToBazel
516520 r .SetAttr ("test_class" , fullyQualifiedTestClass )
517521 r .SetPrivateAttr (packagesKey , []types.ResolvableJavaPackage {* types .NewResolvableJavaPackage (f .pkg , true , false )})
518522
523+ if depOnTestHelpers != nil {
524+ r .SetAttr ("deps" , []string {* depOnTestHelpers })
525+ }
526+
519527 if runtimeDeps .Len () != 0 {
520528 r .SetAttr ("runtime_deps" , labelsToStrings (runtimeDeps .SortedSlice ()))
521529 }
@@ -618,3 +626,11 @@ func labelsToStrings(labels []label.Label) []string {
618626 }
619627 return out
620628}
629+
630+ func testHelperLibname (targetName string ) string {
631+ return targetName + "-test-lib"
632+ }
633+
634+ func ptr [T any ](v T ) * T {
635+ return & v
636+ }
0 commit comments