threads / patch / 30633

patcht7403-*.sh: Avoid use of the nonportable '==' operator

Subject: [PATCH] t7403-*.sh: Avoid use of the nonportable '==' operator

## tl;dr

4 messages between May 26, 2012 and May 27, 2012. Diffs are folded; open one to read it.

replies: 3people: 3as markdown or json

Ramsay Jones· May 26, 2012, 16:51 UTC · lore

Some shells, including dash, do not support using the '==' string equality operator. This results in the failure of tests 7-12 with 'test' complaining of an "unexpected operator".

In order to suppress the errors, we replace the '==' operator with '=', which must be supported by any POSIX shell.

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
---
Hi Jon,

If you need to re-roll your patches from the 'js/submodule-relative' branch (commits 3f4542e and efa4c90), could you please squash this fix into them.

Thanks!

ATB, Ramsay Jones

 t/t7403-submodule-sync.sh |   12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)
Show changes to t/t7403-submodule-sync.sh +6 −6
diff --git a/t/t7403-submodule-sync.sh b/t/t7403-submodule-sync.sh
index 583fe21..3d85739 100755
--- a/t/t7403-submodule-sync.sh
+++ b/t/t7403-submodule-sync.sh
@@ -93,7 +93,7 @@ test_expect_success '"git submodule sync" handles origin URL of the form foo' '
 	 git remote set-url origin foo
 	 git submodule sync &&
 	(cd submodule &&
-	 test "$(git config remote.origin.url)" == "../submodule"
+	 test "$(git config remote.origin.url)" = "../submodule"
 	)
 	)
 '
@@ -103,7 +103,7 @@ test_expect_success '"git submodule sync" handles origin URL of the form foo/bar
 	 git remote set-url origin foo/bar
 	 git submodule sync &&
 	(cd submodule &&
-	 test "$(git config remote.origin.url)" == "../foo/submodule"
+	 test "$(git config remote.origin.url)" = "../foo/submodule"
 	)
 	)
 '
@@ -113,7 +113,7 @@ test_expect_success '"git submodule sync" handles origin URL of the form ./foo'
 	 git remote set-url origin ./foo
 	 git submodule sync &&
 	(cd submodule &&
-	 test "$(git config remote.origin.url)" == "../submodule"
+	 test "$(git config remote.origin.url)" = "../submodule"
 	)
 	)
 '
@@ -123,7 +123,7 @@ test_expect_success '"git submodule sync" handles origin URL of the form ./foo/b
 	 git remote set-url origin ./foo/bar
 	 git submodule sync &&
 	(cd submodule &&
-	 test "$(git config remote.origin.url)" == "../foo/submodule"
+	 test "$(git config remote.origin.url)" = "../foo/submodule"
 	)
 	)
 '
@@ -133,7 +133,7 @@ test_expect_success '"git submodule sync" handles origin URL of the form ../foo'
 	 git remote set-url origin ../foo
 	 git submodule sync &&
 	(cd submodule &&
-	 test "$(git config remote.origin.url)" == "../../submodule"
+	 test "$(git config remote.origin.url)" = "../../submodule"
 	)
 	)
 '
@@ -143,7 +143,7 @@ test_expect_success '"git submodule sync" handles origin URL of the form ../foo/
 	 git remote set-url origin ../foo/bar
 	 git submodule sync &&
 	(cd submodule &&
-	 test "$(git config remote.origin.url)" == "../../foo/submodule"
+	 test "$(git config remote.origin.url)" = "../../foo/submodule"
 	)
 	)
 '
-- 
1.7.10
Jon Seymour· May 26, 2012, 22:21 UTC · re: Ramsay Jones · lore

Re: [PATCH] t7403-*.sh: Avoid use of the nonportable '==' operator

On Sun, May 27, 2012 at 2:51 AM, Ramsay Jones <ramsay@ramsay1.demon.co.uk> wrote:

Show 8 quoted lines
>
> Some shells, including dash, do not support using the '==' string
> equality operator. This results in the failure of tests 7-12 with
> 'test' complaining of an "unexpected operator".
>
> In order to suppress the errors, we replace the '==' operator with
> '=', which must be supported by any POSIX shell.
>
Thanks. I take it than an example of such a shell is dash?
BTW: the next iteration is more of a re-write than a re-roll because I
noticed some other issues (e.g. preventing git://hostname/repo being
silently transformed to git://subrepo in the case of a pathological
use of a submodule URL of the form ../../subrepo) and fixing this
required a change that required a more extensive suite of tests.
jon.
Junio C Hamano· May 27, 2012, 06:53 UTC · re: Ramsay Jones · lore

Re: [PATCH] t7403-*.sh: Avoid use of the nonportable '==' operator

Ramsay Jones <ramsay@ramsay1.demon.co.uk> writes:
> Some shells, including dash, do not support using the '==' string
> equality operator. This results in the failure of tests 7-12 with
> 'test' complaining of an "unexpected operator".

Thanks. You do not have to single-out dash. A shell script that uses "test $a == $b" is *buggy* and not conforming to POSIX.

Jon Seymour· May 27, 2012, 07:01 UTC · re: Junio C Hamano · lore

Re: [PATCH] t7403-*.sh: Avoid use of the nonportable '==' operator

On Sun, May 27, 2012 at 4:53 PM, Junio C Hamano <gitster@pobox.com> wrote:
Show 9 quoted lines
> Ramsay Jones <ramsay@ramsay1.demon.co.uk> writes:
>
>> Some shells, including dash, do not support using the '==' string
>> equality operator. This results in the failure of tests 7-12 with
>> 'test' complaining of an "unexpected operator".
>
> Thanks.  You do not have to single-out dash.
> A shell script that uses "test $a == $b" is *buggy* and not conforming to
> POSIX.

Yep. This slipped through because I happen to have reconfigured my /bin/sh to point to bash (frrom Ubuntu's default of dash) because of an issue with a product installation script. This shouldn't have been a problem if bash's POSIX mode was strict about rejecting == but bash doesn't seem to be strict about this.

Anyway, I have reverted /bin/sh to refer to dash so hopefully I won't be caught by this in future.

jon.

← back to recent threads