예제 #1
0
 def environment(self):
     """
     :raises: EnvironmentFileNotDownloaded
     """
     if self._environment is None:
         versions = [{'normalized': normalized_version(d['version']), 'original': d['version']}
                     for d in self.file_data]
         latest_version = max(versions, key=lambda x: x['normalized'])['original']
         file_data = [data
                      for data in self.package['files']
                      if data['version'] == latest_version]
         req = self.binstar.download(self.username, self.packagename, latest_version,
                                     file_data[0]['basename'])
         if req is None:
             raise EnvironmentFileNotDownloaded(self.username, self.packagename)
         self._environment = req.text
     return env.from_yaml(self._environment)
예제 #2
0
    def test_version_order(self):
        versions = [
            ("0.4", [[0], [0], [4]]),
            ("0.4.0", [[0], [0], [4], [0]]),
            ("0.4.1a.vc11", [[0], [0], [4], [1, 'a'], [0, 'vc', 11]]),
            ("0.4.1.rc", [[0], [0], [4], [1], [0, 'rc']]),
            ("0.4.1.vc11", [[0], [0], [4], [1], [0, 'vc', 11]]),
            ("0.4.1", [[0], [0], [4], [1]]),
            ("0.5*", [[0], [0], [5, '*']]),
            ("0.5a1", [[0], [0], [5, 'a', 1]]),
            ("0.5b3", [[0], [0], [5, 'b', 3]]),
            ("0.5C1", [[0], [0], [5, 'c', 1]]),
            ("0.5z", [[0], [0], [5, 'z']]),
            ("0.5za", [[0], [0], [5, 'za']]),
            ("0.5", [[0], [0], [5]]),
            ("0.5_5", [[0], [0], [5], [5]]),
            ("0.5-5", [[0], [0], [5], [5]]),
            ("0.9.6", [[0], [0], [9], [6]]),
            ("0.960923", [[0], [0], [960923]]),
            ("1.0", [[0], [1], [0]]),
            ("1.0.4a3", [[0], [1], [0], [4, 'a', 3]]),
            ("1.0.4b1", [[0], [1], [0], [4, 'b', 1]]),
            ("1.0.4", [[0], [1], [0], [4]]),
            ("1.1dev1", [[0], [1], [1, 'DEV', 1]]),
            ("1.1a1", [[0], [1], [1, 'a', 1]]),
            ("1.1.dev1", [[0], [1], [1], [0, 'DEV', 1]]),
            ("1.1.a1", [[0], [1], [1], [0, 'a', 1]]),
            ("1.1", [[0], [1], [1]]),
            ("1.1.post1", [[0], [1], [1], [0, float('inf'), 1]]),
            ("1.1.1dev1", [[0], [1], [1], [1, 'DEV', 1]]),
            ("1.1.1rc1", [[0], [1], [1], [1, 'rc', 1]]),
            ("1.1.1", [[0], [1], [1], [1]]),
            ("1.1.1post1", [[0], [1], [1], [1, float('inf'), 1]]),
            ("1.1post1", [[0], [1], [1, float('inf'), 1]]),
            ("2g6", [[0], [2, 'g', 6]]),
            ("2.0b1pr0", [[0], [2], [0, 'b', 1, 'pr', 0]]),
            ("2.2be.ta29", [[0], [2], [2, 'be'], [0, 'ta', 29]]),
            ("2.2be5ta29", [[0], [2], [2, 'be', 5, 'ta', 29]]),
            ("2.2beta29", [[0], [2], [2, 'beta', 29]]),
            ("2.2.0.1", [[0], [2], [2], [0], [1]]),
            ("3.1.1.6", [[0], [3], [1], [1], [6]]),
            ("3.2.p.r0", [[0], [3], [2], [0, 'p'], [0, 'r', 0]]),
            ("3.2.pr0", [[0], [3], [2], [0, 'pr', 0]]),
            ("3.2.pr.1", [[0], [3], [2], [0, 'pr'], [1]]),
            ("5.5.kw", [[0], [5], [5], [0, 'kw']]),
            ("11g", [[0], [11, 'g']]),
            ("14.3.1", [[0], [14], [3], [1]]),
            ("14.3.1.post26.g9d75ca2", [[0], [14], [3], [1],
                                        [0, float('inf'), 26],
                                        [0, 'g', 9, 'd', 75, 'ca', 2]]),
            ("1996.07.12", [[0], [1996], [7], [12]]),
            ("1!0.4.1", [[1], [0], [4], [1]]),
            ("1!3.1.1.6", [[1], [3], [1], [1], [6]]),
            ("2!0.4.1", [[2], [0], [4], [1]]),
        ]

        # check parser
        versions = [(v, VersionOrder(v), l) for v, l in versions]
        for s, v, l in versions:
            assert VersionOrder(v) is v
            assert str(v) == s.lower().replace('-', '_')
            self.assertEqual(v.version, l)
        self.assertEqual(VersionOrder("0.4.1.rc"),
                         VersionOrder("  0.4.1.RC  "))
        self.assertEqual(normalized_version("  0.4.1.RC  "),
                         VersionOrder("0.4.1.rc"))
        for ver in ("", "", "  ", "3.5&1", "5.5++", "5.5..mw", "!", "a!1.0",
                    "a!b!1.0"):
            self.assertRaises(ValueError, VersionOrder, ver)

        # check __eq__
        self.assertEqual(VersionOrder("  0.4.rc  "), VersionOrder("0.4.RC"))
        self.assertEqual(VersionOrder("0.4"), VersionOrder("0.4.0"))
        self.assertNotEqual(VersionOrder("0.4"), VersionOrder("0.4.1"))
        self.assertEqual(VersionOrder("0.4.a1"), VersionOrder("0.4.0a1"))
        self.assertNotEqual(VersionOrder("0.4.a1"), VersionOrder("0.4.1a1"))

        # check __lt__
        self.assertEqual(sorted(versions, key=lambda x: x[1]), versions)

        # check startswith
        self.assertTrue(VersionOrder("0.4.1").startswith(VersionOrder("0")))
        self.assertTrue(VersionOrder("0.4.1").startswith(VersionOrder("0.4")))
        self.assertTrue(
            VersionOrder("0.4.1p1").startswith(VersionOrder("0.4")))
        self.assertTrue(
            VersionOrder("0.4.1p1").startswith(VersionOrder("0.4.1p")))
        self.assertFalse(
            VersionOrder("0.4.1p1").startswith(VersionOrder("0.4.1q1")))
        self.assertFalse(VersionOrder("0.4").startswith(VersionOrder("0.4.1")))
        self.assertTrue(
            VersionOrder("0.4.1+1.3").startswith(VersionOrder("0.4.1")))
        self.assertTrue(
            VersionOrder("0.4.1+1.3").startswith(VersionOrder("0.4.1+1")))
        self.assertFalse(
            VersionOrder("0.4.1").startswith(VersionOrder("0.4.1+1.3")))
        self.assertFalse(
            VersionOrder("0.4.1+1").startswith(VersionOrder("0.4.1+1.3")))

        # test openssl convention
        openssl = [
            VersionOrder(k) for k in [
                '1.0.1', '1.0.1post.a', '1.0.1post.b', '1.0.1post.z',
                '1.0.1post.za', '1.0.2'
            ]
        ]
        self.assertEqual(sorted(openssl), openssl)
예제 #3
0
    def test_version_order(self):
        versions = [
           ("0.4",         [[0], [0], [4]]),
           ("0.4.0",      [[0], [0], [4], [0]]),
           ("0.4.1a.vc11",[[0], [0], [4], [1, 'a'],[0, 'vc', 11]]),
           ("0.4.1.rc",   [[0], [0], [4], [1], [0, 'rc']]),
           ("0.4.1.vc11", [[0], [0], [4], [1],[0, 'vc', 11]]),
           ("0.4.1",      [[0], [0], [4], [1]]),
           ("0.5*",       [[0], [0], [5, '*']]),
           ("0.5a1",      [[0], [0], [5, 'a', 1]]),
           ("0.5b3",      [[0], [0], [5, 'b', 3]]),
           ("0.5C1",      [[0], [0], [5, 'c', 1]]),
           ("0.5z",       [[0], [0], [5, 'z']]),
           ("0.5za",      [[0], [0], [5, 'za']]),
           ("0.5",        [[0], [0], [5]]),
           ("0.5_5",      [[0], [0], [5], [5]]),
           ("0.5-5",      [[0], [0], [5], [5]]),
           ("0.9.6",      [[0], [0], [9], [6]]),
           ("0.960923",   [[0], [0], [960923]]),
           ("1.0",        [[0], [1], [0]]),
           ("1.0.4a3",    [[0], [1], [0], [4, 'a', 3]]),
           ("1.0.4b1",    [[0], [1], [0], [4, 'b', 1]]),
           ("1.0.4",      [[0], [1], [0], [4]]),
           ("1.1dev1",    [[0], [1], [1, 'DEV', 1]]),
           ("1.1a1",      [[0], [1], [1, 'a', 1]]),
           ("1.1.dev1",   [[0], [1], [1], [0, 'DEV', 1]]),
           ("1.1.a1",     [[0], [1], [1], [0, 'a', 1]]),
           ("1.1",        [[0], [1], [1]]),
           ("1.1.post1",  [[0], [1], [1], [0, float('inf'), 1]]),
           ("1.1.1dev1",  [[0], [1], [1], [1, 'DEV', 1]]),
           ("1.1.1rc1",   [[0], [1], [1], [1, 'rc', 1]]),
           ("1.1.1",      [[0], [1], [1], [1]]),
           ("1.1.1post1", [[0], [1], [1], [1, float('inf'), 1]]),
           ("1.1post1",   [[0], [1], [1, float('inf'), 1]]),
           ("2g6",        [[0], [2, 'g', 6]]),
           ("2.0b1pr0",   [[0], [2], [0, 'b', 1, 'pr', 0]]),
           ("2.2be.ta29", [[0], [2], [2, 'be'], [0, 'ta', 29]]),
           ("2.2be5ta29", [[0], [2], [2, 'be', 5, 'ta', 29]]),
           ("2.2beta29",  [[0], [2], [2, 'beta', 29]]),
           ("2.2.0.1",    [[0], [2], [2],[0],[1]]),
           ("3.1.1.6",    [[0], [3], [1], [1], [6]]),
           ("3.2.p.r0",   [[0], [3], [2], [0, 'p'], [0, 'r', 0]]),
           ("3.2.pr0",    [[0], [3], [2], [0, 'pr', 0]]),
           ("3.2.pr.1",   [[0], [3], [2], [0, 'pr'], [1]]),
           ("5.5.kw",     [[0], [5], [5], [0, 'kw']]),
           ("11g",        [[0], [11, 'g']]),
           ("14.3.1",     [[0], [14], [3], [1]]),
           ("14.3.1.post26.g9d75ca2",
                                        [[0],[14],[3],[1],[0,float('inf'),26],[0,'g',9,'d',75,'ca',2]]),
           ("1996.07.12", [[0], [1996], [7], [12]]),
           ("1!0.4.1",    [[1], [0], [4], [1]]),
           ("1!3.1.1.6",  [[1], [3], [1], [1], [6]]),
           ("2!0.4.1",    [[2], [0], [4], [1]]),
        ]

        # check parser
        versions = [(v, VersionOrder(v), l) for v, l in versions]
        for s, v, l in versions:
            assert VersionOrder(v) is v
            assert str(v) == s.lower().replace('-', '_')
            self.assertEqual(v.version, l)
        self.assertEqual(VersionOrder("0.4.1.rc"), VersionOrder("  0.4.1.RC  "))
        self.assertEqual(normalized_version("  0.4.1.RC  "), VersionOrder("0.4.1.rc"))
        for ver in ("", "", "  ", "3.5&1", "5.5++", "5.5..mw", "!", "a!1.0", "a!b!1.0"):
            self.assertRaises(ValueError, VersionOrder, ver)

        # check __eq__
        self.assertEqual(VersionOrder("  0.4.rc  "), VersionOrder("0.4.RC"))
        self.assertEqual(VersionOrder("0.4"), VersionOrder("0.4.0"))
        self.assertNotEqual(VersionOrder("0.4"), VersionOrder("0.4.1"))
        self.assertEqual(VersionOrder("0.4.a1"), VersionOrder("0.4.0a1"))
        self.assertNotEqual(VersionOrder("0.4.a1"), VersionOrder("0.4.1a1"))

        # check __lt__
        self.assertEqual(sorted(versions, key=lambda x: x[1]), versions)

        # check startswith
        self.assertTrue(VersionOrder("0.4.1").startswith(VersionOrder("0")))
        self.assertTrue(VersionOrder("0.4.1").startswith(VersionOrder("0.4")))
        self.assertTrue(VersionOrder("0.4.1p1").startswith(VersionOrder("0.4")))
        self.assertTrue(VersionOrder("0.4.1p1").startswith(VersionOrder("0.4.1p")))
        self.assertFalse(VersionOrder("0.4.1p1").startswith(VersionOrder("0.4.1q1")))
        self.assertFalse(VersionOrder("0.4").startswith(VersionOrder("0.4.1")))
        self.assertTrue(VersionOrder("0.4.1+1.3").startswith(VersionOrder("0.4.1")))
        self.assertTrue(VersionOrder("0.4.1+1.3").startswith(VersionOrder("0.4.1+1")))
        self.assertFalse(VersionOrder("0.4.1").startswith(VersionOrder("0.4.1+1.3")))
        self.assertFalse(VersionOrder("0.4.1+1").startswith(VersionOrder("0.4.1+1.3")))

        # test openssl convention
        openssl = [VersionOrder(k) for k in ['1.0.1', '1.0.1post.a', '1.0.1post.b',
                                             '1.0.1post.z', '1.0.1post.za', '1.0.2']]
        self.assertEqual(sorted(openssl), openssl)