diff mbox series

[03/16] t5541: simplify and move "no empty path components" test

Message ID Y/dFN4GuCjqpIi2O@coredump.intra.peff.net (mailing list archive)
State Accepted
Commit f1449a563ff78a2abfc570149a2db39c62398b68
Headers show
Series [01/16] t5541: run "used receive-pack service" test earlier | expand

Commit Message

Jeff King Feb. 23, 2023, 10:51 a.m. UTC
Commit 9ee6bcd398 (t5541-http-push: add test for URLs with trailing
slash, 2010-04-08) added a test that clones a URL with a trailing slash,
and confirms that we don't send a doubled slash (like "$url//info/refs")
to the server.

But this test makes no sense in t5541, which is about pushing. It should
have been added in t5551. Let's move it there.

But putting it at the end is tricky, since it checks the entire contents
of the Apache access log. We could get around this by clearing the log
before our test. But there's an even simpler solution: just make sure no
doubled slashes appear in the log (fortunately, "http://" does not
appear in the log itself).

As a bonus, this also lets us drop the check for the v0 protocol (which
is otherwise necessary since v2 makes multiple requests, and
check_access_log insists on exactly matching the number of requests,
even though we don't care about that here).

Signed-off-by: Jeff King <peff@peff.net>
---
 t/t5541-http-push-smart.sh  | 18 ------------------
 t/t5551-http-fetch-smart.sh |  9 +++++++++
 2 files changed, 9 insertions(+), 18 deletions(-)

Comments

Junio C Hamano Feb. 23, 2023, 11:36 p.m. UTC | #1
Jeff King <peff@peff.net> writes:

> before our test. But there's an even simpler solution: just make sure no
> doubled slashes appear in the log (fortunately, "http://" does not
> appear in the log itself).

Interesting ;-).

> As a bonus, this also lets us drop the check for the v0 protocol (which
> is otherwise necessary since v2 makes multiple requests, and
> check_access_log insists on exactly matching the number of requests,
> even though we don't care about that here).

Makes me wonder why we do not clear the log for each test, but OK.
Jeff King Feb. 24, 2023, 2:11 a.m. UTC | #2
On Thu, Feb 23, 2023 at 03:36:45PM -0800, Junio C Hamano wrote:

> > As a bonus, this also lets us drop the check for the v0 protocol (which
> > is otherwise necessary since v2 makes multiple requests, and
> > check_access_log insists on exactly matching the number of requests,
> > even though we don't care about that here).
> 
> Makes me wonder why we do not clear the log for each test, but OK.

Yes, I think that is a better strategy than the current code, but IMHO
these targeted greps are even better at showing what we really care
about. After my series, there are only two calls to check_access_log
left:

  - the one in t5541, from patch 2. This could be a grep, but since
    there is no v0/v2 confusion it was easy enough to leave it (and
    after my patch, it now is clearing and checking the activity of just
    one test)

  - one in t5561, which really does want to check the results after a
    ton of manual requests

So I think the state after my series is OK, at least from a maintenance
perspective.

-Peff
diff mbox series

Patch

diff --git a/t/t5541-http-push-smart.sh b/t/t5541-http-push-smart.sh
index f8bf533c33..d0211cd8be 100755
--- a/t/t5541-http-push-smart.sh
+++ b/t/t5541-http-push-smart.sh
@@ -36,24 +36,6 @@  test_expect_success 'setup remote repository' '
 
 setup_askpass_helper
 
-cat >exp <<EOF
-GET  /smart/test_repo.git/info/refs?service=git-upload-pack HTTP/1.1 200
-POST /smart/test_repo.git/git-upload-pack HTTP/1.1 200
-EOF
-test_expect_success 'no empty path components' '
-	# In the URL, add a trailing slash, and see if git appends yet another
-	# slash.
-	cd "$ROOT_PATH" &&
-	git clone $HTTPD_URL/smart/test_repo.git/ test_repo_clone &&
-
-	# NEEDSWORK: If the overspecification of the expected result is reduced, we
-	# might be able to run this test in all protocol versions.
-	if test "$GIT_TEST_PROTOCOL_VERSION" = 0
-	then
-		check_access_log exp
-	fi
-'
-
 test_expect_success 'clone remote repository' '
 	rm -rf test_repo_clone &&
 	git clone $HTTPD_URL/smart/test_repo.git test_repo_clone &&
diff --git a/t/t5551-http-fetch-smart.sh b/t/t5551-http-fetch-smart.sh
index bc0719a4fc..10b7e7cda2 100755
--- a/t/t5551-http-fetch-smart.sh
+++ b/t/t5551-http-fetch-smart.sh
@@ -666,4 +666,13 @@  test_expect_success 'push warns or fails when using username:password' '
 	test_line_count -ge 1 warnings
 '
 
+test_expect_success 'no empty path components' '
+	# In the URL, add a trailing slash, and see if git appends yet another
+	# slash.
+	git clone $HTTPD_URL/smart/repo.git/ clone-with-slash &&
+
+	strip_access_log >log &&
+	! grep "//" log
+'
+
 test_done