def test_compact_shorter_path(self, monkeypatch): monkeypatch.setattr(pip._internal.req.req_uninstall, 'is_local', lambda p: True) monkeypatch.setattr('os.path.exists', lambda p: True) # This deals with nt/posix path differences short_path = os.path.normcase(os.path.abspath( os.path.join(os.path.sep, 'path'))) ups = UninstallPathSet(dist=Mock()) ups.add(short_path) ups.add(os.path.join(short_path, 'longer')) assert compact(ups.paths) == {short_path}
def test_add_symlink(self, tmpdir, monkeypatch): monkeypatch.setattr(pip._internal.req.req_uninstall, 'is_local', mock_is_local) f = os.path.join(tmpdir, 'foo') with open(f, 'w'): pass foo_link = os.path.join(tmpdir, 'foo_link') os.symlink(f, foo_link) ups = UninstallPathSet(dist=Mock()) ups.add(foo_link) assert ups.paths == {foo_link}
def test_add_symlink(self, tmpdir, monkeypatch): monkeypatch.setattr(pip._internal.req.req_uninstall, 'is_local', mock_is_local) f = os.path.join(tmpdir, 'foo') with open(f, 'w'): pass l = os.path.join(tmpdir, 'foo_link') os.symlink(f, l) ups = UninstallPathSet(dist=Mock()) ups.add(l) assert ups.paths == set([l])
def test_add_symlink(self, tmpdir: Path, monkeypatch: pytest.MonkeyPatch) -> None: monkeypatch.setattr(pip._internal.req.req_uninstall, "is_local", mock_is_local) f = os.path.join(tmpdir, "foo") with open(f, "w"): pass foo_link = os.path.join(tmpdir, "foo_link") os.symlink(f, foo_link) ups = UninstallPathSet(dist=Mock()) ups.add(foo_link) assert ups._paths == {foo_link}
def test_uninstallpathset_no_paths(caplog): """ Test UninstallPathSet logs notification when there are no paths to uninstall """ from pip._internal.req.req_uninstall import UninstallPathSet from pkg_resources import get_distribution test_dist = get_distribution('pip') uninstall_set = UninstallPathSet(test_dist) uninstall_set.remove() # with no files added to set assert ("Can't uninstall 'pip'. No files were found to uninstall." in caplog.text)
def test_uninstallpathset_no_paths(caplog): """ Test UninstallPathSet logs notification when there are no paths to uninstall """ from pip._internal.req.req_uninstall import UninstallPathSet from pkg_resources import get_distribution test_dist = get_distribution('pip') uninstall_set = UninstallPathSet(test_dist) uninstall_set.remove() # with no files added to set assert ( "Can't uninstall 'pip'. No files were found to uninstall." in caplog.text )
def uninstall(self, auto_confirm: bool = False, verbose: bool = False) -> Optional[UninstallPathSet]: """ Uninstall the distribution currently satisfying this requirement. Prompts before removing or modifying files unless ``auto_confirm`` is True. Refuses to delete or modify files outside of ``sys.prefix`` - thus uninstallation within a virtual environment can only modify that virtual environment, even if the virtualenv is linked to global site-packages. """ assert self.req dist = get_default_environment().get_distribution(self.req.name) if not dist: logger.warning("Skipping %s as it is not installed.", self.name) return None logger.info("Found existing installation: %s", dist) uninstalled_pathset = UninstallPathSet.from_dist(dist) uninstalled_pathset.remove(auto_confirm, verbose) return uninstalled_pathset
def uninstall(self, auto_confirm=False, verbose=False): # type: (bool, bool) -> Optional[UninstallPathSet] """ Uninstall the distribution currently satisfying this requirement. Prompts before removing or modifying files unless ``auto_confirm`` is True. Refuses to delete or modify files outside of ``sys.prefix`` - thus uninstallation within a virtual environment can only modify that virtual environment, even if the virtualenv is linked to global site-packages. """ assert self.req try: dist = pkg_resources.get_distribution(self.req.name) except pkg_resources.DistributionNotFound: logger.warning("Skipping %s as it is not installed.", self.name) return None else: logger.info('Found existing installation: %s', dist) uninstalled_pathset = UninstallPathSet.from_dist(dist) uninstalled_pathset.remove(auto_confirm, verbose) return uninstalled_pathset
def uninstall(self, auto_confirm=False, verbose=False, use_user_site=False): # type: (bool, bool, bool) -> Optional[UninstallPathSet] """ Uninstall the distribution currently satisfying this requirement. Prompts before removing or modifying files unless ``auto_confirm`` is True. Refuses to delete or modify files outside of ``sys.prefix`` - thus uninstallation within a virtual environment can only modify that virtual environment, even if the virtualenv is linked to global site-packages. """ if not self.check_if_exists(use_user_site): logger.warning("Skipping %s as it is not installed.", self.name) return None dist = self.satisfied_by or self.conflicts_with uninstalled_pathset = UninstallPathSet.from_dist(dist) uninstalled_pathset.remove(auto_confirm, verbose) return uninstalled_pathset
def test_add(self, tmpdir, monkeypatch): monkeypatch.setattr(pip._internal.req.req_uninstall, 'is_local', mock_is_local) # Fix case for windows tests file_extant = os.path.normcase(os.path.join(tmpdir, 'foo')) file_nonexistent = os.path.normcase( os.path.join(tmpdir, 'nonexistent')) with open(file_extant, 'w'): pass ups = UninstallPathSet(dist=Mock()) assert ups.paths == set() ups.add(file_extant) assert ups.paths == {file_extant} ups.add(file_nonexistent) assert ups.paths == {file_extant}
def test_uninstallpathset_no_paths(caplog: pytest.LogCaptureFixture) -> None: """ Test UninstallPathSet logs notification when there are no paths to uninstall """ from pip._internal.metadata import get_default_environment from pip._internal.req.req_uninstall import UninstallPathSet caplog.set_level(logging.INFO) test_dist = get_default_environment().get_distribution("pip") assert test_dist is not None, "pip not installed" uninstall_set = UninstallPathSet(test_dist) uninstall_set.remove() # with no files added to set assert "Can't uninstall 'pip'. No files were found to uninstall." in caplog.text
def test_detect_symlink_dirs(self, monkeypatch, tmpdir): monkeypatch.setattr(pip._internal.req.req_uninstall, 'is_local', lambda p: True) # construct 2 paths: # tmpdir/dir/file # tmpdir/dirlink/file (where dirlink is a link to dir) d = tmpdir.join('dir') d.mkdir() dlink = tmpdir.join('dirlink') os.symlink(d, dlink) d.join('file').touch() path1 = str(d.join('file')) path2 = str(dlink.join('file')) ups = UninstallPathSet(dist=Mock()) ups.add(path1) ups.add(path2) assert ups.paths == {path1}
def test_detect_symlink_dirs(self, monkeypatch, tmpdir): monkeypatch.setattr(pip._internal.req.req_uninstall, 'is_local', lambda p: True) # construct 2 paths: # tmpdir/dir/file # tmpdir/dirlink/file (where dirlink is a link to dir) d = tmpdir.join('dir') d.mkdir() dlink = tmpdir.join('dirlink') os.symlink(d, dlink) d.join('file').touch() path1 = str(d.join('file')) path2 = str(dlink.join('file')) ups = UninstallPathSet(dist=Mock()) ups.add(path1) ups.add(path2) assert ups.paths == set([path1])
def test_detect_symlink_dirs(self, monkeypatch: pytest.MonkeyPatch, tmpdir: Path) -> None: monkeypatch.setattr(pip._internal.req.req_uninstall, "is_local", mock_is_local) # construct 2 paths: # tmpdir/dir/file # tmpdir/dirlink/file (where dirlink is a link to dir) d = tmpdir.joinpath("dir") d.mkdir() dlink = tmpdir.joinpath("dirlink") os.symlink(d, dlink) d.joinpath("file").touch() path1 = str(d.joinpath("file")) path2 = str(dlink.joinpath("file")) ups = UninstallPathSet(dist=Mock()) ups.add(path1) ups.add(path2) assert ups._paths == {path1}
def test_compact_shorter_path(self, monkeypatch): monkeypatch.setattr(pip._internal.req.req_uninstall, 'is_local', lambda p: True) monkeypatch.setattr('os.path.exists', lambda p: True) # This deals with nt/posix path differences short_path = os.path.normcase( os.path.abspath(os.path.join(os.path.sep, 'path'))) ups = UninstallPathSet(dist=Mock()) ups.add(short_path) ups.add(os.path.join(short_path, 'longer')) assert compact(ups.paths) == set([short_path])
def test_compact_shorter_path(self, monkeypatch: pytest.MonkeyPatch) -> None: monkeypatch.setattr(pip._internal.req.req_uninstall, "is_local", mock_is_local) monkeypatch.setattr("os.path.exists", lambda p: True) # This deals with nt/posix path differences short_path = os.path.normcase( os.path.abspath(os.path.join(os.path.sep, "path"))) ups = UninstallPathSet(dist=Mock()) ups.add(short_path) ups.add(os.path.join(short_path, "longer")) assert compact(ups._paths) == {short_path}
def uninstall(self, auto_confirm=False, verbose=False): """ Uninstall the distribution currently satisfying this requirement. Prompts before removing or modifying files unless ``auto_confirm`` is True. Refuses to delete or modify files outside of ``sys.prefix`` - thus uninstallation within a virtual environment can only modify that virtual environment, even if the virtualenv is linked to global site-packages. """ if not self.check_if_exists(): raise UninstallationError( "Cannot uninstall requirement %s, not installed" % (self.name,) ) dist = self.satisfied_by or self.conflicts_with self.uninstalled_pathset = UninstallPathSet.from_dist(dist) self.uninstalled_pathset.remove(auto_confirm, verbose)
def uninstall(self, auto_confirm=False, verbose=False): """ Uninstall the distribution currently satisfying this requirement. Prompts before removing or modifying files unless ``auto_confirm`` is True. Refuses to delete or modify files outside of ``sys.prefix`` - thus uninstallation within a virtual environment can only modify that virtual environment, even if the virtualenv is linked to global site-packages. """ if not self.check_if_exists(): raise UninstallationError( "Cannot uninstall requirement %s, not installed" % (self.name, )) dist = self.satisfied_by or self.conflicts_with self.uninstalled_pathset = UninstallPathSet.from_dist(dist) self.uninstalled_pathset.remove(auto_confirm, verbose)
def uninstall(self, auto_confirm=False, verbose=False, use_user_site=False): """ Uninstall the distribution currently satisfying this requirement. Prompts before removing or modifying files unless ``auto_confirm`` is True. Refuses to delete or modify files outside of ``sys.prefix`` - thus uninstallation within a virtual environment can only modify that virtual environment, even if the virtualenv is linked to global site-packages. """ if not self.check_if_exists(use_user_site): logger.warning("Skipping %s as it is not installed.", self.name) return dist = self.satisfied_by or self.conflicts_with uninstalled_pathset = UninstallPathSet.from_dist(dist) uninstalled_pathset.remove(auto_confirm, verbose) return uninstalled_pathset
def test_add(self, tmpdir: Path, monkeypatch: pytest.MonkeyPatch) -> None: monkeypatch.setattr(pip._internal.req.req_uninstall, "is_local", mock_is_local) # Fix case for windows tests file_extant = os.path.normcase(os.path.join(tmpdir, "foo")) file_nonexistent = os.path.normcase(os.path.join( tmpdir, "nonexistent")) with open(file_extant, "w"): pass ups = UninstallPathSet(dist=Mock()) assert ups._paths == set() ups.add(file_extant) assert ups._paths == {file_extant} ups.add(file_nonexistent) assert ups._paths == {file_extant}
def test_add(self, tmpdir, monkeypatch): monkeypatch.setattr(pip._internal.req.req_uninstall, 'is_local', mock_is_local) # Fix case for windows tests file_extant = os.path.normcase(os.path.join(tmpdir, 'foo')) file_nonexistent = os.path.normcase(os.path.join( tmpdir, 'nonexistent')) with open(file_extant, 'w'): pass ups = UninstallPathSet(dist=Mock()) assert ups.paths == set() ups.add(file_extant) assert ups.paths == set([file_extant]) ups.add(file_nonexistent) assert ups.paths == set([file_extant])