Example #1
0
    def test_tostring(self):
        a = Artifact("foo:bar")
        assert str(a) == "foo:bar"

        a = Artifact("foo:bar:1")
        assert str(a) == "foo:bar:jar:1"

        a = Artifact("foo:bar:pom:1")
        assert str(a) == "foo:bar:pom:1"

        a = Artifact("foo:bar:pom:sources:1")
        assert str(a) == "foo:bar:pom:sources:1"
Example #2
0
    def test_path(self):
        test_pairs = (
            ("foo.bar:baz", "foo/bar/baz"),
            ("foo.bar:baz:1", "foo/bar/baz/1/baz-1.jar"),
            ("foo.bar:baz:pkg:1", "foo/bar/baz/1/baz-1.pkg"),
            ("foo.bar:baz:pkg:sources:1", "foo/bar/baz/1/baz-1-sources.pkg"),
            ("foo.bar:baz:pkg:javadoc:1", "foo/bar/baz/1/baz-1-javadoc.pkg"),
            ("foo.bar:baz:[1,2)", "foo/bar/baz"),
        )

        for input, expected in test_pairs:
            artifact = Artifact(input)
            assert artifact.path == expected
Example #3
0
    def test_find_artifacts(self, _LocalRepository):
        _repo1 = mock.Mock(spec=LocalRepository)
        _repo2 = mock.Mock(spec=LocalRepository)

        _LocalRepository.side_effect = [_repo1, _repo2]

        _repo1.get_versions.return_value = [
            Artifact("foo:bar:2.0"),
            Artifact("foo:bar:2.0-SNAPSHOT"),
            Artifact("foo:bar:1.0"),
            Artifact("foo:bar:1.0-SNAPSHOT"),
        ]

        _repo2.get_versions.return_value = [
            Artifact("foo:bar:3.0"),
            Artifact("foo:bar:3.0-SNAPSHOT"),
            Artifact("foo:bar:1.0"),
            Artifact("foo:bar:1.0-SNAPSHOT"),
        ]
        client = MavenClient("foobar", "foobaz")
        expected = [
            Artifact("foo:bar:3.0"),
            Artifact("foo:bar:3.0-SNAPSHOT"),
            Artifact("foo:bar:2.0"),
            Artifact("foo:bar:2.0-SNAPSHOT"),
            Artifact("foo:bar:1.0"),
            Artifact("foo:bar:1.0-SNAPSHOT"),
        ]
        actual = client.find_artifacts("foo:bar")
        assert expected == actual, "client.find_artifacts(%s)" % input
Example #4
0
    def test_get_versions(self, _os):
        _os.listdir.return_value = [
            "1.0-SNAPSHOT",
            "2.0.0",
            "3.0-SNAPSHOT",
            "1.1",
            "1.0",
        ]
        repo = LocalRepository("/maven")

        for input, expected in (
            ("foo:bar", [
                Artifact("foo:bar:3.0-SNAPSHOT"),
                Artifact("foo:bar:2.0.0"),
                Artifact("foo:bar:1.1"),
                Artifact("foo:bar:1.0"),
                Artifact("foo:bar:1.0-SNAPSHOT"),
            ]),
            ("foo:bar:1.0", [Artifact("foo:bar:1.0")]),
            ("foo:bar:[1.0]", [Artifact("foo:bar:1.0")]),
            ("foo:bar:[1.0,2.0)", [
                Artifact("foo:bar:1.1"),
                Artifact("foo:bar:1.0"),
            ]),
            ("foo:bar:[2.0,3.0)", [
                Artifact("foo:bar:3.0-SNAPSHOT"),
                Artifact("foo:bar:2.0.0"),
            ]),
        ):
            actual = repo.get_versions(input)
            assert expected == actual, \
                "LocalRepository.get_versions(%s)" % input
Example #5
0
    def test_get_versions(self, _request):
        res = mock.MagicMock(spec=Struct)
        res.__enter__.return_value = StringIO(SIMPLE_METADATA)
        _request.return_value = res

        repo = HttpRepository("http://foo.com/repo")
        for input, expected in (
            ("foo:bar", [
                Artifact("foo:bar:3.0-SNAPSHOT"),
                Artifact("foo:bar:2.0.0"),
                Artifact("foo:bar:1.1"),
                Artifact("foo:bar:1.0"),
                Artifact("foo:bar:1.0-SNAPSHOT"),
            ]),
            ("foo:bar:1.0", [Artifact("foo:bar:1.0")]),
            ("foo:bar:[1.0]", [Artifact("foo:bar:1.0")]),
            ("foo:bar:[1.0,2.0)", [
                Artifact("foo:bar:1.1"),
                Artifact("foo:bar:1.0"),
            ]),
            ("foo:bar:[2.0,3.0)", [
                Artifact("foo:bar:3.0-SNAPSHOT"),
                Artifact("foo:bar:2.0.0"),
            ]),
        ):
            actual = repo.get_versions(input)
            assert expected == actual, "HttpRepository.get_versions(%s)" % input
            # reset res contents
            res.__enter__.return_value.seek(0)
Example #6
0
    def test_dependency_version_range(self):
        client = self._mock_client(COM_TEST_PROJECT3, COM_TEST_PROJECT2)
        client.find_artifacts.return_value = [
            Artifact("com.test:project2:2.0.0"),
            Artifact("com.test:project2:1.0.0"),
        ]
        pom = Pom("com.test:project3:1.0.0", client)

        deps = list(pom.dependencies["compile"])
        assert len(pom.dependencies) == 1
        assert len(deps) == 1
        assert deps[0] == (("com.test", "project2", "[1.0,2.0)"), True)

        client = self._mock_client(COM_TEST_PROJECT4)
        client.find_artifacts.return_value = [
            Artifact("com.test:project2:2.0.0-SNAPSHOT"),
            Artifact("com.test:project2:1.0.0"),
        ]
        pom = Pom("com.test:project4:1.0.0", client)

        deps = list(pom.dependencies["compile"])
        assert len(pom.dependencies) == 1
        assert len(deps) == 1
        assert deps[0] == (("com.test", "project2", "release"), True)

        client = self._mock_client(
            COM_TEST_PROJECT4.replace("version>release", "version>latest"))
        client.find_artifacts.return_value = [
            Artifact("com.test:project2:2.0.0-SNAPSHOT"),
            Artifact("com.test:project2:1.0.0"),
        ]
        pom = Pom("com.test:project4:1.0.0", client)

        deps = list(pom.dependencies["compile"])
        assert len(pom.dependencies) == 1
        assert len(deps) == 1
        assert deps[0] == (("com.test", "project2", "latest"), True)

        client = self._mock_client(
            COM_TEST_PROJECT4.replace("version>release",
                                      "version>latest.release"))
        client.find_artifacts.return_value = [
            Artifact("com.test:project2:2.0.0-SNAPSHOT"),
            Artifact("com.test:project2:1.0.0"),
        ]
        pom = Pom("com.test:project4:1.0.0", client)

        deps = list(pom.dependencies["compile"])
        assert len(pom.dependencies) == 1
        assert len(deps) == 1
        assert deps[0] == (("com.test", "project2", "latest.release"), True)

        client = self._mock_client(
            COM_TEST_PROJECT4.replace("version>release",
                                      "version>latest.integration"))
        client.find_artifacts.return_value = [
            Artifact("com.test:project2:2.0.0-SNAPSHOT"),
            Artifact("com.test:project2:1.0.0"),
        ]
        pom = Pom("com.test:project4:1.0.0", client)

        deps = list(pom.dependencies["compile"])
        assert len(pom.dependencies) == 1
        assert len(deps) == 1
        assert deps[0] == (("com.test", "project2", "latest.integration"),
                           True)
Example #7
0
    def test_comparison(self):
        test_pairs = (
            # compare group id
            (Artifact("f:a:1"), Artifact("g:a:1")),
            # compare artifact id
            (Artifact("g:a:1"), Artifact("g:b:1")),
            # compare type
            (Artifact("g:a:1"), Artifact("g:a:pom:1")),
            (Artifact("g:a:jar:1"), Artifact("g:a:pom:1")),
            (Artifact("g:a:pom:1"), Artifact("g:a:war:1")),
            # compare classifier
            (Artifact("g:a:jar:c:1"), Artifact("g:a:1")),
            (Artifact("g:a:jar:a:1"), Artifact("g:a:jar:c:1")),
            # compare version
            (Artifact("g:a:1"), Artifact("g:a:2")),
            # mask version
            (Artifact("f:a:2"), Artifact("g:a:1")),
            (Artifact("g:a:2"), Artifact("g:b:1")),
            (Artifact("g:a:2"), Artifact("g:a:pom:1")),
            (Artifact("g:a:jar:2"), Artifact("g:a:pom:1")),
            (Artifact("g:a:pom:2"), Artifact("g:a:war:1")),
            (Artifact("g:a:jar:c:2"), Artifact("g:a:1")),
            (Artifact("g:a:jar:a:2"), Artifact("g:a:jar:c:1")),
        )

        for pair in test_pairs:
            self._assertArtifactOrder(*pair)

        # verify identity
        a = Artifact("foo:bar:1")
        assert not a < a
        assert a <= a
        assert a >= a
        assert a == a
        assert not a != a

        # compare to non-artifact
        assert a > "aardvark"
        assert a != "aardvark"
        assert "aardvark" < a
        assert "aardvark" != a
        assert a > 10
        assert a != 10
        assert 10 < a
        assert 10 != a