summaryrefslogtreecommitdiff
path: root/t
diff options
context:
space:
mode:
authorLibravatar Junio C Hamano <gitster@pobox.com>2020-05-01 13:39:53 -0700
committerLibravatar Junio C Hamano <gitster@pobox.com>2020-05-01 13:39:53 -0700
commitcf054f817a30cf4a6531548f52cd7d5cbed6f4fc (patch)
tree1a22fdf3be94217a1427f8728dc1bf3a0e25692e /t
parentMerge branch 'tb/commit-graph-split-strategy' (diff)
parentcommit-graph: close descriptors after mmap (diff)
downloadtgif-cf054f817a30cf4a6531548f52cd7d5cbed6f4fc.tar.xz
Merge branch 'tb/commit-graph-fd-exhaustion-fix'
The commit-graph code exhausted file descriptors easily when it does not have to. * tb/commit-graph-fd-exhaustion-fix: commit-graph: close descriptors after mmap commit-graph.c: gracefully handle file descriptor exhaustion t/test-lib.sh: make ULIMIT_FILE_DESCRIPTORS available to tests commit-graph.c: don't use discarded graph_name in error
Diffstat (limited to 't')
-rwxr-xr-xt/t1400-update-ref.sh9
-rwxr-xr-xt/t5324-split-commit-graph.sh13
-rw-r--r--t/test-lib.sh9
3 files changed, 22 insertions, 9 deletions
diff --git a/t/t1400-update-ref.sh b/t/t1400-update-ref.sh
index 48d0d42afd..e1197ac818 100755
--- a/t/t1400-update-ref.sh
+++ b/t/t1400-update-ref.sh
@@ -1354,15 +1354,6 @@ test_expect_success 'fails with duplicate ref update via symref' '
test_cmp expect actual
'
-run_with_limited_open_files () {
- (ulimit -n 32 && "$@")
-}
-
-test_lazy_prereq ULIMIT_FILE_DESCRIPTORS '
- test_have_prereq !MINGW,!CYGWIN &&
- run_with_limited_open_files true
-'
-
test_expect_success ULIMIT_FILE_DESCRIPTORS 'large transaction creating branches does not burst open file limit' '
(
for i in $(test_seq 33)
diff --git a/t/t5324-split-commit-graph.sh b/t/t5324-split-commit-graph.sh
index 3378ec54cd..4146b82031 100755
--- a/t/t5324-split-commit-graph.sh
+++ b/t/t5324-split-commit-graph.sh
@@ -387,4 +387,17 @@ test_expect_success '--split=replace replaces the chain' '
graph_read_expect 2
'
+test_expect_success ULIMIT_FILE_DESCRIPTORS 'handles file descriptor exhaustion' '
+ git init ulimit &&
+ (
+ cd ulimit &&
+ for i in $(test_seq 64)
+ do
+ test_commit $i &&
+ test_might_fail run_with_limited_open_files git commit-graph write \
+ --split=no-merge --reachable || return 1
+ done
+ )
+'
+
test_done
diff --git a/t/test-lib.sh b/t/test-lib.sh
index 13ba00d508..1b221951a8 100644
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
@@ -1666,6 +1666,15 @@ test_lazy_prereq ULIMIT_STACK_SIZE '
run_with_limited_stack true
'
+run_with_limited_open_files () {
+ (ulimit -n 32 && "$@")
+}
+
+test_lazy_prereq ULIMIT_FILE_DESCRIPTORS '
+ test_have_prereq !MINGW,!CYGWIN &&
+ run_with_limited_open_files true
+'
+
build_option () {
git version --build-options |
sed -ne "s/^$1: //p"