def test_report_import_error(self): """ get_package_versions_and_locations reports a dependency if a dependency cannot be imported. """ # Make sure we don't leave the system in a bad state. self.addCleanup(lambda foolscap=sys.modules["foolscap"]: setitem( sys.modules, "foolscap", foolscap, ), ) # Make it look like Foolscap isn't installed. sys.modules["foolscap"] = None vers_and_locs, errors = get_package_versions_and_locations() foolscap_stuffs = [ stuff for (pkg, stuff) in vers_and_locs if pkg == 'foolscap' ] self.failUnlessEqual(len(foolscap_stuffs), 1) self.failUnless( [e for e in errors if "\'foolscap\' could not be imported" in e])
def test_packages_from_pkg_resources(self): if hasattr(sys, 'frozen'): raise unittest.SkipTest( "This test doesn't apply to frozen builds.") class MockPackage(object): def __init__(self, project_name, version, location): self.project_name = project_name self.version = version self.location = location def call_pkg_resources_require(*args): return [MockPackage("Foo", "1.0", "/path")] self.patch(pkg_resources, 'require', call_pkg_resources_require) (packages, errors) = get_package_versions_and_locations() self.failUnlessIn( ("foo", ("1.0", "/path", "according to pkg_resources")), packages) self.failIfEqual(errors, []) self.failUnlessEqual( [e for e in errors if "was not found by pkg_resources" not in e], [])