]> git.ipfire.org Git - thirdparty/git.git/commitdiff
t9811-git-p4-label-import: fix pipeline negation
authorSZEDER Gábor <szeder.dev@gmail.com>
Wed, 13 Mar 2019 12:24:19 +0000 (13:24 +0100)
committerJunio C Hamano <gitster@pobox.com>
Thu, 14 Mar 2019 03:34:40 +0000 (12:34 +0900)
In 't9811-git-p4-label-import.sh' the test 'tag that cannot be
exported' runs

  !(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 [1]:

  "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.

[1] http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_09_02

Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t9811-git-p4-label-import.sh

index b70e81c3cd28d824a4f4aaa758914a60bcdfd562..c1446f26aba59e19b1610652a1db449e8bddca92 100755 (executable)
@@ -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
        )
 '