Merge "Fixed building destination path on forking repository"

This commit is contained in:
Jenkins 2016-02-20 13:47:40 +00:00 committed by Gerrit Code Review
commit 0188265c39
4 changed files with 15 additions and 5 deletions

View File

@ -95,7 +95,9 @@ class RepositoryController(object):
""" """
new_path = os.path.join( new_path = os.path.join(
destination, 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) logger.info("cloning repository '%s' to '%s'", repository, new_path)
return self.driver.fork_repository( return self.driver.fork_repository(

View File

@ -105,6 +105,7 @@ class RpmRepositoryDriver(RepositoryDriverBase):
name=repository_data['name'], name=repository_data['name'],
url=utils.normalize_repository_url(repository_data["uri"]), url=utils.normalize_repository_url(repository_data["uri"]),
architecture=arch, architecture=arch,
path=repository_data.get('path'),
origin="" origin=""
)) ))
@ -203,6 +204,7 @@ class RpmRepositoryDriver(RepositoryDriverBase):
name=repository_data['name'], name=repository_data['name'],
url=utils.normalize_repository_url(repository_data["uri"]), url=utils.normalize_repository_url(repository_data["uri"]),
architecture=arch, architecture=arch,
path=repository_data.get('path'),
origin=repository_data.get('origin') origin=repository_data.get('origin')
) )
utils.ensure_dir_exist(utils.get_path_from_url(repository.url)) utils.ensure_dir_exist(utils.get_path_from_url(repository.url))

View File

@ -87,7 +87,7 @@ class TestRepositoryController(base.TestCase):
@mock.patch("packetary.controllers.repository.os") @mock.patch("packetary.controllers.repository.os")
def test_fork_repository(self, 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") repo = gen_repository(name="test1", url="file:///test")
clone = copy.copy(repo) clone = copy.copy(repo)
clone.url = "/root/repo" clone.url = "/root/repo"
@ -98,7 +98,7 @@ class TestRepositoryController(base.TestCase):
self.context.connection, repo, "./repo/test", False, False self.context.connection, repo, "./repo/test", False, False
) )
repo.path = "os" 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.driver.fork_repository.assert_called_with(
self.context.connection, repo, "./repo/os", False, False self.context.connection, repo, "./repo/os", False, False
) )

View File

@ -69,7 +69,10 @@ class TestRpmDriver(base.TestCase):
def test_get_repository(self): def test_get_repository(self):
repos = [] 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.driver.get_repository(
self.connection, self.connection,
repo_data, repo_data,
@ -83,6 +86,7 @@ class TestRpmDriver(base.TestCase):
self.assertEqual("", repo.origin) self.assertEqual("", repo.origin)
self.assertEqual("x86_64", repo.architecture) self.assertEqual("x86_64", repo.architecture)
self.assertEqual("http://host/centos/os/x86_64/", repo.url) self.assertEqual("http://host/centos/os/x86_64/", repo.url)
self.assertEqual("centos", repo.path)
def test_get_packages(self): def test_get_packages(self):
streams = [] streams = []
@ -221,7 +225,8 @@ class TestRpmDriver(base.TestCase):
@mock.patch("packetary.drivers.rpm_driver.utils.ensure_dir_exist") @mock.patch("packetary.drivers.rpm_driver.utils.ensure_dir_exist")
def test_create_repository(self, ensure_dir_exists_mock): def test_create_repository(self, ensure_dir_exists_mock):
repository_data = { 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") repo = self.driver.create_repository(repository_data, "x86_64")
ensure_dir_exists_mock.assert_called_once_with("/repo/os/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("x86_64", repo.architecture)
self.assertEqual(repository_data["uri"] + "/", repo.url) self.assertEqual(repository_data["uri"] + "/", repo.url)
self.assertEqual(repository_data["origin"], repo.origin) self.assertEqual(repository_data["origin"], repo.origin)
self.assertEqual(repository_data["path"], repo.path)
@mock.patch("packetary.drivers.rpm_driver.utils") @mock.patch("packetary.drivers.rpm_driver.utils")
def test_load_package_from_file(self, utils): def test_load_package_from_file(self, utils):