[Patch] Testing loads of cygwin1.dll from MinGW and MSVC, take 3

Max Kaehn slothman@electric-cloud.com
Wed Jun 8 18:44:00 GMT 2005


On Mon, 2005-06-06 at 16:51, Christopher Faylor wrote:
> Actually neither is right.  The tests are supposed to run to
> completion, not stop on a failure.

My first cut was this, but it could have led to a tedious
accumulation of if/then/else/if/then/else:

Index: winsup/testsuite/Makefile.in
===================================================================
RCS file: /cvs/src/src/winsup/testsuite/Makefile.in,v
retrieving revision 1.20
diff -u -p -r1.20 Makefile.in
--- winsup/testsuite/Makefile.in        6 Jun 2005 21:13:31 -0000       1.20
+++ winsup/testsuite/Makefile.in        7 Jun 2005 01:28:25 -0000
@@ -186,8 +186,11 @@ check: $(TESTSUP_LIB_NAME) $(RUNTIME) cy
           TCL_LIBRARY=`cd .. ; cd ${srcdir}/../../tcl/library ; pwd` ; \
            export TCL_LIBRARY ; fi ; \
        PATH=$(bupdir)/cygwin:$${PATH} ;\
-       $(RUNTEST) --tool winsup $(RUNTESTFLAGS) ;\
-       $(RUNTEST) --tool cygload $(RUNTESTFLAGS)
+       $(RUNTEST) --tool winsup $(RUNTESTFLAGS) ; WINSUPSTATUS=$$?;\
+       $(RUNTEST) --tool cygload $(RUNTESTFLAGS) ; CYGLOADSTATUS=$$?;\
+       if [ $$WINSUPSTATUS -ne 0 ] ; then \
+           exit $$WINSUPSTATUS; \
+       else exit $$CYGLOADSTATUS; fi;

 cygrun.o: cygrun.c
        $(CC) $(MINGW_CFLAGS) -o $@ -c $<


So I wrote a more general script, discovered that cygwin uses ash
instead of bash for /bin/sh, and rewrote the more general script so
ash could handle it.  Since ash doesn't seem to support arrays,
I wound up using "eval", and was thoroughly perplexed at the way
that the first "eval" seems to get thrown away.

Index: winsup/testsuite/Makefile.in
===================================================================
RCS file: /cvs/src/src/winsup/testsuite/Makefile.in,v
retrieving revision 1.20
diff -u -p -r1.20 Makefile.in
--- winsup/testsuite/Makefile.in        6 Jun 2005 21:13:31 -0000       1.20
+++ winsup/testsuite/Makefile.in        8 Jun 2005 18:39:42 -0000
@@ -179,6 +179,8 @@ testsuite/site.exp: site.exp

 # Note: we set the PATH so that we can pick up cygwin0.dll

+TOOLS = winsup cygload
+
 check: $(TESTSUP_LIB_NAME) $(RUNTIME) cygrun.exe testsuite/site.exp
        cd testsuite; \
        EXPECT=${EXPECT} ; export EXPECT ; \
@@ -186,8 +188,18 @@ check: $(TESTSUP_LIB_NAME) $(RUNTIME) cy
           TCL_LIBRARY=`cd .. ; cd ${srcdir}/../../tcl/library ; pwd` ; \
            export TCL_LIBRARY ; fi ; \
        PATH=$(bupdir)/cygwin:$${PATH} ;\
-       $(RUNTEST) --tool winsup $(RUNTESTFLAGS) ;\
-       $(RUNTEST) --tool cygload $(RUNTESTFLAGS)
+       eval ""; \
+       for tool in $(TOOLS); do \
+           $(RUNTEST) --tool $$tool $(RUNTESTFLAGS); \
+           eval "results_$$tool=$$?"; \
+       done; \
+       for tool in $(TOOLS) ; do \
+           eval "result=\$$results_$$tool"; \
+           if [ $${result:-0} -ne 0 ] ; then \
+               echo "$$tool failed: $$result"; \
+               exit $$result; \
+           fi; \
+       done;

 cygrun.o: cygrun.c
        $(CC) $(MINGW_CFLAGS) -o $@ -c $<




More information about the Cygwin-patches mailing list