From 9fad9937977e96cb984a0d30ae5ec3ee237a0ce7 Mon Sep 17 00:00:00 2001 From: Kanika Sabharwal Date: Sat, 27 Oct 2018 15:58:50 -0400 Subject: [PATCH 1/3] added unittest for _download_git --- setuptools/tests/test_packageindex.py | 36 +++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/setuptools/tests/test_packageindex.py b/setuptools/tests/test_packageindex.py index 63b9294610..7c2f2c84d6 100644 --- a/setuptools/tests/test_packageindex.py +++ b/setuptools/tests/test_packageindex.py @@ -6,6 +6,7 @@ from setuptools.extern import six from setuptools.extern.six.moves import urllib, http_client +import mock import pkg_resources import setuptools.package_index @@ -224,6 +225,41 @@ def test_egg_fragment(self): assert dists[1].version == vc + def test_download_git(self): + index = setuptools.package_index.PackageIndex( + hosts=('www.example.com',) + ) + + index._vcs_split_rev_from_url = mock.Mock() + url = 'https://example.com/bar' + rev = '2995' + + index._vcs_split_rev_from_url.return_value = (url, rev) + + filename = "somefile.py" + + with mock.patch("os.system") as os_system_mock: + + result = index._download_git(url, filename) + + os_system_mock.assert_called() + + assert os_system_mock.call_args_list[0][0] \ + == ("git clone --quiet %s %s" % (url, filename), ) + + assert os_system_mock.call_args_list[1][0] \ + == ("(cd %s && git checkout --quiet %s)" % (filename, rev), ) + assert result == filename + + index._vcs_split_rev_from_url.return_value = (url, None) + + with mock.patch("os.system") as os_system_mock: + + index._download_git(url, filename) + + os_system_mock.assert_called_once_with("git clone --quiet %s %s" % (url, filename)) + + class TestContentCheckers: def test_md5(self): checker = setuptools.package_index.HashChecker.from_url( From 08cdccef121eae198d719d39fbeb43b19180d99a Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Fri, 14 Dec 2018 15:10:56 -0500 Subject: [PATCH 2/3] Call index.download, covering more code. Split test into two. --- setuptools/tests/test_packageindex.py | 53 ++++++++++++++------------- 1 file changed, 28 insertions(+), 25 deletions(-) diff --git a/setuptools/tests/test_packageindex.py b/setuptools/tests/test_packageindex.py index 7c2f2c84d6..1f6bc7979a 100644 --- a/setuptools/tests/test_packageindex.py +++ b/setuptools/tests/test_packageindex.py @@ -224,40 +224,43 @@ def test_egg_fragment(self): assert dists[0].version == '' assert dists[1].version == vc - - def test_download_git(self): - index = setuptools.package_index.PackageIndex( - hosts=('www.example.com',) - ) - - index._vcs_split_rev_from_url = mock.Mock() - url = 'https://example.com/bar' - rev = '2995' - - index._vcs_split_rev_from_url.return_value = (url, rev) - - filename = "somefile.py" + def test_download_git_with_rev(self, tmpdir): + url = 'git+https://github.example/group/project@master#egg=foo' + index = setuptools.package_index.PackageIndex() with mock.patch("os.system") as os_system_mock: - - result = index._download_git(url, filename) + result = index.download(url, str(tmpdir)) os_system_mock.assert_called() - assert os_system_mock.call_args_list[0][0] \ - == ("git clone --quiet %s %s" % (url, filename), ) - - assert os_system_mock.call_args_list[1][0] \ - == ("(cd %s && git checkout --quiet %s)" % (filename, rev), ) - assert result == filename - - index._vcs_split_rev_from_url.return_value = (url, None) + expected_dir = str(tmpdir / 'project@master') + expected = ( + 'git clone --quiet ' + 'https://github.example/group/project {expected_dir}' + ).format(**locals()) + first_call_args = os_system_mock.call_args_list[0][0] + assert first_call_args == (expected,) + + tmpl = '(cd {expected_dir} && git checkout --quiet master)' + expected = tmpl.format(**locals()) + assert os_system_mock.call_args_list[1][0] == (expected,) + assert result == expected_dir + + def test_download_git_no_rev(self, tmpdir): + url = 'git+https://github.example/group/project#egg=foo' + index = setuptools.package_index.PackageIndex() with mock.patch("os.system") as os_system_mock: + result = index.download(url, str(tmpdir)) - index._download_git(url, filename) + os_system_mock.assert_called() - os_system_mock.assert_called_once_with("git clone --quiet %s %s" % (url, filename)) + expected_dir = str(tmpdir / 'project') + expected = ( + 'git clone --quiet ' + 'https://github.example/group/project {expected_dir}' + ).format(**locals()) + os_system_mock.assert_called_once_with(expected) class TestContentCheckers: From b431aef3a682a5e22d37568446b9cca1b14a2bf5 Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Fri, 14 Dec 2018 15:14:09 -0500 Subject: [PATCH 3/3] Update changelog. Ref #1544. --- changelog.d/1544.change.rst | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog.d/1544.change.rst diff --git a/changelog.d/1544.change.rst b/changelog.d/1544.change.rst new file mode 100644 index 0000000000..748b64e1c2 --- /dev/null +++ b/changelog.d/1544.change.rst @@ -0,0 +1 @@ +Added tests for PackageIndex.download (for git URLs).