EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  <20192020  2021  2022  2023  2024  Index 2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  <20192020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: [Merge] ~anj/epics-base/+git/base-3.15:epics-prove into epics-base:3.15
From: Andrew Johnson via Core-talk <[email protected]>
To: [email protected],mdavidsaver <[email protected]>
Date: Thu, 17 Oct 2019 22:19:22 -0000
Andrew Johnson has proposed merging ~anj/epics-base/+git/base-3.15:epics-prove into epics-base:3.15.

Requested reviews:
  mdavidsaver (mdavidsaver)

For more details, see:
https://code.launchpad.net/~anj/epics-base/+git/base-3.15/+merge/374321

Hi Michael,

This branch contains my preferred solution for the problems you were having with prove.bat and 'make test-results' on Windows. It's against 3.15, which may complicate merging your fixes slightly, but I would rather that we fix this there than only on the 7.0 branch.

I'll merge if/once you approve.

- Andrew
-- 
Your team EPICS Core Developers is subscribed to branch epics-base:3.15.
diff --git a/configure/CONFIG_BASE b/configure/CONFIG_BASE
index 2f099be..c979d6d 100644
--- a/configure/CONFIG_BASE
+++ b/configure/CONFIG_BASE
@@ -69,6 +69,7 @@ REGISTERRECORDDEVICEDRIVER = $(PERL) $(TOOLS)/registerRecordDeviceDriver.pl
 CONVERTRELEASE             = $(PERL) $(call FIND_TOOL,convertRelease.pl)
 FULLPATHNAME               = $(PERL) $(TOOLS)/fullPathName.pl
 TAPTOJUNIT                 = $(PERL) $(TOOLS)/tap-to-junit-xml.pl
+PROVE                      = $(PERL) $(TOOLS)/epicsProve.pl
 
 #-------------------------------------------------------
 # tools for installing libraries and products
diff --git a/configure/RULES_BUILD b/configure/RULES_BUILD
index 7061c56..ca05f19 100644
--- a/configure/RULES_BUILD
+++ b/configure/RULES_BUILD
@@ -351,7 +351,7 @@ testspec: $(TESTSCRIPTS)
 test-results: tapfiles
 ifneq ($(TAPFILES),)
 ifdef RUNTESTS_ENABLED
-	prove --failures --ext .tap --exec "$(CAT)" --color $(TAPFILES)
+	$(PROVE) --failures --ext .tap --exec "$(CAT)" --color $(TAPFILES)
 endif
 
 CURRENT_TAPFILES := $(wildcard $(TAPFILES))
diff --git a/documentation/RELEASE_NOTES.md b/documentation/RELEASE_NOTES.md
index 7580b3a..451b237 100644
--- a/documentation/RELEASE_NOTES.md
+++ b/documentation/RELEASE_NOTES.md
@@ -6,6 +6,14 @@ This version of EPICS Base has not been released yet.
 
 <!-- Insert new items immediately below here ... -->
 
+### `make test-results` for Windows
+
+The make target `test-results` should now work properly on Windows. Some Perl
+installations used versions of `prove.bat` that would only display the results of
+up to 3 tests or didn't return an error status in the event of tests failing. The
+build system now calls its own perl script to summarize the results instead of
+passing a list of TAP filenames to `prove`.
+
 ### Add option to avoid CALLBACK conflict
 
 If a macro `EPICS_NO_CALLBACK` is defined, then callback.h will no longer (re)define CALLBACK.
@@ -235,23 +243,23 @@ built-in self-test programs and viewing the results. Since these targets are
 intended for limited use they can have requirements for the build host which
 go beyond the standard minimum set needed to build and run Base.
 
-#### `test-results` — Summarize test results
+#### `test-results` - Summarize test results
 
 The new make target `test-results` will run the self-tests if
 necessary to generate a TAP file for each test, then summarizes the TAP output
 files in each test directory in turn, displaying the details of any failures.
-This step uses the program “prove” which comes with Perl, but also needs
-“cat” to be provided in the default search path so will not work on most
+This step uses the program `prove` which comes with Perl, but also needs
+`cat` to be provided in the default search path so will not work on most
 Windows systems.
 
-#### `junitfiles` — Convert test results to JUnit XML Format
+#### `junitfiles` - Convert test results to JUnit XML Format
 
 The new make target `junitfiles` will run the self-tests if necessary
 and then convert the TAP output files into the more commonly-supported JUnit
 XML format. The program that performs this conversion needs the Perl module
-“`XML::Generator`” to have been installed.
+`XML::Generator` to have been installed.
 
-#### `clean-tests` — Delete test result files
+#### `clean-tests` - Delete test result files
 
 The new make target `clean-tests` removes any test result files from
 previous test runs. It cleans both TAP and JUnit XML files.
@@ -1103,11 +1111,11 @@ configured to have a lower severity or even no alarm when undefined. Be careful
 when changing this on applications where the IVOA field of output records is
 used, IVOA still requires an INVALID severity to trigger value replacement.
 
-### New build target “tapfiles”
+### New build target `tapfiles`
 
-This new make target runs the same tests as the “runtests” target, but
+This new make target runs the same tests as the `runtests` target, but
 instead of summarizing or displaying the output for each test script it creates
-a “.tap” file inside the architecture build directory which contains the
+a `.tap` file inside the architecture build directory which contains the
 detailed test output. The output file can be parsed by continuous integration
 packages such as [Jenkins](http://www.jenkins-ci.org/) to show the
 test results.
diff --git a/src/tools/Makefile b/src/tools/Makefile
index c1606c8..636717d 100644
--- a/src/tools/Makefile
+++ b/src/tools/Makefile
@@ -39,6 +39,7 @@ PERL_SCRIPTS += assembleSnippets.pl
 PERL_SCRIPTS += convertRelease.pl
 PERL_SCRIPTS += cvsclean.pl
 PERL_SCRIPTS += dos2unix.pl
+PERL_SCRIPTS += epicsProve.pl
 PERL_SCRIPTS += expandVars.pl
 PERL_SCRIPTS += fullPathName.pl
 PERL_SCRIPTS += installEpics.pl
diff --git a/src/tools/epicsProve.pl b/src/tools/epicsProve.pl
new file mode 100644
index 0000000..a1b0c14
--- /dev/null
+++ b/src/tools/epicsProve.pl
@@ -0,0 +1,10 @@
+#!/usr/bin/env perl
+
+# Some Windows Perl installations provide a prove.bat file which
+# doesn't work properly.
+
+use App::Prove;
+
+my $app = App::Prove->new;
+$app->process_args(@ARGV);
+exit( $app->run ? 0 : 1 );

Replies:
Re: [Merge] ~anj/epics-base/+git/base-3.15:epics-prove into epics-base:3.15 mdavidsaver via Core-talk
[Merge] ~anj/epics-base/+git/base-3.15:epics-prove into epics-base:3.15 noreply--- via Core-talk

Navigate by Date:
Prev: [Bug 1815908] Re: casExpandRecvBuffer modifies the contents of the buffer mdavidsaver via Core-talk
Next: Re: [Merge] ~anj/epics-base/+git/base-3.15:epics-prove into epics-base:3.15 mdavidsaver via Core-talk
Index: 2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  <20192020  2021  2022  2023  2024 
Navigate by Thread:
Prev: [Bug 541239] Re: explicitly unloading Com.dll causes crash Andrew Johnson via Core-talk
Next: Re: [Merge] ~anj/epics-base/+git/base-3.15:epics-prove into epics-base:3.15 mdavidsaver via Core-talk
Index: 2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  <20192020  2021  2022  2023  2024 
ANJ, 18 Oct 2019 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·