rules_kotlin icon indicating copy to clipboard operation
rules_kotlin copied to clipboard

[Regression] version `2.1.7` has issues with `internal` access from kotlin test class

Open xuansontrinh opened this issue 5 months ago • 0 comments

Hello folks,

I just attempted to update our codebase to use rules_kotlin version 2.1.7 from 2.1.3. However, after the update, I encountered a few issues with internal access from some kotlin test classes:

Testing started at 11:16 ...
Invoking: '/opt/homebrew/bin/bazel' 'test' '--tool_tag=bazelbsp:3.2.0' '--inject_repository=bazelbsp_aspect=/<REDACTED>/.bazelbsp' '--curses=no' '--color=yes' '--noprogress_in_terminal_title' '--test_filter=BazelBuildTargetConsoleFilterTest' '--color=yes' '--build_event_binary_file_path_conversion=false' '--build_event_binary_file=/var/folders/1y/2wdfxxzn0_9_08ngkfgbjjr00000gp/T/bazel-bep-output14730697473364235266.tmp' '--bes_outerr_buffer_size=10' '--build_event_publish_all_actions' '--' '@//plugin-bazel/src/test/kotlin/org/jetbrains/bazel/ui/console:BazelBuildTargetConsoleFilterTest'
Computing main repo mapping: 
Loading: 
Loading: 0 packages loaded
Testing started at 11:16 ...
Analyzing: target //plugin-bazel/src/test/kotlin/org/jetbrains/bazel/ui/console:BazelBuildTargetConsoleFilterTest (0 packages loaded, 0 targets configured)
INFO: Analyzed target //plugin-bazel/src/test/kotlin/org/jetbrains/bazel/ui/console:BazelBuildTargetConsoleFilterTest (1 packages loaded, 88 targets configured).
ERROR: <REDACTED>/plugin-bazel/src/test/kotlin/org/jetbrains/bazel/ui/console/BUILD:3:24: KotlinCompile //plugin-bazel/src/test/kotlin/org/jetbrains/bazel/ui/console:BazelBuildTargetConsoleFilterTest { kt: 1, java: 0, srcjars: 0 } for darwin_arm64 failed: (Exit 1): build failed: error executing KotlinCompile command (from target //plugin-bazel/src/test/kotlin/org/jetbrains/bazel/ui/console:BazelBuildTargetConsoleFilterTest) bazel-out/darwin_arm64-opt-exec-ST-d57f47055a04/bin/external/rules_kotlin+/src/main/kotlin/build ... (remaining 2 arguments skipped)
plugin-bazel/src/test/kotlin/org/jetbrains/bazel/ui/console/BazelBuildTargetConsoleFilterTest.kt:13:59: error: cannot access 'class BazelRepoMappingService : PersistentStateComponent<BazelRepoMappingServiceState>': it is internal in file.
import org.jetbrains.bazel.languages.starlark.repomapping.BazelRepoMappingService
                                                          ^^^^^^^^^^^^^^^^^^^^^^^
plugin-bazel/src/test/kotlin/org/jetbrains/bazel/ui/console/BazelBuildTargetConsoleFilterTest.kt:35:5: error: cannot access 'class BazelRepoMappingService : PersistentStateComponent<BazelRepoMappingServiceState>': it is internal in file.
    BazelRepoMappingService.getInstance(project).canonicalRepoNameToPath = mapOf("" to project.rootDir.toNioPath())
    ^^^^^^^^^^^^^^^^^^^^^^^
plugin-bazel/src/test/kotlin/org/jetbrains/bazel/ui/console/BazelBuildTargetConsoleFilterTest.kt:35:29: error: cannot access 'fun getInstance(project: Project): BazelRepoMappingService': it is internal in 'org/jetbrains/bazel/languages/starlark/repomapping/BazelRepoMappingService.Companion'.
    BazelRepoMappingService.getInstance(project).canonicalRepoNameToPath = mapOf("" to project.rootDir.toNioPath())
                            ^^^^^^^^^^^
plugin-bazel/src/test/kotlin/org/jetbrains/bazel/ui/console/BazelBuildTargetConsoleFilterTest.kt:35:50: error: cannot access 'var canonicalRepoNameToPath: Map<String, Path>': it is internal in 'org/jetbrains/bazel/languages/starlark/repomapping/BazelRepoMappingService'.
    BazelRepoMappingService.getInstance(project).canonicalRepoNameToPath = mapOf("" to project.rootDir.toNioPath())
                                                 ^^^^^^^^^^^^^^^^^^^^^^^
plugin-bazel/src/test/kotlin/org/jetbrains/bazel/ui/console/BazelBuildTargetConsoleFilterTest.kt:96:5: error: cannot access 'class BazelRepoMappingService : PersistentStateComponent<BazelRepoMappingServiceState>': it is internal in file.
    BazelRepoMappingService.getInstance(project).canonicalRepoNameToPath =
    ^^^^^^^^^^^^^^^^^^^^^^^
plugin-bazel/src/test/kotlin/org/jetbrains/bazel/ui/console/BazelBuildTargetConsoleFilterTest.kt:96:29: error: cannot access 'fun getInstance(project: Project): BazelRepoMappingService': it is internal in 'org/jetbrains/bazel/languages/starlark/repomapping/BazelRepoMappingService.Companion'.
    BazelRepoMappingService.getInstance(project).canonicalRepoNameToPath =
                            ^^^^^^^^^^^
plugin-bazel/src/test/kotlin/org/jetbrains/bazel/ui/console/BazelBuildTargetConsoleFilterTest.kt:96:50: error: cannot access 'var canonicalRepoNameToPath: Map<String, Path>': it is internal in 'org/jetbrains/bazel/languages/starlark/repomapping/BazelRepoMappingService'.
    BazelRepoMappingService.getInstance(project).canonicalRepoNameToPath =
                                                 ^^^^^^^^^^^^^^^^^^^^^^^
plugin-bazel/src/test/kotlin/org/jetbrains/bazel/ui/console/BazelBuildTargetConsoleFilterTest.kt:119:5: error: cannot access 'class BazelRepoMappingService : PersistentStateComponent<BazelRepoMappingServiceState>': it is internal in file.
    BazelRepoMappingService.getInstance(project).canonicalRepoNameToPath =
    ^^^^^^^^^^^^^^^^^^^^^^^
plugin-bazel/src/test/kotlin/org/jetbrains/bazel/ui/console/BazelBuildTargetConsoleFilterTest.kt:119:29: error: cannot access 'fun getInstance(project: Project): BazelRepoMappingService': it is internal in 'org/jetbrains/bazel/languages/starlark/repomapping/BazelRepoMappingService.Companion'.
    BazelRepoMappingService.getInstance(project).canonicalRepoNameToPath =
                            ^^^^^^^^^^^
plugin-bazel/src/test/kotlin/org/jetbrains/bazel/ui/console/BazelBuildTargetConsoleFilterTest.kt:119:50: error: cannot access 'var canonicalRepoNameToPath: Map<String, Path>': it is internal in 'org/jetbrains/bazel/languages/starlark/repomapping/BazelRepoMappingService'.
    BazelRepoMappingService.getInstance(project).canonicalRepoNameToPath =
                                                 ^^^^^^^^^^^^^^^^^^^^^^^
plugin-bazel/src/test/kotlin/org/jetbrains/bazel/ui/console/BazelBuildTargetConsoleFilterTest.kt:121:5: error: cannot access 'class BazelRepoMappingService : PersistentStateComponent<BazelRepoMappingServiceState>': it is internal in file.
    BazelRepoMappingService.getInstance(project).apparentRepoNameToCanonicalName = mapOf("externalRepo2" to "externalRepo2+")
    ^^^^^^^^^^^^^^^^^^^^^^^
plugin-bazel/src/test/kotlin/org/jetbrains/bazel/ui/console/BazelBuildTargetConsoleFilterTest.kt:121:29: error: cannot access 'fun getInstance(project: Project): BazelRepoMappingService': it is internal in 'org/jetbrains/bazel/languages/starlark/repomapping/BazelRepoMappingService.Companion'.
    BazelRepoMappingService.getInstance(project).apparentRepoNameToCanonicalName = mapOf("externalRepo2" to "externalRepo2+")
                            ^^^^^^^^^^^
plugin-bazel/src/test/kotlin/org/jetbrains/bazel/ui/console/BazelBuildTargetConsoleFilterTest.kt:121:50: error: cannot access 'var apparentRepoNameToCanonicalName: Map<String, String>': it is internal in 'org/jetbrains/bazel/languages/starlark/repomapping/BazelRepoMappingService'.
    BazelRepoMappingService.getInstance(project).apparentRepoNameToCanonicalName = mapOf("externalRepo2" to "externalRepo2+")
                                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Jun 17, 2025 11:16:09 AM worker request 0
SEVERE: Compilation failure: compile phase failed:
plugin-bazel/src/test/kotlin/org/jetbrains/bazel/ui/console/BazelBuildTargetConsoleFilterTest.kt:13:59: error: cannot access 'class BazelRepoMappingService : PersistentStateComponent<BazelRepoMappingServiceState>': it is internal in file.
import org.jetbrains.bazel.languages.starlark.repomapping.BazelRepoMappingService
                                                          ^^^^^^^^^^^^^^^^^^^^^^^
plugin-bazel/src/test/kotlin/org/jetbrains/bazel/ui/console/BazelBuildTargetConsoleFilterTest.kt:35:5: error: cannot access 'class BazelRepoMappingService : PersistentStateComponent<BazelRepoMappingServiceState>': it is internal in file.
    BazelRepoMappingService.getInstance(project).canonicalRepoNameToPath = mapOf("" to project.rootDir.toNioPath())
    ^^^^^^^^^^^^^^^^^^^^^^^
plugin-bazel/src/test/kotlin/org/jetbrains/bazel/ui/console/BazelBuildTargetConsoleFilterTest.kt:35:29: error: cannot access 'fun getInstance(project: Project): BazelRepoMappingService': it is internal in 'org/jetbrains/bazel/languages/starlark/repomapping/BazelRepoMappingService.Companion'.
    BazelRepoMappingService.getInstance(project).canonicalRepoNameToPath = mapOf("" to project.rootDir.toNioPath())
                            ^^^^^^^^^^^
plugin-bazel/src/test/kotlin/org/jetbrains/bazel/ui/console/BazelBuildTargetConsoleFilterTest.kt:35:50: error: cannot access 'var canonicalRepoNameToPath: Map<String, Path>': it is internal in 'org/jetbrains/bazel/languages/starlark/repomapping/BazelRepoMappingService'.
    BazelRepoMappingService.getInstance(project).canonicalRepoNameToPath = mapOf("" to project.rootDir.toNioPath())
                                                 ^^^^^^^^^^^^^^^^^^^^^^^
plugin-bazel/src/test/kotlin/org/jetbrains/bazel/ui/console/BazelBuildTargetConsoleFilterTest.kt:96:5: error: cannot access 'class BazelRepoMappingService : PersistentStateComponent<BazelRepoMappingServiceState>': it is internal in file.
    BazelRepoMappingService.getInstance(project).canonicalRepoNameToPath =
    ^^^^^^^^^^^^^^^^^^^^^^^
plugin-bazel/src/test/kotlin/org/jetbrains/bazel/ui/console/BazelBuildTargetConsoleFilterTest.kt:96:29: error: cannot access 'fun getInstance(project: Project): BazelRepoMappingService': it is internal in 'org/jetbrains/bazel/languages/starlark/repomapping/BazelRepoMappingService.Companion'.
    BazelRepoMappingService.getInstance(project).canonicalRepoNameToPath =
                            ^^^^^^^^^^^
plugin-bazel/src/test/kotlin/org/jetbrains/bazel/ui/console/BazelBuildTargetConsoleFilterTest.kt:96:50: error: cannot access 'var canonicalRepoNameToPath: Map<String, Path>': it is internal in 'org/jetbrains/bazel/languages/starlark/repomapping/BazelRepoMappingService'.
    BazelRepoMappingService.getInstance(project).canonicalRepoNameToPath =
                                                 ^^^^^^^^^^^^^^^^^^^^^^^
plugin-bazel/src/test/kotlin/org/jetbrains/bazel/ui/console/BazelBuildTargetConsoleFilterTest.kt:119:5: error: cannot access 'class BazelRepoMappingService : PersistentStateComponent<BazelRepoMappingServiceState>': it is internal in file.
    BazelRepoMappingService.getInstance(project).canonicalRepoNameToPath =
    ^^^^^^^^^^^^^^^^^^^^^^^
plugin-bazel/src/test/kotlin/org/jetbrains/bazel/ui/console/BazelBuildTargetConsoleFilterTest.kt:119:29: error: cannot access 'fun getInstance(project: Project): BazelRepoMappingService': it is internal in 'org/jetbrains/bazel/languages/starlark/repomapping/BazelRepoMappingService.Companion'.
    BazelRepoMappingService.getInstance(project).canonicalRepoNameToPath =
                            ^^^^^^^^^^^
plugin-bazel/src/test/kotlin/org/jetbrains/bazel/ui/console/BazelBuildTargetConsoleFilterTest.kt:119:50: error: cannot access 'var canonicalRepoNameToPath: Map<String, Path>': it is internal in 'org/jetbrains/bazel/languages/starlark/repomapping/BazelRepoMappingService'.
    BazelRepoMappingService.getInstance(project).canonicalRepoNameToPath =
                                                 ^^^^^^^^^^^^^^^^^^^^^^^
plugin-bazel/src/test/kotlin/org/jetbrains/bazel/ui/console/BazelBuildTargetConsoleFilterTest.kt:121:5: error: cannot access 'class BazelRepoMappingService : PersistentStateComponent<BazelRepoMappingServiceState>': it is internal in file.
    BazelRepoMappingService.getInstance(project).apparentRepoNameToCanonicalName = mapOf("externalRepo2" to "externalRepo2+")
    ^^^^^^^^^^^^^^^^^^^^^^^
plugin-bazel/src/test/kotlin/org/jetbrains/bazel/ui/console/BazelBuildTargetConsoleFilterTest.kt:121:29: error: cannot access 'fun getInstance(project: Project): BazelRepoMappingService': it is internal in 'org/jetbrains/bazel/languages/starlark/repomapping/BazelRepoMappingService.Companion'.
    BazelRepoMappingService.getInstance(project).apparentRepoNameToCanonicalName = mapOf("externalRepo2" to "externalRepo2+")
                            ^^^^^^^^^^^
plugin-bazel/src/test/kotlin/org/jetbrains/bazel/ui/console/BazelBuildTargetConsoleFilterTest.kt:121:50: error: cannot access 'var apparentRepoNameToCanonicalName: Map<String, String>': it is internal in 'org/jetbrains/bazel/languages/starlark/repomapping/BazelRepoMappingService'.
    BazelRepoMappingService.getInstance(project).apparentRepoNameToCanonicalName = mapOf("externalRepo2" to "externalRepo2+")
                                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^Target //plugin-bazel/src/test/kotlin/org/jetbrains/bazel/ui/console:BazelBuildTargetConsoleFilterTest failed to build
Use --verbose_failures to see the command lines of failed build steps.
INFO: Elapsed time: 0.887s, Critical Path: 0.62s
INFO: 2 processes: 246 action cache hit, 2 internal.
ERROR: Build did NOT complete successfully
FAILED: 
//plugin-bazel/src/test/kotlin/org/jetbrains/bazel/ui/console:BazelBuildTargetConsoleFilterTest FAILED TO BUILD
Executed 0 out of 1 test: 1 fails to build.
INFO: Build Event Protocol files produced successfully.

Command completed in 960ms (exit code 1)

In order to reproduce the aforementioned example, you can check out this commit and try running the test BazelBuildTargetConsoleFilterTest.

xuansontrinh avatar Jun 17 '25 09:06 xuansontrinh