summaryrefslogtreecommitdiff
path: root/tests/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'tests/scripts')
-rw-r--r--tests/scripts/options/dash-C60
-rw-r--r--tests/scripts/variables/flavors25
2 files changed, 67 insertions, 18 deletions
diff --git a/tests/scripts/options/dash-C b/tests/scripts/options/dash-C
index f31238f..5864ffd 100644
--- a/tests/scripts/options/dash-C
+++ b/tests/scripts/options/dash-C
@@ -1,32 +1,56 @@
-$description = "The following test creates a makefile to test the -C dir \n"
- ."option in make. This option tells make to change to \n"
- ."directory dir before reading the makefile.";
+# -*-perl-*-
-$details = "This test is similar to the clean test except that this test\n"
- ."creates the file to delete in the work directory instead of\n"
- ."the current directory. Make is called from another directory\n"
- ."using the -C workdir option so that it can both find the \n"
- ."makefile and the file to delete in the work directory. ";
+$description = "Test the -C option to GNU make.";
-$example = $workdir . $pathsep . "EXAMPLE_FILE";
+$details = "\
+This test is similar to the clean test except that this test creates the file
+to delete in the work directory instead of the current directory. Make is
+called from another directory using the -C workdir option so that it can both
+find the makefile and the file to delete in the work directory.";
+
+$example = $workdir . $pathsep . "EXAMPLE";
open(MAKEFILE,"> $makefile");
+print MAKEFILE <<EOF;
+all: ; \@echo This makefile did not clean the dir ... good
+clean: ; $delete_command EXAMPLE\$(ext)
+EOF
+close(MAKEFILE);
-# The Contents of the MAKEFILE ...
+# TEST #1
+# -------
+&touch($example);
-print MAKEFILE "all: \n";
-print MAKEFILE "\t\@echo This makefile did not clean the dir ... good\n";
-print MAKEFILE "clean: \n";
-print MAKEFILE "\t$delete_command EXAMPLE_FILE\n";
+&run_make_with_options("${testname}.mk",
+ "-C $workdir clean",
+ &get_logfile);
-# END of Contents of MAKEFILE
+chdir $workdir;
+$wpath = &get_this_pwd;
+chdir $pwd;
-close(MAKEFILE);
+if (-f $example) {
+ $test_passed = 0;
+}
+
+# Create the answer to what should be produced by this Makefile
+$answer = "$make_name: Entering directory `$wpath'\n"
+ . "$delete_command EXAMPLE\n"
+ . "$make_name: Leaving directory `$wpath'\n";
+
+&compare_output($answer,&get_logfile(1));
+
+
+# TEST #2
+# -------
+# Do it again with trailing "/"; this should work the same
+
+$example .= "slash";
&touch($example);
&run_make_with_options("${testname}.mk",
- "-C $workdir clean",
+ "-C $workdir/ clean ext=slash",
&get_logfile);
chdir $workdir;
@@ -39,7 +63,7 @@ if (-f $example) {
# Create the answer to what should be produced by this Makefile
$answer = "$make_name: Entering directory `$wpath'\n"
- . "$delete_command EXAMPLE_FILE\n"
+ . "$delete_command EXAMPLEslash\n"
. "$make_name: Leaving directory `$wpath'\n";
&compare_output($answer,&get_logfile(1));
diff --git a/tests/scripts/variables/flavors b/tests/scripts/variables/flavors
index 88e9ad5..3ceac5e 100644
--- a/tests/scripts/variables/flavors
+++ b/tests/scripts/variables/flavors
@@ -155,4 +155,29 @@ world');
run_make_test(undef, 'V1=@ V2=@', 'hello
world');
+# TEST #10
+# -------
+# Test the basics; a "@" internally to the variable applies to only one line.
+# A "@" before the variable applies to the entire variable.
+
+run_make_test('
+define FOO
+@echo hello
+echo world
+endef
+define BAR
+echo hello
+echo world
+endef
+
+all: foo bar
+foo: ; $(FOO)
+bar: ; @$(BAR)
+', '', 'hello
+echo world
+world
+hello
+world
+');
+
1;