diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/ChangeLog | 12 | ||||
-rw-r--r-- | tests/scripts/functions/error | 22 | ||||
-rw-r--r-- | tests/scripts/functions/foreach | 21 | ||||
-rw-r--r-- | tests/scripts/functions/warning | 2 | ||||
-rw-r--r-- | tests/scripts/functions/word | 107 | ||||
-rw-r--r-- | tests/scripts/options/warn-undefined-variables | 25 | ||||
-rw-r--r-- | tests/scripts/variables/negative | 46 |
7 files changed, 195 insertions, 40 deletions
diff --git a/tests/ChangeLog b/tests/ChangeLog index 31dcbb2..c1342cb 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,15 @@ +2006-02-15 Paul D. Smith <psmith@gnu.org> + + * scripts/functions/error: Make sure filename/lineno information + is related to where the error is expanded, not where it's set. + * scripts/functions/warning: Ditto. + * scripts/functions/foreach: Check for different error conditions. + * scripts/functions/word: Ditto. + * scripts/variables/negative: Test some variable reference failure + conditions. + * scripts/options/warn-undefined-variables: Test the + --warn-undefined-variables flag. + 2006-02-09 Paul D. Smith <psmith@gnu.org> * run_make_tests.pl (set_more_defaults): Update valgrind support diff --git a/tests/scripts/functions/error b/tests/scripts/functions/error index ca9b4e4..0d61177 100644 --- a/tests/scripts/functions/error +++ b/tests/scripts/functions/error @@ -1,3 +1,5 @@ +# -*-Perl-*- + $description = "\ The following test creates a makefile to test the error function."; @@ -5,7 +7,8 @@ $details = ""; open(MAKEFILE,"> $makefile"); -print MAKEFILE <<'EOF'; +print MAKEFILE 'err = $(error Error found!) + ifdef ERROR1 $(error error is $(ERROR1)) endif @@ -25,32 +28,39 @@ endif some: ; @echo Some stuff -EOF +testvar: ; @: $(err) +'; close(MAKEFILE); # Test #1 &run_make_with_options($makefile, "ERROR1=yes", &get_logfile, 512); -$answer = "$makefile:2: *** error is yes. Stop.\n"; +$answer = "$makefile:4: *** error is yes. Stop.\n"; &compare_output($answer,&get_logfile(1)); # Test #2 &run_make_with_options($makefile, "ERROR2=no", &get_logfile, 512); -$answer = "$makefile:6: *** error is no. Stop.\n"; +$answer = "$makefile:8: *** error is no. Stop.\n"; &compare_output($answer,&get_logfile(1)); # Test #3 &run_make_with_options($makefile, "ERROR3=maybe", &get_logfile, 512); -$answer = "Some stuff\n$makefile:10: *** error is maybe. Stop.\n"; +$answer = "Some stuff\n$makefile:12: *** error is maybe. Stop.\n"; &compare_output($answer,&get_logfile(1)); # Test #4 &run_make_with_options($makefile, "ERROR4=definitely", &get_logfile, 512); -$answer = "Some stuff\n$makefile:14: *** error is definitely. Stop.\n"; +$answer = "Some stuff\n$makefile:16: *** error is definitely. Stop.\n"; +&compare_output($answer,&get_logfile(1)); + +# Test #5 + +&run_make_with_options($makefile, "testvar", &get_logfile, 512); +$answer = "$makefile:22: *** Error found!. Stop.\n"; &compare_output($answer,&get_logfile(1)); # This tells the test driver that the perl test script executed properly. diff --git a/tests/scripts/functions/foreach b/tests/scripts/functions/foreach index 1fde12e..904c160 100644 --- a/tests/scripts/functions/foreach +++ b/tests/scripts/functions/foreach @@ -57,4 +57,25 @@ $(foreach x,FOREACH,$(eval $(value mktarget)))', '', 'FOREACH'); + +# TEST 2: 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 ) +y := $x + +all: ; @echo $y', + '', + "#MAKEFILE#:2: *** insufficient number of arguments (1) to function `foreach'. Stop.", + 512); + 1; diff --git a/tests/scripts/functions/warning b/tests/scripts/functions/warning index ac0ad64..cd452d4 100644 --- a/tests/scripts/functions/warning +++ b/tests/scripts/functions/warning @@ -1,3 +1,5 @@ +# -*-Perl-*- + $description = "\ The following test creates a makefile to test the warning function."; diff --git a/tests/scripts/functions/word b/tests/scripts/functions/word index 398cd65..34527ea 100644 --- a/tests/scripts/functions/word +++ b/tests/scripts/functions/word @@ -46,11 +46,7 @@ $answer = "6\n" # Test error conditions -$makefile2 = &get_tmpfile; - -open(MAKEFILE, "> $makefile2"); -print MAKEFILE <<'EOF'; -FOO = foo bar biz baz +run_make_test('FOO = foo bar biz baz word-e1: ; @echo $(word ,$(FOO)) word-e2: ; @echo $(word abc ,$(FOO)) @@ -58,35 +54,78 @@ word-e3: ; @echo $(word 1a,$(FOO)) wordlist-e1: ; @echo $(wordlist ,,$(FOO)) wordlist-e2: ; @echo $(wordlist abc ,,$(FOO)) -wordlist-e3: ; @echo $(wordlist 1, 12a ,$(FOO)) - -EOF - -close(MAKEFILE); - -&run_make_with_options($makefile2, 'word-e1', &get_logfile, 512); -$answer = "$makefile2:3: *** non-numeric first argument to `word' function: ''. Stop.\n"; -&compare_output($answer, &get_logfile(1)); - -&run_make_with_options($makefile2, 'word-e2', &get_logfile, 512); -$answer = "$makefile2:4: *** non-numeric first argument to `word' function: 'abc '. Stop.\n"; -&compare_output($answer, &get_logfile(1)); - -&run_make_with_options($makefile2, 'word-e3', &get_logfile, 512); -$answer = "$makefile2:5: *** non-numeric first argument to `word' function: '1a'. Stop.\n"; -&compare_output($answer, &get_logfile(1)); - -&run_make_with_options($makefile2, 'wordlist-e1', &get_logfile, 512); -$answer = "$makefile2:7: *** non-numeric first argument to `wordlist' function: ''. Stop.\n"; -&compare_output($answer, &get_logfile(1)); - -&run_make_with_options($makefile2, 'wordlist-e2', &get_logfile, 512); -$answer = "$makefile2:8: *** non-numeric first argument to `wordlist' function: 'abc '. Stop.\n"; -&compare_output($answer, &get_logfile(1)); - -&run_make_with_options($makefile2, 'wordlist-e3', &get_logfile, 512); -$answer = "$makefile2:9: *** non-numeric second argument to `wordlist' function: ' 12a '. Stop.\n"; -&compare_output($answer, &get_logfile(1)); +wordlist-e3: ; @echo $(wordlist 1, 12a ,$(FOO))', + 'word-e1', + "#MAKEFILE#:3: *** non-numeric first argument to `word' function: ''. Stop.", + 512); + +run_make_test(undef, + 'word-e2', + "#MAKEFILE#:4: *** non-numeric first argument to `word' function: 'abc '. Stop.", + 512); + +run_make_test(undef, + 'word-e3', + "#MAKEFILE#:5: *** non-numeric first argument to `word' function: '1a'. Stop.", + 512); + +run_make_test(undef, + 'wordlist-e1', + "#MAKEFILE#:7: *** non-numeric first argument to `wordlist' function: ''. Stop.", + 512); + +run_make_test(undef, + 'wordlist-e2', + "#MAKEFILE#:8: *** non-numeric first argument to `wordlist' function: 'abc '. Stop.", + 512); + +run_make_test(undef, + 'wordlist-e3', + "#MAKEFILE#:9: *** non-numeric second argument to `wordlist' function: ' 12a '. Stop.", + 512); + +# Test error conditions again, but this time in a variable reference + +run_make_test('FOO = foo bar biz baz + +W = $(word $x,$(FOO)) +WL = $(wordlist $s,$e,$(FOO)) + +word-e: ; @echo $(W) +wordlist-e: ; @echo $(WL)', + 'word-e x=', + "#MAKEFILE#:3: *** non-numeric first argument to `word' function: ''. Stop.", + 512); + +run_make_test(undef, + 'word-e x=abc', + "#MAKEFILE#:3: *** non-numeric first argument to `word' function: 'abc'. Stop.", + 512); + +run_make_test(undef, + 'word-e x=0', + "#MAKEFILE#:3: *** first argument to `word' function must be greater than 0. Stop.", + 512); + +run_make_test(undef, + 'wordlist-e s= e=', + "#MAKEFILE#:4: *** non-numeric first argument to `wordlist' function: ''. Stop.", + 512); + +run_make_test(undef, + 'wordlist-e s=abc e=', + "#MAKEFILE#:4: *** non-numeric first argument to `wordlist' function: 'abc'. Stop.", + 512); + +run_make_test(undef, + 'wordlist-e s=4 e=12a', + "#MAKEFILE#:4: *** non-numeric second argument to `wordlist' function: '12a'. Stop.", + 512); + +run_make_test(undef, + 'wordlist-e s=0 e=12', + "#MAKEFILE#:4: *** invalid first argument to `wordlist' function: `0'. Stop.", + 512); # TEST #8 -- test $(firstword ) diff --git a/tests/scripts/options/warn-undefined-variables b/tests/scripts/options/warn-undefined-variables new file mode 100644 index 0000000..34bfaea --- /dev/null +++ b/tests/scripts/options/warn-undefined-variables @@ -0,0 +1,25 @@ +# -*-perl-*- + +$description = "Test the --warn-undefined-variables option."; + +$details = "Verify that warnings are printed for referencing undefined variables."; + +# Without --warn-undefined-variables, nothing should happen +run_make_test(' +EMPTY = +EREF = $(EMPTY) +UREF = $(UNDEFINED) + +SEREF := $(EREF) +SUREF := $(UREF) + +all: ; @echo ref $(EREF) $(UREF)', + '', 'ref'); + +# With --warn-undefined-variables, it should warn me +run_make_test(undef, '--warn-undefined-variables', + "#MAKEFILE#:7: warning: undefined variable `UNDEFINED' +#MAKEFILE#:9: warning: undefined variable `UNDEFINED' +ref"); + +1; diff --git a/tests/scripts/variables/negative b/tests/scripts/variables/negative new file mode 100644 index 0000000..16a72b8 --- /dev/null +++ b/tests/scripts/variables/negative @@ -0,0 +1,46 @@ +# -*-perl-*- + +$description = "Run some negative tests (things that should fail)."; + +# TEST #0 +# Check that non-terminated variable references are detected (and +# reported using the best filename/lineno info +run_make_test(' +foo = bar +x = $(foo +y = $x + +all: ; @echo $y +', + '', '#MAKEFILE#:3: *** unterminated variable reference. Stop.', + 512); + +# TEST #1 +# Bogus variable value passed on the command line. +run_make_test(undef, + 'x=\$\(other', + '#MAKEFILE#:4: *** unterminated variable reference. Stop.', + 512); + +# TEST #2 +# Again, but this time while reading the makefile. +run_make_test(' +foo = bar +x = $(foo +y = $x + +z := $y + +all: ; @echo $y +', + '', '#MAKEFILE#:3: *** unterminated variable reference. Stop.', + 512); + +# TEST #3 +# Bogus variable value passed on the command line. +run_make_test(undef, + 'x=\$\(other', + '#MAKEFILE#:4: *** unterminated variable reference. Stop.', + 512); + +1; |