summaryrefslogtreecommitdiff
path: root/0003-t-lib-git-svn-try-harder-to-find-a-port.patch
diff options
context:
space:
mode:
Diffstat (limited to '0003-t-lib-git-svn-try-harder-to-find-a-port.patch')
-rw-r--r--0003-t-lib-git-svn-try-harder-to-find-a-port.patch85
1 files changed, 85 insertions, 0 deletions
diff --git a/0003-t-lib-git-svn-try-harder-to-find-a-port.patch b/0003-t-lib-git-svn-try-harder-to-find-a-port.patch
new file mode 100644
index 0000000..56624e2
--- /dev/null
+++ b/0003-t-lib-git-svn-try-harder-to-find-a-port.patch
@@ -0,0 +1,85 @@
+From aa5105dc115b43edc6c9c11714b092583f1221aa Mon Sep 17 00:00:00 2001
+From: Todd Zullinger <tmz@pobox.com>
+Date: Fri, 26 Aug 2022 18:28:44 -0400
+Subject: [PATCH] t/lib-git-svn: try harder to find a port
+
+As with the previous commits, try harder to find an open port to avoid
+intermittent failures on busy/shared build systems.
+
+By default, we make 3 attempts. This may be overridden by setting
+GIT_TEST_START_SVNSERVE_TRIES to a different value.
+
+Run svnserve in daemon mode and use 'test_atexit' to stop it. This is
+cleaner than running in the foreground with --listen-once and having to
+manage the PID ourselves.
+
+Signed-off-by: Todd Zullinger <tmz@pobox.com>
+---
+ t/lib-git-svn.sh | 34 +++++++++++++++++++++++++----
+ t/t9113-git-svn-dcommit-new-file.sh | 1 -
+ 2 files changed, 30 insertions(+), 5 deletions(-)
+
+diff --git a/t/lib-git-svn.sh b/t/lib-git-svn.sh
+index ea28971e8e..04e660e2ba 100644
+--- a/t/lib-git-svn.sh
++++ b/t/lib-git-svn.sh
+@@ -17,6 +17,7 @@ fi
+ GIT_DIR=$PWD/.git
+ GIT_SVN_DIR=$GIT_DIR/svn/refs/remotes/git-svn
+ SVN_TREE=$GIT_SVN_DIR/svn-tree
++SVNSERVE_PIDFILE="$PWD"/daemon.pid
+ test_set_port SVNSERVE_PORT
+
+ svn >/dev/null 2>&1
+@@ -119,10 +120,35 @@ require_svnserve () {
+ }
+
+ start_svnserve () {
+- svnserve --listen-port $SVNSERVE_PORT \
+- --root "$rawsvnrepo" \
+- --listen-once \
+- --listen-host 127.0.0.1 &
++ test_atexit stop_svnserve
++
++ i=0
++ while test $i -lt ${GIT_TEST_START_SVNSERVE_TRIES:-3}
++ do
++ say >&3 "Starting svnserve on port $SVNSERVE_PORT ..."
++ svnserve --listen-port $SVNSERVE_PORT \
++ --root "$rawsvnrepo" \
++ --daemon --pid-file="$SVNSERVE_PIDFILE" \
++ --listen-host 127.0.0.1
++ ret=$?
++ # increment port and retry if unsuccessful
++ if test $ret -ne 0
++ then
++ SVNSERVE_PORT=$(($SVNSERVE_PORT + 1))
++ export SVNSERVE_PORT
++ else
++ break
++ fi
++ done
++}
++
++stop_svnserve () {
++ say >&3 "Stopping svnserve ..."
++ SVNSERVE_PID="$(cat "$SVNSERVE_PIDFILE")"
++ if test -n "$SVNSERVE_PID"
++ then
++ kill "$SVNSERVE_PID" 2>/dev/null
++ fi
+ }
+
+ prepare_utf8_locale () {
+diff --git a/t/t9113-git-svn-dcommit-new-file.sh b/t/t9113-git-svn-dcommit-new-file.sh
+index e8479cec7a..5925891f5d 100755
+--- a/t/t9113-git-svn-dcommit-new-file.sh
++++ b/t/t9113-git-svn-dcommit-new-file.sh
+@@ -28,7 +28,6 @@ test_expect_success 'create files in new directory with dcommit' "
+ echo hello > git-new-dir/world &&
+ git update-index --add git-new-dir/world &&
+ git commit -m hello &&
+- start_svnserve &&
+ git svn dcommit
+ "
+