Skip to content

Commit 215930d

Browse files
committed
Add tests to check VCSResponse Class
Signed-off-by: TG1999 <tushar.goel.dav@gmail.com>
1 parent 8046215 commit 215930d

File tree

2 files changed

+226
-6
lines changed

2 files changed

+226
-6
lines changed

fetchcode/vcs/__init__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ def fetch_via_vcs(url):
5757
if scheme in vcs_backend.schemes:
5858
vcs_type = vcs_name
5959

60-
vcs.get_backend_for_scheme(scheme).obtain(temp,url=misc.hide_url(url))
60+
backend = vcs.get_backend_for_scheme(scheme)
61+
backend.obtain(dest=temp, url=misc.hide_url(url))
6162

6263
return VCSResponse(dest_dir=temp, vcs_type=vcs_type, domain=domain)

tests/test_vcs.py

Lines changed: 224 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
# This software is licensed under the Apache License version 2.0.
88
#
99
# You may not use this software except in compliance with the License.
10-
# You may obtain a copy of the License at:
10+
# You may obtain a copy of the License at:
1111
# http://apache.org/licenses/LICENSE-2.0
1212
# Unless required by applicable law or agreed to in writing, software distributed
1313
# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
@@ -16,11 +16,230 @@
1616

1717
from unittest import mock
1818

19+
import pytest
20+
1921
from fetchcode.vcs import fetch_via_vcs
22+
from fetchcode.vcs.pip._internal.vcs import vcs
23+
24+
25+
def obtain(dest, url):
26+
pass
27+
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"
20126

21127

22-
def test_fetch_with_git_url_returns_a_response():
23-
url = 'git+http://github.com/jamesor/mongoose-versioner'
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"
24132
response = fetch_via_vcs(url=url)
25-
assert response.vcs_type == 'git'
26-
assert response.domain == 'github.com'
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+
235+
236+
def test_fetch_with_invalid_scheme():
237+
invalid_urls = [
238+
"https://github.com/TG1999/fetchcode",
239+
"https://bitbucket.org/TG1999/fetchcode",
240+
"https://gitlab.com/TG1999/fetchcode",
241+
]
242+
with pytest.raises(Exception) as e_info:
243+
for url in invalid_urls:
244+
fetch_via_vcs(url)
245+
assert "Not a supported/known scheme." == e_info

0 commit comments

Comments
 (0)