#                                                                    -*-perl-*-
# $Id$

$description = "Test the foreach function.";

$details = "This is a test of the foreach function in gnu make.
This function starts with a space separated list of
names and a variable. Each name in the list is substituted
into the variable and the given text evaluated. The general
form of the command is $(foreach var,\$list,\$text). Several
types of foreach loops are tested\n";


# TEST 0

# Set an environment variable that we can test in the makefile.
$ENV{FOOFOO} = 'foo foo';

run_make_test("space = ' '".'
null :=
auto_var = udef space CC null FOOFOO MAKE foo CFLAGS WHITE @ <
foo = bletch null @ garf
av = $(foreach var, $(auto_var), $(origin $(var)) )
override WHITE := BLACK
for_var = $(addsuffix .c,foo $(null) $(foo) $(space) $(av) )
fe = $(foreach var2, $(for_var),$(subst .c,.o, $(var2) ) )
all: auto for2
auto : ; @echo $(av)
for2: ; @echo $(fe)',
              '-e WHITE=WHITE CFLAGS=',
              "undefined file default file environment override default file command line override automatic automatic
foo.o bletch.o null.o @.o garf.o .o    .o undefined.o file.o default.o file.o environment.o override.o default.o file.o command.o line.o override.o automatic.o automatic.o");

# TEST 1: Test that foreach variables take precedence over global
# variables in a global scope (like inside an eval).  Tests bug #11913

run_make_test('
.PHONY: all target
all: target

x := BAD

define mktarget
target: x := $(x)
target: ; @echo "$(x)"
endef

x := GLOBAL

$(foreach x,FOREACH,$(eval $(value mktarget)))',
              '',
              'FOREACH');

# Allow variable names with trailing space
run_make_test(q!
$(foreach \
  a \
, b c d \
, $(info $a))
all:;@:
!,
              "", "b\nc\nd\n");

# Allow empty variable names.  We still expand the body.

run_make_test('
x = $(foreach ,1 2 3,a)
y := $x

all: ; @echo $y',
              '', "a a a\n");

# Check some error conditions.

run_make_test('
x = $(foreach )
y = $x

all: ; @echo $y',
              '',
              "#MAKEFILE#:2: *** insufficient number of arguments (1) to function 'foreach'.  Stop.",
              512);

run_make_test('
x = $(foreach x,y)
y := $x

all: ; @echo $y',
              '',
              "#MAKEFILE#:2: *** insufficient number of arguments (2) to function 'foreach'.  Stop.",
              512);

1;
