Changeset View
Changeset View
Standalone View
Standalone View
swh/loader/tests/test_cli.py
# Copyright (C) 2019 The Software Heritage developers | # Copyright (C) 2019 The Software Heritage developers | ||||
# See the AUTHORS file at the top-level directory of this distribution | # See the AUTHORS file at the top-level directory of this distribution | ||||
# License: GNU General Public License version 3, or any later version | # License: GNU General Public License version 3, or any later version | ||||
# See top-level LICENSE file for more information | # See top-level LICENSE file for more information | ||||
import pytest | import pytest | ||||
from swh.loader.cli import run, get_loader, SUPPORTED_LOADERS | from swh.loader.cli import run, list, get_loader, SUPPORTED_LOADERS | ||||
from swh.loader.package.loader import PackageLoader | from swh.loader.package.loader import PackageLoader | ||||
from click.testing import CliRunner | from click.testing import CliRunner | ||||
def test_get_loader_wrong_input(swh_config): | def test_get_loader_wrong_input(swh_config): | ||||
"""Unsupported loader should raise | """Unsupported loader should raise | ||||
Show All 29 Lines | loader_input = { | ||||
'url': 'some-url', | 'url': 'some-url', | ||||
}, | }, | ||||
} | } | ||||
for loader_type, kwargs in loader_input.items(): | for loader_type, kwargs in loader_input.items(): | ||||
loader = get_loader(loader_type, **kwargs) | loader = get_loader(loader_type, **kwargs) | ||||
assert isinstance(loader, PackageLoader) | assert isinstance(loader, PackageLoader) | ||||
help_msg = """Usage: run [OPTIONS] [OPTIONS]... | run_help_msg = """Usage: run [OPTIONS] [archive|debian|deposit|npm|pypi] URL [OPTIONS]... | ||||
Loader cli tools | Ingest with loader <type> the origin located at <url> | ||||
Load an origin from its url with loader <name> | |||||
Options: | Options: | ||||
-t, --type [archive|debian|deposit|npm|pypi] | |||||
Loader to run | |||||
-u, --url TEXT Origin url to load | |||||
-h, --help Show this message and exit. | -h, --help Show this message and exit. | ||||
""" | """ # noqa | ||||
def test_run_help(swh_config): | def test_run_help(swh_config): | ||||
"""Help message should be ok | """Help message should be ok | ||||
""" | """ | ||||
runner = CliRunner() | runner = CliRunner() | ||||
result = runner.invoke(run, ['-h']) | result = runner.invoke(run, ['-h']) | ||||
assert result.exit_code == 0 | assert result.exit_code == 0 | ||||
assert result.output.startswith(help_msg) | assert result.output.startswith(run_help_msg) | ||||
def test_run_pypi(mocker, swh_config): | def test_run_pypi(mocker, swh_config): | ||||
"""Triggering a load should be ok | """Triggering a load should be ok | ||||
""" | """ | ||||
mock_loader = mocker.patch('swh.loader.package.pypi.loader.PyPILoader') | mock_loader = mocker.patch('swh.loader.package.pypi.loader.PyPILoader') | ||||
runner = CliRunner() | runner = CliRunner() | ||||
result = runner.invoke(run, [ | result = runner.invoke(run, ['pypi', 'https://some-url']) | ||||
'--type', 'pypi', | |||||
'--url', 'https://some-url' | |||||
]) | |||||
assert result.exit_code == 0 | assert result.exit_code == 0 | ||||
mock_loader.assert_called_once_with(url='https://some-url') # constructor | mock_loader.assert_called_once_with(url='https://some-url') # constructor | ||||
list_help_msg = """Usage: list [OPTIONS] [[all|archive|debian|deposit|npm|pypi]] | |||||
List supported loaders and optionally their arguments | |||||
Options: | |||||
-h, --help Show this message and exit. | |||||
""" # noqa | |||||
def test_list_help(mocker, swh_config): | |||||
"""Triggering a load should be ok | |||||
""" | |||||
runner = CliRunner() | |||||
result = runner.invoke(list, ['--help']) | |||||
assert result.exit_code == 0 | |||||
assert result.output.startswith(list_help_msg) |