test_platform.py revision a43f34cc2a7a55cea794ecb9bda2eea5c685d1f3
15915a4dcfebf74d0a2c99848ede619f5bf7d2899Benjamin Petersonimport sys 2913c15c1c6641195b492837eee1189369abe04b7Benjamin Petersonimport os 3c69d1c498f3896803f78de613a54d17be88bbeafWalter Dörwaldimport unittest 4c69d1c498f3896803f78de613a54d17be88bbeafWalter Dörwaldimport platform 56e5e50104c90501477e1ecc739e563f0f9b1129dHirokazu Yamamotoimport subprocess 6c69d1c498f3896803f78de613a54d17be88bbeafWalter Dörwald 75915a4dcfebf74d0a2c99848ede619f5bf7d2899Benjamin Petersonfrom test import test_support 85915a4dcfebf74d0a2c99848ede619f5bf7d2899Benjamin Peterson 9c69d1c498f3896803f78de613a54d17be88bbeafWalter Dörwaldclass PlatformTest(unittest.TestCase): 10c69d1c498f3896803f78de613a54d17be88bbeafWalter Dörwald def test_architecture(self): 11c69d1c498f3896803f78de613a54d17be88bbeafWalter Dörwald res = platform.architecture() 12c69d1c498f3896803f78de613a54d17be88bbeafWalter Dörwald 136e5e50104c90501477e1ecc739e563f0f9b1129dHirokazu Yamamoto if hasattr(os, "symlink"): 146e5e50104c90501477e1ecc739e563f0f9b1129dHirokazu Yamamoto def test_architecture_via_symlink(self): # issue3762 156e5e50104c90501477e1ecc739e563f0f9b1129dHirokazu Yamamoto def get(python): 166e5e50104c90501477e1ecc739e563f0f9b1129dHirokazu Yamamoto cmd = [python, '-c', 176e5e50104c90501477e1ecc739e563f0f9b1129dHirokazu Yamamoto 'import platform; print platform.architecture()'] 186e5e50104c90501477e1ecc739e563f0f9b1129dHirokazu Yamamoto p = subprocess.Popen(cmd, stdout=subprocess.PIPE) 196e5e50104c90501477e1ecc739e563f0f9b1129dHirokazu Yamamoto return p.communicate() 2018c4e8734c7d817163e2c6564eedc246a2c9aa58Hirokazu Yamamoto real = os.path.realpath(sys.executable) 2118c4e8734c7d817163e2c6564eedc246a2c9aa58Hirokazu Yamamoto link = os.path.abspath(test_support.TESTFN) 2218c4e8734c7d817163e2c6564eedc246a2c9aa58Hirokazu Yamamoto os.symlink(real, link) 236e5e50104c90501477e1ecc739e563f0f9b1129dHirokazu Yamamoto try: 2418c4e8734c7d817163e2c6564eedc246a2c9aa58Hirokazu Yamamoto self.assertEqual(get(real), get(link)) 256e5e50104c90501477e1ecc739e563f0f9b1129dHirokazu Yamamoto finally: 2618c4e8734c7d817163e2c6564eedc246a2c9aa58Hirokazu Yamamoto os.remove(link) 276e5e50104c90501477e1ecc739e563f0f9b1129dHirokazu Yamamoto 28c69d1c498f3896803f78de613a54d17be88bbeafWalter Dörwald def test_platform(self): 29c69d1c498f3896803f78de613a54d17be88bbeafWalter Dörwald for aliased in (False, True): 30c69d1c498f3896803f78de613a54d17be88bbeafWalter Dörwald for terse in (False, True): 31c69d1c498f3896803f78de613a54d17be88bbeafWalter Dörwald res = platform.platform(aliased, terse) 32c69d1c498f3896803f78de613a54d17be88bbeafWalter Dörwald 33a519cfc9534016725435c23fc1840d7d43d47c3bMarc-André Lemburg def test_system(self): 34a519cfc9534016725435c23fc1840d7d43d47c3bMarc-André Lemburg res = platform.system() 35c69d1c498f3896803f78de613a54d17be88bbeafWalter Dörwald 36a519cfc9534016725435c23fc1840d7d43d47c3bMarc-André Lemburg def test_node(self): 37a519cfc9534016725435c23fc1840d7d43d47c3bMarc-André Lemburg res = platform.node() 38c69d1c498f3896803f78de613a54d17be88bbeafWalter Dörwald 39a519cfc9534016725435c23fc1840d7d43d47c3bMarc-André Lemburg def test_release(self): 40a519cfc9534016725435c23fc1840d7d43d47c3bMarc-André Lemburg res = platform.release() 41c69d1c498f3896803f78de613a54d17be88bbeafWalter Dörwald 42c69d1c498f3896803f78de613a54d17be88bbeafWalter Dörwald def test_version(self): 43a519cfc9534016725435c23fc1840d7d43d47c3bMarc-André Lemburg res = platform.version() 44a519cfc9534016725435c23fc1840d7d43d47c3bMarc-André Lemburg 45a519cfc9534016725435c23fc1840d7d43d47c3bMarc-André Lemburg def test_machine(self): 46a519cfc9534016725435c23fc1840d7d43d47c3bMarc-André Lemburg res = platform.machine() 47a519cfc9534016725435c23fc1840d7d43d47c3bMarc-André Lemburg 48a519cfc9534016725435c23fc1840d7d43d47c3bMarc-André Lemburg def test_processor(self): 49a519cfc9534016725435c23fc1840d7d43d47c3bMarc-André Lemburg res = platform.processor() 50a519cfc9534016725435c23fc1840d7d43d47c3bMarc-André Lemburg 51f521b8c6d25544456394e5cd172b6a24d5d958a6Benjamin Peterson def setUp(self): 52f521b8c6d25544456394e5cd172b6a24d5d958a6Benjamin Peterson self.save_version = sys.version 53f521b8c6d25544456394e5cd172b6a24d5d958a6Benjamin Peterson self.save_subversion = sys.subversion 54f521b8c6d25544456394e5cd172b6a24d5d958a6Benjamin Peterson self.save_platform = sys.platform 55f521b8c6d25544456394e5cd172b6a24d5d958a6Benjamin Peterson 56f521b8c6d25544456394e5cd172b6a24d5d958a6Benjamin Peterson def tearDown(self): 57f521b8c6d25544456394e5cd172b6a24d5d958a6Benjamin Peterson sys.version = self.save_version 58f521b8c6d25544456394e5cd172b6a24d5d958a6Benjamin Peterson sys.subversion = self.save_subversion 59f521b8c6d25544456394e5cd172b6a24d5d958a6Benjamin Peterson sys.platform = self.save_platform 60f521b8c6d25544456394e5cd172b6a24d5d958a6Benjamin Peterson 6194e4e2a7e583471627d76a2f3b2886c9064b7420Benjamin Peterson def test_sys_version(self): 6294e4e2a7e583471627d76a2f3b2886c9064b7420Benjamin Peterson # Old test. 6394e4e2a7e583471627d76a2f3b2886c9064b7420Benjamin Peterson for input, output in ( 6494e4e2a7e583471627d76a2f3b2886c9064b7420Benjamin Peterson ('2.4.3 (#1, Jun 21 2006, 13:54:21) \n[GCC 3.3.4 (pre 3.3.5 20040809)]', 6594e4e2a7e583471627d76a2f3b2886c9064b7420Benjamin Peterson ('CPython', '2.4.3', '', '', '1', 'Jun 21 2006 13:54:21', 'GCC 3.3.4 (pre 3.3.5 20040809)')), 6694e4e2a7e583471627d76a2f3b2886c9064b7420Benjamin Peterson ('IronPython 1.0.60816 on .NET 2.0.50727.42', 6794e4e2a7e583471627d76a2f3b2886c9064b7420Benjamin Peterson ('IronPython', '1.0.60816', '', '', '', '', '.NET 2.0.50727.42')), 6894e4e2a7e583471627d76a2f3b2886c9064b7420Benjamin Peterson ('IronPython 1.0 (1.0.61005.1977) on .NET 2.0.50727.42', 6994e4e2a7e583471627d76a2f3b2886c9064b7420Benjamin Peterson ('IronPython', '1.0.0', '', '', '', '', '.NET 2.0.50727.42')), 7094e4e2a7e583471627d76a2f3b2886c9064b7420Benjamin Peterson ): 7194e4e2a7e583471627d76a2f3b2886c9064b7420Benjamin Peterson # branch and revision are not "parsed", but fetched 7294e4e2a7e583471627d76a2f3b2886c9064b7420Benjamin Peterson # from sys.subversion. Ignore them 7394e4e2a7e583471627d76a2f3b2886c9064b7420Benjamin Peterson (name, version, branch, revision, buildno, builddate, compiler) \ 7494e4e2a7e583471627d76a2f3b2886c9064b7420Benjamin Peterson = platform._sys_version(input) 7594e4e2a7e583471627d76a2f3b2886c9064b7420Benjamin Peterson self.assertEqual( 7694e4e2a7e583471627d76a2f3b2886c9064b7420Benjamin Peterson (name, version, '', '', buildno, builddate, compiler), output) 7794e4e2a7e583471627d76a2f3b2886c9064b7420Benjamin Peterson 78f521b8c6d25544456394e5cd172b6a24d5d958a6Benjamin Peterson # Tests for python_implementation(), python_version(), python_branch(), 79f521b8c6d25544456394e5cd172b6a24d5d958a6Benjamin Peterson # python_revision(), python_build(), and python_compiler(). 80f521b8c6d25544456394e5cd172b6a24d5d958a6Benjamin Peterson sys_versions = { 81f521b8c6d25544456394e5cd172b6a24d5d958a6Benjamin Peterson ("2.6.1 (r261:67515, Dec 6 2008, 15:26:00) \n[GCC 4.0.1 (Apple Computer, Inc. build 5370)]", 82f521b8c6d25544456394e5cd172b6a24d5d958a6Benjamin Peterson ('CPython', 'tags/r261', '67515'), self.save_platform) 83f521b8c6d25544456394e5cd172b6a24d5d958a6Benjamin Peterson : 84f521b8c6d25544456394e5cd172b6a24d5d958a6Benjamin Peterson ("CPython", "2.6.1", "tags/r261", "67515", 85f521b8c6d25544456394e5cd172b6a24d5d958a6Benjamin Peterson ('r261:67515', 'Dec 6 2008 15:26:00'), 86f521b8c6d25544456394e5cd172b6a24d5d958a6Benjamin Peterson 'GCC 4.0.1 (Apple Computer, Inc. build 5370)'), 87f521b8c6d25544456394e5cd172b6a24d5d958a6Benjamin Peterson ("IronPython 2.0 (2.0.0.0) on .NET 2.0.50727.3053", None, "cli") 88f521b8c6d25544456394e5cd172b6a24d5d958a6Benjamin Peterson : 89f521b8c6d25544456394e5cd172b6a24d5d958a6Benjamin Peterson ("IronPython", "2.0.0", "", "", ("", ""), 90f521b8c6d25544456394e5cd172b6a24d5d958a6Benjamin Peterson ".NET 2.0.50727.3053"), 91f521b8c6d25544456394e5cd172b6a24d5d958a6Benjamin Peterson ("2.5 (trunk:6107, Mar 26 2009, 13:02:18) \n[Java HotSpot(TM) Client VM (\"Apple Computer, Inc.\")]", 92b457b89323e3110159298bb5aa149f56733aaef8Benjamin Peterson ('Jython', 'trunk', '6107'), "java1.5.0_16") 93f521b8c6d25544456394e5cd172b6a24d5d958a6Benjamin Peterson : 94b457b89323e3110159298bb5aa149f56733aaef8Benjamin Peterson ("Jython", "2.5.0", "trunk", "6107", 95b457b89323e3110159298bb5aa149f56733aaef8Benjamin Peterson ('trunk:6107', 'Mar 26 2009'), "java1.5.0_16"), 960ad9b7727d172fc772a5499da37efcc9385ed7b0Benjamin Peterson ("2.5.2 (63378, Mar 26 2009, 18:03:29)\n[PyPy 1.0.0]", 970ad9b7727d172fc772a5499da37efcc9385ed7b0Benjamin Peterson ('PyPy', 'trunk', '63378'), self.save_platform) 980ad9b7727d172fc772a5499da37efcc9385ed7b0Benjamin Peterson : 990ad9b7727d172fc772a5499da37efcc9385ed7b0Benjamin Peterson ("PyPy", "2.5.2", "trunk", "63378", ('63378', 'Mar 26 2009'), 1000ad9b7727d172fc772a5499da37efcc9385ed7b0Benjamin Peterson "") 101f521b8c6d25544456394e5cd172b6a24d5d958a6Benjamin Peterson } 102f521b8c6d25544456394e5cd172b6a24d5d958a6Benjamin Peterson for (version_tag, subversion, sys_platform), info in \ 103f521b8c6d25544456394e5cd172b6a24d5d958a6Benjamin Peterson sys_versions.iteritems(): 104f521b8c6d25544456394e5cd172b6a24d5d958a6Benjamin Peterson sys.version = version_tag 105f521b8c6d25544456394e5cd172b6a24d5d958a6Benjamin Peterson if subversion is None: 106f521b8c6d25544456394e5cd172b6a24d5d958a6Benjamin Peterson if hasattr(sys, "subversion"): 107f521b8c6d25544456394e5cd172b6a24d5d958a6Benjamin Peterson del sys.subversion 108f521b8c6d25544456394e5cd172b6a24d5d958a6Benjamin Peterson else: 109f521b8c6d25544456394e5cd172b6a24d5d958a6Benjamin Peterson sys.subversion = subversion 110f521b8c6d25544456394e5cd172b6a24d5d958a6Benjamin Peterson if sys_platform is not None: 111f521b8c6d25544456394e5cd172b6a24d5d958a6Benjamin Peterson sys.platform = sys_platform 112f521b8c6d25544456394e5cd172b6a24d5d958a6Benjamin Peterson self.assertEqual(platform.python_implementation(), info[0]) 113f521b8c6d25544456394e5cd172b6a24d5d958a6Benjamin Peterson self.assertEqual(platform.python_version(), info[1]) 114f521b8c6d25544456394e5cd172b6a24d5d958a6Benjamin Peterson self.assertEqual(platform.python_branch(), info[2]) 115f521b8c6d25544456394e5cd172b6a24d5d958a6Benjamin Peterson self.assertEqual(platform.python_revision(), info[3]) 116f521b8c6d25544456394e5cd172b6a24d5d958a6Benjamin Peterson self.assertEqual(platform.python_build(), info[4]) 117f521b8c6d25544456394e5cd172b6a24d5d958a6Benjamin Peterson self.assertEqual(platform.python_compiler(), info[5]) 118c69d1c498f3896803f78de613a54d17be88bbeafWalter Dörwald 119c69d1c498f3896803f78de613a54d17be88bbeafWalter Dörwald def test_system_alias(self): 120c69d1c498f3896803f78de613a54d17be88bbeafWalter Dörwald res = platform.system_alias( 121c69d1c498f3896803f78de613a54d17be88bbeafWalter Dörwald platform.system(), 122c69d1c498f3896803f78de613a54d17be88bbeafWalter Dörwald platform.release(), 123c69d1c498f3896803f78de613a54d17be88bbeafWalter Dörwald platform.version(), 124c69d1c498f3896803f78de613a54d17be88bbeafWalter Dörwald ) 125c69d1c498f3896803f78de613a54d17be88bbeafWalter Dörwald 126c69d1c498f3896803f78de613a54d17be88bbeafWalter Dörwald def test_uname(self): 127c69d1c498f3896803f78de613a54d17be88bbeafWalter Dörwald res = platform.uname() 1285c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertTrue(any(res)) 129c69d1c498f3896803f78de613a54d17be88bbeafWalter Dörwald 130c69d1c498f3896803f78de613a54d17be88bbeafWalter Dörwald def test_java_ver(self): 131c69d1c498f3896803f78de613a54d17be88bbeafWalter Dörwald res = platform.java_ver() 1325915a4dcfebf74d0a2c99848ede619f5bf7d2899Benjamin Peterson if sys.platform == 'java': 1335c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertTrue(all(res)) 134c69d1c498f3896803f78de613a54d17be88bbeafWalter Dörwald 135c69d1c498f3896803f78de613a54d17be88bbeafWalter Dörwald def test_win32_ver(self): 136c69d1c498f3896803f78de613a54d17be88bbeafWalter Dörwald res = platform.win32_ver() 137c69d1c498f3896803f78de613a54d17be88bbeafWalter Dörwald 138c69d1c498f3896803f78de613a54d17be88bbeafWalter Dörwald def test_mac_ver(self): 139c69d1c498f3896803f78de613a54d17be88bbeafWalter Dörwald res = platform.mac_ver() 1407a0f4c75b1d2e3ceb758970ad39d468e95dfc6edRonald Oussoren 141a4e4ef1cea957795b45e9956a6fc6eec76ceebafBenjamin Peterson try: 142a4e4ef1cea957795b45e9956a6fc6eec76ceebafBenjamin Peterson import gestalt 143a4e4ef1cea957795b45e9956a6fc6eec76ceebafBenjamin Peterson except ImportError: 144a4e4ef1cea957795b45e9956a6fc6eec76ceebafBenjamin Peterson have_toolbox_glue = False 145a4e4ef1cea957795b45e9956a6fc6eec76ceebafBenjamin Peterson else: 146a4e4ef1cea957795b45e9956a6fc6eec76ceebafBenjamin Peterson have_toolbox_glue = True 147a4e4ef1cea957795b45e9956a6fc6eec76ceebafBenjamin Peterson 14831296c09ed1f1114a325da4ecafc5a8d8f079284Benjamin Peterson if have_toolbox_glue and platform.uname()[0] == 'Darwin': 1497a0f4c75b1d2e3ceb758970ad39d468e95dfc6edRonald Oussoren # We're on a MacOSX system, check that 1507a0f4c75b1d2e3ceb758970ad39d468e95dfc6edRonald Oussoren # the right version information is returned 1517a0f4c75b1d2e3ceb758970ad39d468e95dfc6edRonald Oussoren fd = os.popen('sw_vers', 'r') 1527a0f4c75b1d2e3ceb758970ad39d468e95dfc6edRonald Oussoren real_ver = None 1537a0f4c75b1d2e3ceb758970ad39d468e95dfc6edRonald Oussoren for ln in fd: 1547a0f4c75b1d2e3ceb758970ad39d468e95dfc6edRonald Oussoren if ln.startswith('ProductVersion:'): 1557a0f4c75b1d2e3ceb758970ad39d468e95dfc6edRonald Oussoren real_ver = ln.strip().split()[-1] 1567a0f4c75b1d2e3ceb758970ad39d468e95dfc6edRonald Oussoren break 1577a0f4c75b1d2e3ceb758970ad39d468e95dfc6edRonald Oussoren fd.close() 1585c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertFalse(real_ver is None) 159e7e941e7f7a47be54198be79d2280ab3025e5ff1Brett Cannon result_list = res[0].split('.') 160e7e941e7f7a47be54198be79d2280ab3025e5ff1Brett Cannon expect_list = real_ver.split('.') 161e7e941e7f7a47be54198be79d2280ab3025e5ff1Brett Cannon len_diff = len(result_list) - len(expect_list) 162e7e941e7f7a47be54198be79d2280ab3025e5ff1Brett Cannon # On Snow Leopard, sw_vers reports 10.6.0 as 10.6 163e7e941e7f7a47be54198be79d2280ab3025e5ff1Brett Cannon if len_diff > 0: 164e7e941e7f7a47be54198be79d2280ab3025e5ff1Brett Cannon expect_list.extend(['0'] * len_diff) 165e7e941e7f7a47be54198be79d2280ab3025e5ff1Brett Cannon self.assertEquals(result_list, expect_list) 1667a0f4c75b1d2e3ceb758970ad39d468e95dfc6edRonald Oussoren 1677a0f4c75b1d2e3ceb758970ad39d468e95dfc6edRonald Oussoren # res[1] claims to contain 1687a0f4c75b1d2e3ceb758970ad39d468e95dfc6edRonald Oussoren # (version, dev_stage, non_release_version) 1697a0f4c75b1d2e3ceb758970ad39d468e95dfc6edRonald Oussoren # That information is no longer available 1707a0f4c75b1d2e3ceb758970ad39d468e95dfc6edRonald Oussoren self.assertEquals(res[1], ('', '', '')) 1717a0f4c75b1d2e3ceb758970ad39d468e95dfc6edRonald Oussoren 1727a0f4c75b1d2e3ceb758970ad39d468e95dfc6edRonald Oussoren if sys.byteorder == 'little': 1737a0f4c75b1d2e3ceb758970ad39d468e95dfc6edRonald Oussoren self.assertEquals(res[2], 'i386') 1747a0f4c75b1d2e3ceb758970ad39d468e95dfc6edRonald Oussoren else: 1757a0f4c75b1d2e3ceb758970ad39d468e95dfc6edRonald Oussoren self.assertEquals(res[2], 'PowerPC') 176c69d1c498f3896803f78de613a54d17be88bbeafWalter Dörwald 177c69d1c498f3896803f78de613a54d17be88bbeafWalter Dörwald def test_dist(self): 178c69d1c498f3896803f78de613a54d17be88bbeafWalter Dörwald res = platform.dist() 179c69d1c498f3896803f78de613a54d17be88bbeafWalter Dörwald 180c69d1c498f3896803f78de613a54d17be88bbeafWalter Dörwald def test_libc_ver(self): 18106853fc15055686ec02fd2671fd37cda0f69209bAnthony Baxter import os 1825915a4dcfebf74d0a2c99848ede619f5bf7d2899Benjamin Peterson if os.path.isdir(sys.executable) and \ 1835915a4dcfebf74d0a2c99848ede619f5bf7d2899Benjamin Peterson os.path.exists(sys.executable+'.exe'): 18406853fc15055686ec02fd2671fd37cda0f69209bAnthony Baxter # Cygwin horror 18506853fc15055686ec02fd2671fd37cda0f69209bAnthony Baxter executable = executable + '.exe' 1865915a4dcfebf74d0a2c99848ede619f5bf7d2899Benjamin Peterson res = platform.libc_ver(sys.executable) 187c69d1c498f3896803f78de613a54d17be88bbeafWalter Dörwald 188fbc0b0ca29c0c8120bcf979bac6cb6d64cc87f60Amaury Forgeot d'Arc def test_parse_release_file(self): 189fbc0b0ca29c0c8120bcf979bac6cb6d64cc87f60Amaury Forgeot d'Arc 190fbc0b0ca29c0c8120bcf979bac6cb6d64cc87f60Amaury Forgeot d'Arc for input, output in ( 191fbc0b0ca29c0c8120bcf979bac6cb6d64cc87f60Amaury Forgeot d'Arc # Examples of release file contents: 192fbc0b0ca29c0c8120bcf979bac6cb6d64cc87f60Amaury Forgeot d'Arc ('SuSE Linux 9.3 (x86-64)', ('SuSE Linux ', '9.3', 'x86-64')), 193fbc0b0ca29c0c8120bcf979bac6cb6d64cc87f60Amaury Forgeot d'Arc ('SUSE LINUX 10.1 (X86-64)', ('SUSE LINUX ', '10.1', 'X86-64')), 194fbc0b0ca29c0c8120bcf979bac6cb6d64cc87f60Amaury Forgeot d'Arc ('SUSE LINUX 10.1 (i586)', ('SUSE LINUX ', '10.1', 'i586')), 195fbc0b0ca29c0c8120bcf979bac6cb6d64cc87f60Amaury Forgeot d'Arc ('Fedora Core release 5 (Bordeaux)', ('Fedora Core', '5', 'Bordeaux')), 196fbc0b0ca29c0c8120bcf979bac6cb6d64cc87f60Amaury Forgeot d'Arc ('Red Hat Linux release 8.0 (Psyche)', ('Red Hat Linux', '8.0', 'Psyche')), 197fbc0b0ca29c0c8120bcf979bac6cb6d64cc87f60Amaury Forgeot d'Arc ('Red Hat Linux release 9 (Shrike)', ('Red Hat Linux', '9', 'Shrike')), 198fbc0b0ca29c0c8120bcf979bac6cb6d64cc87f60Amaury Forgeot d'Arc ('Red Hat Enterprise Linux release 4 (Nahant)', ('Red Hat Enterprise Linux', '4', 'Nahant')), 199fbc0b0ca29c0c8120bcf979bac6cb6d64cc87f60Amaury Forgeot d'Arc ('CentOS release 4', ('CentOS', '4', None)), 200fbc0b0ca29c0c8120bcf979bac6cb6d64cc87f60Amaury Forgeot d'Arc ('Rocks release 4.2.1 (Cydonia)', ('Rocks', '4.2.1', 'Cydonia')), 201a43f34cc2a7a55cea794ecb9bda2eea5c685d1f3Benjamin Peterson ('', ('', '', '')), # If there's nothing there. 202fbc0b0ca29c0c8120bcf979bac6cb6d64cc87f60Amaury Forgeot d'Arc ): 203fbc0b0ca29c0c8120bcf979bac6cb6d64cc87f60Amaury Forgeot d'Arc self.assertEqual(platform._parse_release_file(input), output) 204fbc0b0ca29c0c8120bcf979bac6cb6d64cc87f60Amaury Forgeot d'Arc 205fbc0b0ca29c0c8120bcf979bac6cb6d64cc87f60Amaury Forgeot d'Arc 206c69d1c498f3896803f78de613a54d17be88bbeafWalter Dörwalddef test_main(): 207c69d1c498f3896803f78de613a54d17be88bbeafWalter Dörwald test_support.run_unittest( 208c69d1c498f3896803f78de613a54d17be88bbeafWalter Dörwald PlatformTest 209c69d1c498f3896803f78de613a54d17be88bbeafWalter Dörwald ) 210c69d1c498f3896803f78de613a54d17be88bbeafWalter Dörwald 211c69d1c498f3896803f78de613a54d17be88bbeafWalter Dörwaldif __name__ == '__main__': 212c69d1c498f3896803f78de613a54d17be88bbeafWalter Dörwald test_main() 213