diff options
author | Guido Günther <agx@sigxcpu.org> | 2011-12-28 22:04:03 +0100 |
---|---|---|
committer | Guido Günther <agx@sigxcpu.org> | 2011-12-29 09:45:15 +0100 |
commit | 2a873e1a4d6babf37e417c9da3e4e1b3640bc347 (patch) | |
tree | e97ee2ab9537d91ab7ef251a9d7da66b6e072505 /tests/04_test_submodules.py | |
parent | 747c05d728d3ab15c84ff22e077c7943d924d695 (diff) |
Rename and comment tests
Git-Dch: Ignore
Diffstat (limited to 'tests/04_test_submodules.py')
-rw-r--r-- | tests/04_test_submodules.py | 139 |
1 files changed, 139 insertions, 0 deletions
diff --git a/tests/04_test_submodules.py b/tests/04_test_submodules.py new file mode 100644 index 0000000..5ae1f5f --- /dev/null +++ b/tests/04_test_submodules.py @@ -0,0 +1,139 @@ +# vim: set fileencoding=utf-8 : + +"""Test submodule L{GitRepository} submodule methods""" + +import os +import shutil +import tarfile +import tempfile + +import gbp.log +import gbp.git +import gbp.command_wrappers + +from gbp.scripts import buildpackage + +top = None +repo = None +repodir = None + +submodules = [] +submodule_names = ["test_submodule", "sub module"] +tmpdir = None +testfile_name = "testfile" + +class Submodule(object): + def __init__(self, name, tmpdir): + self.name = name + self.dir = os.path.join(tmpdir, name) + self.repo = gbp.git.GitRepository.create(self.dir) + + +def setup(): + global repo, repodir, submodules, top, tmpdir + + gbp.log.setup(False, False) + top = os.path.abspath(os.curdir) + tmpdir =os.path.join(top,'gbp_%s_repo' % __name__) + os.mkdir(tmpdir) + + repodir = os.path.join(tmpdir, 'test_repo') + repo = gbp.git.GitRepository.create(repodir) + + for name in submodule_names: + submodules.append(Submodule(name, tmpdir)) + + os.chdir(repodir) + + +def teardown(): + os.chdir(top) + if not os.getenv("GBP_TESTS_NOCLEAN") and tmpdir: + shutil.rmtree(tmpdir) + + +def test_empty_has_submodules(): + """Test empty repo for submodules""" + assert not repo.has_submodules() + + +def _add_dummy_data(repo, msg): + shutil.copy(".git/HEAD", testfile_name) + repo.add_files('.', force=True) + repo.commit_all(msg) + + +def test_add_files(): + """Add some dummy data""" + _add_dummy_data(repo, "initial commit") + assert True + + +def test_add_submodule_files(): + """Add some dummy data""" + for submodule in submodules: + os.chdir(submodule.dir) + _add_dummy_data(submodule.repo, "initial commit in submodule") + os.chdir(repodir) + assert True + + +def test_add_submodule(): + """Add a submodule""" + repo.add_submodule(submodules[0].dir) + repo.commit_all(msg='Added submodule %s' % submodules[0].dir) + +def test_has_submodules(): + """Check for submodules""" + assert repo.has_submodules() + + +def test_get_submodules(): + """Check for submodules list of (name, hash)""" + modules = repo.get_submodules("master")[0] + assert modules[0] == './test_submodule' + assert len(modules[1]) == 40 + + +def test_dump_tree(): + """Dump the repository and check if files exist""" + dumpdir = os.path.join(tmpdir, "dump") + os.mkdir(dumpdir) + assert buildpackage.dump_tree(repo, dumpdir, "master", True) + assert os.path.exists(os.path.join(dumpdir, testfile_name)) + assert os.path.exists(os.path.join(dumpdir, submodules[0].name, testfile_name)) + + +def test_create_tarball(): + """Create an upstream tarball""" + cp = { "Source": "test", "Upstream-Version": "0.1" } + assert buildpackage.git_archive(repo, + cp, + tmpdir, + "HEAD", + "bzip2", + "9", + True) + +def test_check_tarfile(): + """Check the contents of the created tarfile""" + t = tarfile.open(os.path.join(tmpdir,"test_0.1.orig.tar.bz2"), 'r:*') + files = t.getmembers() + 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) + repo.commit_all(msg='Added submodule %s' % submodules[0].dir) + +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\:·: |