def test_sort_order(self): """ Verifies that sorting Dependency instances produces the desired ordering: alphanumeric, monorepo artifacts first. """ dep1 = dependency.new_dep_from_maven_art_str( "com.google.guava:guava:20.0", "name") dep2 = dependency.new_dep_from_maven_art_str( "com.google.guava:zoouava:20.0", "name") art_def = buildpom.maven_artifact("com.zoogle.guava", "art1", "1.0") art_def = buildpom._augment_art_def_values(art_def, None, "pack1", None, None, pomgenmode.DYNAMIC) dep3 = dependency.new_dep_from_maven_artifact_def(art_def, None) art_def = buildpom.maven_artifact("com.google.guava", "art1", "1.0") art_def = buildpom._augment_art_def_values(art_def, None, "pack1", None, None, pomgenmode.DYNAMIC) dep4 = dependency.new_dep_from_maven_artifact_def(art_def, None) l = [dep3, dep2, dep1, dep4] l.sort() self.assertIs(dep4, l[0]) self.assertIs(dep3, l[1]) self.assertIs(dep1, l[2]) self.assertIs(dep2, l[3])
def _parse_dep_label(self, dep_label): if dep_label.startswith("@"): # external maven jar: ext_dep_name = dep_label[1:].split("//jar", 1)[0].strip() if self._is_special_case_excluded_ext_dep(ext_dep_name): return None else: return self._name_to_ext_deps[ext_dep_name] elif dep_label.startswith("//"): # monorepo src ref: package_path = dep_label[2:] # remove leading "//" target_name = None i = package_path.rfind(":") if i != -1: target_name = package_path[i + 1:] package_path = package_path[:i] for excluded_dependency_path in self.excluded_dependency_paths: if package_path.startswith(excluded_dependency_path): return None maven_artifact_def = self.parse_maven_artifact_def(package_path) if maven_artifact_def is None: raise Exception("no BUILD.pom file in package [%s]" % package_path) else: return dependency.new_dep_from_maven_artifact_def( maven_artifact_def, target_name) else: raise Exception("bad label [%s]" % dep_label)
def test_depman_pom__sanity(self): """ Ensures that dependency management pom generation isn't totally broken. """ ws = workspace.Workspace("some/path", [], exclusions.src_exclusions(), maveninstallinfo.NOOP, pomcontent.NOOP) artifact_def = buildpom.MavenArtifactDef( "g1", "a2", "1.2.3", gen_dependency_management_pom=True) dep = dependency.new_dep_from_maven_artifact_def(artifact_def) pomgen = pom.DependencyManagementPomGen(ws, artifact_def, dep, TEST_POM_TEMPLATE) guava = dependency.new_dep_from_maven_art_str("google:guava:1", "guav") force = dependency.new_dep_from_maven_art_str("force:commons:1", "forc") pomgen.register_dependencies_transitive_closure__artifact(( guava, force, )) generated_pom = pomgen.gen(pom.PomContentType.RELEASE) self.assertIn("<packaging>pom</packaging>", generated_pom) self.assertIn("<dependencyManagement>", generated_pom) self.assertIn("<artifactId>guava</artifactId>", generated_pom) self.assertIn("<artifactId>commons</artifactId>", generated_pom)
def test_template__deps_config_setion_is_removed(self): """ Verifies that the special dependency config section is removed from the pom template when it is processed. """ pom_template = """ <project> <dependencyManagement> <dependencies> __pomgen.start_dependency_customization__ __pomgen.end_dependency_customization__ </dependencies> </dependencyManagement> </project> """ expected_pom = """ <project> <dependencyManagement> <dependencies> </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) generated_pom = pomgen.gen(pom.PomContentType.RELEASE) self.assertEqual(expected_pom, generated_pom)
def test_source_dependency__from_artifact_definition__no_changes(self): """ Ensures the Dependency instance for a source dependency looks right. Here we explicitly declare that the source has *NOT* changed since it was last released. """ group_id = "g1" artifact_id = "a1" version = "1.1.0" released_version = "1.2.3" package = "pack1" art_def = buildpom.MavenArtifactDef(group_id, artifact_id, version, bazel_package=package, requires_release=False, released_version=released_version, released_artifact_hash="123456789") dep = dependency.new_dep_from_maven_artifact_def(art_def, None) self.assertEqual(group_id, dep.group_id) self.assertEqual(artifact_id, dep.artifact_id) self.assertEqual(released_version, dep.version) self.assertEqual(package, dep.bazel_package) self.assertTrue(dep.external)
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__multiple_ext_deps_with_same_gav(self): """ Verifies that pomgen is ok with multiple external deps with the same gav. This is an edge case, where the WORKSPACE file defines 2 (or more) differnently named maven_jars, that all point back to the same artifact. """ ws = workspace.Workspace( "some/path", """ native.maven_jar( name = "name1", artifact = "g:a:20", ) native.maven_jar( name = "name2", 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}""") pomgen.gen()
def test_template_var_sub__multiple_ext_deps_with_same_ga_diff_vers(self): """ Verifies that pomgen is NOT OK with multiple external deps with the same groupId/artifactId but with a different version (as this would break the #{<groupId>:<artifactId>:version} syntax). """ ws = workspace.Workspace( "some/path", """ native.maven_jar( name = "name1", artifact = "g:a:20", ) native.maven_jar( name = "name2", artifact = "g:a:21", ) """, [], 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}""") 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__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_var_sub(self): """ Verifies variable substitution in a pom template. """ 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") dep = dependency.new_dep_from_maven_artifact_def(artifact_def) pomgen = pom.TemplatePomGen(ws, artifact_def, dep, template_content=""" logback_old_syntax #{ch_qos_logback_logback_classic.version} logback_new_syntax #{ch.qos.logback:logback-classic:version} monorepo artifact version #{version}""") generated_pom = pomgen.gen() self.assertIn("logback_old_syntax 1.4.4", generated_pom) self.assertIn("logback_new_syntax 1.4.4", generated_pom) self.assertIn("monorepo artifact version 1.2.3", 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_var_sub__ext_deps_with_same_versions(self): """ Ensures that external dependencies (jars) that have the same gav, but are defined multiple times in different maven_install rules, can be referenced. """ ws = workspace.Workspace("some/path", [], exclusions.src_exclusions(), self._mocked_mvn_install_info("maven"), pomcontent.NOOP) artifact_def = buildpom.maven_artifact("groupId", "artifactId", "1.4.4") dep = dependency.new_dep_from_maven_artifact_def(artifact_def) artifact_def.custom_pom_template_content = """ 1 v1 #{@maven//:org_apache_maven_same_version.version} 2 v2 #{@maven2//:org_apache_maven_same_version.version} 3 v #{org_apache_maven_same_version.version} 4 v #{org.apache.maven:same-version:version} """ pomgen = pom.TemplatePomGen(ws, artifact_def, dep) generated_pom = pomgen.gen(pom.PomContentType.RELEASE) self.assertIn("1 v1 1.0.0", generated_pom) self.assertIn("2 v2 1.0.0", generated_pom) self.assertIn("3 v 1.0.0", generated_pom) self.assertIn("4 v 1.0.0", generated_pom)
def _get_pom_generator(self, artifact_def, dep): if dep is None: # make a real dependency instance here so we can pass it along # into the pom generator dep = dependency.new_dep_from_maven_artifact_def(artifact_def) return pom.get_pom_generator(self.workspace, self.pom_template, artifact_def, dep)
def _parse_dep_label(self, dep_label): if dep_label.startswith("@"): if dep_label not in self._name_to_ext_deps: print(self._name_to_ext_deps.values()) raise Exception("Unknown external dependency - please make sure all maven install json files have been registered with pomgen (by setting maven_install_paths in the pomgen config file): [%s]" % dep_label) return self._name_to_ext_deps[dep_label] elif dep_label.startswith("//"): # monorepo src ref: package_path = dep_label[2:] # remove leading "//" target_name = None i = package_path.rfind(":") if i != -1: target_name = package_path[i+1:] package_path = package_path[:i] for excluded_dependency_path in self.excluded_dependency_paths: if package_path.startswith(excluded_dependency_path): return None maven_artifact_def = self.parse_maven_artifact_def(package_path) if maven_artifact_def is None: raise Exception("no BUILD.pom file in package [%s]" % package_path) else: return dependency.new_dep_from_maven_artifact_def(maven_artifact_def, target_name) else: raise Exception("bad label [%s]" % dep_label)
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_bazel_buildable__source_dep__dynamic_pom_gen(self): art_def = buildpom.maven_artifact("g1", "a1", "1.0") art_def = buildpom._augment_art_def_values(art_def, None, "pack1", None, None, pomgenmode.DYNAMIC) dep = dependency.new_dep_from_maven_artifact_def(art_def, None) self.assertTrue(dep.bazel_buildable)
def test_bazel_buildable__source_dep__template_pom_gen__other_packaging(self): art_def = buildpom.maven_artifact("g1", "a1", "1.0") art_def = buildpom._augment_art_def_values(art_def, None, "pack1", None, None, pomgenmode.TEMPLATE) art_def.custom_pom_template_content = "<packaging>maven-plugin</packaging>" dep = dependency.new_dep_from_maven_artifact_def(art_def, None) self.assertTrue(dep.bazel_buildable)
def _get_crawled_packages_as_deps(self): deps = [ dependency.new_dep_from_maven_artifact_def(art_def, bazel_target=None) for art_def in self.package_to_artifact.values() ] deps = set(self._filter_non_artifact_referencing_deps(deps)) return deps
def test_template__unencountered_deps(self): """ Verifies that declared deps that are not crawled can be referenced using the pomgen.unencountered_deps property. """ pom_template = """ <project> <dependencyManagement> <dependencies> __pomgen.start_dependency_customization__ <dependency> <artifactId>art1</artifactId> <groupId>group1</groupId> <version>1.0.0</version> <exclusions> <exclusion> <artifactId>ea1</artifactId> <groupId>eg1</groupId> </exclusion> </exclusions> </dependency> __pomgen.end_dependency_customization__ #{pomgen.unencountered_dependencies} </dependencies> </dependencyManagement> </project> """ expected_pom = """ <project> <dependencyManagement> <dependencies> <dependency> <artifactId>art1</artifactId> <groupId>group1</groupId> <version>1.0.0</version> <exclusions> <exclusion> <artifactId>ea1</artifactId> <groupId>eg1</groupId> </exclusion> </exclusions> </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) generated_pom = pomgen.gen(pom.PomContentType.RELEASE) self.assertEqual(expected_pom, 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_dynamic_pom_genmode__goldfile(self): """ Test goldfile mode with dynamic pom gen. """ ws = workspace.Workspace( "some/path", """ native.maven_jar( name = "aopalliance_aopalliance", artifact = "aopalliance:aopalliance:1.0", ) native.maven_jar( name = "com_google_guava_guava", artifact = "com.google.guava:guava:20.0", )""", [], exclusions.src_exclusions()) artifact_def = buildpom.maven_artifact("g1", "a2", "1.2.3") artifact_def = buildpom._augment_art_def_values( artifact_def, None, "pack1", None, None, pomgenmode.DYNAMIC) dep = dependency.new_dep_from_maven_artifact_def(artifact_def) pomgen = pom.DynamicPomGen(ws, artifact_def, dep, TEST_POM_TEMPLATE) org_function = bazel.query_java_library_deps_attributes try: bazel.query_java_library_deps_attributes = lambda r, p: ( "@com_google_guava_guava//jar", "@aopalliance_aopalliance//jar", ) _, _, deps = pomgen.process_dependencies() pomgen.register_dependencies(deps) generated_pom = pomgen.gen(pom.PomContentType.GOLDFILE) self.assertIn( """<groupId>g1</groupId> <artifactId>a2</artifactId> <version>***</version> <packaging>jar</packaging>""", generated_pom) self.assertIn( """<groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>20.0</version> <exclusions> <exclusion> <groupId>*</groupId> <artifactId>*</artifactId> </exclusion> </exclusions>""", generated_pom) aop_index = generated_pom.index("aopalliance") guava_index = generated_pom.index("guava") self.assertTrue(guava_index > aop_index) # deps are sorted finally: bazel.query_java_library_deps_attributes = org_function
def test_template__crawled_external_deps__configured_attributes(self): """ Verifies that "classifier" and "scope" are correcly set in the generated pom. """ pom_template = """ <project> <dependencyManagement> <dependencies> __pomgen.start_dependency_customization__ <dependency> <artifactId>ca</artifactId> <groupId>cg</groupId> <version>0.0.1</version> <scope>test</scope> <classifier>sources</classifier> </dependency> __pomgen.end_dependency_customization__ #{pomgen.transitive_closure_of_library_dependencies} </dependencies> </dependencyManagement> </project> """ expected_pom = """ <project> <dependencyManagement> <dependencies> <dependency> <groupId>cg</groupId> <artifactId>ca</artifactId> <version>0.0.1</version> <classifier>sources</classifier> <scope>test</scope> </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) crawled_dep = dependency.ThirdPartyDependency("name", "cg", "ca", "0.0.1") pomgen.register_dependencies_transitive_closure__library( set([crawled_dep])) generated_pom = pomgen.gen(pom.PomContentType.RELEASE) self.assertEqual(expected_pom, generated_pom)
def _create_library_artifact_node(self, group_id, artifact_id, version, library_path, requires_release, release_reason=None): dev_version = version + "-SNAPSHOT" released_version = version if requires_release and release_reason is None: release_reason = ReleaseReason.ARTIFACT artifact_def = MavenArtifactDef(group_id, artifact_id, dev_version, released_version=released_version, library_path=library_path, requires_release=requires_release) artifact_def.release_reason = release_reason dep = dependency.new_dep_from_maven_artifact_def(artifact_def) return Node(parent=None, artifact_def=artifact_def, dependency=dep)
def _build_node(self, artifact_id, bazel_package, pom_generation_mode=pomgenmode.DYNAMIC, parent_node=None): art_def = buildpom.MavenArtifactDef( "g1", artifact_id, "1.0.0", bazel_package=bazel_package, pom_generation_mode=pom_generation_mode) dep = dependency.new_dep_from_maven_artifact_def(art_def) return crawlerm.Node(parent=parent_node, artifact_def=art_def, dependency=dep)
def test_source_dependency__from_artifact_definition__name(self): """ Ensures the Dependency instance for a source dependency has expected names. """ group_id = "g1" artifact_id = "a1" version = "1.1.0" package = "pack1" art_def = buildpom.maven_artifact(group_id, artifact_id, version) art_def = buildpom._augment_art_def_values(art_def, None, package, None, None, pomgenmode.DYNAMIC) dep = dependency.new_dep_from_maven_artifact_def(art_def, None) self.assertEqual("g1:a1", dep.maven_coordinates_name) self.assertIsNone(dep.bazel_label_name)
def test_source_dependency__references_artifact__template_pom_gen_mode(self): group_id = "g1" artifact_id = "a1" version = "1.1.0" released_version = "1.2.3" package = "pack1/pack2" art_def = buildpom.MavenArtifactDef(group_id, artifact_id, version, pom_generation_mode=pomgenmode.TEMPLATE, bazel_package=package, requires_release=False, released_version=released_version, released_artifact_hash="123456789") dep = dependency.new_dep_from_maven_artifact_def(art_def) self.assertTrue(dep.references_artifact)
def test_source_dependency__from_artifact_definition__default(self): """ Ensures the Dependency instance for a source dependency looks right. """ group_id = "g1" artifact_id = "a1" version = "1.1.0" package = "pack1" art_def = buildpom.maven_artifact(group_id, artifact_id, version) art_def = buildpom._augment_art_def_values(art_def, None, package, None, None, pomgenmode.DYNAMIC) dep = dependency.new_dep_from_maven_artifact_def(art_def, None) self.assertEqual(group_id, dep.group_id) self.assertEqual(artifact_id, dep.artifact_id) self.assertEqual(version, dep.version) self.assertEqual(package, dep.bazel_package) self.assertFalse(dep.external)
def test_template_unknown_variable(self): """ Verifies that an unknown variable in a pom template is handled and results in an error during template processing. """ 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 = "my pom template with a bad ref #{bad1} and also #{bad2}" pomgen = pom.TemplatePomGen(ws, artifact_def, dep) with self.assertRaises(Exception) as ctx: generated_pom = pomgen.gen(pom.PomContentType.RELEASE) self.assertIn("bad1", str(ctx.exception)) self.assertIn("bad2", str(ctx.exception))
def test_source_dependency__bazel_target__explicit(self): """ bazel_target can be set explicitly. """ target = "foo_target" group_id = "g1" artifact_id = "a1" version = "1.1.0" released_version = "1.2.3" package = "pack1/pack2" art_def = buildpom.MavenArtifactDef(group_id, artifact_id, version, bazel_package=package, requires_release=False, released_version=released_version, released_artifact_hash="123456789") dep = dependency.new_dep_from_maven_artifact_def(art_def, target) self.assertEqual(target, dep.bazel_target)