git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v2] t6026: ensure that long-running script really is

From
Johannes Sixt <j6t@kdbg.org>
Date
Nov 11, 2016, 20:24 UTC
Message-ID
<6a421222-a138-5647-4965-8ede24d904b2@kdbg.org>
In-Reply-To
<20161111084148.tgtsijn74z2pdylq@sigill.intra.peff.net>

When making sure that background tasks are cleaned up in 5babb5b (t6026-merge-attr: clean up background process at end of test case, 2016-09-07), we considered to let the background task sleep longer, just to be certain that it will still be running when we want to kill it after the test.

Sadly, the assumption appears not to hold true that the test case passes quickly enough to kill the background task within a second.

Simply increase it to an hour. No system can be possibly slow enough to make above-mentioned assumption incorrect.

Reported by Andreas Schwab.  In-code comments by J6t.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Johannes Sixt <j6t@kdbg.org>
---
Am 11.11.2016 um 09:41 schrieb Jeff King:
> But the other thing the "kill" is doing is make sure we clean up after
> ourselves, even if another part of the test fails.
Good point. Here is an updated version.

If the pid file is not created, the kill command receives no arguments. Here on Linux, it reports failure in this case. This is good. I could have said

   test_when_finished "kill \"\$(cat sleep.pid)\""

but that is a bit too much quoting for my taste when it is not strictly necessary.

 t/t6026-merge-attr.sh | 18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)
diff --git a/t/t6026-merge-attr.sh b/t/t6026-merge-attr.sh
index 7a6e33e673..8f9b48a493 100755
--- a/t/t6026-merge-attr.sh
+++ b/t/t6026-merge-attr.sh
@@ -183,16 +183,24 @@ test_expect_success 'up-to-date merge without common ancestor' '
 
 test_expect_success 'custom merge does not lock index' '
 	git reset --hard anchor &&
-	write_script sleep-one-second.sh <<-\EOF &&
-		sleep 1 &
+	write_script sleep-an-hour.sh <<-\EOF &&
+		sleep 3600 &
 		echo $! >sleep.pid
 	EOF
-	test_when_finished "kill \$(cat sleep.pid)" &&
 
 	test_write_lines >.gitattributes \
-		"* merge=ours" "text merge=sleep-one-second" &&
+		"* merge=ours" "text merge=sleep-an-hour" &&
 	test_config merge.ours.driver true &&
-	test_config merge.sleep-one-second.driver ./sleep-one-second.sh &&
+	test_config merge.sleep-an-hour.driver ./sleep-an-hour.sh &&
+
+	# We are testing that the custom merge driver does not block
+	# index.lock on Windows due to an inherited file handle.
+	# To ensure that the backgrounded process ran sufficiently
+	# long (and has been started in the first place), we do not
+	# ignore the result of the kill command.
+	# By packaging the command in test_when_finished, we get both
+	# the correctness check and the clean-up.
+	test_when_finished "kill \$(cat sleep.pid)" &&
 	git merge master
 '
 
-- 
2.11.0.rc0.55.gd967357
Previous: Jeff KingNext: Junio C Hamano
Message 5 of 9 in “t6026: ensure that long-running script really is”
  1. t6026: ensure that long-running script really isJohannes Schindelin, Nov 9, 2016
  2. Junio C HamanoNov 10, 2016
  3. Johannes SixtNov 11, 2016
  4. Jeff KingNov 11, 2016
  5. t6026: ensure that long-running script really isJohannes Sixt, Nov 11, 2016
  6. Junio C HamanoNov 11, 2016
  7. Johannes SixtNov 11, 2016
  8. Junio C HamanoNov 11, 2016
  9. Johannes SixtNov 11, 2016

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.