From eb49ee38aeb84536daa89248edb4f3dfb7e49e7b Mon Sep 17 00:00:00 2001 From: Dane Summers Date: Thu, 23 Aug 2012 00:08:38 -0400 Subject: [PATCH] full test case for subversion, minimal tests for git --- test/TestRunner.py | 81 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 79 insertions(+), 2 deletions(-) diff --git a/test/TestRunner.py b/test/TestRunner.py index 16c962ad70..17dcf5b9fc 100644 --- a/test/TestRunner.py +++ b/test/TestRunner.py @@ -138,6 +138,85 @@ class TestRunner(unittest.TestCase): assert 'failed' not in result assert result['rc'] == 0 + def test_git(self): + self._run('file',['path=/tmp/gitdemo','state=absent']) + self._run('file',['path=/tmp/gd','state=absent']) + self._run('command',['git init gitdemo', 'chdir=/tmp']) + self._run('command',['touch a', 'chdir=/tmp/gitdemo']) + self._run('command',['git add *', 'chdir=/tmp/gitdemo']) + self._run('command',['git commit -m "test commit 2"', 'chdir=/tmp/gitdemo']) + self._run('command',['touch b', 'chdir=/tmp/gitdemo']) + self._run('command',['git add *', 'chdir=/tmp/gitdemo']) + self._run('command',['git commit -m "test commit 2"', 'chdir=/tmp/gitdemo']) + result = self._run('git', [ "repo=\"file:///tmp/gitdemo\"", "dest=/tmp/gd" ]) + assert result['changed'] + # test the force option not set + self._run('file',['path=/tmp/gd/a','state=absent']) + result = self._run('git', [ "repo=\"file:///tmp/gitdemo\"", "dest=/tmp/gd", "force=no" ]) + assert result['failed'] + # test the force option when set + result = self._run('git', [ "repo=\"file:///tmp/gitdemo\"", "dest=/tmp/gd", "force=yes" ]) + assert result['changed'] + + def test_subversion(self): + # TODO make an svn repo locally so as to avoid tests failing on network calls + self._run('file',['path=/tmp/meetings','state=absent']) + # hacking/test-module -m library/subversion + result = self._run('subversion', [ ]) + assert result['failed'] + assert "dest" in result['msg'] + assert "repo" in result['msg'] + # hacking/test-module -m library/subversion -a "repo=\"http://svn.apache.org/repos/asf/subversion/trunk/notes/meetings\"" + result = self._run('subversion', [ "repo=\"http://svn.apache.org/repos/asf/subversion/trunk/notes/meetings\"" ]) + assert result['failed'] + assert "dest" in result['msg'] + # hacking/test-module -m library/subversion -a "dest=\"/tmp/gnconf\"" + result = self._run('subversion', [ "dest=\"/tmp/gnconf\"" ]) + assert result['failed'] + assert "repo" in result['msg'] + # when /tmp/meetings doesn't exist: + # hacking/test-module -m library/subversion -a "repo=\"repo\" dest=\"/tmp/gnconf\"" + result = self._run('subversion', [ "repo=\"http://svn.apache.org/repos/asf/subversion/trunk/notes/meetings\"","dest=\"/tmp/meetings\"" ]) + assert result['changed'] + # when /tmp/meetings exists, but nothing has changed. + result = self._run('subversion', [ "repo=\"http://svn.apache.org/repos/asf/subversion/trunk/notes/meetings\"","dest=\"/tmp/meetings\"" ]) + assert not result['changed'] + # when /tmp/meetings is a folder, but its not an svn repo + self._run('file',['path=/tmp/meetings','state=absent']) + self._run('file',['path=/tmp/meetings','state=directory']) + result = self._run('subversion', [ "repo=\"http://svn.apache.org/repos/asf/subversion/trunk/notes/meetings\"","dest=\"/tmp/meetings\"" ]) + assert result['failed'] + # when /tmp/meetings is a file + self._run('file',['path=/tmp/meetings','state=absent']) + self._run('command',['touch /tmp/meetings']) + result = self._run('subversion', [ "repo=\"http://svn.apache.org/repos/asf/subversion/trunk/notes/meetings\"","dest=\"/tmp/meetings\"" ]) + assert result['failed'] + # when /tmp/meetings is a folder, but its a different svn URL - should automatically switch + self._run('file',['path=/tmp/meetings','state=absent']) + result = self._run('subversion', [ "repo=\"http://svn.apache.org/repos/asf/subversion/trunk/notes/api-errata\"","dest=\"/tmp/meetings\"" ]) + assert result['changed'] + result = self._run('subversion', [ "repo=\"http://svn.apache.org/repos/asf/subversion/trunk/notes/meetings\"","dest=\"/tmp/meetings\"" ]) + assert result['changed'] + assert result['after'][1] == 'URL: http://svn.apache.org/repos/asf/subversion/trunk/notes/meetings' + # when /tmp/meetings is a folder, when its an older revision it should update + self._run('command',['svn up -r926415','chdir=/tmp/meetings']) + result = self._run('subversion', [ "repo=\"http://svn.apache.org/repos/asf/subversion/trunk/notes/meetings\"","dest=\"/tmp/meetings\"" ]) + assert result['changed'] + assert result['before'][0] == 'Revision: 926415' + assert result['after'][0] != 'Revision: 926415' + # when /tmp/meetings has dirty files in it, ignore them: + self._run('command',['touch /tmp/meetings/adirtyfile']) + result = self._run('subversion', [ "repo=\"http://svn.apache.org/repos/asf/subversion/trunk/notes/meetings\"","dest=\"/tmp/meetings\"" ]) + assert not result['changed'] # no changes to the repo + # when /tmp/meetings has modified file in it, fail: + self._run('file',['path=/tmp/meetings/adirtyfile','state=absent']) + self._run('command',['cp /tmp/meetings/berlin-11-agenda /tmp/meetings/svn-vision-agenda']) + result = self._run('subversion', [ "repo=\"http://svn.apache.org/repos/asf/subversion/trunk/notes/meetings\"","dest=\"/tmp/meetings\"","force=no" ]) + assert result['failed'] + # when /tmp/meetings has a modified file but force is set to yes, then just override it. + result = self._run('subversion', [ "repo=\"http://svn.apache.org/repos/asf/subversion/trunk/notes/meetings\"","dest=\"/tmp/meetings\"","force=yes" ]) + assert result['changed'] # no changes to the repo + def test_large_output(self): large_path = "/usr/share/dict/words" if not os.path.exists(large_path): @@ -198,5 +277,3 @@ class TestRunner(unittest.TestCase): "dest=%s" % output, ]) assert result['changed'] == False - -