From c0f04443b523ebb630e5d905bec1ca9bb6accccf Mon Sep 17 00:00:00 2001 From: Bulat Gaifullin Date: Sat, 20 Feb 2016 13:20:14 +0300 Subject: [PATCH] Fixed building destination path on forking repository Also fixed handling 'path' argument for centos repositories Change-Id: I3292e64d47e0ea58a44d3ce625649d4bb934f3c6 Closes-Bug: 1547820 --- packetary/controllers/repository.py | 4 +++- packetary/drivers/rpm_driver.py | 2 ++ packetary/tests/test_repository_contoller.py | 4 ++-- packetary/tests/test_rpm_driver.py | 10 ++++++++-- 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/packetary/controllers/repository.py b/packetary/controllers/repository.py index 5b165f9..ce8ab9d 100644 --- a/packetary/controllers/repository.py +++ b/packetary/controllers/repository.py @@ -95,7 +95,9 @@ class RepositoryController(object): """ new_path = os.path.join( destination, - repository.path or utils.get_path_from_url(repository.url, False) + repository.path or + # the cut first '/', because otherwise path.join uses it as is + utils.get_path_from_url(repository.url, False)[1:] ) logger.info("cloning repository '%s' to '%s'", repository, new_path) return self.driver.fork_repository( diff --git a/packetary/drivers/rpm_driver.py b/packetary/drivers/rpm_driver.py index 5752d75..72de97e 100644 --- a/packetary/drivers/rpm_driver.py +++ b/packetary/drivers/rpm_driver.py @@ -105,6 +105,7 @@ class RpmRepositoryDriver(RepositoryDriverBase): name=repository_data['name'], url=utils.normalize_repository_url(repository_data["uri"]), architecture=arch, + path=repository_data.get('path'), origin="" )) @@ -201,6 +202,7 @@ class RpmRepositoryDriver(RepositoryDriverBase): name=repository_data['name'], url=utils.normalize_repository_url(repository_data["uri"]), architecture=arch, + path=repository_data.get('path'), origin=repository_data.get('origin') ) utils.ensure_dir_exist(utils.get_path_from_url(repository.url)) diff --git a/packetary/tests/test_repository_contoller.py b/packetary/tests/test_repository_contoller.py index ec94eba..d6816c8 100644 --- a/packetary/tests/test_repository_contoller.py +++ b/packetary/tests/test_repository_contoller.py @@ -87,7 +87,7 @@ class TestRepositoryController(base.TestCase): @mock.patch("packetary.controllers.repository.os") def test_fork_repository(self, os): - os.path.join.side_effect = lambda *args: "".join(args) + os.path.join.side_effect = lambda *args: "/".join(args) repo = gen_repository(name="test1", url="file:///test") clone = copy.copy(repo) clone.url = "/root/repo" @@ -98,7 +98,7 @@ class TestRepositoryController(base.TestCase): self.context.connection, repo, "./repo/test", False, False ) repo.path = "os" - self.ctrl.fork_repository(repo, "./repo/", False, False) + self.ctrl.fork_repository(repo, "./repo", False, False) self.driver.fork_repository.assert_called_with( self.context.connection, repo, "./repo/os", False, False ) diff --git a/packetary/tests/test_rpm_driver.py b/packetary/tests/test_rpm_driver.py index 07d9296..1134cce 100644 --- a/packetary/tests/test_rpm_driver.py +++ b/packetary/tests/test_rpm_driver.py @@ -69,7 +69,10 @@ class TestRpmDriver(base.TestCase): def test_get_repository(self): repos = [] - repo_data = {"name": "os", "uri": "http://host/centos/os/x86_64/"} + repo_data = { + "name": "os", "uri": "http://host/centos/os/x86_64/", + "path": "centos" + } self.driver.get_repository( self.connection, repo_data, @@ -83,6 +86,7 @@ class TestRpmDriver(base.TestCase): self.assertEqual("", repo.origin) self.assertEqual("x86_64", repo.architecture) self.assertEqual("http://host/centos/os/x86_64/", repo.url) + self.assertEqual("centos", repo.path) def test_get_packages(self): streams = [] @@ -221,7 +225,8 @@ class TestRpmDriver(base.TestCase): @mock.patch("packetary.drivers.rpm_driver.utils.ensure_dir_exist") def test_create_repository(self, ensure_dir_exists_mock): repository_data = { - "name": "Test", "uri": "file:///repo/os/x86_64", "origin": "Test" + "name": "Test", "uri": "file:///repo/os/x86_64", "origin": "Test", + "path": "centos" } repo = self.driver.create_repository(repository_data, "x86_64") ensure_dir_exists_mock.assert_called_once_with("/repo/os/x86_64/") @@ -229,6 +234,7 @@ class TestRpmDriver(base.TestCase): self.assertEqual("x86_64", repo.architecture) self.assertEqual(repository_data["uri"] + "/", repo.url) self.assertEqual(repository_data["origin"], repo.origin) + self.assertEqual(repository_data["path"], repo.path) @mock.patch("packetary.drivers.rpm_driver.utils") def test_load_package_from_file(self, utils):