From 8572d6adf04d397505770b0b0d5cfd91cf6a92a8 Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Mon, 8 Jul 2002 02:26:47 +0000 Subject: Major updates in preparation for 3.80. New version of the manual, put into the doc subdir. Enhancements: $(eval ...) and $(value ...) functions, various bug fixes, etc. See the ChangeLog. More to come. --- tests/ChangeLog | 6 ++++ tests/scripts/functions/eval | 60 +++++++++++++++++++++++++++++++++++ tests/scripts/functions/value | 30 ++++++++++++++++++ tests/scripts/variables/MAKEFILE_LIST | 30 ++++++++++++++++++ tests/scripts/variables/flavors | 17 ++++++++++ 5 files changed, 143 insertions(+) create mode 100644 tests/scripts/functions/eval create mode 100644 tests/scripts/functions/value create mode 100644 tests/scripts/variables/MAKEFILE_LIST (limited to 'tests') diff --git a/tests/ChangeLog b/tests/ChangeLog index b38d5db..aa5f78d 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,9 @@ +2002-07-07 Paul D. Smith + + * scripts/functions/eval: Test new function. + * scripts/functions/value: Test new function. + * scripts/variables/MAKEFILE_LIST: Test new variable. + 2002-04-28 Paul D. Smith * scripts/functions/call: New test: transitive closure diff --git a/tests/scripts/functions/eval b/tests/scripts/functions/eval new file mode 100644 index 0000000..0d5e3b8 --- /dev/null +++ b/tests/scripts/functions/eval @@ -0,0 +1,60 @@ +# -*-perl-*- + +$description = "Test the eval function."; + +$details = "This is a test of the eval function in GNU make. +This function will evaluate inline makefile syntax and incorporate the +results into its internal database.\n"; + +open(MAKEFILE,"> $makefile"); + +print MAKEFILE <<'EOF'; +define Y + all:: ; @echo $AA + A = B +endef + +X = $(eval $(value Y)) + +$(eval $(shell echo A = A)) +$(eval $(Y)) +$(eval A = C) +$(eval $(X)) +EOF + +close(MAKEFILE); + +&run_make_with_options($makefile, "", &get_logfile); + +# Create the answer to what should be produced by this Makefile +$answer = "AA\nBA\n"; + +&compare_output($answer,&get_logfile(1)); + +# Test to make sure defining variables when we have extra scope pushed works +# as expected. + +$makefile2 = &get_tmpfile; + +open(MAKEFILE,"> $makefile2"); + +print MAKEFILE <<'EOF'; +VARS = A B + +VARSET = $(1) = $(2) + +$(foreach v,$(VARS),$(eval $(call VARSET,$v,$v))) + +all: ; @echo A = $(A) B = $(B) +EOF + +close(MAKEFILE); + +&run_make_with_options($makefile2, "", &get_logfile); + +# Create the answer to what should be produced by this Makefile +$answer = "A = A B = B\n"; + +&compare_output($answer,&get_logfile(1)); + +1; diff --git a/tests/scripts/functions/value b/tests/scripts/functions/value new file mode 100644 index 0000000..8e1a6f0 --- /dev/null +++ b/tests/scripts/functions/value @@ -0,0 +1,30 @@ +# -*-perl-*- + +$description = "Test the value function."; + +$details = "This is a test of the value function in GNU make. +This function will evaluate to the value of the named variable with no +further expansion performed on it.\n"; + +open(MAKEFILE,"> $makefile"); + +print MAKEFILE <<'EOF'; +export FOO = foo + +recurse = FOO = $FOO +static := FOO = $(value FOO) + +all: ; @echo $(recurse) $(value recurse) $(static) $(value static) +EOF + +close(MAKEFILE); + +&run_make_with_options($makefile, "", &get_logfile); + +# Create the answer to what should be produced by this Makefile +$answer = "FOO = OO FOO = foo FOO = foo FOO = foo\n"; + + +&compare_output($answer,&get_logfile(1)); + +1; diff --git a/tests/scripts/variables/MAKEFILE_LIST b/tests/scripts/variables/MAKEFILE_LIST new file mode 100644 index 0000000..076e42d --- /dev/null +++ b/tests/scripts/variables/MAKEFILE_LIST @@ -0,0 +1,30 @@ +# -*-perl-*- + +$description = "Test the MAKEFILE_LIST variable."; + +$makefile2 = &get_tmpfile; + +open(MAKEFILE,"> $makefile"); +print MAKEFILE < $makefile2"); +print MAKEFILE "m2 := \$(MAKEFILE_LIST)\n"; +close(MAKEFILE); + + +&run_make_with_options($makefile, "", &get_logfile); +$answer = "$makefile\n$makefile $makefile2\n$makefile $makefile2\n"; +&compare_output($answer,&get_logfile(1)); + +1; diff --git a/tests/scripts/variables/flavors b/tests/scripts/variables/flavors index 02dca0b..7c98afd 100644 --- a/tests/scripts/variables/flavors +++ b/tests/scripts/variables/flavors @@ -37,6 +37,16 @@ define endef endif +define outer + define inner + A = B + endef +endef + +$(eval $(outer)) + +outer: ; @echo $(inner) + EOF # END of Contents of MAKEFILE @@ -64,5 +74,12 @@ $answer = "later foo bar\n"; $answer = "$makefile:23: *** empty variable name. Stop.\n"; &compare_output($answer, &get_logfile(1)); +# TEST #4 +# ------- + +&run_make_with_options($makefile, "outer", &get_logfile); +$answer = "A = B\n"; +&compare_output($answer, &get_logfile(1)); + 1; -- cgit v1.2.3