Repository : http://git.fedorahosted.org/cgit/copr.git
On branch : master
commit f68d1a71036d1bad43cb8843dd58b9bfd448bdb3 Author: Valentin Gologuzov vgologuz@redhat.com Date: Tue Nov 4 10:08:43 2014 +0100
[backend] createrepo.py added option to pass base_url
backend/backend/createrepo.py | 8 +++++--- backend/tests/test_createrepo.py | 25 +++++++++++++------------ 2 files changed, 18 insertions(+), 15 deletions(-)
diff --git a/backend/backend/createrepo.py b/backend/backend/createrepo.py index 6673be4..3dedb3d 100644 --- a/backend/backend/createrepo.py +++ b/backend/backend/createrepo.py @@ -64,7 +64,7 @@ def get_auto_createrepo_status(front_url, username, projectname): return True
-def createrepo(path, front_url, username, projectname, lock=None): +def createrepo(path, front_url, username, projectname, base_url=None, lock=None): """ Creates repo depending on the project setting "auto_createrepo". When enabled creates `repodata` at the provided path, otherwise @@ -73,15 +73,17 @@ def createrepo(path, front_url, username, projectname, lock=None): :param str front_url: url to the copr frontend :param str username: copr project owner username :param str projectname: copr project name + :param str base_url: base_url to access rpms independently of repomd location :param Multiprocessing.Lock lock: [optional] global copr-backend lock
- :return: tuple(returncode, stdout, stderr) produced by `createrepo_c` """ # TODO: add means of logging
+ base_url = base_url or "" + if get_auto_createrepo_status(front_url, username, projectname): return createrepo_unsafe(path, lock) else: - return createrepo_unsafe(path, lock, base_url="../", dest_dir="devel") + return createrepo_unsafe(path, lock, base_url=base_url, dest_dir="devel")
diff --git a/backend/tests/test_createrepo.py b/backend/tests/test_createrepo.py index 088c5c8..40ec041 100644 --- a/backend/tests/test_createrepo.py +++ b/backend/tests/test_createrepo.py @@ -31,11 +31,10 @@ def test_createrepo_conditional_true(mc_client, mc_create_unsafe):
createrepo(path="/tmp/", front_url="http://example.com/api", username="foo", projectname="bar", lock=None) - mc_create_unsafe.reset_mock()
- - mc_client.return_value.get_project_details.return_value = MagicMock(data={"detail": {"auto_createrepo": True}}) + mc_client.return_value.get_project_details.return_value = MagicMock( + data={"detail": {"auto_createrepo": True}})
createrepo(path="/tmp/", front_url="http://example.com/api", username="foo", projectname="bar", lock=None) @@ -47,10 +46,11 @@ def test_createrepo_conditional_true(mc_client, mc_create_unsafe): def test_createrepo_conditional_false(mc_client, mc_create_unsafe): mc_client.return_value.get_project_details.return_value = MagicMock(data={"detail": {"auto_createrepo": False}})
+ base_url = "http://example.com/repo/" createrepo(path="/tmp/", front_url="http://example.com/api", - username="foo", projectname="bar", lock=None) + username="foo", projectname="bar", base_url=base_url, lock=None)
- assert mc_create_unsafe.call_args == mock.call('/tmp/', None, dest_dir='devel', base_url='../') + assert mc_create_unsafe.call_args == mock.call('/tmp/', None, dest_dir='devel', base_url=base_url)
@mock.patch('backend.createrepo.Popen') @@ -58,6 +58,7 @@ class TestCreaterepoUnsafe(object): def setup_method(self, method): self.tmp_dir_name = self.make_temp_dir() self.test_time = time.time() + self.base_url = "http://example.com/repo/"
def teardown_method(self, method): self.rm_tmp_dir() @@ -129,11 +130,11 @@ class TestCreaterepoUnsafe(object): expected_epel_5 = ['/usr/bin/createrepo_c', '--database', '--ignore-lock', '-s', 'sha', '--checksum', 'md5', '--outputdir', os.path.join(path_epel_5, "devel"), - '--baseurl', '../', path_epel_5] + '--baseurl', self.base_url, path_epel_5] path_fedora = os.path.join(self.tmp_dir_name, "fedora-21") expected_fedora = ['/usr/bin/createrepo_c', '--database', '--ignore-lock', '--outputdir', os.path.join(path_fedora, "devel"), - '--baseurl', '../', path_fedora] + '--baseurl', self.base_url, path_fedora] for path, expected in [(path_epel_5, expected_epel_5), (path_fedora, expected_fedora)]: os.makedirs(path)
@@ -142,7 +143,7 @@ class TestCreaterepoUnsafe(object): with open(os.path.join(repo_path, "repomd.xml"), "w") as handle: handle.write("1")
- createrepo_unsafe(path, lock=None, base_url="../", dest_dir="devel") + createrepo_unsafe(path, lock=None, base_url=self.base_url, dest_dir="devel") assert mc_popen.call_args == mock.call(expected, stderr=-1, stdout=-1)
def test_createrepo_devel_generated_commands(self, mc_popen): @@ -152,15 +153,15 @@ class TestCreaterepoUnsafe(object): expected_epel_5 = ['/usr/bin/createrepo_c', '--database', '--ignore-lock', '-s', 'sha', '--checksum', 'md5', '--outputdir', os.path.join(path_epel_5, "devel"), - '--baseurl', '../', path_epel_5] + '--baseurl', self.base_url, path_epel_5] path_fedora = os.path.join(self.tmp_dir_name, "fedora-21") expected_fedora = ['/usr/bin/createrepo_c', '--database', '--ignore-lock', '--outputdir', os.path.join(path_fedora, "devel"), - '--baseurl', '../', path_fedora] + '--baseurl', self.base_url, path_fedora] for path, expected in [(path_epel_5, expected_epel_5), (path_fedora, expected_fedora)]: os.makedirs(path)
- createrepo_unsafe(path, lock=None, base_url="../", dest_dir="devel") + createrepo_unsafe(path, lock=None, base_url=self.base_url, dest_dir="devel") assert os.path.exists(os.path.join(path, "devel")) assert mc_popen.call_args == mock.call(expected, stderr=-1, stdout=-1) # @@ -173,5 +174,5 @@ class TestCreaterepoUnsafe(object): # for path in [path_epel_5, path_fedora]: # os.makedirs(path) # - # createrepo_unsafe(path, lock=None, base_url="../", dest_dir="devel") + # createrepo_unsafe(path, lock=None, base_url=self.base_url, dest_dir="devel") # assert os.path.exists(os.path.join(path, "devel"))
copr-commits@lists.fedorahosted.org