def test_normalize_deps__skip_pomgen_mode_allows_refs_to_same_package( self): ws = workspace.Workspace("so/path", [], exclusions.src_exclusions(), maveninstallinfo.NOOP, pom_content=pomcontent.NOOP) package = "a/b/c" art1 = buildpom.MavenArtifactDef("g1", "a1", "1", bazel_package=package, pom_generation_mode=pomgenmode.SKIP) dep1 = dependency.MonorepoDependency(art1, bazel_target=None) art2 = buildpom.MavenArtifactDef("g2", "a2", "1", bazel_package=package) dep2 = dependency.MonorepoDependency(art2, bazel_target=None) art3 = buildpom.MavenArtifactDef("g1", "a1", "1", bazel_package="d/e/f") dep3 = dependency.MonorepoDependency(art3, bazel_target=None) dep4 = dependency.ThirdPartyDependency("name", "g101", "a101", "1") # the result of this method is based on bazel_package comparison deps = ws.normalize_deps(art1, [dep1, dep2, dep3, dep4]) self.assertEqual([dep1, dep2, dep3, dep4], deps)
def test_template_genmode__goldfile(self): """ Verifies version omissions when genmode is GOLDFILE. """ ws = workspace.Workspace("some/path", [], exclusions.src_exclusions(), self._mocked_mvn_install_info("maven"), pomcontent.NOOP) artifact_def = buildpom.maven_artifact("groupId", "artifactId", "1.2.3") dep = dependency.new_dep_from_maven_artifact_def(artifact_def) srpc_artifact_def = buildpom.maven_artifact("com.grail.srpc", "srpc-api", "5.6.7") srpc_artifact_def = buildpom._augment_art_def_values( srpc_artifact_def, None, "pack1", None, None, pomgenmode.DYNAMIC) srpc_dep = dependency.MonorepoDependency(srpc_artifact_def, bazel_target=None) artifact_def.custom_pom_template_content = """ this artifact version #{version} logback coord #{ch.qos.logback:logback-classic:version} logback qualified #{@maven//:ch_qos_logback_logback_classic.version} logback unqualified #{ch_qos_logback_logback_classic.version} srpc #{com.grail.srpc:srpc-api:version} """ pomgen = pom.TemplatePomGen(ws, artifact_def, dep) pomgen.register_dependencies_transitive_closure__library( set([srpc_dep])) generated_pom = pomgen.gen(pomcontenttype=pom.PomContentType.GOLDFILE) self.assertIn("this artifact version ***", generated_pom) self.assertIn("logback coord 1.2.3", generated_pom) self.assertIn("logback qualified 1.2.3", generated_pom) self.assertIn("logback unqualified 1.2.3", generated_pom) self.assertIn("srpc ***", generated_pom)
def test_template_var_sub__conflicting_gav__ext_and_BUILDpom(self): """ Verifies error handling when gavs are conflicting between external deps and what is set in BUILD.pom files. """ ws = workspace.Workspace("some/path", [], exclusions.src_exclusions(), self._mocked_mvn_install_info("maven"), pomcontent.NOOP) artifact_def = buildpom.maven_artifact("groupId", "artifactId", "1.2.3") dep = dependency.new_dep_from_maven_artifact_def(artifact_def) artifact_def.custom_pom_template_content = "srpc #{g:a:version}" pomgen = pom.TemplatePomGen(ws, artifact_def, dep) art = buildpom.MavenArtifactDef("com.google.guava", "guava", "26.0", bazel_package="a/b/c") d = dependency.MonorepoDependency(art, bazel_target=None) pomgen.register_dependencies_transitive_closure__library(set([d])) with self.assertRaises(Exception) as ctx: pomgen.gen(pom.PomContentType.RELEASE) self.assertIn( "Found multiple artifacts with the same groupId:artifactId", str(ctx.exception)) self.assertIn("com.google.guava:guava", str(ctx.exception))
def test_template_genmode__goldfile(self): """ Verifies version omissions when genmode is GOLDFILE. """ ws = workspace.Workspace( "some/path", """ native.maven_jar( name = "ch_qos_logback_logback_classic", artifact = "ch.qos.logback:logback-classic:1.4.4", )""", [], exclusions.src_exclusions()) artifact_def = buildpom.maven_artifact("groupId", "artifactId", "1.2.3") srpc_artifact_def = buildpom.maven_artifact("com.grail.srpc", "srpc-api", "5.6.7") srpc_artifact_def = buildpom._augment_art_def_values( srpc_artifact_def, None, "pack1", None, None, pomgenmode.DYNAMIC) dep = dependency.new_dep_from_maven_artifact_def(srpc_artifact_def) pomgen = pom.TemplatePomGen(ws, artifact_def, dep, template_content=""" this artifact version #{version} logback #{ch.qos.logback:logback-classic:version} srpc #{com.grail.srpc:srpc-api:version}""") pomgen.register_dependencies_globally( set([ dependency.MonorepoDependency(srpc_artifact_def, bazel_target=None) ]), set()) generated_pom = pomgen.gen(pomcontenttype=pom.PomContentType.GOLDFILE) self.assertIn("this artifact version ***", generated_pom) self.assertIn("logback 1.4.4", generated_pom) self.assertIn("srpc ***", generated_pom)
def test_template_var_sub__conflicting_gav__ext_and_BUILDpom(self): """ Verifies error handling when gavs are conflicting between external deps and what is set in BUILD.pom files. """ ws = workspace.Workspace( "some/path", """ native.maven_jar( name = "name", artifact = "g:a:20", )""", [], exclusions.src_exclusions()) artifact_def = buildpom.maven_artifact("groupId", "artifactId", "1.2.3") dep = dependency.new_dep_from_maven_artifact_def(artifact_def) pomgen = pom.TemplatePomGen(ws, artifact_def, dep, template_content=""" srpc #{g:a:version}""") art = buildpom.MavenArtifactDef("g", "a", "1", bazel_package="a/b/c") d = dependency.MonorepoDependency(art, bazel_target=None) pomgen.register_dependencies_globally(set([d]), set()) with self.assertRaises(Exception) as ctx: pomgen.gen() self.assertIn( "Found multiple artifacts with the same groupId:artifactId", str(ctx.exception)) self.assertIn("g:a", str(ctx.exception))
def test_template_var_sub__monorepo_deps(self): """ Verifies references to monorepo versions in a pom template. """ ws = workspace.Workspace("some/path", "", [], exclusions.src_exclusions()) artifact_def = buildpom.MavenArtifactDef("groupId", "artifactId", "1.2.3") srpc_artifact_def = buildpom.MavenArtifactDef("com.grail.srpc", "srpc-api", "5.6.7") dep = dependency.new_dep_from_maven_artifact_def(artifact_def) pomgen = pom.TemplatePomGen(ws, artifact_def, dep, template_content=""" srpc #{com.grail.srpc:srpc-api:version}""") pomgen.register_dependencies_globally( set([ dependency.MonorepoDependency(srpc_artifact_def, bazel_target=None) ]), set()) generated_pom = pomgen.gen() self.assertIn("srpc 5.6.7", generated_pom)
def test_template__library_transitives(self): """ Verifies that transitive dependencies can be referenced using the property pomgen.transitive_closure_of_library_dependencies. """ pom_template = """ <project> <dependencyManagement> <dependencies> #{pomgen.transitive_closure_of_library_dependencies} </dependencies> </dependencyManagement> </project> """ expected_pom = """ <project> <dependencyManagement> <dependencies> <dependency> <groupId>com.grail.srpc</groupId> <artifactId>srpc-api</artifactId> <version>5.6.7</version> </dependency> <dependency> <groupId>cg</groupId> <artifactId>ca</artifactId> <version>0.0.1</version> </dependency> </dependencies> </dependencyManagement> </project> """ ws = workspace.Workspace("some/path", [], exclusions.src_exclusions(), maveninstallinfo.NOOP, pomcontent.NOOP) artifact_def = buildpom.maven_artifact("groupId", "artifactId", "1.2.3") dep = dependency.new_dep_from_maven_artifact_def(artifact_def) artifact_def.custom_pom_template_content = pom_template pomgen = pom.TemplatePomGen(ws, artifact_def, dep) srpc_artifact_def = buildpom.MavenArtifactDef("com.grail.srpc", "srpc-api", "5.6.7", bazel_package="a/b/c") internal_dep = dependency.MonorepoDependency(srpc_artifact_def, bazel_target=None) external_dep = dependency.ThirdPartyDependency("name", "cg", "ca", "0.0.1") pomgen.register_dependencies_transitive_closure__library( set([external_dep, internal_dep])) generated_pom = pomgen.gen(pom.PomContentType.RELEASE) self.assertEqual(expected_pom, generated_pom)
def test_template_var_sub__monorepo_deps(self): """ Verifies references to monorepo versions in a pom template. """ ws = workspace.Workspace("some/path", [], exclusions.src_exclusions(), maveninstallinfo.NOOP, pomcontent.NOOP) artifact_def = buildpom.MavenArtifactDef("groupId", "artifactId", "1.2.3") dep = dependency.new_dep_from_maven_artifact_def(artifact_def) artifact_def.custom_pom_template_content = "srpc #{com.grail.srpc:srpc-api:version}" srpc_artifact_def = buildpom.MavenArtifactDef("com.grail.srpc", "srpc-api", "5.6.7", bazel_package="a/b/c") srpc_dep = dependency.MonorepoDependency(srpc_artifact_def, bazel_target=None) pomgen = pom.TemplatePomGen(ws, artifact_def, dep) pomgen.register_dependencies_transitive_closure__library( set([srpc_dep])) generated_pom = pomgen.gen(pom.PomContentType.RELEASE) self.assertIn("srpc 5.6.7", generated_pom)