Exemple #1
0
    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)
Exemple #2
0
    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)
Exemple #3
0
    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))
Exemple #4
0
    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)
Exemple #5
0
    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))
Exemple #6
0
    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)
Exemple #7
0
    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)
Exemple #8
0
    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)