Skip to content

Commit

Permalink
Merge 3.15 branch into 7.0
Browse files Browse the repository at this point in the history
Adjust updated test result displays for submodules
  • Loading branch information
anjohnson committed Dec 23, 2020
2 parents b49f069 + 518bab9 commit f775e0b
Show file tree
Hide file tree
Showing 16 changed files with 203 additions and 73 deletions.
8 changes: 6 additions & 2 deletions .appveyor.yml
Expand Up @@ -6,6 +6,7 @@ branches:
# whitelist
only:
- 7.0
- /R7\.0\.\d+.*/

# Version format
version: base-{branch}-{build}
Expand Down Expand Up @@ -83,14 +84,17 @@ matrix:
CMP: vs2012
- platform: x64
CMP: vs2010
- platform: x64
CMP: vs2008
# Exclude more jobs to reduce build time
# Skip 32-bit for "middle-aged" compilers
- platform: x86
CMP: vs2017
- platform: x86
CMP: vs2015
# MinGW debug builds use the same libraries, unlike VS
- configuration: dynamic-debug
CMP: gcc
- configuration: static-debug
CMP: gcc

#---------------------------------#
# building & testing #
Expand Down
22 changes: 19 additions & 3 deletions .github/workflows/ci-scripts-build.yml
Expand Up @@ -3,15 +3,17 @@

# This is YAML - indentation levels are crucial

# Set the 'name:' properties to values that work for you (pvxs)
# Workflow name, shared by all branches

name: Base

# Trigger on pushes and PRs to any branch
on:
push:
paths-ignore:
- .appveyor.yml
- '.appveyor.yml'
- 'documentation/*'
- 'startup/*'
pull_request:

env:
Expand All @@ -21,7 +23,7 @@ env:

jobs:
build-base:
name: ${{ matrix.os }}/${{ matrix.cmp }}/${{ matrix.configuration }}/${{ matrix.wine }}${{ matrix.rtems }}/${{ matrix.extra }}
name: ${{ matrix.name }}
runs-on: ${{ matrix.os }}
# Set environment variables from matrix parameters
env:
Expand All @@ -38,66 +40,80 @@ jobs:
cmp: gcc
configuration: default
wine: "64"
name: "Ub-20 gcc-9 + MinGW"

- os: ubuntu-20.04
cmp: gcc
configuration: static
wine: "64"
name: "Ub-20 gcc-9 + MinGW, static"

- os: ubuntu-20.04
cmp: gcc
configuration: static
extra: "CMD_CXXFLAGS=-std=c++11"
name: "Ub-20 gcc-9 C++11, static"

- os: ubuntu-16.04
cmp: clang
configuration: default
name: "Ub-16 clang-9"

- os: ubuntu-20.04
cmp: clang
configuration: default
extra: "CMD_CXXFLAGS=-std=c++11"
name: "Ub-20 clang-10 C++11"

- os: ubuntu-20.04
cmp: gcc
configuration: default
rtems: "4.10"
name: "Ub-20 gcc-9 + RT-4.10"

- os: ubuntu-20.04
cmp: gcc
configuration: default
rtems: "4.9"
name: "Ub-20 gcc-9 + RT-4.9"

- os: ubuntu-16.04
cmp: gcc-4.8
utoolchain: true
configuration: default
name: "Ub-16 gcc-4.8"

- os: ubuntu-16.04
cmp: gcc-4.9
utoolchain: true
configuration: default
name: "Ub-16 gcc-4.9"

- os: ubuntu-20.04
cmp: gcc-8
utoolchain: true
configuration: default
name: "Ub-20 gcc-8"

- os: ubuntu-20.04
cmp: clang
configuration: default
name: "Ub-20 clang-10"

- os: macos-latest
cmp: clang
configuration: default
name: "MacOS clang-12"

- os: windows-2019
cmp: vs2019
configuration: default
name: "Win2019 MSC-19"

- os: windows-2019
cmp: vs2019
configuration: static
name: "Win2019 MSC-19, static"

steps:
- uses: actions/checkout@v2
Expand Down
17 changes: 11 additions & 6 deletions configure/CONFIG_BASE
Expand Up @@ -64,10 +64,15 @@ DEPCLEAN = $(call FIND_TOOL,depclean.pl)

#---------------------------------------------------------------
# Tools for testing
TAPTOJUNIT = $(PERL) $(TOOLS)/tap-to-junit-xml.pl
PROVE = $(PERL) $(TOOLS)/epicsProve.pl
PROVE.tap = $(PROVE) --ext .tap --exec "$(CAT)"
TAPS_FAILED_LOG = .taps-failed.log
TESTS_FAILED_LOG = .tests-failed.log
TESTS_FAILED_PATH = $(abspath $(TOP)/$(TESTS_FAILED_LOG))

TEST_FAILURE_FILENAME = .tests-failed.log
TEST_FAILURE_FILE = $(TOP)/$(TEST_FAILURE_FILENAME)
PROVE_FAILURE = echo $(abspath .)>> $(TEST_FAILURE_FILE)
TAPTOJUNIT = $(PERL) $(TOOLS)/tap-to-junit-xml.pl
PROVE = $(PERL) $(TOOLS)/epicsProve.pl --failures --color
PROVE.tap = $(PROVE) --ext .tap --exec "$(CAT)"
TESTFAILURES = $(PERL) $(TOOLS)/testFailures.pl
SHOWTESTFAILURES = $(TESTFAILURES) $(TESTS_FAILED_PATH) $(TAPS_FAILED_LOG)

PROVE_FAILURE = echo $(abspath .)>> $(TESTS_FAILED_PATH)
TAPFILE_FAILURE = echo $@>> $(TAPS_FAILED_LOG)
13 changes: 8 additions & 5 deletions configure/RULES_BUILD
Expand Up @@ -358,7 +358,8 @@ runtests: run-tap-tests
run-tap-tests: $(TESTSCRIPTS.t)
ifneq ($(TESTSCRIPTS.t),)
ifdef RUNTESTS_ENABLED
$(PROVE) --failures --color $^ || $(PROVE_FAILURE)
$(ECHO) "$(PROVE) $^"
@$(PROVE) $^ || $(PROVE_FAILURE)
endif
endif

Expand All @@ -369,16 +370,17 @@ test-results: tap-results
tap-results: $(TAPFILES)
ifneq ($(strip $(TAPFILES)),)
ifdef RUNTESTS_ENABLED
$(PROVE.tap) --failures --color $^ || $(PROVE_FAILURE)
$(ECHO) "$(PROVE.tap) $^"
@$(PROVE.tap) $^ || $(PROVE_FAILURE)
endif

CURRENT_TAPFILES := $(wildcard $(TAPFILES))
CURRENT_JUNITFILES := $(wildcard $(JUNITFILES))
endif

clean-tests:
ifneq ($(CURRENT_TAPFILES),)
$(RM) $(CURRENT_TAPFILES)
ifneq ($(CURRENT_TAPFILES)$(TAPS_FAILED_LOG),)
$(RM) $(CURRENT_TAPFILES) $(TAPS_FAILED_LOG)
endif
ifneq ($(CURRENT_JUNITFILES),)
$(RM) $(CURRENT_JUNITFILES)
Expand All @@ -387,7 +389,8 @@ endif
# A .tap file is the output from running the associated test script
$(TAPFILES.t): %.tap: %.t
ifdef RUNTESTS_ENABLED
$(PERL) $< -tap > $@
$(ECHO) "$(PERL) $< -tap > $@"
@$(PERL) $< -tap > $@ || $(TAPFILE_FAILURE)
endif

$(JUNITFILES.t): %-results.xml: %.tap
Expand Down
17 changes: 6 additions & 11 deletions configure/RULES_MODULES
Expand Up @@ -47,14 +47,9 @@ realclean:

.PHONY: RELEASE.host realclean

# Append all our live submodule failure files
FAILURE_FILES = $(addsuffix /$(TEST_FAILURE_FILENAME), $(LIVE_SUBMODULES))

define combine_failure_files
@$(TOUCH) $(FAILURE_FILES)
@$(CAT) $(FAILURE_FILES) >> $(TEST_FAILURE_FILE)
endef
runtests: | $(addsuffix $(DIVIDER)runtests, $(LIVE_SUBMODULES))
$(if $(FAILURE_FILES), $(combine_failure_files))
test-results: | $(addsuffix $(DIVIDER)test-results, $(LIVE_SUBMODULES))
$(if $(FAILURE_FILES), $(combine_failure_files))
# Testing: Combine test failure logs from the live submodules
TESTS_FAILED_LOGS = $(wildcard $(addsuffix /$(TESTS_FAILED_LOG), \
$(LIVE_SUBMODULES)))
runtests test-results: % : | $(addsuffix $(DIVIDER)%, $(LIVE_SUBMODULES))
$(if $(TESTS_FAILED_LOGS), \
@$(CAT) $(TESTS_FAILED_LOGS)>> $(TESTS_FAILED_PATH))
7 changes: 4 additions & 3 deletions configure/RULES_TOP
Expand Up @@ -50,8 +50,9 @@ uninstall$(DIVIDER)%: | clean
$(RMDIR) $(addsuffix /$(subst uninstall$(DIVIDER),,$@), \
$(INSTALL_LOCATION_BIN) $(INSTALL_LOCATION_LIB))

# Only run this at the top of the parent
runtests test-results:
@$(PERL) $(TOOLS)/testFailures.pl $(TEST_FAILURE_FILE)
@$(SHOWTESTFAILURES)

else
#
Expand All @@ -63,10 +64,10 @@ else

endif # DISABLE_TOP_RULES

# Clean out old results
before-runtests before-test-results: rm-failure-file
rm-failure-file:
@$(RM) $(TEST_FAILURE_FILE)
@$(TOUCH) $(TEST_FAILURE_FILE)
$(RM) $(TESTS_FAILED_PATH)

help:
@echo "Usage: gnumake [options] [target] ..."
Expand Down
3 changes: 3 additions & 0 deletions documentation/RecordReference.md
Expand Up @@ -56,6 +56,9 @@ website where these original reference chapters are now being published.
* [Field Type Menu](menuFtype.html)
* [Invalid Value Output Action Menu](menuIvoa.html)
* [Output Mode Select Menu](menuOmsl.html)
* [Process at iocInit Menu](menuPini.html)
* [Post Monitors Menu](menuPost.html)
* [Priority Menu](menuPriority.html)
* [Scan Menu](menuScan.html)
* [Simulation Mode Menu](menuSimm.html)
* [Yes/No Menu](menuYesNo.html)
Expand Down
2 changes: 1 addition & 1 deletion modules/database/src/ioc/db/menuIvoa.dbd.pod
Expand Up @@ -9,7 +9,7 @@

=head1 Menu menuIvoa

This menu specifies the possibile actions to take when the INVALID alarm is
This menu specifies the possible actions to take when the INVALID alarm is
triggered. See individual record types for more information.

=menu menuIvoa
Expand Down
16 changes: 0 additions & 16 deletions modules/database/src/ioc/db/menuPini.dbd

This file was deleted.

66 changes: 66 additions & 0 deletions modules/database/src/ioc/db/menuPini.dbd.pod
@@ -0,0 +1,66 @@
#*************************************************************************
# Copyright (c) 2009 UChicago Argonne LLC, as Operator of Argonne
# National Laboratory.
# Copyright (c) 2002 The Regents of the University of California, as
# Operator of Los Alamos National Laboratory.
# EPICS BASE is distributed subject to a Software License Agreement found
# in file LICENSE that is included with this distribution.
#*************************************************************************

=head1 Menu menuPini

This menu defines the choices for the C<PINI> field, which controls whether
and when each record should be processed during initialization or pausing
of the IOC. Choices other than C<NO> cause record processing at the
following initHook transitions:

=over 4

=item YES

C<initHookAfterScanInit> E<mdash> All records and links have been
initialized but the scan threads and CA server are not running yet, nor
have CA links been connected up. The initHook C<initHookAfterInitialProcess>
immediately follows this procssing.

=item RUN

C<initHookAtIocRun> E<mdash> The C<iocRun()> routine has just been called,
although not necessarily for the first time.

=item RUNNING

C<initHookAfterIocRunning> E<mdash> All remaining initializations have
taken place, C<interruptAccept> is enabled, the scan threads and CA server
are running and the IOC is processing records. CA links might not have
finished connecting though, and sequence programs won't usually have been
started yet.

=item PAUSE

C<initHookAtIocPause> E<mdash> The C<iocPause()> routine has just been
called and the IOC is about to suspend operations.

=item PAUSED

C<initHookAfterIocPaused> E<mdash> The CA server, CA link operations and
the scan threads have been paused and C<interruptAccept> disabled.

=back

Note that the order in which records that have the same C<PINI> value get
processed can be controlled by setting their C<PHAS> field, which is honored
for C<PINI> processing as well as for regular scanning.

=menu menuPini

=cut

menu(menuPini) {
choice(menuPiniNO,"NO")
choice(menuPiniYES,"YES")
choice(menuPiniRUN,"RUN")
choice(menuPiniRUNNING,"RUNNING")
choice(menuPiniPAUSE,"PAUSE")
choice(menuPiniPAUSED,"PAUSED")
}
Expand Up @@ -5,6 +5,16 @@
# in file LICENSE that is included with this distribution.
#*************************************************************************

=head1 Menu menuPost

This menu is used by the long string record types to specify whether they
should generate a monitor event only when their string value changes, or
every time it gets written to even if the value is the same.

=menu menuPost

=cut

menu(menuPost) {
choice(menuPost_OnChange, "On Change")
choice(menuPost_Always, "Always")
Expand Down
Expand Up @@ -7,6 +7,20 @@
# EPICS Base is distributed subject to a Software License Agreement found
# in file LICENSE that is included with this distribution.
#*************************************************************************

=head1 Menu menuPriority

This menu is used for the C<PRIO> field of all record types. It controls
the relative priority of records scheduled with C<SCAN=Event> or
C<SCAN=I/O Intr>, and also of records that use asynchronous completion.

=menu menuPriority

The number of priorities is set in various other places in the code too,
so adding new entries to this menu will probably break the IOC build.

=cut

menu(menuPriority) {
choice(menuPriorityLOW,"LOW")
choice(menuPriorityMEDIUM,"MEDIUM")
Expand Down

0 comments on commit f775e0b

Please sign in to comment.