-
Notifications
You must be signed in to change notification settings - Fork 192
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Replace requests_mock with responses #2165
Changes from all commits
65c2603
ebbce34
8878272
9c2537f
cb60b1d
f4747bf
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,7 +3,6 @@ isort | |
myst_parser | ||
pytest-cov | ||
pytest-datafiles | ||
requests-mock | ||
responses | ||
Sphinx | ||
sphinx-rtd-theme | ||
requests_mock |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,55 +1,65 @@ | ||
import os | ||
|
||
import pytest | ||
import requests_mock | ||
import requests_cache | ||
import responses | ||
|
||
import nf_core.modules | ||
from tests.utils import mock_api_calls | ||
from tests.utils import mock_anaconda_api_calls, mock_biocontainers_api_calls | ||
|
||
|
||
def test_modules_create_succeed(self): | ||
"""Succeed at creating the TrimGalore! module""" | ||
with requests_mock.Mocker() as mock: | ||
mock_api_calls(mock, "trim-galore", "0.6.7") | ||
with responses.RequestsMock() as rsps: | ||
mock_anaconda_api_calls(rsps, "trim-galore", "0.6.7") | ||
mock_biocontainers_api_calls(rsps, "trim-galore", "0.6.7") | ||
module_create = nf_core.modules.ModuleCreate( | ||
self.pipeline_dir, "trimgalore", "@author", "process_single", True, True, conda_name="trim-galore" | ||
) | ||
module_create.create() | ||
with requests_cache.disabled(): | ||
module_create.create() | ||
assert os.path.exists(os.path.join(self.pipeline_dir, "modules", "local", "trimgalore.nf")) | ||
|
||
|
||
def test_modules_create_fail_exists(self): | ||
"""Fail at creating the same module twice""" | ||
with requests_mock.Mocker() as mock: | ||
mock_api_calls(mock, "trim-galore", "0.6.7") | ||
with responses.RequestsMock() as rsps: | ||
mock_anaconda_api_calls(rsps, "trim-galore", "0.6.7") | ||
mock_biocontainers_api_calls(rsps, "trim-galore", "0.6.7") | ||
module_create = nf_core.modules.ModuleCreate( | ||
self.pipeline_dir, "trimgalore", "@author", "process_single", False, False, conda_name="trim-galore" | ||
) | ||
module_create.create() | ||
with pytest.raises(UserWarning) as excinfo: | ||
with requests_cache.disabled(): | ||
module_create.create() | ||
with pytest.raises(UserWarning) as excinfo: | ||
with requests_cache.disabled(): | ||
module_create.create() | ||
assert "Module file exists already" in str(excinfo.value) | ||
|
||
|
||
def test_modules_create_nfcore_modules(self): | ||
"""Create a module in nf-core/modules clone""" | ||
with requests_mock.Mocker() as mock: | ||
mock_api_calls(mock, "fastqc", "0.11.9") | ||
with responses.RequestsMock() as rsps: | ||
mock_anaconda_api_calls(rsps, "fastqc", "0.11.9") | ||
mock_biocontainers_api_calls(rsps, "fastqc", "0.11.9") | ||
module_create = nf_core.modules.ModuleCreate( | ||
self.nfcore_modules, "fastqc", "@author", "process_low", False, False | ||
) | ||
module_create.create() | ||
with requests_cache.disabled(): | ||
module_create.create() | ||
assert os.path.exists(os.path.join(self.nfcore_modules, "modules", "nf-core", "fastqc", "main.nf")) | ||
assert os.path.exists(os.path.join(self.nfcore_modules, "tests", "modules", "nf-core", "fastqc", "main.nf")) | ||
|
||
|
||
def test_modules_create_nfcore_modules_subtool(self): | ||
"""Create a tool/subtool module in a nf-core/modules clone""" | ||
with requests_mock.Mocker() as mock: | ||
mock_api_calls(mock, "star", "2.8.10a") | ||
with responses.RequestsMock() as rsps: | ||
mock_anaconda_api_calls(rsps, "star", "2.8.10a") | ||
mock_biocontainers_api_calls(rsps, "star", "2.8.10a") | ||
module_create = nf_core.modules.ModuleCreate( | ||
self.nfcore_modules, "star/index", "@author", "process_medium", False, False | ||
) | ||
module_create.create() | ||
with requests_cache.disabled(): | ||
module_create.create() | ||
assert os.path.exists(os.path.join(self.nfcore_modules, "modules", "nf-core", "star", "index", "main.nf")) | ||
assert os.path.exists(os.path.join(self.nfcore_modules, "tests", "modules", "nf-core", "star", "index", "main.nf")) |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -6,7 +6,7 @@ | |
import tempfile | ||
import unittest | ||
|
||
import requests_mock | ||
import responses | ||
|
||
import nf_core.create | ||
import nf_core.modules | ||
|
@@ -30,9 +30,9 @@ def create_modules_repo_dummy(tmp_dir): | |
with open(os.path.join(root_dir, ".nf-core.yml"), "w") as fh: | ||
fh.writelines(["repository_type: modules", "\n", "org_path: nf-core", "\n"]) | ||
|
||
with requests_mock.Mocker() as mock: | ||
subworkflow_create = nf_core.subworkflows.SubworkflowCreate(root_dir, "test_subworkflow", "@author", True) | ||
subworkflow_create.create() | ||
# TODO Add a mock here | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. was there an error? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There wasn't an error, but responses throws an error if the mock doesn't get used (meaning it's not needed) and when I added the mock calls neither of them were used. So I just removed the mock there for now. |
||
subworkflow_create = nf_core.subworkflows.SubworkflowCreate(root_dir, "test_subworkflow", "@author", True) | ||
subworkflow_create.create() | ||
|
||
return root_dir | ||
|
||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Which cache is this affecting? Wondering if it ignores the cloning of the modules repository and then we have to clone it again for every test, but it doesn't seem so when I try to run the test :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No, it's not the creation of that, it's just any queries that are running inside that code. For example, if you try to hit anaconda here. It was masking the mock and what I was stuck on months ago because the "mock wasn't used" because it was using the cache.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I see, that's interesting!