Skip to content

Commit

Permalink
Test the command class inheritance for each command.
Browse files Browse the repository at this point in the history
  • Loading branch information
cjerdonek committed Aug 7, 2019
1 parent 24181c6 commit 505456f
Showing 1 changed file with 54 additions and 0 deletions.
54 changes: 54 additions & 0 deletions tests/unit/test_commands.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,22 @@
import pytest

from pip._internal.cli.req_command import (
IndexGroupCommand,
RequirementCommand,
SessionCommandMixin,
)
from pip._internal.commands import commands_dict, create_command


def check_commands(pred, expected):
"""
Check the commands satisfying a predicate.
"""
commands = [create_command(name) for name in sorted(commands_dict)]
actual = [command.name for command in commands if pred(command)]
assert actual == expected, 'actual: {}'.format(actual)


def test_commands_dict__order():
"""
Check the ordering of commands_dict.
Expand All @@ -20,3 +34,43 @@ def test_create_command(name):
command = create_command(name)
assert command.name == name
assert command.summary == commands_dict[name].summary


def test_session_commands():
"""
Test which commands inherit from SessionCommandMixin.
"""
def is_session_command(command):
return isinstance(command, SessionCommandMixin)

expected = ['download', 'install', 'list', 'search', 'uninstall', 'wheel']
check_commands(is_session_command, expected)


def test_index_group_commands():
"""
Test the commands inheriting from IndexGroupCommand.
"""
expected = ['download', 'install', 'list', 'wheel']

def is_index_group_command(command):
return isinstance(command, IndexGroupCommand)

check_commands(is_index_group_command, expected)

# Also check that the commands inheriting from IndexGroupCommand are
# exactly the commands with the --no-index option.
def has_option_no_index(command):
return command.parser.has_option('--no-index')

check_commands(has_option_no_index, expected)


def test_requirement_commands():
"""
Test which commands inherit from RequirementCommand.
"""
def is_requirement_command(command):
return isinstance(command, RequirementCommand)

check_commands(is_requirement_command, ['download', 'install', 'wheel'])

0 comments on commit 505456f

Please sign in to comment.