Skip to content

Commit 1231e85

Browse files
committed
Lessen code duplication in vcs tests
By using pytest.mark.parametrize decorator. Signed-off-by: Alexander Mazuruk <a.mazuruk@samsung.com>
1 parent 956094a commit 1231e85

File tree

2 files changed

+48
-257
lines changed

2 files changed

+48
-257
lines changed

tests/test_vcs.py

Lines changed: 34 additions & 207 deletions
Original file line numberDiff line numberDiff line change
@@ -25,213 +25,40 @@
2525
def obtain(dest, url):
2626
pass
2727

28-
29-
@mock.patch("fetchcode.vcs.vcs.get_backend_for_scheme")
30-
def test_fetch_with_git_http_url_returns_a_response(mock_backend):
31-
mock_backend.return_value.obtain = obtain
32-
url = "git+http://github.com/jamesor/mongoose-versioner"
33-
response = fetch_via_vcs(url=url)
34-
assert response.vcs_type == "git"
35-
assert response.domain == "github.com"
36-
37-
38-
@mock.patch("fetchcode.vcs.vcs.get_backend_for_scheme")
39-
def test_fetch_with_git_url_returns_a_response(mock_backend):
40-
mock_backend.return_value.obtain = obtain
41-
url = "git://github.com/jamesor/mongoose-versioner"
42-
response = fetch_via_vcs(url=url)
43-
assert response.vcs_type == "git"
44-
assert response.domain == "github.com"
45-
46-
47-
@mock.patch("fetchcode.vcs.vcs.get_backend_for_scheme")
48-
def test_fetch_with_git_https_url_returns_a_response(mock_backend):
49-
mock_backend.return_value.obtain = obtain
50-
url = "git+https://github.com/jamesor/mongoose-versioner"
51-
response = fetch_via_vcs(url=url)
52-
assert response.vcs_type == "git"
53-
assert response.domain == "github.com"
54-
55-
56-
@mock.patch("fetchcode.vcs.vcs.get_backend_for_scheme")
57-
def test_fetch_with_git_ssh_url_returns_a_response(mock_backend):
58-
mock_backend.return_value.obtain = obtain
59-
url = "git+ssh://github.com/jamesor/mongoose-versioner"
60-
response = fetch_via_vcs(url=url)
61-
assert response.vcs_type == "git"
62-
assert response.domain == "github.com"
63-
64-
65-
@mock.patch("fetchcode.vcs.vcs.get_backend_for_scheme")
66-
def test_fetch_with_git_file_url_returns_a_response(mock_backend):
67-
mock_backend.return_value.obtain = obtain
68-
url = "git+file://github.com/jamesor/mongoose-versioner"
69-
response = fetch_via_vcs(url=url)
70-
assert response.vcs_type == "git"
71-
assert response.domain == "github.com"
72-
73-
74-
@mock.patch("fetchcode.vcs.vcs.get_backend_for_scheme")
75-
def test_fetch_with_git_ssh_url_returns_a_response(mock_backend):
76-
mock_backend.return_value.obtain = obtain
77-
url = "git+git://github.com/jamesor/mongoose-versioner"
78-
response = fetch_via_vcs(url=url)
79-
assert response.vcs_type == "git"
80-
assert response.domain == "github.com"
81-
82-
83-
@mock.patch("fetchcode.vcs.vcs.get_backend_for_scheme")
84-
def test_fetch_with_bzr_http_url_returns_a_response(mock_backend):
85-
mock_backend.return_value.obtain = obtain
86-
url = "bzr+http://gitlab.com/jamesor/mongoose-versioner"
87-
response = fetch_via_vcs(url=url)
88-
assert response.vcs_type == "bzr"
89-
assert response.domain == "gitlab.com"
90-
91-
92-
@mock.patch("fetchcode.vcs.vcs.get_backend_for_scheme")
93-
def test_fetch_with_bzr_https_url_returns_a_response(mock_backend):
94-
mock_backend.return_value.obtain = obtain
95-
url = "bzr+https://gitlab.com/jamesor/mongoose-versioner"
96-
response = fetch_via_vcs(url=url)
97-
assert response.vcs_type == "bzr"
98-
assert response.domain == "gitlab.com"
99-
100-
101-
@mock.patch("fetchcode.vcs.vcs.get_backend_for_scheme")
102-
def test_fetch_with_bzr_url_returns_a_response(mock_backend):
103-
mock_backend.return_value.obtain = obtain
104-
url = "bzr://gitlab.com/jamesor/mongoose-versioner"
105-
response = fetch_via_vcs(url=url)
106-
assert response.vcs_type == "bzr"
107-
assert response.domain == "gitlab.com"
108-
109-
110-
@mock.patch("fetchcode.vcs.vcs.get_backend_for_scheme")
111-
def test_fetch_with_bzr_ssh_url_returns_a_response(mock_backend):
112-
mock_backend.return_value.obtain = obtain
113-
url = "bzr+ssh://gitlab.com/jamesor/mongoose-versioner"
114-
response = fetch_via_vcs(url=url)
115-
assert response.vcs_type == "bzr"
116-
assert response.domain == "gitlab.com"
117-
118-
119-
@mock.patch("fetchcode.vcs.vcs.get_backend_for_scheme")
120-
def test_fetch_with_bzr_ftp_url_returns_a_response(mock_backend):
121-
mock_backend.return_value.obtain = obtain
122-
url = "bzr+ftp://gitlab.com/jamesor/mongoose-versioner"
123-
response = fetch_via_vcs(url=url)
124-
assert response.vcs_type == "bzr"
125-
assert response.domain == "gitlab.com"
126-
127-
128-
@mock.patch("fetchcode.vcs.vcs.get_backend_for_scheme")
129-
def test_fetch_with_bzr_sftp_url_returns_a_response(mock_backend):
130-
mock_backend.return_value.obtain = obtain
131-
url = "bzr+sftp://gitlab.com/jamesor/mongoose-versioner"
132-
response = fetch_via_vcs(url=url)
133-
assert response.vcs_type == "bzr"
134-
assert response.domain == "gitlab.com"
135-
136-
137-
@mock.patch("fetchcode.vcs.vcs.get_backend_for_scheme")
138-
def test_fetch_with_bzr_lp_url_returns_a_response(mock_backend):
139-
mock_backend.return_value.obtain = obtain
140-
url = "bzr+lp://gitlab.com/jamesor/mongoose-versioner"
141-
response = fetch_via_vcs(url=url)
142-
assert response.vcs_type == "bzr"
143-
assert response.domain == "gitlab.com"
144-
145-
146-
@mock.patch("fetchcode.vcs.vcs.get_backend_for_scheme")
147-
def test_fetch_with_hg_url_returns_a_response(mock_backend):
148-
mock_backend.return_value.obtain = obtain
149-
url = "hg://bitbucket.com/jamesor/mongoose-versioner"
150-
response = fetch_via_vcs(url=url)
151-
assert response.vcs_type == "hg"
152-
assert response.domain == "bitbucket.com"
153-
154-
155-
@mock.patch("fetchcode.vcs.vcs.get_backend_for_scheme")
156-
def test_fetch_with_hg_file_url_returns_a_response(mock_backend):
157-
mock_backend.return_value.obtain = obtain
158-
url = "hg+file://bitbucket.com/jamesor/mongoose-versioner"
159-
response = fetch_via_vcs(url=url)
160-
assert response.vcs_type == "hg"
161-
assert response.domain == "bitbucket.com"
162-
163-
164-
@mock.patch("fetchcode.vcs.vcs.get_backend_for_scheme")
165-
def test_fetch_with_hg_http_url_returns_a_response(mock_backend):
166-
mock_backend.return_value.obtain = obtain
167-
url = "hg+http://bitbucket.com/jamesor/mongoose-versioner"
168-
response = fetch_via_vcs(url=url)
169-
assert response.vcs_type == "hg"
170-
assert response.domain == "bitbucket.com"
171-
172-
173-
@mock.patch("fetchcode.vcs.vcs.get_backend_for_scheme")
174-
def test_fetch_with_hg_https_url_returns_a_response(mock_backend):
175-
mock_backend.return_value.obtain = obtain
176-
url = "hg+https://bitbucket.com/jamesor/mongoose-versioner"
177-
response = fetch_via_vcs(url=url)
178-
assert response.vcs_type == "hg"
179-
assert response.domain == "bitbucket.com"
180-
181-
182-
@mock.patch("fetchcode.vcs.vcs.get_backend_for_scheme")
183-
def test_fetch_with_hg_ssh_url_returns_a_response(mock_backend):
184-
mock_backend.return_value.obtain = obtain
185-
url = "hg+ssh://bitbucket.com/jamesor/mongoose-versioner"
186-
response = fetch_via_vcs(url=url)
187-
assert response.vcs_type == "hg"
188-
assert response.domain == "bitbucket.com"
189-
190-
191-
@mock.patch("fetchcode.vcs.vcs.get_backend_for_scheme")
192-
def test_fetch_with_hg_static_http_url_returns_a_response(mock_backend):
193-
mock_backend.return_value.obtain = obtain
194-
url = "hg+static-http://bitbucket.com/jamesor/mongoose-versioner"
195-
response = fetch_via_vcs(url=url)
196-
assert response.vcs_type == "hg"
197-
assert response.domain == "bitbucket.com"
198-
199-
200-
@mock.patch("fetchcode.vcs.vcs.get_backend_for_scheme")
201-
def test_fetch_with_svn_url_returns_a_response(mock_backend):
202-
mock_backend.return_value.obtain = obtain
203-
url = "svn://bitbucket.com/jamesor/mongoose-versioner"
204-
response = fetch_via_vcs(url=url)
205-
assert response.vcs_type == "svn"
206-
assert response.domain == "bitbucket.com"
207-
208-
209-
@mock.patch("fetchcode.vcs.vcs.get_backend_for_scheme")
210-
def test_fetch_with_svn_http_url_returns_a_response(mock_backend):
211-
mock_backend.return_value.obtain = obtain
212-
url = "svn+http://bitbucket.com/jamesor/mongoose-versioner"
213-
response = fetch_via_vcs(url=url)
214-
assert response.vcs_type == "svn"
215-
assert response.domain == "bitbucket.com"
216-
217-
218-
@mock.patch("fetchcode.vcs.vcs.get_backend_for_scheme")
219-
def test_fetch_with_svn_https_url_returns_a_response(mock_backend):
220-
mock_backend.return_value.obtain = obtain
221-
url = "svn+https://bitbucket.com/jamesor/mongoose-versioner"
222-
response = fetch_via_vcs(url=url)
223-
assert response.vcs_type == "svn"
224-
assert response.domain == "bitbucket.com"
225-
226-
227-
@mock.patch("fetchcode.vcs.vcs.get_backend_for_scheme")
228-
def test_fetch_with_svn_svn_url_returns_a_response(mock_backend):
229-
mock_backend.return_value.obtain = obtain
230-
url = "svn+svn://bitbucket.com/jamesor/mongoose-versioner"
231-
response = fetch_via_vcs(url=url)
232-
assert response.vcs_type == "svn"
233-
assert response.domain == "bitbucket.com"
234-
28+
@pytest.mark.parametrize(
29+
"url, vcs_type, domain",
30+
[
31+
pytest.param("git+http://github.com/jamesor/mongoose-versioner", "git", "github.com", id="git_http"),
32+
pytest.param("git://github.com/jamesor/mongoose-versioner", "git", "github.com", id="git"),
33+
pytest.param("git+https://github.com/jamesor/mongoose-versioner", "git", "github.com", id="git_https"),
34+
pytest.param("git+ssh://github.com/jamesor/mongoose-versioner", "git", "github.com", id="git_ssh"),
35+
pytest.param("git+file://github.com/jamesor/mongoose-versioner", "git", "github.com", id="git_file"),
36+
pytest.param("git+git://github.com/jamesor/mongoose-versioner", "git", "github.com", id="git_git"),
37+
pytest.param("bzr+http://gitlab.com/jamesor/mongoose-versioner", "bzr", "gitlab.com", id="bzr_http"),
38+
pytest.param("bzr+https://gitlab.com/jamesor/mongoose-versioner", "bzr", "gitlab.com", id="bzr_https"),
39+
pytest.param("bzr://gitlab.com/jamesor/mongoose-versioner", "bzr", "gitlab.com", id="bzr"),
40+
pytest.param("bzr+ssh://gitlab.com/jamesor/mongoose-versioner", "bzr", "gitlab.com", id="bzr_ssh"),
41+
pytest.param("bzr+ftp://gitlab.com/jamesor/mongoose-versioner", "bzr", "gitlab.com", id="bzr_ftp"),
42+
pytest.param("bzr+sftp://gitlab.com/jamesor/mongoose-versioner", "bzr", "gitlab.com", id="bzr_sftp"),
43+
pytest.param("bzr+lp://gitlab.com/jamesor/mongoose-versioner", "bzr", "gitlab.com", id="bzr_lp"),
44+
pytest.param("hg://bitbucket.com/jamesor/mongoose-versioner", "hg", "bitbucket.com", id="hg"),
45+
pytest.param("hg+file://bitbucket.com/jamesor/mongoose-versioner", "hg", "bitbucket.com", id="hg_file"),
46+
pytest.param("hg+http://bitbucket.com/jamesor/mongoose-versioner", "hg", "bitbucket.com", id="hg_http"),
47+
pytest.param("hg+https://bitbucket.com/jamesor/mongoose-versioner", "hg", "bitbucket.com", id="hg_https"),
48+
pytest.param("hg+ssh://bitbucket.com/jamesor/mongoose-versioner", "hg", "bitbucket.com", id="hg_ssh"),
49+
pytest.param("hg+static-http://bitbucket.com/jamesor/mongoose-versioner", "hg", "bitbucket.com", id="hg_static_http"),
50+
pytest.param("svn://bitbucket.com/jamesor/mongoose-versioner", "svn", "bitbucket.com", id="svn"),
51+
pytest.param("svn+http://bitbucket.com/jamesor/mongoose-versioner", "svn", "bitbucket.com", id="svn_http"),
52+
pytest.param("svn+https://bitbucket.com/jamesor/mongoose-versioner", "svn", "bitbucket.com", id="svn_https"),
53+
pytest.param("svn+svn://bitbucket.com/jamesor/mongoose-versioner", "svn", "bitbucket.com", id="svn_svn")
54+
],
55+
)
56+
@mock.patch("fetchcode.vcs.vcs.get_backend_for_scheme")
57+
def test_fetch_via_vcs_returns_response(mock_backend, url, vcs_type, domain):
58+
mock_backend.return_value.obtain = obtain
59+
response = fetch_via_vcs(url=url)
60+
assert response.vcs_type == vcs_type
61+
assert response.domain == domain
23562

23663
def test_fetch_with_invalid_scheme():
23764
invalid_urls = [

tests/test_vcs_git.py

Lines changed: 14 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -25,59 +25,23 @@ def obtain(dest, url):
2525
pass
2626

2727

28+
@pytest.mark.parametrize(
29+
"url, vcs_type, domain",
30+
[
31+
pytest.param("git+http://github.com/jamesor/mongoose-versioner", "git", "github.com", id="git_http"),
32+
pytest.param("git://github.com/jamesor/mongoose-versioner", "git", "github.com", id="git"),
33+
pytest.param("git+https://github.com/jamesor/mongoose-versioner", "git", "github.com", id="git_https"),
34+
pytest.param("git+ssh://github.com/jamesor/mongoose-versioner", "git", "github.com", id="git_ssh"),
35+
pytest.param("git+file://github.com/jamesor/mongoose-versioner", "git", "github.com", id="git_file"),
36+
pytest.param("git+git://github.com/jamesor/mongoose-versioner", "git", "github.com", id="git_git")
37+
],
38+
)
2839
@mock.patch("fetchcode.vcs.git.vcs.get_backend")
29-
def test_fetch_with_git_http_url_returns_a_response(mock_backend):
40+
def test_fetch_via_vcs_returns_response(mock_backend, url, vcs_type, domain):
3041
mock_backend.return_value.obtain = obtain
31-
url = "git+http://github.com/jamesor/mongoose-versioner"
3242
response = fetch_via_git(url=url)
33-
assert response.vcs_type == "git"
34-
assert response.domain == "github.com"
35-
36-
37-
@mock.patch("fetchcode.vcs.git.vcs.get_backend")
38-
def test_fetch_with_git_url_returns_a_response(mock_backend):
39-
mock_backend.return_value.obtain = obtain
40-
url = "git://github.com/jamesor/mongoose-versioner"
41-
response = fetch_via_git(url=url)
42-
assert response.vcs_type == "git"
43-
assert response.domain == "github.com"
44-
45-
46-
@mock.patch("fetchcode.vcs.git.vcs.get_backend")
47-
def test_fetch_with_git_https_url_returns_a_response(mock_backend):
48-
mock_backend.return_value.obtain = obtain
49-
url = "git+https://github.com/jamesor/mongoose-versioner"
50-
response = fetch_via_git(url=url)
51-
assert response.vcs_type == "git"
52-
assert response.domain == "github.com"
53-
54-
55-
@mock.patch("fetchcode.vcs.git.vcs.get_backend")
56-
def test_fetch_with_git_ssh_url_returns_a_response(mock_backend):
57-
mock_backend.return_value.obtain = obtain
58-
url = "git+ssh://github.com/jamesor/mongoose-versioner"
59-
response = fetch_via_git(url=url)
60-
assert response.vcs_type == "git"
61-
assert response.domain == "github.com"
62-
63-
64-
@mock.patch("fetchcode.vcs.git.vcs.get_backend")
65-
def test_fetch_with_git_file_url_returns_a_response(mock_backend):
66-
mock_backend.return_value.obtain = obtain
67-
url = "git+file://github.com/jamesor/mongoose-versioner"
68-
response = fetch_via_git(url=url)
69-
assert response.vcs_type == "git"
70-
assert response.domain == "github.com"
71-
72-
73-
@mock.patch("fetchcode.vcs.git.vcs.get_backend")
74-
def test_fetch_with_git_ssh_url_returns_a_response(mock_backend):
75-
mock_backend.return_value.obtain = obtain
76-
url = "git+git://github.com/jamesor/mongoose-versioner"
77-
response = fetch_via_git(url=url)
78-
assert response.vcs_type == "git"
79-
assert response.domain == "github.com"
80-
43+
assert response.vcs_type == vcs_type
44+
assert response.domain == domain
8145

8246
def test_fetch_with_git_invalid_scheme():
8347
invalid_urls = [

0 commit comments

Comments
 (0)