]> git.saurik.com Git - apple/icu.git/blobdiff - icuSources/test/Makefile.in
ICU-57166.0.1.tar.gz
[apple/icu.git] / icuSources / test / Makefile.in
index c6e5a8c185582fbfff42943ce40b8522199a870c..36eda3a5e998577764ccf0f35173aa132fc8f970 100644 (file)
@@ -1,5 +1,5 @@
 ## Makefile.in for ICU tests
-## Copyright (c) 1999-2011, International Business Machines Corporation and
+## Copyright (c) 1999-2014, International Business Machines Corporation and
 ## others. All Rights Reserved.
 
 ## Source directory information
@@ -15,10 +15,19 @@ subdir = test
 
 @ICUIO_TRUE@IOTEST = iotest
 
+# the letest directory depends on layoutex.
+# If you have layoutex but not layout, you will be using
+# harfbuzz.
+@LAYOUTEX_TRUE@LETEST = letest
+
+# status dir
+STATUS_TMP = tmp
+STATUS_FULL = $(shell pwd)/$(STATUS_TMP)
+
 ## Files to remove for 'make clean'
-CLEANFILES = *~
+CLEANFILES = *~ $(STATUS_TMP)
 
-SUBDIRS = testdata intltest $(IOTEST) cintltst
+SUBDIRS = testdata intltest $(IOTEST) cintltst $(LETEST)
 
 ## List of phony targets
 .PHONY : everything all all-local all-recursive install install-local          \
@@ -42,6 +51,7 @@ clean: clean-recursive clean-local
 distclean : distclean-recursive distclean-local
        $(RMV) hdrtst/Makefile
        $(RMV) perf/convperf/Makefile
+       $(RMV) $(STATUS_TMP)
 
 dist: dist-recursive dist-local
 check: everything check-recursive check-local
@@ -70,18 +80,30 @@ all-recursive install-recursive clean-recursive distclean-recursive dist-recursi
        fi
 
 xcheck-recursive check-recursive check-exhaustive-recursive:
+       @$(MKINSTALLDIRS) $(STATUS_TMP)
+       @mystatus=$(STATUS_FULL)/status.$$$$.deleteme ; \
+       $(RMV) "$$mystatus".* ; \
        @goods=; \
        bads=; \
        target=`echo $@ | sed s/-recursive//`; \
        list='$(SUBDIRS)'; for subdir in $$list; do \
          echo "$(MAKE)[$(MAKELEVEL)]: Making \`$$target' in \`$$subdir'"; \
          local_target="$$target"; \
-         if (cd $$subdir && $(MAKE) $$local_target); then \
+         if (cd $$subdir && $(MAKE) $$local_target TEST_STATUS_FILE="$$mystatus.$$subdir" ); then \
            goods="$$goods $$subdir"; \
           else \
             bads="$$bads $$subdir"; \
           fi; \
        done; \
+       for subdir in $$list; do \
+         if [ -f "$$mystatus.$$subdir" ]; then \
+           echo "-------------" ; \
+           echo "| ***     FAILING TEST SUMMARY FOR:              $$subdir  " ; \
+           cat "$$mystatus.$$subdir" ; \
+           echo "| *** END FAILING TEST SUMMARY FOR:              $$subdir" ; \
+           $(RMV) "$$mystatus.$$subdir" ; \
+         fi; \
+       done; \
        echo "---------------"; \
        echo "ALL TESTS SUMMARY:"; \
         if test ! "x$$bads" = "x"; then \
@@ -91,6 +113,59 @@ xcheck-recursive check-recursive check-exhaustive-recursive:
          echo "All tests OK: $$goods"; \
        fi
 
+# pcheck = parallel check. We don't care about the output interleaving,
+# just run it as fast as possible.
+# todo would be to merge this code into the above non-parallel check.
+STATUS_NUM:=$(shell echo $$$$)
+MYSTATUS_R=$(STATUS_FULL)/status.$(STATUS_NUM).deleteme
+STATUS_FILES=$(SUBDIRS:%=$(MYSTATUS_R).%)
+
+pcheck_setup: testdata
+       @$(MKINSTALLDIRS) $(STATUS_TMP)
+       $(RMV) "$(MYSTATUS_R)".*
+       @echo Beginning parallel make. Output may be interleaved!
+
+$(STATUS_FULL)/status.$(STATUS_NUM).deleteme.%: pcheck_setup
+       -@$(MAKE) -C $* TEST_STATUS_FILE=$@ check || ( echo "FAILED: $* (other tests may still be running..)" ; touch $@ ; cp $@ $@.FAIL ; false )
+       -@[ ! -f $@.FAIL ] && touch $@.PASS && echo "PASSED: $* (other tests may still be running..)"
+       -@touch $@
+
+# print out status
+pcheck: $(STATUS_FILES)
+       @goods= ; \
+       bads= ; \
+       echo "----------------------------------------"; \
+       for subdir in $(SUBDIRS); do \
+         if [ -s "$(MYSTATUS_R).$$subdir" ]; then \
+           echo "-------------" ; \
+           echo "| ***     FAILING TEST SUMMARY FOR:              $$subdir  " ; \
+           cat "$(MYSTATUS_R).$$subdir" ; \
+           echo "| *** END FAILING TEST SUMMARY FOR:              $$subdir" ; \
+           $(RMV) "$(MYSTATUS_R).$$subdir" ; \
+         fi; \
+       done; \
+       for subdir in $(SUBDIRS); do \
+               if [ -f "$(MYSTATUS_R).$$subdir.FAIL" ]; \
+               then \
+                       bads="$$bads $$subdir" ; \
+               elif [ -f "$(MYSTATUS_R).$$subdir.PASS" ]; \
+               then \
+                       goods="$$goods $$subdir" ; \
+               else \
+                       echo "*** subtest did not complete - $$subdir" ; \
+                       bads="$$bads $$subdir" ; \
+               fi ; \
+       done ; \
+       echo "ALL TESTS SUMMARY:"; \
+        if test ! "x$$bads" = "x"; then \
+         echo "(to get non-interleaved err output, use \"$(MAKE) check\" instead.)" ; \
+         echo "ok: $$goods"; \
+         echo "===== ERRS: $$bads"; exit 1; \
+       else \
+         echo "All tests OK: $$goods"; \
+       fi
+       -@$(RMV) "$(MYSTATUS_R)".*
+
 all-local:
 
 install-local: