Merge branch 'ra/email'
[gitweb.git] / t / test-lib.sh
index e654155a2eb0bc7aaf84335141d51c8f4fedb512..7a58a86f967fdb114bb980a631292da2cee2a352 100755 (executable)
@@ -16,10 +16,11 @@ unset COMMIT_AUTHOR_EMAIL
 unset COMMIT_AUTHOR_NAME
 unset GIT_ALTERNATE_OBJECT_DIRECTORIES
 unset GIT_AUTHOR_DATE
-unset GIT_AUTHOR_EMAIL
-unset GIT_AUTHOR_NAME
-unset GIT_COMMITTER_EMAIL
-unset GIT_COMMITTER_NAME
+GIT_AUTHOR_EMAIL=author@example.com
+GIT_AUTHOR_NAME='A U Thor'
+unset GIT_COMMITTER_DATE
+GIT_COMMITTER_EMAIL=committer@example.com
+GIT_COMMITTER_NAME='C O Mitter'
 unset GIT_DIFF_OPTS
 unset GIT_DIR
 unset GIT_EXTERNAL_DIFF
@@ -27,6 +28,8 @@ unset GIT_INDEX_FILE
 unset GIT_OBJECT_DIRECTORY
 unset SHA1_FILE_DIRECTORIES
 unset SHA1_FILE_DIRECTORY
+export GIT_AUTHOR_EMAIL GIT_AUTHOR_NAME
+export GIT_COMMITTER_EMAIL GIT_COMMITTER_NAME
 
 # Each test should start with something like this, after copyright notices:
 #
@@ -133,10 +136,23 @@ test_expect_success () {
        fi
 }
 
+test_expect_code () {
+       test "$#" = 3 ||
+       error "bug in the test script: not 3 parameters to test-expect-code"
+       say >&3 "expecting exit code $1: $3"
+       test_run_ "$3"
+       if [ "$?" = 0 -a "$eval_ret" = "$1" ]
+       then
+               test_ok_ "$2"
+       else
+               test_failure_ "$@"
+       fi
+}
+
 test_done () {
        trap - exit
        case "$test_failure" in
-       0)      
+       0)
                # We could:
                # cd .. && rm -fr trash
                # but that means we forbid any tests that use their own
@@ -159,15 +175,30 @@ test_done () {
 # t/ subdirectory and are run in trash subdirectory.
 PATH=$(pwd)/..:$PATH
 GIT_EXEC_PATH=$(pwd)/..
-export GIT_EXEC_PATH
+export PATH GIT_EXEC_PATH
+
+# Similarly use ../compat/subprocess.py if our python does not
+# have subprocess.py on its own.
+PYTHON=`sed -e '1{
+       s/^#!//
+       q
+}' ../git-merge-recursive` || {
+       error "You haven't built things yet, have you?"
+}
+"$PYTHON" -c 'import subprocess' 2>/dev/null || {
+       PYTHONPATH=$(pwd)/../compat
+       export PYTHONPATH
+}
+test -d ../templates/blt || {
+       error "You haven't built things yet, have you?"
+}
 
 # Test repository
 test=trash
 rm -fr "$test"
 mkdir "$test"
-cd "$test"
-git-init-db --template=../../templates/blt/ 2>/dev/null ||
-error "cannot run git-init-db"
+cd "$test" || error "Cannot setup test environment"
+"$GIT_EXEC_PATH/git" init-db --template=../../templates/blt/ 2>/dev/null ||
+error "cannot run git init-db -- have you built things yet?"
 
 mv .git/hooks .git/hooks-disabled
-