Esempio n. 1
0
 def test_list_package_requirements(self, test_recipebook):
     pkg = ("baton-pkg", "3.0.1")
     assert test_recipebook.package_requirements(pkg) == \
         {("irods-dev", VersionSpec("4.2.7")),
          ("irods-dev", VersionSpec("4.2.8")),
          ("libjansson-dev", None),
          ("libssl-dev", None)}
Esempio n. 2
0
 def test_version_spec_3(self):
     v1 = VersionSpec('1.7.1*')
     v2 = VersionSpec('1.7.1.*')
     self.assertFalse(v1.is_exact())
     self.assertFalse(v2.is_exact())
     self.assertTrue(v1 == v2)
     self.assertFalse(v1 != v2)
     self.assertEqual(hash(v1), hash(v2))
Esempio n. 3
0
 def test_version_spec_4(self):
     v1 = VersionSpec('1.7.1*,1.8.1*')
     v2 = VersionSpec('1.7.1.*,1.8.1.*')
     v3 = VersionSpec('1.7.1*,1.8.1.*')
     assert v1.is_exact() is False
     assert v2.is_exact() is False
     assert v1 == v2 == v3
     assert not v1 != v2
     assert hash(v1) == hash(v2) == hash(v3)
Esempio n. 4
0
def check_result(all_versions, acceptable_versions, expected_range):
    version_ranges = find_version_ranges(all_versions, acceptable_versions)
    assert expected_range == version_ranges
    if expected_range:
        specifier = VersionSpec(expected_range)
        try:
            assert all(specifier.any_match(v) for v in acceptable_versions)
        except AttributeError:
            assert all(specifier.match(v) for v in acceptable_versions)
Esempio n. 5
0
 def test_local_identifier(self):
     """The separator for the local identifier should be either `.` or `+`"""
     # a valid versionstr should match itself
     versions = (
         '1.7.0'
         '1.7.0.post123'
         '1.7.0.post123.gabcdef9',
         '1.7.0.post123+gabcdef9',
     )
     for version in versions:
         m = VersionSpec(version)
         self.assertTrue(m.match(version))
Esempio n. 6
0
 def test_local_identifier(self):
     """The separator for the local identifier should be either `.` or `+`"""
     # a valid versionstr should match itself
     versions = (
         '1.7.0'
         '1.7.0.post123'
         '1.7.0.post123.gabcdef9',
         '1.7.0.post123+gabcdef9',
     )
     for version in versions:
         m = VersionSpec(version)
         self.assertTrue(m.match(version))
Esempio n. 7
0
 def test_version_spec_1(self):
     v1 = VersionSpec('1.7.1')
     v2 = VersionSpec('1.7.1*')
     v3 = VersionSpec('1.7.1')
     self.assertTrue(v1.is_exact())
     self.assertFalse(v2.is_exact())
     self.assertTrue(v1 == v3)
     self.assertFalse(v1 != v3)
     self.assertTrue(v1 != v2)
     self.assertFalse(v1 == v2)
     self.assertTrue(v1 != 1.0)
     self.assertFalse(v1 == 1.0)
     self.assertEqual(hash(v1), hash(v3))
     self.assertNotEqual(hash(v1), hash(v2))
Esempio n. 8
0
    def test_compatible_release_versions(self):
        assert VersionSpec("~=1.10").match("1.11.0")
        assert not VersionSpec("~=1.10.0").match("1.11.0")

        assert not VersionSpec("~=3.3.2").match("3.4.0")
        assert not VersionSpec("~=3.3.2").match("3.3.1")
        assert VersionSpec("~=3.3.2").match("3.3.2.0")
        assert VersionSpec("~=3.3.2").match("3.3.3")

        assert VersionSpec("~=3.3.2|==2.2").match("2.2.0")
        assert VersionSpec("~=3.3.2|==2.2").match("3.3.3")
        assert not VersionSpec("~=3.3.2|==2.2").match("2.2.1")

        with pytest.raises(InvalidVersionSpec):
            VersionSpec("~=3.3.2.*")
Esempio n. 9
0
 def test_compound_versions(self):
     vs = VersionSpec('>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*')
     assert not vs.match('2.6.8')
     assert vs.match('2.7.2')
     assert not vs.match('3.3')
     assert not vs.match('3.3.4')
     assert vs.match('3.4')
     assert vs.match('3.4a')
Esempio n. 10
0
 def test_version_spec_2(self):
     v1 = VersionSpec('( (1.5|((1.6|1.7), 1.8), 1.9 |2.0))|2.1')
     self.assertEqual(v1.spec, '1.5|1.6|1.7,1.8,1.9|2.0|2.1')
     self.assertRaises(InvalidVersionSpecError, VersionSpec, '(1.5')
     self.assertRaises(InvalidVersionSpecError, VersionSpec, '1.5)')
     self.assertRaises(InvalidVersionSpecError, VersionSpec, '1.5||1.6')
     self.assertRaises(InvalidVersionSpecError, VersionSpec, '^1.5')
Esempio n. 11
0
 def test_compound_versions(self):
     vs = VersionSpec('>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*')
     assert not vs.match('2.6.8')
     assert vs.match('2.7.2')
     assert not vs.match('3.3')
     assert not vs.match('3.3.4')
     assert vs.match('3.4')
     assert vs.match('3.4a')
Esempio n. 12
0
 def test_match(self):
     for vspec, res in [
         ('1.7.*', True),
         ('1.7.1', True),
         ('1.7.0', False),
         ('1.7', False),
         ('1.5.*', False),
         ('>=1.5', True),
         ('!=1.5', True),
         ('!=1.7.1', False),
         ('==1.7.1', True),
         ('==1.7', False),
         ('==1.7.2', False),
         ('==1.7.1.0', True),
         ('1.7.*|1.8.*', True),
             # ('1.8/*|1.9.*', False),  what was this supposed to be?
         ('>1.7,<1.8', True),
         ('>1.7.1,<1.8', False),
         ('^1.7.1$', True),
         ('^1\.7\.1$', True),
         ('^1\.7\.[0-9]+$', True),
         ('^1\.8.*$', False),
         ('^1\.[5-8]\.1$', True),
         ('^[^1].*$', False),
         ('^[0-9+]+\.[0-9+]+\.[0-9]+$', True),
         ('^$', False),
         ('^.*$', True),
         ('1.7.*|^0.*$', True),
         ('1.6.*|^0.*$', False),
         ('1.6.*|^0.*$|1.7.1', True),
         ('^0.*$|1.7.1', True),
         ('1.6.*|^.*\.7\.1$|0.7.1', True),
         ('*', True),
         ('1.*.1', True),
         ('1.5.*|>1.7,<1.8', True),
         ('1.5.*|>1.7,<1.7.1', False),
     ]:
         m = VersionSpec(vspec)
         assert VersionSpec(m) is m
         assert str(m) == vspec
         assert repr(m) == "VersionSpec('%s')" % vspec
         assert m.match('1.7.1') == res, vspec
Esempio n. 13
0
 def test_version_spec_4(self):
     v1 = VersionSpec('1.7.1*,1.8.1*')
     v2 = VersionSpec('1.7.1.*,1.8.1.*')
     v3 = VersionSpec('1.7.1*,1.8.1.*')
     assert v1.is_exact() is False
     assert v2.is_exact() is False
     assert v1 == v2 == v3
     assert not v1 != v2
     assert hash(v1) == hash(v2) == hash(v3)
Esempio n. 14
0
 def test_match(self):
     for vspec, res in [
         ('1.7.*', True),   ('1.7.1', True),    ('1.7.0', False),
         ('1.7', False),   ('1.5.*', False),    ('>=1.5', True),
         ('!=1.5', True),  ('!=1.7.1', False), ('==1.7.1', True),
         ('==1.7', False), ('==1.7.2', False), ('==1.7.1.0', True),
         ('1.7.*|1.8.*', True),
         # ('1.8/*|1.9.*', False),  what was this supposed to be?
         ('>1.7,<1.8', True), ('>1.7.1,<1.8', False),
         ('^1.7.1$', True), ('^1\.7\.1$', True), ('^1\.7\.[0-9]+$', True),
         ('^1\.8.*$', False), ('^1\.[5-8]\.1$', True), ('^[^1].*$', False),
         ('^[0-9+]+\.[0-9+]+\.[0-9]+$', True), ('^$', False),
         ('^.*$', True), ('1.7.*|^0.*$', True), ('1.6.*|^0.*$', False),
         ('1.6.*|^0.*$|1.7.1', True), ('^0.*$|1.7.1', True),
         ('1.6.*|^.*\.7\.1$|0.7.1', True), ('*', True), ('1.*.1', True),
         ('1.5.*|>1.7,<1.8', True), ('1.5.*|>1.7,<1.7.1', False),
     ]:
         m = VersionSpec(vspec)
         assert VersionSpec(m) is m
         assert str(m) == vspec
         assert repr(m) == "VersionSpec('%s')" % vspec
         assert m.match('1.7.1') == res, vspec
Esempio n. 15
0
 def test_version_spec_3(self):
     v1 = VersionSpec('1.7.1*')
     v2 = VersionSpec('1.7.1.*')
     self.assertFalse(v1.is_exact())
     self.assertFalse(v2.is_exact())
     self.assertTrue(v1 == v2)
     self.assertFalse(v1 != v2)
     self.assertEqual(hash(v1), hash(v2))
Esempio n. 16
0
def version_eq2ge(spec, except_package_list=None):
    if (except_package_list is None) or (spec.name not in except_package_list):
        # noinspection PyProtectedMember
        kwargs = {
            key: value
            for key, value in spec._match_components.items()
            if key == "channel"
        }
        spec = MatchSpec(
            version=VersionSpec(">=" + str(spec.version.matcher_vo)),
            name=spec.name,
            **kwargs,
        )
    return spec
Esempio n. 17
0
 def test_version_spec(self):
     v1 = VersionSpec('1.7.1')
     v2 = VersionSpec('1.7.1*')
     v3 = VersionSpec('1.7.1')
     self.assertTrue(v1.is_exact())
     self.assertFalse(v2.is_exact())
     self.assertTrue(v1 == v3)
     self.assertFalse(v1 != v3)
     self.assertTrue(v1 != v2)
     self.assertFalse(v1 == v2)
     self.assertTrue(v1 != 1.0)
     self.assertFalse(v1 == 1.0)
     self.assertEqual(hash(v1), hash(v3))
     self.assertNotEqual(hash(v1), hash(v2))
     v1 = VersionSpec('( (1.5|((1.6|1.7), 1.8), 1.9 |2.0))|2.1')
     self.assertEqual(v1.spec, '1.5|(1.6|1.7),1.8,1.9|2.0|2.1')
     self.assertRaises(InvalidVersionSpecError, VersionSpec, '(1.5')
     self.assertRaises(InvalidVersionSpecError, VersionSpec, '1.5)')
     self.assertRaises(InvalidVersionSpecError, VersionSpec, '1.5||1.6')
     self.assertRaises(InvalidVersionSpecError, VersionSpec, '^1.5')
Esempio n. 18
0
 def test_version_spec_1(self):
     v1 = VersionSpec('1.7.1')
     v2 = VersionSpec('1.7.1*')
     v3 = VersionSpec('1.7.1')
     self.assertTrue(v1.is_exact())
     self.assertFalse(v2.is_exact())
     self.assertTrue(v1 == v3)
     self.assertFalse(v1 != v3)
     self.assertTrue(v1 != v2)
     self.assertFalse(v1 == v2)
     self.assertTrue(v1 != 1.0)
     self.assertFalse(v1 == 1.0)
     self.assertEqual(hash(v1), hash(v3))
     self.assertNotEqual(hash(v1), hash(v2))
Esempio n. 19
0
    def test_dist(self):
        with env_unmodified(conda_tests_ctxt_mgmt_def_pol):
            dst = Dist('defaults::foo-1.2.3-4.tar.bz2')
            a = MatchSpec(dst)
            b = MatchSpec(a)
            c = MatchSpec(dst, optional=True, target='burg')
            d = MatchSpec(a, build='5')

            assert a == b
            assert hash(a) == hash(b)
            assert a is b

            assert a != c
            assert hash(a) != hash(c)

            assert a != d
            assert hash(a) != hash(d)

            p = MatchSpec(channel='defaults',name='python',version=VersionSpec('3.5*'))
            assert p.match(Dist(channel='defaults', dist_name='python-3.5.3-1', name='python',
                                version='3.5.3', build_string='1', build_number=1, base_url=None,
                                platform=None))

            assert not p.match(Dist(channel='defaults', dist_name='python-3.6.0-0', name='python',
                                    version='3.6.0', build_string='0', build_number=0, base_url=None,
                                    platform=None))

            assert p.match(Dist(channel='defaults', dist_name='python-3.5.1-0', name='python',
                                version='3.5.1', build_string='0', build_number=0, base_url=None,
                                platform=None))
            assert p.match(PackageRecord(name='python', version='3.5.1', build='0', build_number=0,
                                         depends=('openssl 1.0.2*', 'readline 6.2*', 'sqlite',
                                                   'tk 8.5*', 'xz 5.0.5', 'zlib 1.2*', 'pip'),
                                         channel=Channel(scheme='https', auth=None,
                                                          location='repo.anaconda.com', token=None,
                                                          name='pkgs/main', platform='osx-64',
                                                          package_filename=None),
                                         subdir='osx-64', fn='python-3.5.1-0.tar.bz2',
                                         md5='a813bc0a32691ab3331ac9f37125164c', size=14678857,
                                         priority=0,
                                         url='https://repo.anaconda.com/pkgs/main/osx-64/python-3.5.1-0.tar.bz2'))
Esempio n. 20
0
    def test_not_eq_star(self):
        assert VersionSpec("=3.3").match("3.3.1")
        assert VersionSpec("=3.3").match("3.3")
        assert not VersionSpec("=3.3").match("3.4")

        assert VersionSpec("3.3.*").match("3.3.1")
        assert VersionSpec("3.3.*").match("3.3")
        assert not VersionSpec("3.3.*").match("3.4")

        assert VersionSpec("=3.3.*").match("3.3.1")
        assert VersionSpec("=3.3.*").match("3.3")
        assert not VersionSpec("=3.3.*").match("3.4")

        assert not VersionSpec("!=3.3.*").match("3.3.1")
        assert VersionSpec("!=3.3.*").match("3.4")
        assert VersionSpec("!=3.3.*").match("3.4.1")

        assert VersionSpec("!=3.3").match("3.3.1")
        assert not VersionSpec("!=3.3").match("3.3.0.0")
        assert not VersionSpec("!=3.3.*").match("3.3.0.0")
Esempio n. 21
0
 def test_invalid_version_specs(self):
     with pytest.raises(InvalidVersionSpec):
         VersionSpec("~")
     with pytest.raises(InvalidVersionSpec):
         VersionSpec("^")
Esempio n. 22
0
 def test_pep_440_arbitrary_equality_operator(self):
     # We're going to leave the not implemented for now.
     with pytest.raises(InvalidVersionSpec):
         VersionSpec("===3.3.2")