From 9f73e8ba55f33394161b403bf7b8c2e0e05f47b0 Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Tue, 16 Nov 2010 11:05:31 +0100 Subject: remote: added methods to set and query the tracking branch status of normal heads, including test. Config: SectionConstraint was updated with additional callable methods, the complete ConfigParser interface should be covered now Remote: refs methods is much more efficient now as it will set the search path to the directory containing the remote refs - previously it used the remotes/ base directory and pruned the search result --- test/git/test_refs.py | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) (limited to 'test/git/test_refs.py') diff --git a/test/git/test_refs.py b/test/git/test_refs.py index 5f13d0b7..4cfd952e 100644 --- a/test/git/test_refs.py +++ b/test/git/test_refs.py @@ -63,8 +63,9 @@ class TestRefs(TestBase): assert len(s) == ref_count assert len(s|s) == ref_count - def test_heads(self): - for head in self.rorepo.heads: + @with_rw_repo('HEAD', bare=False) + def test_heads(self, rwrepo): + for head in rwrepo.heads: assert head.name assert head.path assert "refs/heads" in head.path @@ -72,6 +73,23 @@ class TestRefs(TestBase): cur_object = head.object assert prev_object == cur_object # represent the same git object assert prev_object is not cur_object # but are different instances + + writer = head.config_writer() + tv = "testopt" + writer.set_value(tv, 1) + assert writer.get_value(tv) == 1 + del(writer) + assert head.config_reader().get_value(tv) == 1 + head.config_writer().remove_option(tv) + + # after the clone, we might still have a tracking branch setup + head.set_tracking_branch(None) + assert head.tracking_branch() is None + remote_ref = rwrepo.remotes[0].refs[0] + assert head.set_tracking_branch(remote_ref) is head + assert head.tracking_branch() == remote_ref + head.set_tracking_branch(None) + assert head.tracking_branch() is None # END for each head def test_refs(self): @@ -208,6 +226,8 @@ class TestRefs(TestBase): refs = remote.refs RemoteReference.delete(rw_repo, *refs) remote_refs_so_far += len(refs) + for ref in refs: + assert ref.remote_name == remote.name # END for each ref to delete assert remote_refs_so_far -- cgit v1.2.1 From 82849578e61a7dfb47fc76dcbe18b1e3b6a36951 Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Thu, 18 Nov 2010 10:40:16 +0100 Subject: ORIG_HEAD handling is now implemented in the ref-class itself, instead of being a special case of the commit method; includes tests util: Fixed iterable lists, which broke due to an incorrectly implemented __contains__ method --- test/git/test_refs.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'test/git/test_refs.py') diff --git a/test/git/test_refs.py b/test/git/test_refs.py index 4cfd952e..fa26bae9 100644 --- a/test/git/test_refs.py +++ b/test/git/test_refs.py @@ -92,6 +92,37 @@ class TestRefs(TestBase): assert head.tracking_branch() is None # END for each head + # verify ORIG_HEAD gets set for detached heads + head = rwrepo.head + orig_head = head.orig_head() + cur_head = head.ref + cur_commit = cur_head.commit + pcommit = cur_head.commit.parents[0].parents[0] + head.ref = pcommit # detach head + assert orig_head.commit == cur_commit + + # even if we set it through its reference - chaning the ref + # will adjust the orig_head, which still points to cur_commit + head.ref = cur_head + assert orig_head.commit == pcommit + assert head.commit == cur_commit == cur_head.commit + + cur_head.commit = pcommit + assert head.commit == pcommit + assert orig_head.commit == cur_commit + + # with automatic dereferencing + head.commit = cur_commit + assert orig_head.commit == pcommit + + # changing branches which are not checked out doesn't affect the ORIG_HEAD + other_head = Head.create(rwrepo, 'mynewhead', pcommit) + assert other_head.commit == pcommit + assert orig_head.commit == pcommit + other_head.commit = pcommit.parents[0] + assert orig_head.commit == pcommit + + def test_refs(self): types_found = set() for ref in self.rorepo.refs: -- cgit v1.2.1