From f661299a81b6206393deb9c5e8b3584cddde67b6 Mon Sep 17 00:00:00 2001
From: Andrew Johnson
Date: Thu, 4 Apr 2013 11:25:53 -0500
Subject: [PATCH] Added new 'tapfiles' build target.
There's a plugin for Jenkins which should be able to read the .tap
output files and generate pretty test status pages from them.
I haven't actually tried using it yet though...
---
configure/RULES.Db | 8 ++++----
configure/RULES_ARCHS | 2 +-
configure/RULES_BUILD | 15 ++++++++++++---
configure/RULES_DIRS | 3 ++-
documentation/RELEASE_NOTES.html | 9 +++++++++
5 files changed, 28 insertions(+), 9 deletions(-)
diff --git a/configure/RULES.Db b/configure/RULES.Db
index cda4ee6c5..3271e3965 100644
--- a/configure/RULES.Db
+++ b/configure/RULES.Db
@@ -129,7 +129,7 @@ ACTIONS += build
ACTIONS += install
ACTIONS += buildInstall
ACTIONS += browse
-ACTIONS += runtests
+ACTIONS += runtests tapfiles
actionArchTargets = $(foreach x, $(ACTIONS),\ $(foreach arch,$(BUILD_ARCHS), $(x)$(DIVIDER)$(arch)))
@@ -144,10 +144,10 @@ buildInstall : build
rebuild: clean install
-.PHONY: all inc build install clean rebuild buildInstall
+.PHONY: all $(ACTIONS)
-$(actionArchTargets) $(BUILD_ARCHS):install
-$(cleanArchTargets):clean
+$(actionArchTargets) $(BUILD_ARCHS): install
+$(cleanArchTargets): clean
.PHONY: $(BUILD_ARCHS) $(actionArchTargets) $(cleanArchTargets)
diff --git a/configure/RULES_ARCHS b/configure/RULES_ARCHS
index 7f189909c..e52f78f32 100644
--- a/configure/RULES_ARCHS
+++ b/configure/RULES_ARCHS
@@ -17,7 +17,7 @@ ACTIONS += build
ACTIONS += install
ACTIONS += buildInstall
ACTIONS += browse
-ACTIONS += runtests
+ACTIONS += runtests tapfiles
#ACTIONS += rebuild
actionPart = $(word 1, $(subst $(DIVIDER), ,$@))
diff --git a/configure/RULES_BUILD b/configure/RULES_BUILD
index b5937b0e5..7520ff59f 100644
--- a/configure/RULES_BUILD
+++ b/configure/RULES_BUILD
@@ -98,6 +98,8 @@ ifneq (,$(strip $(TESTS)))
TARGETS += testspec
endif
+TAPFILES += $(TESTSCRIPTS:.t=.tap)
+
#---------------------------------------------------------------
# Libraries
#
@@ -147,7 +149,8 @@ build_clean:
$(LOADABLE_SHRLIBNAME) \
$(INC) $(TARGETS) $(TDS) $(CLEANS) \
*.out MakefileInclude *.manifest *.exp \
- $(COMMON_INC) $(HDEPENDS_FILES) $(PRODTARGETS) $(TESTSCRIPTS)
+ $(COMMON_INC) $(HDEPENDS_FILES) $(PRODTARGETS) \
+ $(TESTSCRIPTS) $(TAPFILES)
ifdef RES
@$(RM) *$(RES)
endif
@@ -324,12 +327,18 @@ testspec: $(TESTSCRIPTS)
$(if $(TESTFILES), @echo Files: $(TESTFILES) >> $@)
$(if $(TESTSPEC_$(OS_CLASS)), @echo "Harness: $(TESTSPEC_$(OS_CLASS))" >> $@)
+tapfiles: $(TESTSCRIPTS) $(TAPFILES)
+
+# A .tap file is the output from running the associated test script
+%.tap: %.t
+ -HARNESS_ACTIVE=1 $(PERL) $< > $@
+
# If there's a perl test script (.plt) available, use it
%.t: ../%.plt
@$(RM) $@
$(CP) $< $@
-# Some versions of Test::Harness expect test programs in perl only.
+# Test programs (.t files) must be written in Perl.
# Generate a perl program to exec the real test binary.
%.t: %$(EXE)
@$(RM) $@
@@ -464,7 +473,7 @@ $(INSTALL_TEMPLATES_SUBDIR)/%: %
.PRECIOUS: $(COMMON_INC)
.PHONY: all inc build install clean rebuild buildInstall build_clean
-.PHONY: runtests checkRelease warnRelease noCheckRelease
+.PHONY: runtests tapfiles checkRelease warnRelease noCheckRelease
endif # BASE_RULES_BUILD
# EOF RULES_BUILD
diff --git a/configure/RULES_DIRS b/configure/RULES_DIRS
index edf200ad6..8fd3f63b6 100644
--- a/configure/RULES_DIRS
+++ b/configure/RULES_DIRS
@@ -12,7 +12,8 @@
ARCHS += $(BUILD_ARCHS)
-ACTIONS += inc build install buildInstall clean realclean archclean runtests
+ACTIONS += inc build install buildInstall clean realclean archclean
+ACTIONS += runtests tapfiles
dirPart = $(join $(dir $@), $(word 1, $(subst $(DIVIDER), ,$(notdir $@))))
diff --git a/documentation/RELEASE_NOTES.html b/documentation/RELEASE_NOTES.html
index bb62368fc..103a9e93a 100644
--- a/documentation/RELEASE_NOTES.html
+++ b/documentation/RELEASE_NOTES.html
@@ -15,6 +15,15 @@ EPICS Base 3.15.0.x releases are not intended for use in production systems.
Changes between 3.15.0.1 and 3.15.0.2
+New build target tapfiles
+
+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
+detailed test output. The output file can be parsed by continuous integration
+packages such as Jenkins to show the
+test results.
+
Array field double-buffering
Array data can now be moved, without copying, into and out of the VAL field