Commit f8842f50 authored by Sebastien Robin's avatar Sebastien Robin

do not fail when a different test suite repository branch is specified

parent 07356c25
......@@ -126,10 +126,9 @@ class ERP5TestNode(TestCase):
my_file.close()
call("git commit -av -m next_commit".split())
output = call(['git', 'log', '--format=%H %s'])
output = output.strip()
output_line_list = output.split("\n")
self.assertEquals(3, len(output_line_list))
# remove additional return line
output_line_list = output_line_list[0:2]
self.assertEquals(2, len(output_line_list))
expected_commit_subject_list = ["next_commit", "first_commit"]
commit_subject_list = [x.split()[1] for x in output_line_list]
self.assertEquals(expected_commit_subject_list, commit_subject_list)
......@@ -234,6 +233,41 @@ branch = foo
for vcs_repository in node_test_suite.vcs_repository_list:
self.assertTrue(os.path.exists(vcs_repository['repository_path']))
def test_05b_changeRepositoryBranch(self):
"""
It could happen that the branch is changed for a repository. Testnode must
be able to reset correctly the branch
"""
commit_dict = self.generateTestRepositoryList(add_third_repository=True)
test_node = self.getTestNode()
node_test_suite = test_node.getNodeTestSuite('foo')
self.updateNodeTestSuiteData(node_test_suite, add_third_repository=True)
rev_list = test_node.getAndUpdateFullRevisionList(node_test_suite)
self.assertEquals(3, len(rev_list))
self.assertEquals(3, len(node_test_suite.vcs_repository_list))
rep2_clone_path = [x['repository_path'] for x in \
node_test_suite.vcs_repository_list \
if x['repository_path'].endswith("rep2")][0]
call = self.getCaller(cwd=rep2_clone_path)
output = call("git branch".split()).strip()
self.assertTrue("* foo" in output.split('\n'))
vcs_repository_info = node_test_suite.vcs_repository_list[0]
self.assertEquals(vcs_repository_info['repository_id'], 'rep2')
self.assertEquals(vcs_repository_info['branch'], 'foo')
# change it to master
vcs_repository_info['branch'] = 'master'
rev_list = test_node.getAndUpdateFullRevisionList(node_test_suite)
output = call("git branch".split()).strip()
print output
self.assertTrue("* master" in output.split('\n'))
# Add a third branch on remote, make sure we could switch to it
remote_call = self.getCaller(cwd=self.remote_repository2)
output = remote_call('git checkout master -b bar'.split())
vcs_repository_info['branch'] = 'bar'
rev_list = test_node.getAndUpdateFullRevisionList(node_test_suite)
output = call("git branch".split()).strip()
self.assertTrue("* bar" in output.split('\n'))
def test_06_checkRevision(self):
"""
Check if we are able to restore older commit hash if master decide so
......
......@@ -46,10 +46,11 @@ class Updater(object):
stdin = file(os.devnull)
def __init__(self, repository_path, log, revision=None, git_binary=None,
realtime_output=True, process_manager=None):
branch=None, realtime_output=True, process_manager=None):
self.log = log
self.revision = revision
self._path_list = []
self.branch = branch
self.repository_path = repository_path
self.git_binary = git_binary
self.realtime_output = realtime_output
......@@ -144,7 +145,11 @@ class Updater(object):
if os.path.exists('.git/svn'):
self._git('svn', 'rebase')
else:
self._git('fetch', '--prune')
self._git('fetch', '--all', '--prune')
if self.branch and \
not ("* %s" % self.branch in self._git('branch').split("\n")):
self._git('checkout', 'origin/%s' % self.branch, '-b',
self.branch)
self._git('update-index', '--refresh') # see note above
self._git('reset', '--merge', '@{u}')
self.revision = self._git_find_rev(self._git('rev-parse', 'HEAD'))
......
......@@ -213,16 +213,17 @@ branch = %(branch)s
for vcs_repository in node_test_suite.vcs_repository_list:
repository_path = vcs_repository['repository_path']
repository_id = vcs_repository['repository_id']
branch = vcs_repository.get('branch')
if not os.path.exists(repository_path):
parameter_list = [config['git_binary'], 'clone',
vcs_repository['url']]
if vcs_repository.get('branch') is not None:
parameter_list.extend(['-b',vcs_repository.get('branch')])
if branch is not None:
parameter_list.extend(['-b', branch])
parameter_list.append(repository_path)
log(subprocess.check_output(parameter_list, stderr=subprocess.STDOUT))
# Make sure we have local repository
updater = Updater(repository_path, git_binary=config['git_binary'],
log=log, process_manager=self.process_manager)
branch=branch, log=log, process_manager=self.process_manager)
updater.checkout()
revision = "-".join(updater.getRevision())
full_revision_list.append('%s=%s' % (repository_id, revision))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment