#                                                                    -*-perl-*-

$description = "Test BSD-style shell assignments (VAR != VAL) for variables.";

$details = "";

# TEST 0: Basic shell assignment (!=).

run_make_test('
.POSIX:

demo1!=printf \'  1   2 3\n4\n\n5 \n \n 6\n\n\n\n\'
demo2 != printf \'7 8\n \'
demo3 != printf \'$$(demo2)\'
demo4 != printf \' 2 3 \n\'
demo5 != printf \' 2 3 \n\n\'
all: ; @echo "<$(demo1)> <$(demo2)> <$(demo3)> <$(demo4)> <${demo5}>"
',
              '', "<  1   2 3 4  5     6   > <7 8  > <7 8  > < 2 3 > < 2 3  >\n");

# TEST 1: Handle '#' the same way as BSD make

run_make_test('
foo1!=echo bar#baz
hash != printf \'\043\'
foo2!= echo "bar$(hash)baz"

all: ; @echo "<$(foo1)> <$(hash)> <$(foo2)>"
',
              '', "<bar> <#> <bar#baz>\n");

# TEST 2: shell assignment variables (from !=) should be recursive.
# Note that variables are re-evaluated later, so the shell can output
# a value like $(XYZZY) as part of !=.  The $(XYZZY) will be EVALUATED
# when the value containing it is evaluated.  On the negative side, this
# means if you don't want this, you need to escape dollar signs as $$.
# On the positive side, it means that shell programs can output macros
# that are then evaluated as they are traditionally evaluated.. and that
# you can use traditional macro evaluation semantics to implement !=.

run_make_test('
XYZZY = fiddle-dee-dee
dollar = $$
VAR3 != printf \'%s\' \'$(dollar)(XYZZY)\'

all: ; @echo "<$(VAR3)>"
',
              '', "<fiddle-dee-dee>\n");


# TEST 3: Overrides invoke shell anyway; they just don't store the result
# in a way that is visible.

run_make_test('

override != echo abc > ,abc ; cat ,abc

all: ; @echo "<$(override)>" ; cat ,abc
',
              'override=xyz', "<xyz>\nabc\n");

unlink(',abc');


1;
