]> git.ipfire.org Git - thirdparty/git.git/commitdiff
test-lib: prevent '--stress-jobs=X' from being ignored
authorSZEDER Gábor <szeder.dev@gmail.com>
Tue, 26 Jan 2021 22:05:33 +0000 (23:05 +0100)
committerJunio C Hamano <gitster@pobox.com>
Wed, 27 Jan 2021 01:58:33 +0000 (17:58 -0800)
'./t1234-foo.sh --stress-jobs=X ...' is supposed to run that test
script in X parallel jobs, but the number of jobs specified on the
command line is entirely ignored if other '--stress'-related options
follow.  I.e. both './t1234-foo.sh --stress-jobs=X --stress-limit=Y'
and './t1234-foo.sh --stress-jobs=X --stress' fall back to using twice
the number of CPUs parallel jobs instead.

The former has been broken since commit de69e6f6c9 (tests: let
--stress-limit=<N> imply --stress, 2019-03-03) [1], which started to
unconditionally overwrite the $stress variable holding the specified
number of jobs in its effort to imply '--stress'.  The latter has been
broken since f545737144 (tests: introduce --stress-jobs=<N>,
2019-03-03), because it didn't consider that handling '--stress' will
overwrite that variable as well.

We could fix this by being more careful about (over)writing that
$stress variable and checking first whether it has already been set.
But I think it's cleaner to use a dedicated variable to hold the
number of specified parallel jobs, so let's do that instead.

[1] In de69e6f6c9 there was no '--stress-jobs=X' option yet, the
    number of parallel jobs had to be specified via '--stress=X', so,
    strictly speaking, de69e6f6c9 broke './t1234-foo.sh --stress=X
    --stress-limit=Y'.

Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/test-lib.sh

index 03c1c0836f179677f15a3e49c9d1a87bee81184b..76062db29640bd42ab17694a75271e9f9458f1f0 100644 (file)
@@ -163,8 +163,8 @@ parse_option () {
                ;;
        --stress-jobs=*)
                stress=t;
-               stress=${opt#--*=}
-               case "$stress" in
+               stress_jobs=${opt#--*=}
+               case "$stress_jobs" in
                *[!0-9]*|0*|"")
                        echo "error: --stress-jobs=<N> requires the number of jobs to run" >&2
                        exit 1
@@ -262,9 +262,9 @@ then
        : # Don't stress test again.
 elif test -n "$stress"
 then
-       if test "$stress" != t
+       if test -n "$stress_jobs"
        then
-               job_count=$stress
+               job_count=$stress_jobs
        elif test -n "$GIT_TEST_STRESS_LOAD"
        then
                job_count="$GIT_TEST_STRESS_LOAD"