changeset 896:af65ca7e5c2b beta

changed mercurial test operations script
author Marcin Kuzminski <marcin@python-works.com>
date Thu, 30 Dec 2010 18:14:37 +0100
parents 62c04c5cc971
children a7efcee0f399
files rhodecode/tests/test_hg_operations.py rhodecode/tests/test_hg_operations.sh
diffstat 2 files changed, 118 insertions(+), 24 deletions(-) [+]
line wrap: on
line diff
--- /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()
+
--- 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