Module test_GitRepository
[hide private]
[frames] | no frames]

Module test_GitRepository

Test gbp.git.GitRepository

This testcase creates several repositores:

Functions [hide private]
 
test_create()
Create a repository
 
test_empty()
Empty repos have no branch
 
test_add_files()
Add some dummy data
 
test_branch_master()
First branch is called master
 
test_create_branch()
Create a branch name foo
 
test_delete_branch()
Create a branch named foo2 and delete it
 
test_set_branch()
Switch to branch named foo
 
test_tag()
Create a tag named tag
 
test_move_tag()
Remove tags
 
test_delete_tag()
Delete tags
 
test_list_files()
List files in the index
 
test_mirror_clone()
Mirror a repository
 
test_clone()
Clone a repository
 
test_merge()
Merge a branch
 
test_pull()
Pull from a remote repository
 
test_fetch()
Fetch from a remote repository
 
test_create_bare()
Create a bare repository
 
test_checkout()
Checkout treeishs
 
test_teardown()
Perform the teardown
Variables [hide private]
  repo_dir = '/tmp/buildd/git-buildpackage-0.6.0~git20111217/gbp...
  bare_dir = '/tmp/buildd/git-buildpackage-0.6.0~git20111217/gbp...
  clone_dir = '/tmp/buildd/git-buildpackage-0.6.0~git20111217/gb...
  mirror_clone_dir = '/tmp/buildd/git-buildpackage-0.6.0~git2011...
  __package__ = None
hash(x)
Function Details [hide private]

test_create()

 

Create a repository

Methods tested:

Properties tested:

>>> import os, gbp.git
>>> repo = gbp.git.GitRepository.create(repo_dir)
>>> repo.path == repo_dir
True
>>> repo.git_dir == os.path.join(repo_dir, '.git')
True
>>> type(repo) == gbp.git.GitRepository
True

test_empty()

 

Empty repos have no branch

Methods tested:

>>> import gbp.git
>>> repo = gbp.git.GitRepository(repo_dir)
>>> repo.get_branch()
>>> repo.branch
>>> repo.is_empty()
True

test_add_files()

 

Add some dummy data

Methods tested:

Properties tested:

>>> import gbp.git, shutil
>>> repo = gbp.git.GitRepository(repo_dir)
>>> shutil.copy(os.path.join(repo.path, ".git/HEAD"),                                  os.path.join(repo.path, "testfile"))
>>> repo.is_clean()[0]
False
>>> repo.add_files(repo.path, force=True)
>>> repo.commit_all(msg="foo")
>>> repo.is_clean()[0]
True
>>> h = repo.head
>>> len(h)
40

test_branch_master()

 

First branch is called master

Methods tested:

>>> import gbp.git, shutil
>>> repo = gbp.git.GitRepository(repo_dir)
>>> repo.get_branch()
'master'
>>> repo.branch
'master'

test_create_branch()

 

Create a branch name foo

Methods tested:

>>> import gbp.git, shutil
>>> repo = gbp.git.GitRepository(repo_dir)
>>> repo.create_branch("foo")

test_delete_branch()

 

Create a branch named foo2 and delete it

Methods tested:

>>> import gbp.git, shutil
>>> repo = gbp.git.GitRepository(repo_dir)
>>> repo.create_branch("bar")
>>> repo.delete_branch("bar")

test_set_branch()

 

Switch to branch named foo

Methods tested:

>>> import gbp.git
>>> repo = gbp.git.GitRepository(repo_dir)
>>> repo.set_branch("foo")
>>> repo.get_branch() == "foo"
True
>>> repo.branch == "foo"
True

test_tag()

 

Create a tag named tag

Methods tested:

>>> import gbp.git
>>> repo = gbp.git.GitRepository(repo_dir)
>>> repo.create_tag("tag")
>>> repo.has_tag("tag")
True
>>> repo.has_tag("unknown")
False
>>> repo.create_tag("tag2", msg="foo")
>>> repo.has_tag("tag2")
True
>>> repo.get_tags()
['tag', 'tag2']
>>> repo.tags
['tag', 'tag2']

test_move_tag()

 

Remove tags

Methods tested:

>>> import gbp.git
>>> repo = gbp.git.GitRepository(repo_dir)
>>> repo.move_tag("tag", "moved")
>>> repo.has_tag("tag")
False
>>> repo.has_tag("moved")
True

test_delete_tag()

 

Delete tags

Methods tested:

>>> import gbp.git
>>> repo = gbp.git.GitRepository(repo_dir)
>>> repo.has_tag("moved")
True
>>> repo.delete_tag("moved")
>>> repo.has_tag("moved")
False

test_list_files()

 

List files in the index

Methods tested:

>>> import gbp.git, os, shutil
>>> repo = gbp.git.GitRepository(repo_dir)
>>> src = os.path.join(repo.path, ".git/HEAD")
>>> dst = os.path.join(repo.path, "testfile")
>>> repo.list_files()
['testfile']
>>> repo.list_files(['modified'])
[]
>>> repo.list_files(['modified', 'deleted'])
[]
>>> repo.list_files(['modified', 'deleted', 'cached'])
['testfile']
>>> shutil.copy(src, dst)
>>> repo.list_files(['modified'])
['testfile']
>>> repo.add_files(dst)
>>> repo.commit_staged(msg="foo")
>>> repo.list_files(['modified'])
[]
>>> repo.list_files(['foo'])
Traceback (most recent call last):
...
GitRepositoryError: Unknown type 'foo'
>>> repo.force_head('HEAD^', hard=True)
>>> repo.list_files(['modified'])
[]
>>> shutil.copy(src, dst)
>>> repo.list_files(['modified'])
['testfile']
>>> repo.commit_files(dst, msg="foo")
>>> repo.list_files(['modified'])
[]

test_mirror_clone()

 

Mirror a repository

Methods tested:

>>> import gbp.git
>>> repo = gbp.git.GitRepository(repo_dir)
>>> repo.set_branch('master')
>>> mirror = gbp.git.GitRepository.clone(mirror_clone_dir, repo.path, mirror=True)
>>> mirror.is_empty()
False
>>> mirror.branch
'master'
>>> mirror.has_branch('foo')
True
>>> mirror.has_branch('bar')
False
>>> mirror.set_branch('foo')
>>> mirror.branch
'foo'
>>> mirror.force_head('foo^')

test_clone()

 

Clone a repository

Methods tested:

>>> import gbp.git
>>> repo = gbp.git.GitRepository(repo_dir)
>>> repo.set_branch('master')
>>> clone = gbp.git.GitRepository.clone(clone_dir, repo.path)
>>> clone.is_empty()
False
>>> clone.branch
'master'
>>> clone.get_remote_branches()
['origin/HEAD', 'origin/foo', 'origin/master']
>>> clone.get_local_branches()
['master']
>>> clone.get_merge_branch('master')
'origin/master'
>>> clone.create_branch('foo', 'origin/foo')
>>> clone.get_merge_branch('foo')
'origin/foo'
>>> clone.get_local_branches()
['foo', 'master']

test_merge()

 

Merge a branch

Methods tested:

>>> import gbp.git
>>> repo = gbp.git.GitRepository(repo_dir)
>>> repo.set_branch('master')
>>> repo.merge('foo')

test_pull()

 

Pull from a remote repository

Methods tested:

>>> import gbp.git, os
>>> d = os.path.join(clone_dir, 'gbp_%s_test_repo' % __name__)
>>> clone = gbp.git.GitRepository(d)
>>> clone.set_branch('master')
>>> clone.pull()

test_fetch()

 

Fetch from a remote repository

Methods tested:

>>> import gbp.git, os
>>> d = os.path.join(clone_dir, 'gbp_%s_test_repo' % __name__)
>>> clone = gbp.git.GitRepository(d)
>>> clone.fetch()

test_create_bare()

 

Create a bare repository

Methods tested:

>>> import gbp.git
>>> bare = gbp.git.GitRepository.create(bare_dir, bare=True, description="msg")
>>> bare.path == bare_dir
True
>>> bare.git_dir[:-1] == bare_dir
True
>>> type(bare) == gbp.git.GitRepository
True
>>> bare.is_empty()
True
>>> bare.is_clean()
(True, '')

test_checkout()

 

Checkout treeishs

Methods tested:

Properties tested:

>>> import gbp.git
>>> repo = gbp.git.GitRepository(repo_dir)
>>> repo.checkout('master')
>>> repo.branch
'master'
>>> sha1 = repo.rev_parse('master')
>>> repo.checkout(sha1)
>>> repo.branch
>>> repo.get_branch()
Traceback (most recent call last):
...
GitRepositoryError: Currently not on a branch
>>> tag = repo.tags[0]
>>> repo.checkout(tag)
>>> repo.branch

test_teardown()

 

Perform the teardown

>>> import shutil, os
>>> os.getenv("GBP_TESTS_NOCLEAN") or shutil.rmtree(repo_dir)
>>> os.getenv("GBP_TESTS_NOCLEAN") or shutil.rmtree(bare_dir)
>>> os.getenv("GBP_TESTS_NOCLEAN") or shutil.rmtree(mirror_clone_dir)
>>> os.getenv("GBP_TESTS_NOCLEAN") or shutil.rmtree(clone_dir)

Variables Details [hide private]

repo_dir

Value:
'/tmp/buildd/git-buildpackage-0.6.0~git20111217/gbp_test_GitRepository\
_test_repo'

bare_dir

Value:
'/tmp/buildd/git-buildpackage-0.6.0~git20111217/gbp_test_GitRepository\
_test_bare'

clone_dir

Value:
'/tmp/buildd/git-buildpackage-0.6.0~git20111217/gbp_test_GitRepository\
_test_clone'

mirror_clone_dir

Value:
'/tmp/buildd/git-buildpackage-0.6.0~git20111217/gbp_test_GitRepository\
_test_mirror_clone'