##// END OF EJS Templates
fixed test hg operations script
fixed test hg operations script

File last commit:

r988:7f4943c9 beta
r988:7f4943c9 beta
Show More
test_hg_operations.py
276 lines | 7.5 KiB | text/x-python | PythonLexer
/ rhodecode / tests / test_hg_operations.py
changed mercurial test operations script
r896 # -*- 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
Added sql session into test hg script...
r930 from os.path import join as jn
changed mercurial test operations script
r896
Added sql session into test hg script...
r930 from tempfile import _RandomNameSequence
changed mercurial test operations script
r896 from subprocess import Popen, PIPE
Added sql session into test hg script...
r930 from paste.deploy import appconfig
from pylons import config
from sqlalchemy import engine_from_config
from rhodecode.lib.utils import add_cache
from rhodecode.model import init_model
from rhodecode.model import meta
from rhodecode.model.db import User
from rhodecode.lib.auth import get_crypt_password
changed mercurial test operations script
r896
from rhodecode.tests import TESTS_TMP_PATH, NEW_HG_REPO, HG_REPO
Added sql session into test hg script...
r930 from rhodecode.config.environment import load_environment
conf = appconfig('config:development.ini', relative_to='./../../')
load_environment(conf.global_conf, conf.local_conf)
add_cache(conf)
changed mercurial test operations script
r896
USER = 'test_admin'
PASS = 'test12'
HOST = '127.0.0.1:5000'
Rewrite simehg for enabling cloning with raw url for anonymous access + some optimizations for making less queries when authenticating users....
r910 DEBUG = True
changed mercurial test operations script
r896 log = logging.getLogger(__name__)
fixed hg operations test script
r909
class Command(object):
def __init__(self, cwd):
self.cwd = cwd
changed mercurial test operations script
r896
fixed hg operations test script
r909 def execute(self, cmd, *args):
"""Runs command on the system with given ``args``.
"""
command = cmd + ' ' + ' '.join(args)
log.debug('Executing %s' % command)
Rewrite simehg for enabling cloning with raw url for anonymous access + some optimizations for making less queries when authenticating users....
r910 if DEBUG:
print command
fixed hg operations test script
r909 p = Popen(command, shell=True, stdout=PIPE, stderr=PIPE, cwd=self.cwd)
stdout, stderr = p.communicate()
Rewrite simehg for enabling cloning with raw url for anonymous access + some optimizations for making less queries when authenticating users....
r910 if DEBUG:
print stdout, stderr
fixed hg operations test script
r909 return stdout, stderr
changed mercurial test operations script
r896
Added sql session into test hg script...
r930 def get_session():
engine = engine_from_config(conf, 'sqlalchemy.db1.')
init_model(engine)
sa = meta.Session()
return sa
def create_test_user(force=True):
sa = get_session()
user = sa.query(User).filter(User.username == USER).scalar()
fixed test hg operations script
r988
if force and user:
Added sql session into test hg script...
r930 sa.delete(user)
sa.commit()
if user is None or force:
new_usr = User()
new_usr.username = USER
new_usr.password = get_crypt_password(PASS)
fixed test hg operations script
r988 new_usr.email = 'mail@mail.com'
new_usr.name = 'test'
new_usr.lastname = 'lasttestname'
Added sql session into test hg script...
r930 new_usr.active = True
sa.add(new_usr)
sa.commit()
changed mercurial test operations script
r896
Rewrite simehg for enabling cloning with raw url for anonymous access + some optimizations for making less queries when authenticating users....
r910 #==============================================================================
changed mercurial test operations script
r896 # TESTS
Rewrite simehg for enabling cloning with raw url for anonymous access + some optimizations for making less queries when authenticating users....
r910 #==============================================================================
changed mercurial test operations script
r896 def test_clone():
fixed hg operations test script
r909 cwd = path = jn(TESTS_TMP_PATH, HG_REPO)
changed mercurial test operations script
r896 try:
fixed hg operations test script
r909 shutil.rmtree(path, ignore_errors=True)
os.makedirs(path)
#print 'made dirs %s' % jn(path)
changed mercurial test operations script
r896 except OSError:
fixed hg operations test script
r909 raise
changed mercurial test operations script
r896
clone_url = 'http://%(user)s:%(pass)s@%(host)s/%(cloned_repo)s %(dest)s' % \
{'user':USER,
'pass':PASS,
'host':HOST,
'cloned_repo':HG_REPO,
fixed hg operations test script
r909 'dest':path}
stdout, stderr = Command(cwd).execute('hg clone', clone_url)
assert """adding file changes""" in stdout, 'no messages about cloning'
assert """abort""" not in stderr , 'got error from clone'
def test_clone_anonymous_ok():
cwd = path = jn(TESTS_TMP_PATH, HG_REPO)
try:
shutil.rmtree(path, ignore_errors=True)
os.makedirs(path)
#print 'made dirs %s' % jn(path)
except OSError:
raise
clone_url = 'http://%(host)s/%(cloned_repo)s %(dest)s' % \
{'user':USER,
'pass':PASS,
'host':HOST,
'cloned_repo':HG_REPO,
'dest':path}
changed mercurial test operations script
r896
fixed hg operations test script
r909 stdout, stderr = Command(cwd).execute('hg clone', clone_url)
print stdout, stderr
assert """adding file changes""" in stdout, 'no messages about cloning'
assert """abort""" not in stderr , 'got error from clone'
def test_clone_wrong_credentials():
cwd = path = jn(TESTS_TMP_PATH, HG_REPO)
try:
shutil.rmtree(path, ignore_errors=True)
os.makedirs(path)
#print 'made dirs %s' % jn(path)
except OSError:
raise
clone_url = 'http://%(user)s:%(pass)s@%(host)s/%(cloned_repo)s %(dest)s' % \
{'user':USER + 'error',
'pass':PASS,
'host':HOST,
'cloned_repo':HG_REPO,
'dest':path}
stdout, stderr = Command(cwd).execute('hg clone', clone_url)
assert """abort: authorization failed""" in stderr , 'no error from wrong credentials'
changed mercurial test operations script
r896
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)
fixed hg operations test script
r909 Command(cwd).execute(cmd)
changed mercurial test operations script
r896
cmd = """hg ci -m 'changed file %s' %s """ % (i, modified_file)
fixed hg operations test script
r909 Command(cwd).execute(cmd)
changed mercurial test operations script
r896
fixed hg operations test script
r909 Command(cwd).execute('hg push %s' % jn(TESTS_TMP_PATH, HG_REPO))
changed mercurial test operations script
r896
Added sql session into test hg script...
r930 def test_push_new_file(commits=15):
fixed hg operations test script
r909
test_clone()
changed mercurial test operations script
r896
fixed hg operations test script
r909 cwd = path = jn(TESTS_TMP_PATH, HG_REPO)
Added sql session into test hg script...
r930 added_file = jn(path, '%ssetup.py' % _RandomNameSequence().next())
changed mercurial test operations script
r896
fixed hg operations test script
r909 Command(cwd).execute('touch %s' % added_file)
Command(cwd).execute('hg add %s' % added_file)
changed mercurial test operations script
r896
Added sql session into test hg script...
r930 for i in xrange(commits):
changed mercurial test operations script
r896 cmd = """echo 'added_line%s' >> %s""" % (i, added_file)
fixed hg operations test script
r909 Command(cwd).execute(cmd)
changed mercurial test operations script
r896
cmd = """hg ci -m 'commited new %s' %s """ % (i, added_file)
fixed hg operations test script
r909 Command(cwd).execute(cmd)
changed mercurial test operations script
r896
fixed hg operations test script
r909 push_url = 'http://%(user)s:%(pass)s@%(host)s/%(cloned_repo)s' % \
{'user':USER,
'pass':PASS,
'host':HOST,
'cloned_repo':HG_REPO,
'dest':jn(TESTS_TMP_PATH, HG_REPO)}
Added sql session into test hg script...
r930 Command(cwd).execute('hg push --verbose --debug %s' % push_url)
changed mercurial test operations script
r896
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)
fixed hg operations test script
r909 Command(cwd).execute(cmd)
changed mercurial test operations script
r896
cmd = """hg ci -m 'commited %s' %s """ % (i, modified_file)
fixed hg operations test script
r909 Command(cwd).execute(cmd)
changed mercurial test operations script
r896
fixed hg operations test script
r909 Command(cwd).execute('hg push %s' % clone_url)
changed mercurial test operations script
r896
updated mercurial test operations script
r897 def test_push_wrong_path():
fixed hg operations test script
r909 cwd = path = jn(TESTS_TMP_PATH, HG_REPO)
added_file = jn(path, 'somefile.py')
changed mercurial test operations script
r896
updated mercurial test operations script
r897 try:
fixed hg operations test script
r909 shutil.rmtree(path, ignore_errors=True)
os.makedirs(path)
print 'made dirs %s' % jn(path)
updated mercurial test operations script
r897 except OSError:
fixed hg operations test script
r909 raise
updated mercurial test operations script
r897
fixed hg operations test script
r909 Command(cwd).execute("""echo '' > %s""" % added_file)
Command(cwd).execute("""hg init %s""" % path)
Command(cwd).execute("""hg add %s""" % added_file)
updated mercurial test operations script
r897
for i in xrange(2):
cmd = """echo 'added_line%s' >> %s""" % (i, added_file)
fixed hg operations test script
r909 Command(cwd).execute(cmd)
updated mercurial test operations script
r897
cmd = """hg ci -m 'commited new %s' %s """ % (i, added_file)
fixed hg operations test script
r909 Command(cwd).execute(cmd)
updated mercurial test operations script
r897
fixed hg operations test script
r909 clone_url = 'http://%(user)s:%(pass)s@%(host)s/%(cloned_repo)s' % \
{'user':USER,
'pass':PASS,
'host':HOST,
'cloned_repo':HG_REPO + '_error',
'dest':jn(TESTS_TMP_PATH, HG_REPO)}
stdout, stderr = Command(cwd).execute('hg push %s' % clone_url)
assert """abort: HTTP Error 403: Forbidden""" in stderr
changed mercurial test operations script
r896
if __name__ == '__main__':
fixed test hg operations script
r988 #create_test_user()
test_clone()
test_clone_anonymous_ok()
Rewrite simehg for enabling cloning with raw url for anonymous access + some optimizations for making less queries when authenticating users....
r910
#test_clone_wrong_credentials()
fixed test hg operations script
r988
Added sql session into test hg script...
r930 #test_pull()
fixed test hg operations script
r988 #test_push_new_file(3)
fixed hg operations test script
r909 #test_push_wrong_path()
#test_push_wrong_credentials()