def setUp(self): self.parser = EggParser()
class EggParserTest(unittest.TestCase): GOOD_EGGS = [ "Mako-0.4.0-py2.6.egg", "Thrift-0.7.0_dev-py2.6.egg", "ZooKeeper-0.4-py2.6-linux-x86_64.egg", "ZooKeeper-0.4-py2.6-macosx-10.6-x86_64.egg", "antlr_python_runtime-3.1.3-py2.6.egg", "setuptools-0.6c11-py2.6.egg", "endpoint-dev-py2.6.egg", ] BAD_EGGS = [ "Mako-0.py2.6.egg", "py2.6.egg", ".egg", "", None, "ZooKeeper-py2.6-linux-x86_64.egg", "ZooKeeper-macosx-10.6-x86_64.egg", "elfowl-pyver-py2.6.egg", ] ARCH_INSPECIFIC = [ "Mako-0.4.0-py2.6.egg", "Thrift-0.7.0_dev-py2.6.egg", "antlr_python_runtime-3.1.3-py2.6.egg", "setuptools-0.6c11-py2.6.egg", "endpoint-dev-py2.6.egg", ] DARWIN_SPECIFIC = [ "ZooKeeper-0.4-py2.6-macosx-10.6-x86_64.egg", ] LINUX_SPECIFIC = [ "ZooKeeper-0.4-py2.6-linux-x86_64.egg", ] def setUp(self): self.parser = EggParser() def test_parser(self): for egg in EggParserTest.GOOD_EGGS + EggParserTest.BAD_EGGS: try: self.parser.parse(egg) except: self.fail("Failed to parse valid Egg: %s" % egg) def test_darwin_arch(self): parser = EggParserTestHelper.get_darwin_platform() arch = parser.get_architecture() self.assertEquals(arch[0], 'macosx') def test_darwin_compatibility(self): parser = EggParserTestHelper.get_darwin_platform() for egg in EggParserTest.DARWIN_SPECIFIC + EggParserTest.ARCH_INSPECIFIC: self.assertTrue(parser.is_compatible(egg)) for egg in EggParserTest.LINUX_SPECIFIC: self.assertFalse(parser.is_compatible(egg)) def test_linux_arch(self): parser = EggParserTestHelper.get_linux_platform() arch = parser.get_architecture() self.assertEquals(arch[0], 'linux') def test_linux_compatibility(self): parser = EggParserTestHelper.get_linux_platform() for egg in EggParserTest.LINUX_SPECIFIC + EggParserTest.ARCH_INSPECIFIC: self.assertTrue(parser.is_compatible(egg)) for egg in EggParserTest.DARWIN_SPECIFIC: self.assertFalse(parser.is_compatible(egg)) def test_name_extraction(self): name, _, _, _ = self.parser.parse("Mako.egg") self.assertEquals(name, "Mako") name, _, _, _ = self.parser.parse("Thrift-0.7.0_dev.egg") self.assertEquals(name, "Thrift") name, _, _, _ = self.parser.parse("Bonkers-0.7.0-py2.6.egg") self.assertEquals(name, "Bonkers") name, _, _, _ = self.parser.parse("ZooKeeper-0.4-py2.6-linux-x86_64.egg") self.assertEquals(name, "ZooKeeper") def test_version_extraction(self): _, version, _, _ = self.parser.parse("Mako.egg") self.assertEquals(version, None) _, version, _, _ = self.parser.parse("Thrift-0.7.0_dev.egg") self.assertEquals(version, "0.7.0_dev") _, version, _, _ = self.parser.parse("Bonkers-0.7.0-py2.6.egg") self.assertEquals(version, "0.7.0") _, version, _, _ = self.parser.parse("ZooKeeper-0.4-py2.6-linux-x86_64.egg") self.assertEquals(version, "0.4") def test_py_version_extraction(self): _, _, py_version, _ = self.parser.parse("Mako.egg") self.assertEquals(py_version, ()) _, _, py_version, _ = self.parser.parse("Thrift-0.7.0_dev.egg") self.assertEquals(py_version, ()) _, _, py_version, _ = self.parser.parse("Bonkers-0.7.0-py2.6.egg") self.assertEquals(py_version, (2,6)) _, _, py_version, _ = self.parser.parse("ZooKeeper-0.4-py2.6-linux-x86_64.egg") self.assertEquals(py_version, (2,6)) def test_platform_extraction(self): _, _, _, platform = self.parser.parse("Mako.egg") self.assertEquals(platform, ()) _, _, _, platform = self.parser.parse("Thrift-0.7.0_dev.egg") self.assertEquals(platform, ()) _, _, _, platform = self.parser.parse("Bonkers-0.7.0-py2.6.egg") self.assertEquals(platform, ()) _, _, _, platform = self.parser.parse("ZooKeeper-0.4-py2.6-linux-x86_64.egg") self.assertEquals(platform, ('linux', 'x86_64')) _, _, _, platform = self.parser.parse("ZooKeeper-0.4-py2.6-linux-1-2-3-x86_64.egg") self.assertEquals(platform, ('linux', '1', '2', '3', 'x86_64')) _, _, _, platform = self.parser.parse("ZooKeeper-0.4-py2.6-macosx-10.6-i386.egg") self.assertEquals(platform, ('macosx', '10.6', 'i386'))
def _setup_eggs(path, eggs): eggparser = EggParser() for egg in eggs: egg_file = os.path.basename(egg) if eggparser.is_compatible(egg_file): path.add(egg)
def _construct_parser_with(output_uname, output_version): return EggParser(uname=output_uname, version_info=output_version)