#                                                                    -*-perl-*-

$description = "Test the behaviour of the .NOTINTERMEDIATE target.";

$details = "\
Test the behavior of the .NOTINTERMEDIATE special target.\n";

touch('hello.z');
unlink('hello.x');


# Test 1. A file which matches a .NOTINTERMEDIATE pattern is not intermediate.
run_make_test(q!
hello.z:
%.z: %.x; touch $@
%.x: ;
.NOTINTERMEDIATE: %.q %.x
!, '', "touch hello.z\n");

# Test 2. .NOTINTERMEDIATE: %.q pattern has no effect on hello.x.
touch('hello.z');
run_make_test(q!
hello.z:
%.z: %.x; touch $@
%.x: ;
.NOTINTERMEDIATE: %.q
!, '', "#MAKE#: 'hello.z' is up to date.\n");

# Test 3. A file which is a prereq of .NOTINTERMEDIATE is not intermediate.
run_make_test(q!
hello.z:
%.z: %.x; touch $@
%.x: ;
.NOTINTERMEDIATE: %.q hello.x
!, '', "touch hello.z\n");

# Test 4. .NOTINTERMEDIATE without prerequisites makes everything
# notintermediate.
run_make_test(q!
hello.z:
%.z: %.x; touch $@
%.x: ;
.NOTINTERMEDIATE:
!, '', "touch hello.z\n");

# Test 5. Same file cannot be intermediate and notintermediate.
run_make_test(q!
.INTERMEDIATE: hello.x
.NOTINTERMEDIATE: hello.x
!, '', "#MAKE#: *** hello.x cannot be both .NOTINTERMEDIATE and .INTERMEDIATE.  Stop.\n", 512);

# Test 6. Same file cannot be secondary and notintermediate.
run_make_test(q!
.SECONDARY: hello.x
.NOTINTERMEDIATE: hello.x
!, '', "#MAKE#: *** hello.x cannot be both .NOTINTERMEDIATE and .SECONDARY.  Stop.\n", 512);

# Test 7. All .SECONDARY and all .NOTINTERMEDIATE are mutually exclusive.
run_make_test(q!
.SECONDARY:
.NOTINTERMEDIATE:
!, '', "#MAKE#: *** .NOTINTERMEDIATE and .SECONDARY are mutually exclusive.  Stop.\n", 512);

# Test 8. .INTERMEDIATE file takes priority over a .NOTINTERMEDIATE pattern.
unlink('hello.x');
run_make_test(q!
hello.z:
%.z: %.x; touch $@
%.x: ;
.INTERMEDIATE: hello.x
.NOTINTERMEDIATE: %.q %.x
!, '', "#MAKE#: 'hello.z' is up to date.\n");

# Test 9. Everything is notintermediate, except hello.x.
unlink('hello.x');
run_make_test(q!
hello.z:
%.z: %.x; touch $@
%.x: ;
.INTERMEDIATE: hello.x
.NOTINTERMEDIATE:
!, '', "#MAKE#: 'hello.z' is up to date.\n");

# Test 10. Everything is notintermediate, except hello.x.
unlink('hello.x');
run_make_test(q!
hello.z:
%.z: %.x; touch $@
%.x: ;
.SECONDARY: hello.x
.NOTINTERMEDIATE:
!, '', "#MAKE#: 'hello.z' is up to date.\n");

# Test 11. Everything is secondary, except %.q, hello.x.
unlink('hello.x');
run_make_test(q!
hello.z:
%.z: %.x; touch $@
%.x: ;
.NOTINTERMEDIATE: %.q hello.x
.SECONDARY:
!, '', "touch hello.z\n");

# Test 12. Everything is secondary, except %.q %.x.
unlink('hello.x');
run_make_test(q!
hello.z:
%.z: %.x; touch $@
%.x: ;
.NOTINTERMEDIATE: %.q %.x
.SECONDARY:
!, '', "touch hello.z\n");

unlink('hello.z');
# This tells the test driver that the perl test script executed properly.
1;
