def test_package_tarball(self): self._mock_flag = False if hasattr(drove.package.__builtins__, "open"): self._mock_orig = drove.package.__builtins__.open else: self._mock_orig = drove.package.__builtins__["open"] # Weird hack to mock __builtins__ function to be compatible # between py27 and py3 def _mock_open(*a, **kw): if not self._mock_flag: self._mock_flag = True return BytesIO( b64decode(_test_package_okay) ) else: return self._mock_orig(*a, **kw) with temp.directory() as dir: if hasattr(drove.package.__builtins__, "open"): drove.package.__builtins__.open = _mock_open else: drove.package.__builtins__["open"] = _mock_open try: Package.from_tarball("mocked", dir) finally: if hasattr(drove.package.__builtins__, "open"): drove.package.__builtins__.open = self._mock_orig else: drove.package.__builtins__["open"] = self._mock_orig
def test_package_url(self): with temp.directory() as dir: _urlopen = urllib.request.urlopen urllib.request.urlopen = lambda *a, **kw: \ BytesIO(b64decode(_test_package_okay)) try: Package.from_url("http://none", dir) finally: urllib.request.urlopen = _urlopen
def test_package_nopip(self): with temp.directory() as dir: with self.assertRaises(PackageError): import pip del pip.main Package.install_requirements.__globals__["pip"] = pip Package.from_tarballfd( BytesIO(b64decode(_test_package_okay_deps)), dir )
def test_package_remove_module(self): with temp.directory() as dir: p = Package.from_tarballfd( BytesIO(b64decode(_test_package_okay_module)), dir, upgrade=True ) p.remove()
def test_package_okay(self): with temp.directory() as dir: p = Package.from_tarballfd( BytesIO(b64decode(_test_package_okay_folder)), dir, True ) # Try to reinstall without upgrade with self.assertRaises(PackageError): Package.from_tarballfd( BytesIO(b64decode(_test_package_okay_folder)), dir ) # Reinstall with upgrade (none to do) Package.from_tarballfd( BytesIO(b64decode(_test_package_okay_folder)), dir, upgrade=True ) # Reinstall with upgrade (reinstall) Package.from_tarballfd( BytesIO(b64decode(_test_package_okay_upgrade)), dir, upgrade=True ) x = repr(p) p.remove()
def test_package_error(self, pkg=_test_package_none): with temp.directory() as dir: with self.assertRaises(PackageError): Package.from_tarballfd( BytesIO(b64decode(pkg)), dir )
def test_package_remove_nonexistant(self): with self.assertRaises(PackageError): p = Package("foo", "bar", None, None) p.remove()