def testRegisterNewPackagePath(self): # register package paths and import, then register a new package # path (twobis) and verify B is the new version packager = package.Packager() # first show we cannot import mypackage self.assertRaises(ImportError, self._import, "mypackage") # register one and two packager.registerPackagePath(self.onedir, "one", "mypackage") packager.registerPackagePath(self.twodir, "two", "mypackage") self._failIfRaises(ImportError, self._import, "mypackage") import mypackage.B self.assertEquals(mypackage.B.me, "B") # now register the twobis dir for key two, so it replaces the previous packager.registerPackagePath(self.twobisdir, "two", "mypackage") # package mypackage.B should have been rebuilt self.failUnless(mypackage.B.__file__.startswith(self.twobisdir)) self.assertEquals(mypackage.B.me, "B bis") # cleanup and do some imports to verify tearDown clears them packager.unregister() import mypackage.A import mypackage.B
def testRegisterBeforeImportWithPackager(self): # when registering package paths before having imported anything, # and using import hooks, we can fix __path__ packager = package.Packager() # first show we cannot import mypackage self.assertRaises(ImportError, self._import, "mypackage") # register both projects packager.registerPackagePath(self.onedir, "one", "mypackage") packager.registerPackagePath(self.twodir, "two", "mypackage") import mypackage #self._failIfRaises(ImportError, self._import, "mypackage") # "import mypackage" imported mypackage from twodir, because it # was added last; but now it has twodir, onedir in its __path__ import mypackage self.failUnless(mypackage.__file__.startswith(self.twodir)) self.assertEquals(len(mypackage.__path__), 2) self.failUnless(mypackage.__path__[0].startswith(self.twodir)) self.failUnless(mypackage.__path__[1].startswith(self.onedir)) # this means we can import both mypackage.B and mypackage.A self._failIfRaises(ImportError, self._import, "mypackage.B") self._failIfRaises(ImportError, self._import, "mypackage.A") # cleanup and do some imports to verify tearDown clears them packager.unregister() import mypackage.A import mypackage.B
def testPackagerWithNonePrefix(self): # see if import hooks don't mess up non prefix hooks packager = package.Packager() try: from xml.dom.html import HTMLDOMImplementation except ImportError: return HTMLDOMImplementation packager.unregister()