From 74ec8cf6747a60885e15d4c36e6b47bc37764748 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?SZEDER=20G=C3=A1bor?= Date: Wed, 13 Mar 2019 13:24:19 +0100 Subject: [PATCH] t9811-git-p4-label-import: fix pipeline negation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 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 Signed-off-by: Junio C Hamano --- 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 --- a/t/t9811-git-p4-label-import.sh +++ b/t/t9811-git-p4-label-import.sh @@ -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 ) '