[PATCH 11/11] t9811-git-p4-label-import: fix pipeline negation
- Date: Wed, 13 Mar 2019 13:24:19 +0100
- From: SZEDER Gábor <szeder.dev@xxxxxxxxx>
- Subject: [PATCH 11/11] t9811-git-p4-label-import: fix pipeline negation
In 't9811-git-p4-label-import.sh' the test 'tag that cannot be
!(p4 labels | grep GIT_TAG_ON_A_BRANCH)
to check that the given string is not printed by 'p4 labels'. This is
problematic, because according to POSIX :
"If the pipeline begins with the reserved word ! and command1 is a
subshell command, the application shall ensure that the ( operator
at the beginning of command1 is separated from the ! by one or more
<blank> characters. The behavior of the reserved word ! immediately
followed by the ( operator is unspecified."
While most common shells still interpret this '!' as "negate the exit
code of the last command in the pipeline", 'mksh/lksh' don't and
interpret it as a negative file name pattern instead. As a result
they attempt to run a command made up of the pathnames in the current
directory (it contains a single directory called 'main'), which, of
course, fails the test.
We could fix it simply by adding a space between the '!' and '(', but
instead let's fix it by removing the unnecessary subshell.
Signed-off-by: SZEDER Gábor <szeder.dev@xxxxxxxxx>
t/t9811-git-p4-label-import.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/t/t9811-git-p4-label-import.sh b/t/t9811-git-p4-label-import.sh
index b70e81c3cd..c1446f26ab 100755
@@ -191,7 +191,7 @@ test_expect_success 'tag that cannot be exported' '
cd "$cli" &&
p4 sync ... &&
- !(p4 labels | grep GIT_TAG_ON_A_BRANCH)
+ ! p4 labels | grep GIT_TAG_ON_A_BRANCH