From dc395964ad9c1784ddc75d889b71aa0e9c138208 Mon Sep 17 00:00:00 2001 From: Guido Günther Date: Sun, 10 Apr 2011 17:12:25 +0200 Subject: gbp: Handle whitespace in submodule names Closes: #622103 --- gbp/git.py | 2 +- tests/04_test_gbp_submodules.py | 26 ++++++++++++++++++++++---- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/gbp/git.py b/gbp/git.py index f72f866e..a8e95615 100644 --- a/gbp/git.py +++ b/gbp/git.py @@ -534,7 +534,7 @@ class GitRepository(object): out, ret = self.__git_getoutput('ls-tree', args, cwd=path) for line in out: - mode, objtype, commit, name = line.split() + mode, objtype, commit, name = line[:-1].split(None, 3) # A submodules is shown as "commit" object in ls-tree: if objtype == "commit": nextpath = os.path.sep.join([path, name]) diff --git a/tests/04_test_gbp_submodules.py b/tests/04_test_gbp_submodules.py index 64183f06..7a4dfa94 100644 --- a/tests/04_test_gbp_submodules.py +++ b/tests/04_test_gbp_submodules.py @@ -15,6 +15,7 @@ repo = None repodir = None submodules = [] +submodule_names = ["test_submodule", "sub module"] tmpdir = None testfile_name = "testfile" @@ -35,7 +36,7 @@ def setup(): repodir = os.path.join(tmpdir, 'test_repo') repo = gbp.git.create_repo(repodir) - for name in ["test_submodule"]: + for name in submodule_names: submodules.append(Submodule(name, tmpdir)) os.chdir(repodir) @@ -66,9 +67,10 @@ def test_add_files(): def test_add_submodule_files(): """Add some dummy data""" - os.chdir(submodules[0].dir) - _add_dummy_data("initial commit in submodule") - os.chdir(repodir) + for submodule in submodules: + os.chdir(submodule.dir) + _add_dummy_data("initial commit in submodule") + os.chdir(repodir) assert True @@ -118,4 +120,20 @@ def test_check_tarfile(): assert "test-0.1/.gitmodules" in [ f.name for f in files ] assert len(files) == 6 +def test_add_whitespace_submodule(): + """Add a second submodule with name containing whitespace""" + repo.add_submodule(submodules[1].dir) + gbp.command_wrappers.GitCommand("commit", + ["-m 'Added submodule %s'" % submodules[0].dir, + "-a"])() + +def test_get_more_submodules(): + """Check for submodules list of (name, hash)""" + module = repo.get_submodules("master") + assert(len(module) == len(submodule_names)) + for module in repo.get_submodules("master"): + assert len(module[1]) == 40 + assert os.path.basename(module[0]) in submodule_names + + # vim:et:ts=4:sw=4:et:sts=4:ai:set list listchars=tab\:»·,trail\:·: -- cgit v1.2.3