| # -*-perl-*- |
| |
| $description = "Test the -w option to GNU make."; |
| |
| my $enter = "#MAKE#: Entering directory '#PWD#'"; |
| my $leave = "#MAKE#: Leaving directory '#PWD#'"; |
| |
| # Simple test without -w |
| run_make_test(q! |
| all: ; @echo hi |
| !, |
| "", "hi\n"); |
| |
| my $ans = "$enter\nhi\n$leave\n"; |
| |
| # Simple test with -w |
| run_make_test(undef, "-w", $ans); |
| |
| # Simple test with overriding -w |
| run_make_test(undef, "-w --no-print-directory", "hi\n"); |
| |
| # Simple test with overriding --no-print-directory |
| run_make_test(undef, "--no-print-directory --print-directory", $ans); |
| |
| # Test makefile rebuild to ensure no enter/leave |
| run_make_test(q! |
| include foo |
| all: ;@: |
| foo: ; touch foo |
| !, |
| "", "touch foo\n"); |
| unlink('foo'); |
| |
| $ans = "$enter\ntouch foo\n$leave\n"; |
| |
| # Test makefile rebuild with -w |
| run_make_test(undef, "-w", $ans); |
| unlink('foo'); |
| |
| # Test makefile rebuild with -w overridden |
| run_make_test(undef, "-w --no-print-directory", "touch foo\n"); |
| unlink('foo'); |
| |
| # Test makefile rebuild with --no-print-directory overridden |
| run_make_test(undef, "--no-print-directory --print-directory", $ans); |
| unlink('foo'); |
| |
| my $enter1 = "#MAKE#[1]: Entering directory '#PWD#'"; |
| my $leave1 = "#MAKE#[1]: Leaving directory '#PWD#'"; |
| |
| $ans = "$enter1\nhi\n$leave1\n"; |
| |
| # Test makefile recursion with default enter/leave |
| run_make_test(q! |
| all: ;@$(MAKE) -f #MAKEFILE# recurse |
| recurse: ; @echo hi |
| !, |
| "", $ans); |
| |
| # Disable enter/leave |
| run_make_test(undef, "--no-print-directory", "hi\n"); |
| |
| # Re-enable enter/leave |
| $ans = "$enter\n$ans$leave\n"; |
| run_make_test(undef, "--no-print-directory -w", $ans); |
| |
| # Override enter/leave |
| run_make_test(undef, "-w --no-print-directory", "hi\n"); |
| |
| 1; |