#                                                                    -*-perl-*-
$description = "Check GNU make export/unexport commands.";

$details = "";

# The test driver cleans out our environment for us so we don't have to worry
# about that here.

&run_make_test('
FOO = foo
BAR = bar
BOZ = boz

export BAZ = baz
export BOZ

BITZ = bitz
BOTZ = botz

export BITZ BOTZ
unexport BOTZ

ifdef EXPORT_ALL
export
endif

ifdef UNEXPORT_ALL
unexport
endif

ifdef EXPORT_ALL_PSEUDO
.EXPORT_ALL_VARIABLES:
endif

all:
	@echo "FOO=$(FOO) BAR=$(BAR) BAZ=$(BAZ) BOZ=$(BOZ) BITZ=$(BITZ) BOTZ=$(BOTZ)"
	@echo "FOO=$$FOO BAR=$$BAR BAZ=$$BAZ BOZ=$$BOZ BITZ=$$BITZ BOTZ=$$BOTZ"
',
           '', "FOO=foo BAR=bar BAZ=baz BOZ=boz BITZ=bitz BOTZ=botz
FOO= BAR= BAZ=baz BOZ=boz BITZ=bitz BOTZ=\n");

# TEST 1: make sure vars inherited from the parent are exported

$extraENV{FOO} = 1;

&run_make_test(undef, '', "FOO=foo BAR=bar BAZ=baz BOZ=boz BITZ=bitz BOTZ=botz
FOO=foo BAR= BAZ=baz BOZ=boz BITZ=bitz BOTZ=\n");

# TEST 2: global export.  Explicit unexport takes precedence.

run_make_test(undef, "EXPORT_ALL=1" ,
              "FOO=foo BAR=bar BAZ=baz BOZ=boz BITZ=bitz BOTZ=botz
FOO=foo BAR=bar BAZ=baz BOZ=boz BITZ=bitz BOTZ=\n");

# TEST 3: global unexport.  Explicit export takes precedence.

&run_make_test(undef, "UNEXPORT_ALL=1",
               "FOO=foo BAR=bar BAZ=baz BOZ=boz BITZ=bitz BOTZ=botz
FOO= BAR= BAZ=baz BOZ=boz BITZ=bitz BOTZ=\n");

# TEST 4: both: in the above makefile the unexport comes last so that rules.

&run_make_test(undef, "EXPORT_ALL=1 UNEXPORT_ALL=1",
               "FOO=foo BAR=bar BAZ=baz BOZ=boz BITZ=bitz BOTZ=botz
FOO= BAR= BAZ=baz BOZ=boz BITZ=bitz BOTZ=\n");

# TEST 5: test the pseudo target.

&run_make_test(undef, "EXPORT_ALL_PSEUDO=1",
               "FOO=foo BAR=bar BAZ=baz BOZ=boz BITZ=bitz BOTZ=botz
FOO=foo BAR=bar BAZ=baz BOZ=boz BITZ=bitz BOTZ=\n");

# TEST 6: Test the expansion of variables inside export

&run_make_test('
foo = f-ok
bar = b-ok

FOO = foo
F = f

BAR = bar
B = b

export $(FOO)
export $(B)ar

all:
	@echo foo=$(foo) bar=$(bar)
	@echo foo=$$foo bar=$$bar
',
             "", "foo=f-ok bar=b-ok\nfoo=f-ok bar=b-ok\n");

# TEST 7: Test the expansion of variables inside unexport

&run_make_test('
foo = f-ok
bar = b-ok

FOO = foo
F = f

BAR = bar
B = b

export foo bar

unexport $(FOO)
unexport $(B)ar

all:
	@echo foo=$(foo) bar=$(bar)
	@echo foo=$$foo bar=$$bar
',
              '', "foo=f-ok bar=b-ok\nfoo= bar=\n");

# TEST 7: Test exporting multiple variables on the same line

&run_make_test('
A = a
B = b
C = c
D = d
E = e
F = f
G = g
H = h
I = i
J = j

SOME = A B C

export F G H I J

export D E $(SOME)

all: ; @echo A=$$A B=$$B C=$$C D=$$D E=$$E F=$$F G=$$G H=$$H I=$$I J=$$J
',
               '', "A=a B=b C=c D=d E=e F=f G=g H=h I=i J=j\n");

# TEST 8: Test unexporting multiple variables on the same line

@extraENV{qw(A B C D E F G H I J)} = qw(1 2 3 4 5 6 7 8 9 10);

&run_make_test('
A = a
B = b
C = c
D = d
E = e
F = f
G = g
H = h
I = i
J = j

SOME = A B C

unexport F G H I J

unexport D E $(SOME)

all: ; @echo A=$$A B=$$B C=$$C D=$$D E=$$E F=$$F G=$$G H=$$H I=$$I J=$$J
',
               '', "A= B= C= D= E= F= G= H= I= J=\n");

# TEST 9: Check setting a variable named "export"

&run_make_test('
export = 123
export export
export export = 456
a: ; @echo "\$$(export)=$(export) / \$$export=$$export"
',
               '', "\$(export)=456 / \$export=456\n");

# TEST 9: Check "export" as a target

&run_make_test('
a: export
export: ; @echo "$@"
',
               '', "export\n");

# This tells the test driver that the perl test script executed properly.
1;
