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

[BUG?] setting ulimit in test suite broken for me

From
Stefan Beller <sbeller@google.com>
Date
Jan 21, 2015, 18:59 UTC
Message-ID
<1421866746-29444-1-git-send-email-sbeller@google.com>
Hi,
so I wanted to create a new test for large transactions, which should look like:
	run_with_limited_open_files () {
		(ulimit -n 64 && "$@")
	}
	test_lazy_prereq ULIMIT 'run_with_limited_open_files true'
	test_expect_success ULIMIT 'large transaction creating branches does not burst open file limit' '
	(
		echo $(ulimit -n)
		for i in $(seq 65)
		do
			echo "create refs/heads/$i HEAD"
		done >large_input &&
		git update-ref --stdin <large_input &&
		git rev-parse --verify -q refs/heads/65
	)
	'

Mind the "echo $(ulimit -n)" in there as a debugging output. So if I run the test with "-d -v" to actually see the debugging output, I see ulimit -n set to 32768 instead of the desired 64.

So I assumed I made a mistake and looked at other places with a similar pattern such as in t7004-tag.sh. Inserting a debug statement (as attached, so I don't need (to trust) -d and -v as parameters for the test) in there also doesn't report the desired stack size of 128, but rather the system default of 8192. Is that just my system or does anybody else also run into such a problem?

Running ulimit -{n,s} manually in a shell (/bin/sh) as well as bash does work as expected as it correctly reports with ulimit -a as well as breaking the tests I try to write.

Thanks, Stefan

Signed-off-by: Stefan Beller <sbeller@google.com>
---
 t/t7004-tag.sh | 1 +
 1 file changed, 1 insertion(+)
diff --git a/t/t7004-tag.sh b/t/t7004-tag.sh
index 35c805a..4f09cb4 100755
--- a/t/t7004-tag.sh
+++ b/t/t7004-tag.sh
@@ -1460,20 +1460,21 @@ test_expect_success 'invalid sort parameter in configuratoin' '
 '
 
 run_with_limited_stack () {
 	(ulimit -s 128 && "$@")
 }
 
 test_lazy_prereq ULIMIT 'run_with_limited_stack true'
 
 # we require ulimit, this excludes Windows
 test_expect_success ULIMIT '--contains works in a deep repo' '
+	echo $(ulimit -s) > ../ulimit_recorded
 	>expect &&
 	i=1 &&
 	while test $i -lt 8000
 	do
 		echo "commit refs/heads/master
 committer A U Thor <author@example.com> $((1000000000 + $i * 100)) +0200
 data <<EOF
 commit #$i
 EOF"
 		test $i = 1 && echo "from refs/heads/master^0"
-- 
2.2.1.62.g3f15098
Next: Jeff King
Message 1 of 3 in “[BUG?] setting ulimit in test suite broken for me”
  1. Stefan BellerJan 21, 2015
  2. Jeff KingJan 21, 2015
  3. Stefan BellerJan 22, 2015

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.