diff --git a/requirements-test.txt b/requirements-test.txt index b76af18..368666f 100644 --- a/requirements-test.txt +++ b/requirements-test.txt @@ -1,5 +1,6 @@ pytest +pytest-mock pytest-postgresql >= 2.1.0 requests_mock swh-core[testing] swh-scheduler[testing] diff --git a/swh/loader/package/archive/tests/test_tasks.py b/swh/loader/package/archive/tests/test_tasks.py index 2b15abb..798281b 100644 --- a/swh/loader/package/archive/tests/test_tasks.py +++ b/swh/loader/package/archive/tests/test_tasks.py @@ -1,21 +1,19 @@ # Copyright (C) 2019 The Software Heritage developers # See the AUTHORS file at the top-level directory of this distribution # License: GNU General Public License version 3, or any later version # See top-level LICENSE file for more information -from unittest.mock import patch - -@patch('swh.loader.package.archive.loader.ArchiveLoader.load') -def test_archive_loader( - mock_loader, swh_app, celery_session_worker, swh_config): +def test_archive_loader(mocker, swh_app, celery_session_worker, swh_config): + mock_loader = mocker.patch( + 'swh.loader.package.archive.loader.ArchiveLoader.load') mock_loader.return_value = {'status': 'eventful'} res = swh_app.send_task( 'swh.loader.package.archive.tasks.LoadArchive', (), dict(url='some-url', artifacts=[])) assert res res.wait() assert res.successful() assert res.result == {'status': 'eventful'} diff --git a/swh/loader/package/debian/tests/test_tasks.py b/swh/loader/package/debian/tests/test_tasks.py index 0f1fac4..82a3374 100644 --- a/swh/loader/package/debian/tests/test_tasks.py +++ b/swh/loader/package/debian/tests/test_tasks.py @@ -1,21 +1,19 @@ # Copyright (C) 2019 The Software Heritage developers # See the AUTHORS file at the top-level directory of this distribution # License: GNU General Public License version 3, or any later version # See top-level LICENSE file for more information -from unittest.mock import patch - -@patch('swh.loader.package.debian.loader.DebianLoader.load') -def test_debian_loader( - mock_loader, swh_app, celery_session_worker, swh_config): +def test_debian_loader(mocker, swh_app, celery_session_worker, swh_config): + mock_loader = mocker.patch( + 'swh.loader.package.debian.loader.DebianLoader.load') mock_loader.return_value = {'status': 'eventful'} res = swh_app.send_task( 'swh.loader.package.debian.tasks.LoadDebian', (), dict(url='some-url', date='some-date', packages={})) assert res res.wait() assert res.successful() assert res.result == {'status': 'eventful'} diff --git a/swh/loader/package/deposit/tests/test_tasks.py b/swh/loader/package/deposit/tests/test_tasks.py index 4c161cb..f1fe0aa 100644 --- a/swh/loader/package/deposit/tests/test_tasks.py +++ b/swh/loader/package/deposit/tests/test_tasks.py @@ -1,21 +1,19 @@ # Copyright (C) 2019 The Software Heritage developers # See the AUTHORS file at the top-level directory of this distribution # License: GNU General Public License version 3, or any later version # See top-level LICENSE file for more information -from unittest.mock import patch - -@patch('swh.loader.package.deposit.loader.DepositLoader.load') -def test_deposit_loader( - mock_loader, swh_app, celery_session_worker, swh_config): +def test_deposit_loader(mocker, swh_app, celery_session_worker, swh_config): + mock_loader = mocker.patch( + 'swh.loader.package.deposit.loader.DepositLoader.load') mock_loader.return_value = {'status': 'eventful'} res = swh_app.send_task( 'swh.loader.package.deposit.tasks.LoadDeposit', (), dict(url='some-url', deposit_id='some-d-id')) assert res res.wait() assert res.successful() assert res.result == {'status': 'eventful'} diff --git a/swh/loader/package/npm/tests/test_tasks.py b/swh/loader/package/npm/tests/test_tasks.py index cdee978..f407412 100644 --- a/swh/loader/package/npm/tests/test_tasks.py +++ b/swh/loader/package/npm/tests/test_tasks.py @@ -1,21 +1,18 @@ # Copyright (C) 2019 The Software Heritage developers # See the AUTHORS file at the top-level directory of this distribution # License: GNU General Public License version 3, or any later version # See top-level LICENSE file for more information -from unittest.mock import patch - -@patch('swh.loader.package.npm.loader.NpmLoader.load') -def test_npm_loader( - mock_loader, swh_app, celery_session_worker, swh_config): +def test_npm_loader(mocker, swh_app, celery_session_worker, swh_config): + mock_loader = mocker.patch('swh.loader.package.npm.loader.NpmLoader.load') mock_loader.return_value = {'status': 'eventful'} res = swh_app.send_task( 'swh.loader.package.npm.tasks.LoadNpm', (), dict(url='https://www.npmjs.com/package/some-package')) assert res res.wait() assert res.successful() assert res.result == {'status': 'eventful'} diff --git a/swh/loader/package/pypi/tests/test_tasks.py b/swh/loader/package/pypi/tests/test_tasks.py index d3184d2..2711d57 100644 --- a/swh/loader/package/pypi/tests/test_tasks.py +++ b/swh/loader/package/pypi/tests/test_tasks.py @@ -1,21 +1,19 @@ # Copyright (C) 2019 The Software Heritage developers # See the AUTHORS file at the top-level directory of this distribution # License: GNU General Public License version 3, or any later version # See top-level LICENSE file for more information -from unittest.mock import patch - -@patch('swh.loader.package.pypi.loader.PyPILoader.load') -def test_pypi_loader( - mock_loader, swh_app, celery_session_worker, swh_config): +def test_pypi_loader(mocker, swh_app, celery_session_worker, swh_config): + mock_loader = mocker.patch( + 'swh.loader.package.pypi.loader.PyPILoader.load') mock_loader.return_value = {'status': 'eventful'} res = swh_app.send_task( 'swh.loader.package.pypi.tasks.LoadPyPI', (), dict(url='some-url')) assert res res.wait() assert res.successful() assert res.result == {'status': 'eventful'} diff --git a/swh/loader/tests/test_cli.py b/swh/loader/tests/test_cli.py index c7920bc..dcee86a 100644 --- a/swh/loader/tests/test_cli.py +++ b/swh/loader/tests/test_cli.py @@ -1,91 +1,90 @@ # Copyright (C) 2019 The Software Heritage developers # See the AUTHORS file at the top-level directory of this distribution # License: GNU General Public License version 3, or any later version # See top-level LICENSE file for more information import pytest from swh.loader.cli import run, get_loader, SUPPORTED_LOADERS from swh.loader.package.loader import PackageLoader from click.testing import CliRunner -from unittest.mock import patch def test_get_loader_wrong_input(swh_config): """Unsupported loader should raise """ loader_type = 'unknown' assert loader_type not in SUPPORTED_LOADERS with pytest.raises(ValueError, match='Invalid loader'): get_loader(loader_type, url='db-url') def test_get_loader(swh_config): """Instantiating a supported loader should be ok """ loader_input = { 'archive': { 'url': 'some-url', 'artifacts': [], }, 'debian': { 'url': 'some-url', 'date': 'something', 'packages': [], }, 'deposit': { 'url': 'some-url', 'deposit_id': 1, }, 'npm': { 'url': 'https://www.npmjs.com/package/onepackage', }, 'pypi': { 'url': 'some-url', }, } for loader_type, kwargs in loader_input.items(): loader = get_loader(loader_type, **kwargs) assert isinstance(loader, PackageLoader) help_msg = """Usage: run [OPTIONS] [OPTIONS]... Loader cli tools Load an origin from its url with loader 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. """ def test_run_help(swh_config): """Help message should be ok """ runner = CliRunner() result = runner.invoke(run, ['-h']) assert result.exit_code == 0 assert result.output.startswith(help_msg) -@patch('swh.loader.package.pypi.loader.PyPILoader') -def test_run_pypi(mock_loader, swh_config): +def test_run_pypi(mocker, swh_config): """Triggering a load should be ok """ + mock_loader = mocker.patch('swh.loader.package.pypi.loader.PyPILoader') runner = CliRunner() result = runner.invoke(run, [ '--type', 'pypi', '--url', 'https://some-url' ]) assert result.exit_code == 0 mock_loader.assert_called_once_with(url='https://some-url') # constructor