def setUp(self): self.working_dir = tempfile.mkdtemp() self.manager = PluginSiteManager()
class PluginSiteTestCase(unittest.TestCase): def setUp(self): self.working_dir = tempfile.mkdtemp() self.manager = PluginSiteManager() def tearDown(self): shutil.rmtree(self.working_dir, ignore_errors=True) def generate_package(self, package_name): extras = package_name.split('.') os.mkdir(os.path.join(self.working_dir, package_name)) for f in range(1, len(extras) + 1): target = os.path.join(self.working_dir, package_name, *extras[:f]) os.mkdir(target) with open((os.path.join(target, '__init__.py')), 'w'): pass def test_site_pth_empty(self): pth = self.manager.generate_pth_entries(self.working_dir) self.assertEqual(pth, []) # plain files should be ignore, too. with open(os.path.join(self.working_dir, 'dummy_file'), 'w'): pass self.assertEqual(pth, []) def test_site_pth_with_packages(self): self.generate_package('testing.package') pth = self.manager.generate_pth_entries(self.working_dir) self.assertEqual(pth, [ os.path.join(self.working_dir, 'testing.package'), ]) def test_load_site_base(self): self.generate_package('testing.package') self.manager.build_site(self.working_dir) self.manager.load_site(self.working_dir) module = __import__('testing.package').package self.assertEqual(module.__file__, os.path.join( self.working_dir, 'testing.package', 'testing', 'package', '__init__.py')) def test_load_site_just_a_dir(self): # what if it's just a random dir? os.mkdir(os.path.join(self.working_dir, 'testing.notapackage')) pth = self.manager.generate_pth_entries(self.working_dir) # XXX note how it still thinks this is a package self.assertEqual(pth, [ os.path.join(self.working_dir, 'testing.notapackage'), ]) # shouldn't really cause any ill effects though, but test this # to be sure. self.manager.build_site(self.working_dir) self.manager.load_site(self.working_dir) # this should be an import error. self.assertRaises(ImportError, __import__, 'testing.notapackage')