Skip to content

Commit

Permalink
Merge pull request pypa#8095 from hugovk/pip-cache-dir2
Browse files Browse the repository at this point in the history
  • Loading branch information
pradyunsg authored Apr 27, 2020
2 parents c4c2870 + 6b640d1 commit 22bd8ad
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 1 deletion.
1 change: 1 addition & 0 deletions news/7350.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Add ``pip cache dir`` to show the cache directory.
10 changes: 10 additions & 0 deletions src/pip/_internal/commands/cache.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ class CacheCommand(Command):
Subcommands:
dir: Show the cache directory.
info: Show information about the cache.
list: List filenames of packages stored in the cache.
remove: Remove one or more package from the cache.
Expand All @@ -33,6 +34,7 @@ class CacheCommand(Command):
"""

usage = """
%prog dir
%prog info
%prog list [<pattern>]
%prog remove <pattern>
Expand All @@ -42,6 +44,7 @@ class CacheCommand(Command):
def run(self, options, args):
# type: (Values, List[Any]) -> int
handlers = {
"dir": self.get_cache_dir,
"info": self.get_cache_info,
"list": self.list_cache_items,
"remove": self.remove_cache_items,
Expand Down Expand Up @@ -71,6 +74,13 @@ def run(self, options, args):

return SUCCESS

def get_cache_dir(self, options, args):
# type: (Values, List[Any]) -> None
if args:
raise CommandError('Too many arguments')

logger.info(options.cache_dir)

def get_cache_info(self, options, args):
# type: (Values, List[Any]) -> None
if args:
Expand Down
18 changes: 17 additions & 1 deletion tests/functional/test_cache.py
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,22 @@ def _remove_matches_wheel(wheel_name, result):
return _remove_matches_wheel


def test_cache_dir(script, cache_dir):
result = script.pip('cache', 'dir')

assert os.path.normcase(cache_dir) == result.stdout.strip()


def test_cache_dir_too_many_args(script, cache_dir):
result = script.pip('cache', 'dir', 'aaa', expect_error=True)

assert result.stdout == ''

# This would be `result.stderr == ...`, but pip prints deprecation
# warnings on Python 2.7, so we check if the _line_ is in stderr.
assert 'ERROR: Too many arguments' in result.stderr.splitlines()


@pytest.mark.usefixtures("populate_wheel_cache")
def test_cache_info(script, wheel_cache_dir, wheel_cache_files):
result = script.pip('cache', 'info')
Expand Down Expand Up @@ -209,7 +225,7 @@ def test_cache_purge_too_many_args(script, wheel_cache_files):
expect_error=True)
assert result.stdout == ''

# This would be `result.stderr == ...`, but Pip prints deprecation
# This would be `result.stderr == ...`, but pip prints deprecation
# warnings on Python 2.7, so we check if the _line_ is in stderr.
assert 'ERROR: Too many arguments' in result.stderr.splitlines()

Expand Down

0 comments on commit 22bd8ad

Please sign in to comment.