##// END OF EJS Templates
updated migration for version 1.2
updated migration for version 1.2

File last commit:

r897:a7efcee0 beta
r900:07f24832 beta
Show More
test_hg_operations.py
138 lines | 3.7 KiB | text/x-python | PythonLexer
# -*- 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 add %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)
def test_push_wrong_path():
added_file = jn(TESTS_TMP_PATH, HG_REPO, 'somefile.py')
try:
os.makedirs(jn(TESTS_TMP_PATH, HG_REPO))
except OSError:
pass
__execute_cmd("""echo '' > %s""" % added_file)
__execute_cmd("""hg add %s""" % added_file)
for i in xrange(2):
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 + '_error'))
if __name__ == '__main__':
test_clone()
test_push_wrong_path()
test_push_wrong_credentials()
test_push_new_file()