]> git.ipfire.org Git - thirdparty/git.git/commitdiff
t/perf/p7519: speed up test on Windows
authorJeff Hostetler <jeffhost@microsoft.com>
Fri, 25 Mar 2022 18:03:08 +0000 (18:03 +0000)
committerJunio C Hamano <gitster@pobox.com>
Fri, 25 Mar 2022 23:04:17 +0000 (16:04 -0700)
Change p7519 to use `test_seq` and `xargs` rather than a `for` loop
to touch thousands of files.  This takes minutes off of test runs
on Windows because of process creation overhead.

Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/perf/p7519-fsmonitor.sh

index 5241eb6c4e5460af32d4afc976f3ae0ec505546a..a6c2a910e70768e125ea11504f520d36edc9117a 100755 (executable)
@@ -98,6 +98,13 @@ trace_stop () {
        fi
 }
 
+touch_files () {
+       n=$1 &&
+       d="$n"_files &&
+
+       (cd $d && test_seq 1 $n | xargs touch )
+}
+
 test_expect_success "one time repo setup" '
        # set untrackedCache depending on the environment
        if test -n "$GIT_PERF_7519_UNTRACKED_CACHE"
@@ -119,10 +126,11 @@ test_expect_success "one time repo setup" '
        fi &&
 
        mkdir 1_file 10_files 100_files 1000_files 10000_files &&
-       for i in $(test_seq 1 10); do touch 10_files/$i || return 1; done &&
-       for i in $(test_seq 1 100); do touch 100_files/$i || return 1; done &&
-       for i in $(test_seq 1 1000); do touch 1000_files/$i || return 1; done &&
-       for i in $(test_seq 1 10000); do touch 10000_files/$i || return 1; done &&
+       : 1_file directory should be left empty &&
+       touch_files 10 &&
+       touch_files 100 &&
+       touch_files 1000 &&
+       touch_files 10000 &&
        git add 1_file 10_files 100_files 1000_files 10000_files &&
        git commit -qm "Add files" &&
 
@@ -199,15 +207,15 @@ test_fsmonitor_suite () {
 
        # Update the mtimes on upto 100k files to make status think
        # that they are dirty.  For simplicity, omit any files with
-       # LFs (i.e. anything that ls-files thinks it needs to dquote).
-       # Then fully backslash-quote the paths to capture any
-       # whitespace so that they pass thru xargs properly.
+       # LFs (i.e. anything that ls-files thinks it needs to dquote)
+       # and any files with whitespace so that they pass thru xargs
+       # properly.
        #
        test_perf_w_drop_caches "status (dirty) ($DESC)" '
                git ls-files | \
                        head -100000 | \
                        grep -v \" | \
-                       sed '\''s/\(.\)/\\\1/g'\'' | \
+                       grep -v " ." | \
                        xargs test-tool chmtime -300 &&
                git status
        '