diff options
author | Paul Smith <psmith@gnu.org> | 2006-03-10 02:20:45 +0000 |
---|---|---|
committer | Paul Smith <psmith@gnu.org> | 2006-03-10 02:20:45 +0000 |
commit | 6d8d9b74d9c50cb07fe952ac0929f618e4280a55 (patch) | |
tree | 2ba40ec88c9a4f3445fbc8f6dc6a3de7760ac604 /tests | |
parent | afc4906acaeb7191e4ec085d7be4ca5b036b821d (diff) | |
download | gunmake-6d8d9b74d9c50cb07fe952ac0929f618e4280a55.tar.gz |
Numerous updates to tests for issues found on Cygwin and Windows.
Revert a fix for $? including non-existent files as it shows a bug
in the Linux kernel build. Give them a release to fix this.
Add some changes from Eli Z. for Windows changes.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/ChangeLog | 12 | ||||
-rw-r--r-- | tests/scripts/features/escape | 54 | ||||
-rw-r--r-- | tests/scripts/functions/foreach | 18 | ||||
-rw-r--r-- | tests/scripts/functions/origin | 44 | ||||
-rw-r--r-- | tests/scripts/options/symlinks | 9 | ||||
-rw-r--r-- | tests/scripts/variables/automatic | 19 | ||||
-rw-r--r-- | tests/test_driver.pl | 12 |
7 files changed, 83 insertions, 85 deletions
diff --git a/tests/ChangeLog b/tests/ChangeLog index 3db7cc3..05dfaec 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,15 @@ +2006-03-09 Paul Smith <psmith@gnu.org> + + * scripts/features/escape: Use "pre:" not "p:" to avoid conflicts + with DOS drive letters. Fixes Savannah bug #15947. + + * test_driver.pl (run_each_test): Set the status properly even + when a test fails to execute. Fixes Savannah bug #15942. + + * scripts/functions/foreach: Use a different environment variable + other than PATH to avoid differences with Windows platforms. + Fixes Savannah bug #15938. + 2006-03-05 Paul D. Smith <psmith@gnu.org> * run_make_tests.pl (set_more_defaults): Add CYGWIN_NT as a port diff --git a/tests/scripts/features/escape b/tests/scripts/features/escape index 88b372a..97a2994 100644 --- a/tests/scripts/features/escape +++ b/tests/scripts/features/escape @@ -6,55 +6,53 @@ Make sure that escaping of `:' works in target names. Make sure escaping of whitespace works in target names. Make sure that escaping of '#' works."; -open(MAKEFILE,"> $makefile"); - -print MAKEFILE <<'EOF'; -$(path)foo : ; @echo cp $^ $@ - -foo\ bar: ; @echo 'touch "$@"' - -sharp: foo\#bar.ext -foo\#bar.ext: ; @echo foo\#bar.ext = '$@' -EOF close(MAKEFILE); # TEST 1 -&run_make_with_options($makefile, "", &get_logfile); -$answer = "cp foo\n"; -&compare_output($answer,&get_logfile(1)); +run_make_test(' +$(path)foo : ; @echo "touch ($@)" + +foo\ bar: ; @echo "touch ($@)" + +sharp: foo\#bar.ext +foo\#bar.ext: ; @echo "foo#bar.ext = ($@)"', + '', + 'touch (foo)'); # TEST 2: This one should fail, since the ":" is unquoted. -&run_make_with_options($makefile, "path=p:", &get_logfile, 512); -$answer = "$makefile:1: *** target pattern contains no `%'. Stop.\n"; -&compare_output($answer,&get_logfile(1)); +run_make_test(undef, + 'path=pre:', + "#MAKEFILE#:2: *** target pattern contains no `%'. Stop.", + 512); # TEST 3: This one should work, since we escape the ":". -&run_make_with_options($makefile, "'path=p\\:'", &get_logfile, 0); -$answer = "cp p:foo\n"; -&compare_output($answer,&get_logfile(1)); +run_make_test(undef, + "'path=pre\\:'", + 'touch (pre:foo)'); # TEST 4: This one should fail, since the escape char is escaped. -&run_make_with_options($makefile, "'path=p\\\\:'", &get_logfile, 512); -$answer = "$makefile:1: *** target pattern contains no `%'. Stop.\n"; -&compare_output($answer,&get_logfile(1)); +run_make_test(undef, + "'path=pre\\\\:'", + "#MAKEFILE#:2: *** target pattern contains no `%'. Stop.", + 512); # TEST 5: This one should work -&run_make_with_options($makefile, "'foo bar'", &get_logfile, 0); -$answer = "touch \"foo bar\"\n"; -&compare_output($answer,&get_logfile(1)); +run_make_test(undef, + "'foo bar'", + 'touch (foo bar)'); # TEST 6: Test escaped comments -&run_make_with_options($makefile, "sharp", &get_logfile, 0); -$answer = "foo#bar.ext = foo#bar.ext\n"; -&compare_output($answer,&get_logfile(1)); +run_make_test(undef, + 'sharp', + 'foo#bar.ext = (foo#bar.ext)'); # This tells the test driver that the perl test script executed properly. 1; diff --git a/tests/scripts/functions/foreach b/tests/scripts/functions/foreach index 904c160..9d1c464 100644 --- a/tests/scripts/functions/foreach +++ b/tests/scripts/functions/foreach @@ -1,10 +1,7 @@ # -*-perl-*- +# $Id$ -# Updated 16 June 1993 variable "MAKE" is default was environment override -# For make 3.63 and above - -$description = "The following test creates a makefile to verify -test the foreach function."; +$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 @@ -16,14 +13,12 @@ types of foreach loops are tested\n"; # TEST 0 -# On WIN32 systems, the user's path is found in %Path% ($Path) -# -$pathvar = (($port_type eq 'Windows') ? "Path" : "PATH"); +# Set an environment variable that we can test in the makefile. +$extraENV{FOOFOO} = 'foo foo'; -run_make_test(" +run_make_test("space = ' '".' null := -space = ' ' -auto_var = udef space CC null $pathvar".' MAKE foo CFLAGS WHITE @ < +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 @@ -36,6 +31,7 @@ for2: ; @echo $(fe)', "undefined file default file environment 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 default.o file.o command.o line.o override.o automatic.o automatic.o"); +delete $extraENV{FOOFOO}; # TEST 1: Test that foreach variables take precedence over global # variables in a global scope (like inside an eval). Tests bug #11913 diff --git a/tests/scripts/functions/origin b/tests/scripts/functions/origin index 49e6f38..f7b7eb8 100644 --- a/tests/scripts/functions/origin +++ b/tests/scripts/functions/origin @@ -18,34 +18,24 @@ defined per the following list: # Set an environment variable $extraENV{MAKETEST} = 1; -open(MAKEFILE,"> $makefile"); - -print MAKEFILE <<EOF; +run_make_test(' foo := bletch garf -auto_var = udef CC MAKETEST MAKE foo CFLAGS WHITE \@ -av = \$(foreach var, \$(auto_var), \$(origin \$(var)) ) +auto_var = undefined CC MAKETEST MAKE foo CFLAGS WHITE @ +av = $(foreach var, $(auto_var), $(origin $(var)) ) override WHITE := BLACK all: auto -\t\@echo \$(origin undefined) -\t\@echo \$(origin CC) -\t\@echo \$(origin MAKETEST) -\t\@echo \$(origin MAKE) -\t\@echo \$(origin foo) -\t\@echo \$(origin CFLAGS) -\t\@echo \$(origin WHITE) -\t\@echo \$(origin \@) + @echo $(origin undefined) + @echo $(origin CC) + @echo $(origin MAKETEST) + @echo $(origin MAKE) + @echo $(origin foo) + @echo $(origin CFLAGS) + @echo $(origin WHITE) + @echo $(origin @) auto : -\t\@echo \$(av) -EOF - -close(MAKEFILE); - -&run_make_with_options($makefile, - "-e WHITE=WHITE CFLAGS=", - &get_logfile); - -# Create the answer to what should be produced by this Makefile -$answer = "undefined default environment default file command line override automatic + @echo $(av)', + '-e WHITE=WHITE CFLAGS=', + 'undefined default environment default file command line override automatic undefined default environment @@ -53,9 +43,9 @@ default file command line override -automatic\n"; - +automatic'); -&compare_output($answer,&get_logfile(1)); +# Reset an environment variable +delete $extraENV{MAKETEST}; 1; diff --git a/tests/scripts/options/symlinks b/tests/scripts/options/symlinks index 70cba3c..40d2564 100644 --- a/tests/scripts/options/symlinks +++ b/tests/scripts/options/symlinks @@ -10,7 +10,10 @@ $details = "Verify that symlink handling with and without -L works properly."; # (in that the symlink() function doesn't fail) but it really doesn't, so # check for it explicitly. -if ($port_type ne 'W32' && eval { symlink("",""); 1 }) { +if ($port_type eq 'W32' || !( eval { symlink("",""); 1 })) { + # This test is N/A + -1; +} else { # Set up a symlink sym -> dep # We'll make both dep and targ older than sym @@ -60,6 +63,6 @@ if ($port_type ne 'W32' && eval { symlink("",""); 1 }) { rmfiles('targ', 'sym'); -} -1; + 1; +} diff --git a/tests/scripts/variables/automatic b/tests/scripts/variables/automatic index 847c836..7237fe2 100644 --- a/tests/scripts/variables/automatic +++ b/tests/scripts/variables/automatic @@ -95,14 +95,17 @@ mbr.src: ; @:', # Make sure that nonexistent prerequisites are listed in $?, since they are # considered reasons for the target to be rebuilt. # -touch('foo'); +# This was undone due to Savannah bug #16002. We'll re-do it in the next +# release. See Savannah bug #16051. -run_make_test(' -foo: bar ; @echo "\$$? = $?" -bar: ;', - '', - '$? = bar'); - -unlink('foo'); +#touch('foo'); +# +#run_make_test(' +#foo: bar ; @echo "\$$? = $?" +#bar: ;', +# '', +# '$? = bar'); +# +#unlink('foo'); 1; diff --git a/tests/test_driver.pl b/tests/test_driver.pl index e61da12..c5ee157 100644 --- a/tests/test_driver.pl +++ b/tests/test_driver.pl @@ -427,8 +427,7 @@ sub run_each_test $diffext = 'd'; $baseext = 'b'; $extext = ''; - } - else { + } else { $logext = 'log'; $diffext = 'diff'; $baseext = 'base'; @@ -459,12 +458,9 @@ sub run_each_test if (!defined($code)) { $suite_passed = 0; - if (length ($@)) - { + if (length ($@)) { warn "\n*** Test died ($testname): $@\n"; - } - else - { + } else { warn "\n*** Couldn't run $perl_testname\n"; } } @@ -490,7 +486,7 @@ sub run_each_test &rmfiles ($base_filename . &num_suffix ($i) ); } } - elsif ($code > 0) { + elsif (!defined $code || $code > 0) { $status = "FAILED ($tests_passed/$tests_run passed)"; } elsif ($code < 0) { |