Changeset - af65ca7e5c2b
[Not reviewed]
beta
1 0 1
Marcin Kuzminski - 15 years ago 2010-12-30 18:14:37
marcin@python-works.com
changed mercurial test operations script
1 file changed with 115 insertions and 21 deletions:
0 comments (0 inline, 0 general)
rhodecode/tests/test_hg_operations.py
Show inline comments
 
file renamed from rhodecode/tests/test_hg_operations.sh to rhodecode/tests/test_hg_operations.py
 
#!/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
 
# -*- 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)}
 

	
 
echo 'new file' >> $repo/new_file.py
 
hg add $repo/new_file.py
 
    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)
 

	
 
for i in {1..15}
 
do
 
   echo "line $i" >> $repo/new_file.py && hg ci -m "autocommit $i"
 
done
 
        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)}
 

	
 
hg push
 
\ No newline at end of file
 
    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()
 

	
0 comments (0 inline, 0 general)