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)
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)
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)