diff options
author | Paul Smith <psmith@gnu.org> | 2006-02-15 23:54:42 +0000 |
---|---|---|
committer | Paul Smith <psmith@gnu.org> | 2006-02-15 23:54:42 +0000 |
commit | 0806a403d65ef6a7f16e2c17aa8286100ebad5d7 (patch) | |
tree | efb7503681a70739ad6e4659ebefc701975ced7f /tests/scripts | |
parent | 86af3872a910e314d20ef911fad1819ad90c1291 (diff) | |
download | gunmake-0806a403d65ef6a7f16e2c17aa8286100ebad5d7.tar.gz |
Fix Savannah bug #106: keep separate track of which variable we are
expanding, and use that info when generating error messages instead of
the file info, where appropriate.
Diffstat (limited to 'tests/scripts')
-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 |
6 files changed, 183 insertions, 40 deletions
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; |