From a07cdbae1d485fd715a5b6eca767f211770fea4d Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Mon, 19 Oct 2009 18:06:19 +0200 Subject: Added remote module and test cases - about to implement remote option handling --- test/git/test_remote.py | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 test/git/test_remote.py (limited to 'test/git/test_remote.py') diff --git a/test/git/test_remote.py b/test/git/test_remote.py new file mode 100644 index 00000000..6d6fcea6 --- /dev/null +++ b/test/git/test_remote.py @@ -0,0 +1,48 @@ +# test_remote.py +# Copyright (C) 2008, 2009 Michael Trier (mtrier@gmail.com) and contributors +# +# This module is part of GitPython and is released under +# the BSD License: http://www.opensource.org/licenses/bsd-license.php + +from test.testlib import * +from git import * + +class TestRemote(TestCase): + + @classmethod + def setUpAll(cls): + cls.repo = Repo(GIT_REPO) + + def test_base(self): + num_remotes = 0 + for remote in self.repo.remotes: + num_remotes += 1 + assert str(remote) != repr(remote) + + + refs = remote.refs + assert refs + for ref in refs: + assert ref.remote_name == remote.name + assert ref.remote_branch + # END for each ref + + # test rename + other_name = "totally_other_name" + prev_name = remote.name + assert remote.rename(other_name) == remote + assert prev_name != remote.name + # multiple times + for time in range(2): + assert remote.rename(prev_name).name == prev_name + # END for each rename ( back to prev_name ) + + remote.update() + + # END for each remote + assert num_remotes + + def test_creation_and_removal(self): + self.fail( "Test remote creation/removal" ) + + -- cgit v1.2.3 From 048acc4596dc1c6d7ed3220807b827056cb01032 Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Mon, 19 Oct 2009 18:53:55 +0200 Subject: Added configuration access including tests to remote config: fixed issue that would cause it to abort reading if the file did not exist - this is valid now Test does not work as the configuration parsing does not work as expected - this must be fixed first --- test/git/test_remote.py | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) (limited to 'test/git/test_remote.py') diff --git a/test/git/test_remote.py b/test/git/test_remote.py index 6d6fcea6..24fba07c 100644 --- a/test/git/test_remote.py +++ b/test/git/test_remote.py @@ -19,7 +19,7 @@ class TestRemote(TestCase): num_remotes += 1 assert str(remote) != repr(remote) - + # REFS refs = remote.refs assert refs for ref in refs: @@ -27,7 +27,28 @@ class TestRemote(TestCase): assert ref.remote_branch # END for each ref - # test rename + # OPTIONS + for opt in ("url", "fetch"): + val = getattr(remote, opt) + reader = remote.config_reader + assert reader.get(opt) == val + + # unable to write with a reader + self.failUnlessRaises(IOError, reader.set, opt, "test") + + # change value + writer = remote.config_writer + new_val = "myval" + writer.set(opt, new_val) + assert writer.get(opt) == new_val + writer.set(opt, val) + assert writer.get(opt) == val + del(writer) + assert getattr(remote, opt) == val + # END + self.fail( "option testing, read/write" ) + + # RENAME other_name = "totally_other_name" prev_name = remote.name assert remote.rename(other_name) == remote -- cgit v1.2.3 From cbf957a36f5ed47c4387ee8069c56b16d1b4f558 Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Mon, 19 Oct 2009 20:23:47 +0200 Subject: remote: base tests succeed now --- test/git/test_remote.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'test/git/test_remote.py') diff --git a/test/git/test_remote.py b/test/git/test_remote.py index 24fba07c..ac282908 100644 --- a/test/git/test_remote.py +++ b/test/git/test_remote.py @@ -15,9 +15,13 @@ class TestRemote(TestCase): def test_base(self): num_remotes = 0 + remote_set = set() for remote in self.repo.remotes: num_remotes += 1 + assert remote == remote assert str(remote) != repr(remote) + remote_set.add(remote) + remote_set.add(remote) # should already exist # REFS refs = remote.refs @@ -46,7 +50,6 @@ class TestRemote(TestCase): del(writer) assert getattr(remote, opt) == val # END - self.fail( "option testing, read/write" ) # RENAME other_name = "totally_other_name" @@ -62,6 +65,8 @@ class TestRemote(TestCase): # END for each remote assert num_remotes + assert num_remotes == len(remote_set) + def test_creation_and_removal(self): self.fail( "Test remote creation/removal" ) -- cgit v1.2.3 From 53d26977f1aff8289f13c02ee672349d78eeb2f0 Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Mon, 19 Oct 2009 21:31:55 +0200 Subject: remote: added tests for creation and removal, finishing the remote interface --- test/git/test_remote.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) (limited to 'test/git/test_remote.py') diff --git a/test/git/test_remote.py b/test/git/test_remote.py index ac282908..2446710f 100644 --- a/test/git/test_remote.py +++ b/test/git/test_remote.py @@ -49,7 +49,7 @@ class TestRemote(TestCase): assert writer.get(opt) == val del(writer) assert getattr(remote, opt) == val - # END + # END for each default option key # RENAME other_name = "totally_other_name" @@ -69,6 +69,21 @@ class TestRemote(TestCase): def test_creation_and_removal(self): - self.fail( "Test remote creation/removal" ) + new_name = "test_new_one" + arg_list = (new_name, "git@server:hello.git") + remote = Remote.create(self.repo, *arg_list ) + assert remote.name == "test_new_one" + + # create same one again + self.failUnlessRaises(GitCommandError, Remote.create, self.repo, *arg_list) + + Remote.remove(self.repo, new_name) + + for remote in self.repo.remotes: + if remote.name == new_name: + raise AssertionError("Remote removal failed") + # END if deleted remote matches existing remote's name + # END for each remote + -- cgit v1.2.3