# HG changeset patch # User Marcin Kuzminski # Date 1293729277 -3600 # Node ID af65ca7e5c2b627346cd158da127a0d33f5470c3 # Parent 62c04c5cc9710c84d8699ea68c6a45c7f2581e39 changed mercurial test operations script diff -r 62c04c5cc971 -r af65ca7e5c2b rhodecode/tests/test_hg_operations.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/rhodecode/tests/test_hg_operations.py Thu Dec 30 18:14:37 2010 +0100 @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +""" + rhodecode.tests.test_hg_operations + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Test suite for making push/pull operations + + :created_on: Dec 30, 2010 + :copyright: (c) 2010 by marcink. + :license: LICENSE_NAME, see LICENSE_FILE for more details. +""" + +import os +import shutil +import logging + +from subprocess import Popen, PIPE + +from os.path import join as jn + +from rhodecode.tests import TESTS_TMP_PATH, NEW_HG_REPO, HG_REPO + +USER = 'test_admin' +PASS = 'test12' +HOST = '127.0.0.1:5000' + +log = logging.getLogger(__name__) + +def __execute_cmd(cmd, *args): + """Runs command on the system with given ``args``. + """ + + command = cmd + ' ' + ' '.join(args) + log.debug('Executing %s' % command) + print command + p = Popen(command, shell=True, stdout=PIPE, stderr=PIPE) + stdout, stderr = p.communicate() + print stdout, stderr + return stdout, stderr + + +#=============================================================================== +# TESTS +#=============================================================================== +def test_clone(): + #rm leftovers + try: + log.debug('removing old directory') + shutil.rmtree(jn(TESTS_TMP_PATH, HG_REPO)) + except OSError: + pass + + clone_url = 'http://%(user)s:%(pass)s@%(host)s/%(cloned_repo)s %(dest)s' % \ + {'user':USER, + 'pass':PASS, + 'host':HOST, + 'cloned_repo':HG_REPO, + 'dest':jn(TESTS_TMP_PATH, HG_REPO)} + + stdout, stderr = __execute_cmd('hg clone', clone_url) + +def test_pull(): + pass + +def test_push(): + + modified_file = jn(TESTS_TMP_PATH, HG_REPO, 'setup.py') + for i in xrange(5): + cmd = """echo 'added_line%s' >> %s""" % (i, modified_file) + __execute_cmd(cmd) + + cmd = """hg ci -m 'changed file %s' %s """ % (i, modified_file) + __execute_cmd(cmd) + + __execute_cmd('hg push %s' % jn(TESTS_TMP_PATH, HG_REPO)) + +def test_push_new_file(): + added_file = jn(TESTS_TMP_PATH, HG_REPO, 'setup.py') + + __execute_cmd('touch %s' % added_file) + + __execute_cmd('hg addremove %s' % added_file) + + for i in xrange(15): + cmd = """echo 'added_line%s' >> %s""" % (i, added_file) + __execute_cmd(cmd) + + cmd = """hg ci -m 'commited new %s' %s """ % (i, added_file) + __execute_cmd(cmd) + + __execute_cmd('hg push %s' % jn(TESTS_TMP_PATH, HG_REPO)) + +def test_push_wrong_credentials(): + + clone_url = 'http://%(user)s:%(pass)s@%(host)s/%(cloned_repo)s' % \ + {'user':USER + 'xxx', + 'pass':PASS, + 'host':HOST, + 'cloned_repo':HG_REPO, + 'dest':jn(TESTS_TMP_PATH, HG_REPO)} + + modified_file = jn(TESTS_TMP_PATH, HG_REPO, 'setup.py') + for i in xrange(5): + cmd = """echo 'added_line%s' >> %s""" % (i, modified_file) + __execute_cmd(cmd) + + cmd = """hg ci -m 'commited %s' %s """ % (i, modified_file) + __execute_cmd(cmd) + + __execute_cmd('hg push %s' % clone_url) + + + +if __name__ == '__main__': + test_push_wrong_credentials() + #test_clone() + #test_push_new_file() + diff -r 62c04c5cc971 -r af65ca7e5c2b rhodecode/tests/test_hg_operations.sh --- a/rhodecode/tests/test_hg_operations.sh Wed Dec 29 17:50:47 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,24 +0,0 @@ -#!/bin/bash -repo=/tmp/vcs_test_hg_clone -repo_name=vcs_test_hg -user=test_admin -password=test12 -echo 'removing repo '$repo -rm -rf '$repo' -hg clone http://$user:$password@127.0.0.1:5000/$repo_name $repo -cd $repo -echo 'some' >> $repo/setup.py && hg ci -m 'ci1' && \ -echo 'some' >> $repo/setup.py && hg ci -m 'ci2' && \ -echo 'some' >> $repo/setup.py && hg ci -m 'ci3' && \ -echo 'some' >> $repo/setup.py && hg ci -m 'ci4' && \ -hg push - -echo 'new file' >> $repo/new_file.py -hg add $repo/new_file.py - -for i in {1..15} -do - echo "line $i" >> $repo/new_file.py && hg ci -m "autocommit $i" -done - -hg push \ No newline at end of file