summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorSebastian Thiel <byronimo@gmail.com>2009-10-16 11:48:20 +0200
committerSebastian Thiel <byronimo@gmail.com>2009-10-16 11:48:20 +0200
commit05d2687afcc78cd192714ee3d71fdf36a37d110f (patch)
tree3e3760e5b46095458cf75446330ba2fc25fa23e5 /test
parent6226720b0e6a5f7cb9223fc50363def487831315 (diff)
parentf2df1f56cccab13d5c92abbc6b18be725e7b4833 (diff)
downloadgitpython-05d2687afcc78cd192714ee3d71fdf36a37d110f.tar.gz
Merging latest improvements including a revamped Repo interface before more changes are to be done on the way diffing is handled
Merge branch 'improvements' * improvements: Improved archive function by allowing it to directly write to an output stream - previously it would cache everything to memory and try to provide zipping functionality itself repo: made init and clone methods less specific, previously they wanted to do it 'barely' only. New method names closely follow the default git command names repo.commit_delta_base: removed Object can now create objects of the proper type in case one attempts to create an object directly - this feature is used in several places now, allowing for additional type-checking repo: removed commits_between but added a note about how this can be achieved using the iter_commits method; reorganized methods within the type as a start for more interface changes Added Commit.iter_parents to iterate all parents repo: removed a few methods because of redundancy or because it will be obsolete once the interface overhaul is finished. This commit is just intermediate All times are not stored as time_struct, but as simple int to consume less memory
Diffstat (limited to 'test')
-rw-r--r--test/git/test_base.py3
-rw-r--r--test/git/test_blob.py1
-rw-r--r--test/git/test_commit.py13
-rw-r--r--test/git/test_performance.py2
-rw-r--r--test/git/test_repo.py69
-rw-r--r--test/git/test_tag.py3
6 files changed, 41 insertions, 50 deletions
diff --git a/test/git/test_base.py b/test/git/test_base.py
index 402cdba3..04222e2e 100644
--- a/test/git/test_base.py
+++ b/test/git/test_base.py
@@ -4,7 +4,6 @@
# This module is part of GitPython and is released under
# the BSD License: http://www.opensource.org/licenses/bsd-license.php
-import time
from test.testlib import *
from git import *
import git.objects.base as base
@@ -63,7 +62,7 @@ class TestBase(object):
ref_count = 0
for ref in chain(self.repo.tags, self.repo.heads):
ref_count += 1
- assert isinstance(ref, refs.Ref)
+ assert isinstance(ref, refs.Reference)
assert str(ref) == ref.name
assert repr(ref)
assert ref == ref
diff --git a/test/git/test_blob.py b/test/git/test_blob.py
index 266f3a23..e151b3c8 100644
--- a/test/git/test_blob.py
+++ b/test/git/test_blob.py
@@ -4,7 +4,6 @@
# This module is part of GitPython and is released under
# the BSD License: http://www.opensource.org/licenses/bsd-license.php
-import time
from test.testlib import *
from git import *
diff --git a/test/git/test_commit.py b/test/git/test_commit.py
index a95fb675..4e698ed0 100644
--- a/test/git/test_commit.py
+++ b/test/git/test_commit.py
@@ -215,6 +215,9 @@ class TestCommit(object):
for sha1, commit in zip(expected_ids, commits):
assert_equal(sha1, commit.id)
+ def test_count(self):
+ assert Commit.count( self.repo, '0.1.5' ) == 141
+
def test_str(self):
commit = Commit(self.repo, id='abc')
assert_equal ("abc", str(commit))
@@ -230,3 +233,13 @@ class TestCommit(object):
assert_equal(commit1, commit2)
assert_not_equal(commit2, commit3)
+ def test_iter_parents(self):
+ # should return all but ourselves, even if skip is defined
+ c = self.repo.commit('0.1.5')
+ for skip in (0, 1):
+ piter = c.iter_parents(skip=skip)
+ first_parent = piter.next()
+ assert first_parent != c
+ assert first_parent == c.parents[0]
+ # END for each
+
diff --git a/test/git/test_performance.py b/test/git/test_performance.py
index 96f13a2e..77567515 100644
--- a/test/git/test_performance.py
+++ b/test/git/test_performance.py
@@ -21,7 +21,7 @@ class TestPerformance(object):
# return quite a lot of commits, we just take one and hence abort the operation
st = time()
- for c in self.repo.commits():
+ for c in self.repo.iter_commits('0.1.6'):
num_commits += 1
c.author
c.authored_date
diff --git a/test/git/test_repo.py b/test/git/test_repo.py
index e998ac6d..96d08b91 100644
--- a/test/git/test_repo.py
+++ b/test/git/test_repo.py
@@ -5,7 +5,6 @@
# the BSD License: http://www.opensource.org/licenses/bsd-license.php
import os, sys
-import time
from test.testlib import *
from git import *
@@ -43,7 +42,7 @@ class TestRepo(object):
def test_commits(self, git):
git.return_value = ListProcessAdapter(fixture('rev_list'))
- commits = self.repo.commits('master', max_count=10)
+ commits = list( self.repo.iter_commits('master', max_count=10) )
c = commits[0]
assert_equal('4c8124ffcf4039d292442eeccabdeca5af5c5017', c.id)
@@ -51,10 +50,10 @@ class TestRepo(object):
assert_equal("672eca9b7f9e09c22dcb128c283e8c3c8d7697a4", c.tree.id)
assert_equal("Tom Preston-Werner", c.author.name)
assert_equal("tom@mojombo.com", c.author.email)
- assert_equal(time.gmtime(1191999972), c.authored_date)
+ assert_equal(1191999972, c.authored_date)
assert_equal("Tom Preston-Werner", c.committer.name)
assert_equal("tom@mojombo.com", c.committer.email)
- assert_equal(time.gmtime(1191999972), c.committed_date)
+ assert_equal(1191999972, c.committed_date)
assert_equal("implement Grit#heads", c.message)
c = commits[1]
@@ -66,76 +65,55 @@ class TestRepo(object):
assert_true(git.called)
- @patch_object(Git, '_call_process')
- def test_commit_count(self, git):
- git.return_value = fixture('rev_list_count')
-
- assert_equal(655, self.repo.commit_count('master'))
-
- assert_true(git.called)
- assert_equal(git.call_args, (('rev_list', 'master', '--', ''), {}))
-
- @patch_object(Git, '_call_process')
- def test_commit(self, git):
- git.return_value = ListProcessAdapter(fixture('rev_list_single'))
-
- commit = self.repo.commit('4c8124ffcf4039d292442eeccabdeca5af5c5017')
-
- assert_equal("4c8124ffcf4039d292442eeccabdeca5af5c5017", commit.id)
-
- assert_true(git.called)
-
@patch_object(Repo, '__init__')
@patch_object(Git, '_call_process')
- def test_init_bare(self, git, repo):
+ def test_init(self, git, repo):
git.return_value = True
repo.return_value = None
- Repo.init_bare("repos/foo/bar.git")
+ r = Repo.init("repos/foo/bar.git", bare=True)
+ assert isinstance(r, Repo)
assert_true(git.called)
- assert_equal(git.call_args, (('init', '--bare'), {}))
assert_true(repo.called)
- assert_equal(repo.call_args, (('repos/foo/bar.git',), {}))
@patch_object(Repo, '__init__')
@patch_object(Git, '_call_process')
- def test_init_bare_with_options(self, git, repo):
+ def test_init_with_options(self, git, repo):
git.return_value = True
repo.return_value = None
- Repo.init_bare("repos/foo/bar.git", **{'template': "/baz/sweet"})
+ r = Repo.init("repos/foo/bar.git", **{'bare' : True,'template': "/baz/sweet"})
+ assert isinstance(r, Repo)
assert_true(git.called)
- assert_equal(git.call_args, (('init', '--bare'), {'template': '/baz/sweet'}))
assert_true(repo.called)
- assert_equal(repo.call_args, (('repos/foo/bar.git',), {}))
@patch_object(Repo, '__init__')
@patch_object(Git, '_call_process')
- def test_fork_bare(self, git, repo):
+ def test_clone(self, git, repo):
git.return_value = None
repo.return_value = None
- self.repo.fork_bare("repos/foo/bar.git")
+ self.repo.clone("repos/foo/bar.git")
assert_true(git.called)
path = os.path.join(absolute_project_path(), '.git')
- assert_equal(git.call_args, (('clone', path, 'repos/foo/bar.git'), {'bare': True}))
+ assert_equal(git.call_args, (('clone', path, 'repos/foo/bar.git'), {}))
assert_true(repo.called)
@patch_object(Repo, '__init__')
@patch_object(Git, '_call_process')
- def test_fork_bare_with_options(self, git, repo):
+ def test_clone_with_options(self, git, repo):
git.return_value = None
repo.return_value = None
- self.repo.fork_bare("repos/foo/bar.git", **{'template': '/awesome'})
+ self.repo.clone("repos/foo/bar.git", **{'template': '/awesome'})
assert_true(git.called)
path = os.path.join(absolute_project_path(), '.git')
assert_equal(git.call_args, (('clone', path, 'repos/foo/bar.git'),
- {'bare': True, 'template': '/awesome'}))
+ { 'template': '/awesome'}))
assert_true(repo.called)
@patch_object(Git, '_call_process')
@@ -163,11 +141,14 @@ class TestRepo(object):
assert_equal(15, len(diffs))
assert_true(git.called)
- def test_archive_tar(self):
- assert self.repo.archive_tar()
-
- def test_archive_tar_gz(self):
- assert self.repo.archive_tar_gz()
+ def test_archive(self):
+ args = ( tuple(), (self.repo.heads[-1],),(None,"hello") )
+ for arg_list in args:
+ ftmp = os.tmpfile()
+ self.repo.archive(ftmp, *arg_list)
+ ftmp.seek(0,2)
+ assert ftmp.tell()
+ # END for each arg-list
@patch('git.utils.touch')
def test_enable_daemon_serve(self, touch):
@@ -233,10 +214,10 @@ class TestRepo(object):
assert_equal('634396b2f541a9f2d58b00be1a07f0c358b999b3', c.id)
assert_equal('Tom Preston-Werner', c.author.name)
assert_equal('tom@mojombo.com', c.author.email)
- assert_equal(time.gmtime(1191997100), c.authored_date)
+ assert_equal(1191997100, c.authored_date)
assert_equal('Tom Preston-Werner', c.committer.name)
assert_equal('tom@mojombo.com', c.committer.email)
- assert_equal(time.gmtime(1191997100), c.committed_date)
+ assert_equal(1191997100, c.committed_date)
assert_equal('initial grit setup', c.message)
# test the 'lines per commit' entries
diff --git a/test/git/test_tag.py b/test/git/test_tag.py
index 2ebb860a..8f12bf11 100644
--- a/test/git/test_tag.py
+++ b/test/git/test_tag.py
@@ -8,7 +8,6 @@ from mock import *
from test.testlib import *
from git import *
from git.objects.tag import TagObject
-import time
class TestTag(object):
def setup(self):
@@ -26,7 +25,7 @@ class TestTag(object):
assert isinstance( tagobj, TagObject )
assert tagobj.tag == tag.name
assert isinstance( tagobj.tagger, Actor )
- assert isinstance( tagobj.tagged_date, time.struct_time )
+ assert isinstance( tagobj.tagged_date, int )
assert tagobj.message
# END if we have a tag object
# END for tag in repo-tags