about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2016-07-23 02:39:14 +0000
committerEric Wong <e@80x24.org>2016-07-23 03:31:21 +0000
commitcbc1a1fbd2911b851467862b7163c303a14b17ab (patch)
treee3161db56d5a4d9de9d0ac9576bff8bedb6ec5aa
parentaf85c464a6dda02fa24287d1f01ee244640c3b3f (diff)
downloadgit-svn-svn-httpd.tar.gz
This allows us to use common test infrastructure and parallelize
the tests.  For now, GIT_SVN_TEST_HTTPD=true needs to be set to
enable the SVN HTTP tests because we reuse the same test cases
for both file:// and http:// SVN repositories.  SVN_HTTPD_PORT
is no longer honored.

Tested under Apache 2.2 and 2.4 on Debian 7.x (wheezy) and
8.x (jessie), respectively.

Cc: Clemens Buchacher <drizzd@aon.at>
Cc: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Eric Wong <e@80x24.org>
-rw-r--r--t/lib-git-svn.sh91
-rw-r--r--t/lib-httpd.sh8
-rw-r--r--t/lib-httpd/apache.conf4
-rwxr-xr-xt/t9115-git-svn-dcommit-funky-renames.sh7
-rwxr-xr-xt/t9118-git-svn-funky-branch-names.sh2
-rwxr-xr-xt/t9120-git-svn-clone-with-percent-escapes.sh2
-rwxr-xr-xt/t9142-git-svn-shallow-clone.sh2
7 files changed, 30 insertions, 86 deletions
diff --git a/t/lib-git-svn.sh b/t/lib-git-svn.sh
index fb8823224e..688313ed5c 100644
--- a/t/lib-git-svn.sh
+++ b/t/lib-git-svn.sh
@@ -65,81 +65,22 @@ svn_cmd () {
         svn "$orig_svncmd" --config-dir "$svnconf" "$@"
 }
 
-prepare_httpd () {
-        for d in \
-                "$SVN_HTTPD_PATH" \
-                /usr/sbin/apache2 \
-                /usr/sbin/httpd \
-        ; do
-                if test -f "$d"
-                then
-                        SVN_HTTPD_PATH="$d"
-                        break
-                fi
-        done
-        if test -z "$SVN_HTTPD_PATH"
-        then
-                echo >&2 '*** error: Apache not found'
-                return 1
-        fi
-        for d in \
-                "$SVN_HTTPD_MODULE_PATH" \
-                /usr/lib/apache2/modules \
-                /usr/libexec/apache2 \
-        ; do
-                if test -d "$d"
-                then
-                        SVN_HTTPD_MODULE_PATH="$d"
-                        break
-                fi
-        done
-        if test -z "$SVN_HTTPD_MODULE_PATH"
-        then
-                echo >&2 '*** error: Apache module dir not found'
-                return 1
-        fi
-        if test ! -f "$SVN_HTTPD_MODULE_PATH/mod_dav_svn.so"
-        then
-                echo >&2 '*** error: Apache module "mod_dav_svn" not found'
-                return 1
-        fi
-
-        repo_base_path="${1-svn}"
-        mkdir "$GIT_DIR"/logs
-
-        cat > "$GIT_DIR/httpd.conf" <<EOF
-ServerName "git svn test"
-ServerRoot "$GIT_DIR"
-DocumentRoot "$GIT_DIR"
-PidFile "$GIT_DIR/httpd.pid"
-LockFile logs/accept.lock
-Listen 127.0.0.1:$SVN_HTTPD_PORT
-LoadModule dav_module $SVN_HTTPD_MODULE_PATH/mod_dav.so
-LoadModule dav_svn_module $SVN_HTTPD_MODULE_PATH/mod_dav_svn.so
-<Location /$repo_base_path>
-        DAV svn
-        SVNPath "$rawsvnrepo"
-</Location>
-EOF
-}
-
-start_httpd () {
-        if test -z "$SVN_HTTPD_PORT"
-        then
-                echo >&2 'SVN_HTTPD_PORT is not defined!'
-                return
-        fi
-
-        prepare_httpd "$1" || return 1
-
-        "$SVN_HTTPD_PATH" -f "$GIT_DIR"/httpd.conf -k start
-        svnrepo="http://127.0.0.1:$SVN_HTTPD_PORT/$repo_base_path"
-}
-
-stop_httpd () {
-        test -z "$SVN_HTTPD_PORT" && return
-        test ! -f "$GIT_DIR/httpd.conf" && return
-        "$SVN_HTTPD_PATH" -f "$GIT_DIR"/httpd.conf -k stop
+maybe_start_httpd () {
+        loc=${1-svn}
+
+        test_tristate GIT_SVN_TEST_HTTPD
+        case $GIT_SVN_TEST_HTTPD in
+        true)
+                . "$TEST_DIRECTORY"/lib-httpd.sh
+                LIB_HTTPD_SVN="$loc"
+                start_httpd
+                ;;
+        *)
+                stop_httpd () {
+                        : noop
+                }
+                ;;
+        esac
 }
 
 convert_to_rev_db () {
diff --git a/t/lib-httpd.sh b/t/lib-httpd.sh
index ac2cbee250..435a37465a 100644
--- a/t/lib-httpd.sh
+++ b/t/lib-httpd.sh
@@ -24,7 +24,7 @@
 #    LIB_HTTPD_MODULE_PATH       web server modules path
 #    LIB_HTTPD_PORT              listening port
 #    LIB_HTTPD_DAV               enable DAV
-#    LIB_HTTPD_SVN               enable SVN
+#    LIB_HTTPD_SVN               enable SVN at given location (e.g. "svn")
 #    LIB_HTTPD_SSL               enable SSL
 #
 # Copyright (c) 2008 Clemens Buchacher <drizzd@aon.at>
@@ -162,8 +162,10 @@ prepare_httpd() {
                 if test -n "$LIB_HTTPD_SVN"
                 then
                         HTTPD_PARA="$HTTPD_PARA -DSVN"
-                        rawsvnrepo="$HTTPD_ROOT_PATH/svnrepo"
-                        svnrepo="http://127.0.0.1:$LIB_HTTPD_PORT/svn"
+                        LIB_HTTPD_SVNPATH="$rawsvnrepo"
+                        svnrepo="http://127.0.0.1:$LIB_HTTPD_PORT/"
+                        svnrepo="$svnrepo$LIB_HTTPD_SVN"
+                        export LIB_HTTPD_SVN LIB_HTTPD_SVNPATH
                 fi
         fi
 }
diff --git a/t/lib-httpd/apache.conf b/t/lib-httpd/apache.conf
index 018a83a5a1..c3e631394f 100644
--- a/t/lib-httpd/apache.conf
+++ b/t/lib-httpd/apache.conf
@@ -208,8 +208,8 @@ RewriteRule ^/half-auth-complete/ - [E=AUTHREQUIRED:yes]
 <IfDefine SVN>
         LoadModule dav_svn_module modules/mod_dav_svn.so
 
-        <Location /svn>
+        <Location /${LIB_HTTPD_SVN}>
                 DAV svn
-                SVNPath svnrepo
+                SVNPath "${LIB_HTTPD_SVNPATH}"
         </Location>
 </IfDefine>
diff --git a/t/t9115-git-svn-dcommit-funky-renames.sh b/t/t9115-git-svn-dcommit-funky-renames.sh
index a87d3d3fc1..64bb495834 100755
--- a/t/t9115-git-svn-dcommit-funky-renames.sh
+++ b/t/t9115-git-svn-dcommit-funky-renames.sh
@@ -8,9 +8,10 @@ test_description='git svn dcommit can commit renames of files with ugly names'
 . ./lib-git-svn.sh
 
 test_expect_success 'load repository with strange names' '
-        svnadmin load -q "$rawsvnrepo" < "$TEST_DIRECTORY"/t9115/funky-names.dump &&
-        start_httpd gtk+
-        '
+        svnadmin load -q "$rawsvnrepo" <"$TEST_DIRECTORY"/t9115/funky-names.dump
+'
+
+maybe_start_httpd gtk+
 
 test_expect_success 'init and fetch repository' '
         git svn init "$svnrepo" &&
diff --git a/t/t9118-git-svn-funky-branch-names.sh b/t/t9118-git-svn-funky-branch-names.sh
index ecb1fed147..41a026637f 100755
--- a/t/t9118-git-svn-funky-branch-names.sh
+++ b/t/t9118-git-svn-funky-branch-names.sh
@@ -32,7 +32,7 @@ test_expect_success 'setup svnrepo' '
                         "$svnrepo/pr ject/branches/trailing_dotlock.lock" &&
         svn_cmd cp -m "reflog" "$svnrepo/pr ject/trunk" \
                         "$svnrepo/pr ject/branches/not-a@{0}reflog@" &&
-        start_httpd
+        maybe_start_httpd
         '
 
 # SVN 1.7 will truncate "not-a%40{0]" to just "not-a".
diff --git a/t/t9120-git-svn-clone-with-percent-escapes.sh b/t/t9120-git-svn-clone-with-percent-escapes.sh
index 59465b147e..b28a1741e3 100755
--- a/t/t9120-git-svn-clone-with-percent-escapes.sh
+++ b/t/t9120-git-svn-clone-with-percent-escapes.sh
@@ -15,7 +15,7 @@ test_expect_success 'setup svnrepo' '
         svn_cmd cp -m "tag" "$svnrepo/pr ject/trunk" \
           "$svnrepo/pr ject/tags/v1" &&
         rm -rf project &&
-        start_httpd
+        maybe_start_httpd
 '
 
 test_expect_success 'test clone with percent escapes' '
diff --git a/t/t9142-git-svn-shallow-clone.sh b/t/t9142-git-svn-shallow-clone.sh
index e21ee5f663..9ee23be640 100755
--- a/t/t9142-git-svn-shallow-clone.sh
+++ b/t/t9142-git-svn-shallow-clone.sh
@@ -18,7 +18,7 @@ test_expect_success 'setup test repository' '
                 svn_cmd add foo &&
                 svn_cmd commit -m "add foo"
         ) &&
-        start_httpd
+        maybe_start_httpd
 '
 
 test_expect_success 'clone trunk with "-r HEAD"' '