Test t5560: Fix test when run with dash
authorTarmigan Casebolt <tarmigan+git@gmail.com>
Fri, 15 Jan 2010 06:44:02 +0000 (22:44 -0800)
committerJunio C Hamano <gitster@pobox.com>
Sat, 16 Jan 2010 05:05:35 +0000 (21:05 -0800)
A command invocation preceded by variable assignments, i.e.

VAR1=VAL1 VAR2=VAL2 ... command args

are implemented by dash and ksh in such a way not to export these
variables, and keep the values after the command finishes, when the
command is a shell function.  POSIX.1 "2.9.5 Function Definition Command"
specifies this behaviour.

Many shells however treat this construct the same way as they are calling
external commands.  They export the variables during the duration of
command, and resets their values after command returns.

The test relied on the behaviour of the latter kind.

Reported-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Tarmigan Casebolt <tarmigan+git@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t5560-http-backend-noserver.sh

index 5f8c88e26112fd39a0a2d1926f300fb944ca9032..44885b850c4a1c3a09b8b078a643cf7cd8918213 100755 (executable)
@@ -14,8 +14,9 @@ run_backend() {
 }
 
 GET() {
-       REQUEST_METHOD="GET" \
+       export REQUEST_METHOD="GET" &&
        run_backend "/repo.git/$1" &&
+       unset REQUEST_METHOD &&
        if ! grep "Status" act.out >act
        then
                printf "Status: 200 OK\r\n" >act
@@ -25,9 +26,11 @@ GET() {
 }
 
 POST() {
-       REQUEST_METHOD="POST" \
-       CONTENT_TYPE="application/x-$1-request" \
+       export REQUEST_METHOD="POST" &&
+       export CONTENT_TYPE="application/x-$1-request" &&
        run_backend "/repo.git/$1" "$2" &&
+       unset REQUEST_METHOD &&
+       unset CONTENT_TYPE &&
        if ! grep "Status" act.out >act
        then
                printf "Status: 200 OK\r\n" >act
@@ -43,13 +46,15 @@ log_div() {
 . "$TEST_DIRECTORY"/t556x_common
 
 expect_aliased() {
+       export REQUEST_METHOD="GET" &&
        if test $1 = 0; then
-               REQUEST_METHOD=GET run_backend "$2"
+               run_backend "$2"
        else
-               REQUEST_METHOD=GET run_backend "$2" &&
+               run_backend "$2" &&
                echo "fatal: '$2': aliased" >exp.err &&
                test_cmp exp.err act.err
        fi
+       unset REQUEST_METHOD
 }
 
 test_expect_success 'http-backend blocks bad PATH_INFO' '