[PATCH 3/3] add smart HTTP tests

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Set LIB_HTTPD_GIT to enable smart HTTP tests.

Signed-off-by: Clemens Buchacher <drizzd@xxxxxx>
---
 t/lib-httpd.sh          |    9 +++++++++
 t/lib-httpd/apache.conf |   36 +++++++++++++++++++++++++++---------
 t/t5540-http-push.sh    |   46 ++++++++++++++++++++++++++++------------------
 3 files changed, 64 insertions(+), 27 deletions(-)

diff --git a/t/lib-httpd.sh b/t/lib-httpd.sh
index 6765b08..aaa0a71 100644
--- a/t/lib-httpd.sh
+++ b/t/lib-httpd.sh
@@ -88,6 +88,15 @@ prepare_httpd() {
 			svnrepo="http://127.0.0.1:$LIB_HTTPD_PORT/svn";
 		fi
 	fi
+
+	if test -n "$LIB_HTTPD_GIT"
+	then
+		HTTPD_PARA="$HTTPD_PARA -DGIT"
+	fi
+
+	HTTPD_GIT_PATH=$HTTPD_DOCUMENT_ROOT_PATH/git
+	mkdir -p "$HTTPD_GIT_PATH"
+	HTTPD_GIT_URL="$HTTPD_URL/git"
 }
 
 start_httpd() {
diff --git a/t/lib-httpd/apache.conf b/t/lib-httpd/apache.conf
index 21aa42f..d8505f1 100644
--- a/t/lib-httpd/apache.conf
+++ b/t/lib-httpd/apache.conf
@@ -10,15 +10,15 @@ ErrorLog error.log
 </IfModule>
 
 <IfDefine SSL>
-LoadModule ssl_module modules/mod_ssl.so
-
-SSLCertificateFile httpd.pem
-SSLCertificateKeyFile httpd.pem
-SSLRandomSeed startup file:/dev/urandom 512
-SSLRandomSeed connect file:/dev/urandom 512
-SSLSessionCache none
-SSLMutex file:ssl_mutex
-SSLEngine On
+	LoadModule ssl_module modules/mod_ssl.so
+
+	SSLCertificateFile httpd.pem
+	SSLCertificateKeyFile httpd.pem
+	SSLRandomSeed startup file:/dev/urandom 512
+	SSLRandomSeed connect file:/dev/urandom 512
+	SSLSessionCache none
+	SSLMutex file:ssl_mutex
+	SSLEngine On
 </IfDefine>
 
 <IfDefine DAV>
@@ -39,3 +39,21 @@ SSLEngine On
 		SVNPath svnrepo
 	</Location>
 </IfDefine>
+
+<IfDefine GIT>
+	LoadModule cgi_module modules/mod_cgi.so
+	LoadModule alias_module modules/mod_alias.so
+	LoadModule actions_module modules/mod_actions.so
+	ScriptAlias /git-http-backend ${GIT_EXEC_PATH}/git-http-backend
+
+	<Location /git>
+		SetHandler git-http-backend
+		Action git-http-backend /git-http-backend virtual
+	</Location>
+	<Directory ${GIT_EXEC_PATH}>
+		Options None
+	</Directory>
+	<Files ${GIT_EXEC_PATH}/git-http-backend>
+		Options ExecCGI
+	</Files>
+</IfDefine>
diff --git a/t/t5540-http-push.sh b/t/t5540-http-push.sh
index 2ece661..74ca08d 100755
--- a/t/t5540-http-push.sh
+++ b/t/t5540-http-push.sh
@@ -10,7 +10,10 @@ This test runs various sanity checks on http-push.'
 . ./test-lib.sh
 
 ROOT_PATH="$PWD"
-LIB_HTTPD_DAV=t
+if test -z "$LIB_HTTPD_GIT"
+then
+	LIB_HTTPD_DAV=t
+fi
 LIB_HTTPD_PORT=${LIB_HTTPD_PORT-'5540'}
 
 if git http-push > /dev/null 2>&1 || [ $? -eq 128 ]
@@ -34,16 +37,21 @@ test_expect_success 'setup remote repository' '
 	cd - &&
 	git clone --bare test_repo test_repo.git &&
 	cd test_repo.git &&
-	git --bare update-server-info &&
-	mv hooks/post-update.sample hooks/post-update &&
 	ORIG_HEAD=$(git rev-parse --verify HEAD) &&
-	cd - &&
-	mv test_repo.git "$HTTPD_DOCUMENT_ROOT_PATH"
+	if test -n "$LIB_HTTPD_GIT"
+	then
+		git config http.receivepack true
+	else
+		git --bare update-server-info &&
+		mv hooks/post-update.sample hooks/post-update
+	fi
+	cd -
+	mv test_repo.git "$HTTPD_GIT_PATH"
 '
 
 test_expect_success 'clone remote repository' '
 	cd "$ROOT_PATH" &&
-	git clone $HTTPD_URL/test_repo.git test_repo_clone
+	git clone $HTTPD_GIT_URL/test_repo.git test_repo_clone
 '
 
 test_expect_success 'push to remote repository with packed refs' '
@@ -54,7 +62,7 @@ test_expect_success 'push to remote repository with packed refs' '
 	git commit -m path2 &&
 	HEAD=$(git rev-parse --verify HEAD) &&
 	git push &&
-	(cd "$HTTPD_DOCUMENT_ROOT_PATH"/test_repo.git &&
+	(cd "$HTTPD_GIT_PATH"/test_repo.git &&
 	 test $HEAD = $(git rev-parse --verify HEAD))
 '
 
@@ -63,20 +71,20 @@ test_expect_success 'push already up-to-date' '
 '
 
 test_expect_success 'push to remote repository with unpacked refs' '
-	(cd "$HTTPD_DOCUMENT_ROOT_PATH"/test_repo.git &&
+	(cd "$HTTPD_GIT_PATH"/test_repo.git &&
 	 rm packed-refs &&
 	 git update-ref refs/heads/master $ORIG_HEAD &&
 	 git --bare update-server-info) &&
 	git push &&
-	(cd "$HTTPD_DOCUMENT_ROOT_PATH"/test_repo.git &&
+	(cd "$HTTPD_GIT_PATH"/test_repo.git &&
 	 test $HEAD = $(git rev-parse --verify HEAD))
 '
 
 test_expect_success 'http-push fetches unpacked objects' '
-	cp -R "$HTTPD_DOCUMENT_ROOT_PATH"/test_repo.git \
-		"$HTTPD_DOCUMENT_ROOT_PATH"/test_repo_unpacked.git &&
+	cp -R "$HTTPD_GIT_PATH"/test_repo.git \
+		"$HTTPD_GIT_PATH"/test_repo_unpacked.git &&
 
-	git clone $HTTPD_URL/test_repo_unpacked.git \
+	git clone $HTTPD_GIT_URL/test_repo_unpacked.git \
 		"$ROOT_PATH"/fetch_unpacked &&
 
 	# By reset, we force git to retrieve the object
@@ -85,17 +93,17 @@ test_expect_success 'http-push fetches unpacked objects' '
 	 git remote rm origin &&
 	 git reflog expire --expire=0 --all &&
 	 git prune &&
-	 git push -f -v $HTTPD_URL/test_repo_unpacked.git master)
+	 git push -f -v $HTTPD_GIT_URL/test_repo_unpacked.git master)
 '
 
 test_expect_success 'http-push fetches packed objects' '
-	cp -R "$HTTPD_DOCUMENT_ROOT_PATH"/test_repo.git \
-		"$HTTPD_DOCUMENT_ROOT_PATH"/test_repo_packed.git &&
+	cp -R "$HTTPD_GIT_PATH"/test_repo.git \
+		"$HTTPD_GIT_PATH"/test_repo_packed.git &&
 
-	git clone $HTTPD_URL/test_repo_packed.git \
+	git clone $HTTPD_GIT_URL/test_repo_packed.git \
 		"$ROOT_PATH"/test_repo_clone_packed &&
 
-	(cd "$HTTPD_DOCUMENT_ROOT_PATH"/test_repo_packed.git &&
+	(cd "$HTTPD_GIT_PATH"/test_repo_packed.git &&
 	 git --bare repack &&
 	 git --bare prune-packed) &&
 
@@ -105,7 +113,7 @@ test_expect_success 'http-push fetches packed objects' '
 	 git remote rm origin &&
 	 git reflog expire --expire=0 --all &&
 	 git prune &&
-	 git push -f -v $HTTPD_URL/test_repo_packed.git master)
+	 git push -f -v $HTTPD_GIT_URL/test_repo_packed.git master)
 '
 
 test_expect_success 'create and delete remote branch' '
@@ -122,6 +130,7 @@ test_expect_success 'create and delete remote branch' '
 	test_must_fail git show-ref --verify refs/remotes/origin/dev
 '
 
+test -n "$LIB_HTTPD_GIT" ||
 test_expect_success 'MKCOL sends directory names with trailing slashes' '
 
 	! grep "\"MKCOL.*[^/] HTTP/[^ ]*\"" < "$HTTPD_ROOT_PATH"/access.log
@@ -134,6 +143,7 @@ x5="$x1$x1$x1$x1$x1"
 x38="$x5$x5$x5$x5$x5$x5$x5$x1$x1$x1"
 x40="$x38$x2"
 
+test -n "$LIB_HTTPD_GIT" ||
 test_expect_success 'PUT and MOVE sends object to URLs with SHA-1 hash suffix' '
 	sed -e "s/PUT /OP /" -e "s/MOVE /OP /" "$HTTPD_ROOT_PATH"/access.log |
 	grep -e "\"OP .*/objects/$x2/${x38}_$x40 HTTP/[.0-9]*\" 20[0-9] "
-- 
1.6.5.35.ge41a3

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]