759
EOF_ERR
760
"
761
762
+test_expect_success 'tests respect prerequisites' '
763
+ run_sub_test_lib_test prereqs "tests respect prereqs" <<-\EOF &&
764
763
-test_set_prereq HAVEIT
764
-haveit=no
765
-test_expect_success HAVEIT 'test runs if prerequisite is satisfied' '
766
- test_have_prereq HAVEIT &&
767
- haveit=yes
768
-'
769
-donthaveit=yes
770
-test_expect_success DONTHAVEIT 'unmet prerequisite causes test to be skipped' '
771
- donthaveit=no
772
-'
773
-if test -z "$GIT_TEST_FAIL_PREREQS_INTERNAL" -a $haveit$donthaveit != yesyes
774
-then
775
- say "bug in test framework: prerequisite tags do not work reliably"
776
- exit 1
777
-fi
765
+ test_set_prereq HAVEIT
766
+ test_expect_success HAVEIT "prereq is satisfied" "true"
767
+ test_expect_success "have_prereq works" "
768
+ test_have_prereq HAVEIT
769
+ "
770
+ test_expect_success DONTHAVEIT "prereq not satisfied" "false"
771
779
-test_set_prereq HAVETHIS
780
-haveit=no
781
-test_expect_success HAVETHIS,HAVEIT 'test runs if prerequisites are satisfied' '
782
- test_have_prereq HAVEIT &&
783
- test_have_prereq HAVETHIS &&
784
- haveit=yes
785
-'
786
-donthaveit=yes
787
-test_expect_success HAVEIT,DONTHAVEIT 'unmet prerequisites causes test to be skipped' '
788
- donthaveit=no
789
-'
790
-donthaveiteither=yes
791
-test_expect_success DONTHAVEIT,HAVEIT 'unmet prerequisites causes test to be skipped' '
792
- donthaveiteither=no
793
-'
794
-if test -z "$GIT_TEST_FAIL_PREREQS_INTERNAL" -a $haveit$donthaveit$donthaveiteither != yesyesyes
795
-then
796
- say "bug in test framework: multiple prerequisite tags do not work reliably"
797
- exit 1
798
-fi
772
+ test_set_prereq HAVETHIS
773
+ test_expect_success HAVETHIS,HAVEIT "multiple prereqs" "true"
774
+ test_expect_success HAVEIT,DONTHAVEIT "mixed prereqs (yes,no)" "false"
775
+ test_expect_success DONTHAVEIT,HAVEIT "mixed prereqs (no,yes)" "false"
776
800
-test_lazy_prereq LAZY_TRUE true
801
-havetrue=no
802
-test_expect_success LAZY_TRUE 'test runs if lazy prereq is satisfied' '
803
- havetrue=yes
804
-'
805
-donthavetrue=yes
806
-test_expect_success !LAZY_TRUE 'missing lazy prereqs skip tests' '
807
- donthavetrue=no
777
+ test_done
778
+ EOF
779
+
780
+ check_sub_test_lib_test prereqs <<-\EOF
781
+ ok 1 - prereq is satisfied
782
+ ok 2 - have_prereq works
783
+ ok 3 # skip prereq not satisfied (missing DONTHAVEIT)
784
+ ok 4 - multiple prereqs
785
+ ok 5 # skip mixed prereqs (yes,no) (missing DONTHAVEIT of HAVEIT,DONTHAVEIT)
786
+ ok 6 # skip mixed prereqs (no,yes) (missing DONTHAVEIT of DONTHAVEIT,HAVEIT)
787
+ # passed all 6 test(s)
788
+ 1..6
789
+ EOF
790
'
791
810
-if test -z "$GIT_TEST_FAIL_PREREQS_INTERNAL" -a "$havetrue$donthavetrue" != yesyes
811
-then
812
- say 'bug in test framework: lazy prerequisites do not work'
813
- exit 1
814
-fi
792
+test_expect_success 'tests respect lazy prerequisites' '
793
+ run_sub_test_lib_test lazy-prereqs "respect lazy prereqs" <<-\EOF &&
794
816
-test_lazy_prereq LAZY_FALSE false
817
-nothavefalse=no
818
-test_expect_success !LAZY_FALSE 'negative lazy prereqs checked' '
819
- nothavefalse=yes
820
-'
821
-havefalse=yes
822
-test_expect_success LAZY_FALSE 'missing negative lazy prereqs will skip' '
823
- havefalse=no
824
-'
795
+ test_lazy_prereq LAZY_TRUE true
796
+ test_expect_success LAZY_TRUE "lazy prereq is satisifed" "true"
797
+ test_expect_success !LAZY_TRUE "negative lazy prereq" "false"
798
826
-if test -z "$GIT_TEST_FAIL_PREREQS_INTERNAL" -a "$nothavefalse$havefalse" != yesyes
827
-then
828
- say 'bug in test framework: negative lazy prerequisites do not work'
829
- exit 1
830
-fi
799
+ test_lazy_prereq LAZY_FALSE false
800
+ test_expect_success LAZY_FALSE "lazy prereq not satisfied" "false"
801
+ test_expect_success !LAZY_FALSE "negative false prereq" "true"
802
832
-test_lazy_prereq NESTED_INNER '
833
- >inner &&
834
- rm -f outer
835
-'
836
-test_lazy_prereq NESTED_PREREQ '
837
- >outer &&
838
- test_have_prereq NESTED_INNER &&
839
- echo "can create new file in cwd" >file &&
840
- test -f outer &&
841
- test ! -f inner
842
-'
843
-test_expect_success NESTED_PREREQ 'evaluating nested lazy prereqs dont interfere with each other' '
844
- nestedworks=yes
803
+ test_done
804
+ EOF
805
+
806
+ check_sub_test_lib_test lazy-prereqs <<-\EOF
807
+ ok 1 - lazy prereq is satisifed
808
+ ok 2 # skip negative lazy prereq (missing !LAZY_TRUE)
809
+ ok 3 # skip lazy prereq not satisfied (missing LAZY_FALSE)
810
+ ok 4 - negative false prereq
811
+ # passed all 4 test(s)
812
+ 1..4
813
+ EOF
814
'
815
847
-if test -z "$GIT_TEST_FAIL_PREREQS_INTERNAL" && test "$nestedworks" != yes
848
-then
849
- say 'bug in test framework: nested lazy prerequisites do not work'
850
- exit 1
851
-fi
816
+test_expect_success 'nested lazy prerequisites' '
817
+ run_sub_test_lib_test nested-lazy "nested lazy prereqs" <<-\EOF &&
818
+
819
+ test_lazy_prereq NESTED_INNER "
820
+ >inner &&
821
+ rm -f outer
822
+ "
823
+ test_lazy_prereq NESTED_PREREQ "
824
+ >outer &&
825
+ test_have_prereq NESTED_INNER &&
826
+ echo can create new file in cwd >file &&
827
+ test_path_is_file outer &&
828
+ test_path_is_missing inner
829
+ "
830
+ test_expect_success NESTED_PREREQ "evaluate nested prereq" "true"
831
+
832
+ test_done
833
+ EOF
834
+
835
+ check_sub_test_lib_test nested-lazy <<-\EOF
836
+ ok 1 - evaluate nested prereq
837
+ # passed all 1 test(s)
838
+ 1..1
839
+ EOF
840
+'
841
842
test_expect_success 'lazy prereqs do not turn off tracing' "
843
run_sub_test_lib_test lazy-prereq-and-tracing \