##// END OF EJS Templates
API: create_repo returns now repo object after creation
API: create_repo returns now repo object after creation

File last commit:

r1824:89efedac beta
r2378:04ef27ce beta
Show More
test_hg_operations.py
401 lines | 11.7 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
source code cleanup: remove trailing white space, normalize file endings
r1203
changed mercurial test operations script
r896 :created_on: Dec 30, 2010
2012 copyrights
r1824 :author: marcink
:copyright: (C) 2010-2012 Marcin Kuzminski <marcin@python-works.com>
updated docstrings
r1532 :license: GPLv3, see COPYING for more details.
changed mercurial test operations script
r896 """
updated docstrings
r1532 # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
changed mercurial test operations script
r896
import os
updated test_hg_operation script
r1498 import time
import sys
changed mercurial test operations script
r896 import shutil
import logging
updated test_hg_operation script
r1498
Added sql session into test hg script...
r930 from os.path import join as jn
fixed path for .ini file in test hg operations
r1277 from os.path import dirname as dn
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
Fixed test_hg_operations test and added concurency test
r1529 from rhodecode.model.db import User, Repository, UserLog
Added sql session into test hg script...
r930 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
fixed path for .ini file in test hg operations
r1277 rel_path = dn(dn(dn(os.path.abspath(__file__))))
fixed test_hg_push operations
r1596
conf = appconfig('config:%s' % sys.argv[1], relative_to=rel_path)
Added sql session into test hg script...
r930 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'
fixed test_hg_push operations
r1596 DEBUG = False
Fixed test_hg_operations test and added concurency test
r1529 print 'DEBUG:', DEBUG
changed mercurial test operations script
r896 log = logging.getLogger(__name__)
fixed test_hg_push operations
r1596 engine = engine_from_config(conf, 'sqlalchemy.db1.')
init_model(engine)
sa = meta.Session
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
updated test_hg_operation script
r1498
def test_wrapp(func):
Fixed test_hg_operations test and added concurency test
r1529
def __wrapp(*args, **kwargs):
Refactoring of model get functions
r1530 print '>>>%s' % func.__name__
updated test_hg_operation script
r1498 try:
Fixed test_hg_operations test and added concurency test
r1529 res = func(*args, **kwargs)
except Exception, e:
print ('###############\n-'
'--%s failed %s--\n'
'###############\n' % (func.__name__, e))
sys.exit()
print '++OK++'
updated test_hg_operation script
r1498 return res
return __wrapp
Added sql session into test hg script...
r930
def create_test_user(force=True):
Fixed test_hg_operations test and added concurency test
r1529 print '\tcreating test user'
Added sql session into test hg script...
r930
fixed test_hg_push operations
r1596 user = User.get_by_username(USER)
fixed test hg operations script
r988
updated testing script for hg operations
r1008 if force and user is not None:
Fixed test_hg_operations test and added concurency test
r1529 print '\tremoving current user'
fixed test_hg_push operations
r1596 for repo in Repository.query().filter(Repository.user == user).all():
tests update
r1047 sa.delete(repo)
Added sql session into test hg script...
r930 sa.delete(user)
sa.commit()
if user is None or force:
Fixed test_hg_operations test and added concurency test
r1529 print '\tcreating new one'
Added sql session into test hg script...
r930 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
updated testing script for hg operations
r1008 new_usr.admin = True
Added sql session into test hg script...
r930 sa.add(new_usr)
sa.commit()
Fixed test_hg_operations test and added concurency test
r1529 print '\tdone'
updated testing script for hg operations
r1008
def create_test_repo(force=True):
from rhodecode.model.repo import RepoModel
fixed test_hg_push operations
r1596 user = User.get_by_username(USER)
updated testing script for hg operations
r1008 if user is None:
raise Exception('user not found')
Added sql session into test hg script...
r930
updated testing script for hg operations
r1008 repo = sa.query(Repository).filter(Repository.repo_name == HG_REPO).scalar()
if repo is None:
Fixed test_hg_operations test and added concurency test
r1529 print '\trepo not found creating'
updated testing script for hg operations
r1008
form_data = {'repo_name':HG_REPO,
'repo_type':'hg',
small fixes to test_hg_operations script
r1296 'private':False,
'clone_uri':'' }
updated testing script for hg operations
r1008 rm = RepoModel(sa)
rm.base_path = '/home/hg'
rm.create(form_data, user)
changed mercurial test operations script
r896
tests update
r1047
def set_anonymous_access(enable=True):
fixed test_hg_push operations
r1596 user = User.get_by_username('default')
tests update
r1047 user.active = enable
sa.add(user)
sa.commit()
Fixed test_hg_operations test and added concurency test
r1529 print '\tanonymous access is now:', enable
fixed test_hg_push operations
r1596 if enable != User.get_by_username('default').active:
raise Exception('Cannot set anonymous access')
tests update
r1047
def get_anonymous_access():
fixed test_hg_push operations
r1596 user = User.get_by_username('default')
return user.active
tests update
r1047
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 #==============================================================================
updated test_hg_operation script
r1498 @test_wrapp
def test_clone_with_credentials(no_errors=False):
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
Fixed test_hg_operations test and added concurency test
r1529 print '\tchecking if anonymous access is enabled'
updated test_hg_operation script
r1498 anonymous_access = get_anonymous_access()
if anonymous_access:
Fixed test_hg_operations test and added concurency test
r1529 print '\tenabled, disabling it '
updated test_hg_operation script
r1498 set_anonymous_access(enable=False)
Fixed test_hg_operations test and added concurency test
r1529
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)
updated testing script for hg operations
r1008 if no_errors is False:
assert """adding file changes""" in stdout, 'no messages about cloning'
assert """abort""" not in stderr , 'got error from clone'
fixed hg operations test script
r909
updated test_hg_operation script
r1498 @test_wrapp
def test_clone_anonymous():
fixed hg operations test script
r909 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
Fixed test_hg_operations test and added concurency test
r1529 print '\tchecking if anonymous access is enabled'
tests update
r1047 anonymous_access = get_anonymous_access()
if not anonymous_access:
Fixed test_hg_operations test and added concurency test
r1529 print '\tnot enabled, enabling it '
tests update
r1047 set_anonymous_access(enable=True)
Fixed test_hg_operations test and added concurency test
r1529
fixed hg operations test script
r909 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)
tests update
r1047
fixed hg operations test script
r909 assert """adding file changes""" in stdout, 'no messages about cloning'
assert """abort""" not in stderr , 'got error from clone'
tests update
r1047 #disable if it was enabled
if not anonymous_access:
Fixed test_hg_operations test and added concurency test
r1529 print '\tdisabling anonymous access'
tests update
r1047 set_anonymous_access(enable=False)
updated test_hg_operation script
r1498 @test_wrapp
fixed hg operations test script
r909 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
Fixed test_hg_operations test and added concurency test
r1529 print '\tchecking if anonymous access is enabled'
updated test_hg_operation script
r1498 anonymous_access = get_anonymous_access()
if anonymous_access:
Fixed test_hg_operations test and added concurency test
r1529 print '\tenabled, disabling it '
updated test_hg_operation script
r1498 set_anonymous_access(enable=False)
Fixed test_hg_operations test and added concurency test
r1529
fixed hg operations test script
r909 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)
updated test_hg_operation script
r1498 if not """abort: authorization failed""" in stderr:
Fixed test_hg_operations test and added concurency test
r1529 raise Exception('Failure')
fixed hg operations test script
r909
updated test_hg_operation script
r1498 @test_wrapp
changed mercurial test operations script
r896 def test_pull():
pass
updated test_hg_operation script
r1498 @test_wrapp
updated testing script for hg operations
r1008 def test_push_modify_file(f_name='setup.py'):
cwd = path = jn(TESTS_TMP_PATH, HG_REPO)
modified_file = jn(TESTS_TMP_PATH, HG_REPO, f_name)
changed mercurial test operations script
r896 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
updated test_hg_operation script
r1498 @test_wrapp
small fixes to test_hg_operations script
r1296 def test_push_new_file(commits=15, with_clone=True):
fixed hg operations test script
r909
small fixes to test_hg_operations script
r1296 if with_clone:
updated test_hg_operation script
r1498 test_clone_with_credentials(no_errors=True)
changed mercurial test operations script
r896
fixed hg operations test script
r909 cwd = path = jn(TESTS_TMP_PATH, HG_REPO)
fixed unicode problems with file paths....
r1087 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
small fixes to test_hg_operations script
r1296 cmd = """hg ci -m 'commited new %s' -u '%s' %s """ % (i,
'Marcin Kuźminski <marcin@python-blog.com>',
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
updated test_hg_operation script
r1498 @test_wrapp
changed mercurial test operations script
r896 def test_push_wrong_credentials():
updated testing script for hg operations
r1008 cwd = path = jn(TESTS_TMP_PATH, HG_REPO)
changed mercurial test operations script
r896 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 test_hg_operation script
r1498 @test_wrapp
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)
Fixed test_hg_operations test and added concurency test
r1529 print '\tmade 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)
updated test_hg_operation script
r1498 if not """abort: HTTP Error 403: Forbidden""" in stderr:
raise Exception('Failure')
fixed hg operations test script
r909
Fixed test_hg_operations test and added concurency test
r1529 @test_wrapp
def get_logs():
fixed test_hg_push operations
r1596 return UserLog.query().all()
Fixed test_hg_operations test and added concurency test
r1529
@test_wrapp
def test_logs(initial):
fixed test_hg_push operations
r1596 logs = UserLog.query().all()
operations = 4
if len(initial) + operations != len(logs):
raise Exception("missing number of logs initial:%s vs current:%s" % \
(len(initial), len(logs)))
Fixed test_hg_operations test and added concurency test
r1529
changed mercurial test operations script
r896
if __name__ == '__main__':
updated testing script for hg operations
r1008 create_test_user(force=False)
create_test_repo()
Fixed test_hg_operations test and added concurency test
r1529
initial_logs = get_logs()
fixed test_hg_push operations
r1596 print 'initial activity logs: %s' % len(initial_logs)
tests for changeset comments
r1715 s = time.time()
fixed test_hg_push operations
r1596 #test_push_modify_file()
updated test_hg_operation script
r1498 test_clone_with_credentials()
test_clone_wrong_credentials()
Rewrite simehg for enabling cloning with raw url for anonymous access + some optimizations for making less queries when authenticating users....
r910
small fixes to test_hg_operations script
r1296 test_push_new_file(commits=2, with_clone=True)
Fixed test_hg_operations test and added concurency test
r1529
test_clone_anonymous()
updated test_hg_operation script
r1498 test_push_wrong_path()
Fixed test_hg_operations test and added concurency test
r1529
test_push_wrong_credentials()
test_logs(initial_logs)
tests for changeset comments
r1715 print 'finished ok in %.3f' % (time.time() - s)