Skip to content

Commit

Permalink
bugfix: Make dependency modules work for bazelmod
Browse files Browse the repository at this point in the history
  • Loading branch information
tgodzik committed Mar 27, 2024
1 parent a1fbdde commit 7081135
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 3 deletions.
Expand Up @@ -20,10 +20,15 @@ object DependencyMapper {
artifact.classifier = "sources"
artifact
}

/* For example:
* @@rules_jvm_external~override~maven~maven//:org_apache_commons_commons_lang3
* @maven//:org_scala_lang_scala_library
**/
val orgStart = lib.label.split("//:").last().split('_').first()
// Matches the Maven group (organization), artifact, and version in the Bazel dependency
// string such as .../execroot/monorepo/bazel-out/k8-fastbuild/bin/external/maven/com/google/guava/guava/31.1-jre/processed_guava-31.1-jre.jar
val regexPattern = """.*/maven/(.+)/([^/]+)/([^/]+)/[^/]+.jar""".toRegex()
// bazel-out/k8-fastbuild/bin/external/rules_jvm_external~~maven~name/v1/https/repo1.maven.org/maven2/com/google/auto/service/auto-service-annotations/1.1.1/header_auto-service-annotations-1.1.1.jar
val regexPattern = """.*/($orgStart/.+)/([^/]+)/([^/]+)/[^/]+.jar""".toRegex()
val dependencyPath = lib.outputs.first().toString()
// Find matches in the dependency path
val matchResult = regexPattern.find(dependencyPath)
Expand All @@ -40,7 +45,7 @@ object DependencyMapper {
val toResolve = LinkedList<String>()
toResolve.addAll(module.directDependencies.map { it.value })
val accumulator = HashSet<Library>()
while (toResolve.isNotEmpty()){
while (toResolve.isNotEmpty()) {
val lib = project.libraries[toResolve.pop()]
if (lib != null && !accumulator.contains(lib)) {
accumulator.add(lib)
Expand Down
Expand Up @@ -39,6 +39,28 @@ class DependencyMapperTest {
dependency shouldBe expectedDependency
}

@Test
fun `should bazelmod translate dependency`() {
val jarUri = URI.create("$cacheLocation/bin/external/rules_jvm_external~~maven~name/v1/https/repo1.maven.org/maven2/com/google/auto/service/auto-service-annotations/1.1.1/header_auto-service-annotations-1.1.1.jar")
val jarSourcesUri = URI.create("$cacheLocation/bin/external/rules_jvm_external~~maven~name/v1/https/repo1.maven.org/maven2/com/google/auto/service/auto-service-annotations/1.1.1/header_auto-service-annotations-1.1.1-sources.jar")
val lib1 = Library(
"@@rules_jvm_external~override~maven~maven//:com_google_auto_service_auto_service_annotations",
setOf(jarUri),
setOf(jarSourcesUri),
emptyList()
)
val expectedMavenArtifact = MavenDependencyModuleArtifact(jarUri.toString())
val expectedMavenSourcesArtifact = MavenDependencyModuleArtifact(jarSourcesUri.toString())
expectedMavenSourcesArtifact.classifier = "sources"
val expectedDependency = MavenDependencyModule("com.google.auto.service", "auto-service-annotations", "1.1.1", listOf(
expectedMavenArtifact,
expectedMavenSourcesArtifact
))
val dependency = DependencyMapper.extractMavenDependencyInfo(lib1)

dependency shouldBe expectedDependency
}

@Test
fun `should not translate non maven dependency`() {
val lib1 = Library(
Expand Down

0 comments on commit 7081135

Please sign in to comment.