[PATCH v2] t2400: Fix test failures when using grep 2.5
- From
Jacob Abel <jacobabel@nullpo.dev>
- Date
- Jul 16, 2023, 03:38 UTC
- Message-ID
- <20230716033743.18200-1-jacobabel@nullpo.dev>
- In-Reply-To
- <20230715025512.7574-1-jacobabel@nullpo.dev>
Replace all cases of `\s` with `[[:blank:]]` or ` ` as older versions of GNU grep (and from what it seems most versions of BSD grep) do not handle `\s`.
For the same reason all cases of `\S` are replaced with `[^ ]`. It's not an exact replacement (as it does not match tabs) but it is close enough for this use case.
Replacing `\S` also needs to occur as `\S` is technically PCRE and not part of ERE even though most modern versions of grep accept it as ERE.
This commit also drops `--sq` from a rev-parse call as it appears to be a no-op.
Signed-off-by: Jacob Abel <jacobabel@nullpo.dev> --- This patch is in response to build failures on GGG's Cirrus CI freebsd_12 build jobs[1] and was prompted by a discussion thread [2]. These failures seem to be caused by the behavior outlined in [3].
Changes from v1:
* Change `[[:space:]]` to ` ` where possible and `[[:blank:]]`
(tabs and spaces) otherwise as it is more accurate than `[[:space:]]` [4].
* Change `[^[:space:]]` to `[^ ]` [4]. Technically `[^[:blank:]]` would be
more accurate but tabs shouldn't be present where this `[^ ]` is used.
* Drop `--sq` from rev-parse [4] (after further discussion [5]).
* Update commit message to match changes.1. https://github.com/gitgitgadget/git/pull/1550/checks?check_run_id=14949695859 2. https://lore.kernel.org/git/CALnO6CDryTsguLshcQxx97ZxyY42Twu2hC2y1bLOsS-9zbqXMA@mail.gmail.com/ 3. https://stackoverflow.com/questions/4233159/grep-regex-whitespace-behavior 4. https://lore.kernel.org/git/vn5sylull5lqpitsanlyan5fafxj5dhrxgo6k65c462dhqjbno@uwghfyfdixtk/ 5. https://lore.kernel.org/git/bj27nq5aputhd66rkqer37vuc7qogpmn6nqyusladdy4k5it7k@u3yvvivrixsy/
Range-diff against v1:
1: 39f57add45 ! 1: ef4ebd7350 t2400: Fix test failures when using grep 2.5
@@ Metadata
## Commit message ##
t2400: Fix test failures when using grep 2.5
- Replace all cases of `\s` with `[[:space:]]` as older versions of GNU
- grep (and from what it seems most versions of BSD grep) do not handle
- `\s`.
+ Replace all cases of `\s` with `[[:blank:]]` or ` ` as older versions
+ of GNU grep (and from what it seems most versions of BSD grep) do not
+ handle `\s`.
+
+ For the same reason all cases of `\S` are replaced with `[^ ]`. It's not
+ an exact replacement (as it does not match tabs) but it is close enough
+ for this use case.
- For the same reason all cases of `\S` are replaced with `[^[:space:]]`.
Replacing `\S` also needs to occur as `\S` is technically PCRE and not
part of ERE even though most modern versions of grep accept it as ERE.
+ This commit also drops `--sq` from a rev-parse call as it appears to be
+ a no-op.
+
Signed-off-by: Jacob Abel <jacobabel@nullpo.dev>
## t/t2400-worktree-add.sh ##
@@ t/t2400-worktree-add.sh: test_wt_add_orphan_hint () {
if [ $use_branch -eq 1 ]
then
- grep -E "^hint:\s+git worktree add --orphan -b \S+ \S+\s*$" actual
-+ grep -E "^hint:[[:space:]]+git worktree add --orphan -b [^[:space:]]+ [^[:space:]]+[[:space:]]*$" actual
++ grep -E "^hint:[[:blank:]]+git worktree add --orphan -b [^ ]+ [^ ]+$" actual
else
- grep -E "^hint:\s+git worktree add --orphan \S+\s*$" actual
-+ grep -E "^hint:[[:space:]]+git worktree add --orphan [^[:space:]]+[[:space:]]*$" actual
++ grep -E "^hint:[[:blank:]]+git worktree add --orphan [^ ]+$" actual
fi
'
@@ t/t2400-worktree-add.sh: test_dwim_orphan () {
local fetch_error_text="fatal: No local or remote refs exist despite at least one remote" &&
local orphan_hint="hint: If you meant to create a worktree containing a new orphan branch" &&
- local invalid_ref_regex="^fatal: invalid reference:\s\+.*" &&
-+ local invalid_ref_regex="^fatal: invalid reference:[[:space:]]\+.*" &&
++ local invalid_ref_regex="^fatal: invalid reference: .*" &&
local bad_combo_regex="^fatal: '[a-z-]\+' and '[a-z-]\+' cannot be used together" &&
local git_ns="repo" &&
@@ t/t2400-worktree-add.sh: test_dwim_orphan () {
- headpath=$(git $dashc_args rev-parse --sq --path-format=absolute --git-path HEAD) &&
+ grep "$invalid_ref_regex" actual &&
+ ! grep "$orphan_hint" actual
+ else
+- headpath=$(git $dashc_args rev-parse --sq --path-format=absolute --git-path HEAD) &&
++ headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
- grep "HEAD path:\s*.$headpath." actual &&
- grep "HEAD contents:\s*.$headcontents." actual &&
-+ grep "HEAD path:[[:space:]]*.$headpath." actual &&
-+ grep "HEAD contents:[[:space:]]*.$headcontents." actual &&
++ grep "HEAD path: .$headpath." actual &&
++ grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&t/t2400-worktree-add.sh | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/t/t2400-worktree-add.sh b/t/t2400-worktree-add.sh index 0ac468e69e..1b693dfca9 100755 --- a/t/t2400-worktree-add.sh +++ b/t/t2400-worktree-add.sh @@ -417,9 +417,9 @@ test_wt_add_orphan_hint () { grep "hint: If you meant to create a worktree containing a new orphan branch" actual && if [ $use_branch -eq 1 ] then - grep -E "^hint:\s+git worktree add --orphan -b \S+ \S+\s*$" actual + grep -E "^hint:[[:blank:]]+git worktree add --orphan -b [^ ]+ [^ ]+$" actual else - grep -E "^hint:\s+git worktree add --orphan \S+\s*$" actual + grep -E "^hint:[[:blank:]]+git worktree add --orphan [^ ]+$" actual fi ' @@ -709,7 +709,7 @@ test_dwim_orphan () { local info_text="No possible source branch, inferring '--orphan'" && local fetch_error_text="fatal: No local or remote refs exist despite at least one remote" && local orphan_hint="hint: If you meant to create a worktree containing a new orphan branch" && - local invalid_ref_regex="^fatal: invalid reference:\s\+.*" && + local invalid_ref_regex="^fatal: invalid reference: .*" && local bad_combo_regex="^fatal: '[a-z-]\+' and '[a-z-]\+' cannot be used together" && local git_ns="repo" && @@ -995,11 +995,11 @@ test_dwim_orphan () { grep "$invalid_ref_regex" actual && ! grep "$orphan_hint" actual else - headpath=$(git $dashc_args rev-parse --sq --path-format=absolute --git-path HEAD) && + headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) && headcontents=$(cat "$headpath") && grep "HEAD points to an invalid (or orphaned) reference" actual && - grep "HEAD path:\s*.$headpath." actual && - grep "HEAD contents:\s*.$headcontents." actual && + grep "HEAD path: .$headpath." actual && + grep "HEAD contents: .$headcontents." actual && grep "$orphan_hint" actual && ! grep "$info_text" actual fi &&
-- 2.39.3