예제 #1
0
    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
예제 #2
0
    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
예제 #3
0
 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()