Releases: Goddard-Fortran-Ecosystem/pFUnit
Minor bug fix - cmake logic
[4.2.4] - 2022-03-18
Fixed
- Fixed MPI find logic issue exposed by CI testing. Was including PFUNIT::pfunit even if MPI was not found
Fixes to enable nvfortran 22.3
This release fixes a few bugs that were detected when attempting to build and run on nvfortran. This version of pFUnit should work with the next release: nvfortran 22.3.
Fixed
- Incorrect treatment of 128 bit real support for compilers that do not support REAL128.
- Incorrect compilel flags for PGI
Changed
-
When any tests fail, the driver now invokes Fortran
STOP
instead of
FortranERROR STOP
. This suppresses annoying back traces from
GFortran. -
Changed
OTHER_SRCS
toOTHER_SOURCES
in PFUNIT.mk. The previous spelling -
is deprecated, but preserved to keep backwards compatibility.
Various bug fixes
Fixed
- Fix for OpenMP handling in
PFUNITCmake.cmake
. If you skip OpenMP, it is no
longer a dependency - Updated external modules that contain bugfixes.
- Fixed cmake logic that fails on enabling tests if using submodules.
- Allow GFortran to use longer lines. (Impacts some upstream use cases.)
Changed
- Changed
OTHER_SRCS
toOTHER_SOURCES
in PFUNIT.mk. The previous spelling
is deprecated, but preserved to keep backwards compatibility.
Fix for CMake race condition
This release fixes an issue where depending on the compiler there is a race condition when building multiple ctests in the same directory. The duplication of module names for the pFUnit main program (driver.F90) is the main culprit.
Fix for recent instability in building
Added
- Improved ability to embed pFUnit in the source tree of other projects.
Changed
- pFUnit now uses CMake namespaces. Upstream projects should now link
againstPFUNIT::funit
(orPFUNIT::pfunit
) rather than justfunit
. Users that
build test suites using theadd_pfunit_ctest()
macro should not see an impact.
Fixed
-
The
add_pfunit_ctest()
macro could fail under several not-so-rare
circumstances. One way is for CMake to fail to build
OTHER_SOURCES
before the driver as it cannot correctly analyze
the indirect FortranUSE PFUNIT_EXTRA_INITIALIZE
statement. The
other is when using paralle builds with multiple test suites using
Intel and the-save-temps
flag. Here the compiler would overwrite the
driver.i90
in the build directory and produce confusing results.The solution is to use Cmake
configure_file()
to preprocess the driver
directly on a per-suite basis. This will allow CMake+FPP to corretly
analyze dependencies and avoid reuse ofdriver.i90
.
Enable use add_subdirectory
Added
- Enabled use off
add_subdirectory
and build directory directly.
This improves the ability to build pFUnit when embedded within
another project instead of building it as a separate project.
Fixed
- Bug in assert for relatively equal. Incorrect index for location of of first
failing element. - Workaround for WSL issue in driver.
Added flag for position dependent code
v4.1.14 Merge pull request #249 from Goddard-Fortran-Ecosystem/feature/positi…
Minor bug fixes
There is a ticket opened against Intel Fortran 19.2 which breaks some
fHamcrest functionality. A failing test has been added to the test
suite. 19.1.3 still has this bug. (I have not checked if earlier
compilers also had this problem, but quite possibly they do as
fHamcrest is still under development.)
Changed
-
Separated tests related to RobustRunner into separate test suite. This is to
facilitate CI, as the tests do intermittently fail under CI, though rarely
in any development environment used by the main developers. -
Corrected so that default flags are with aggressive debugging. This had been
the default in the past, but was apparently lost for NAG to workaround a compiler
bug in an intermediate release. Also corrected the way the flags are managed
for Debug vs Release.
Fixed
-
Added workaround for NAG+cmake+OpenMP. An issue has been filed with kitware
https://gitlab.kitware.com/cmake/cmake/-/issues/21280 -
Missing PRESENT checks for arguments in TestMethod. Not sure how
these were not being caught - probably related to change mentioned
above about skipping debug flags with NAG Fortran. -
Missing RECURSIVE attribute on function in Every.F90. Not necessary
in F2008, but not all compilers have implemented this yet.
Bug fixes for fhamcrest layer
Fixed
-
Problem with FHamcrest
equal_to
where when the expected value is a numeric
array and the actual value is any type except a numeric array the test still
passes, such as:@assert_that(1, is(equal_to([2, 3, 4])))
passes. -
Problem with FHamcrest tests causing a segment fault when a test fails that
involves a complex number.
Workaround for gfortran-10 strict MPI interfaces
Added compiler flag that allows GFortran 10.x to compile with argument mismatches
in MPI layer. This apparently is only an issue for some MPI flavors, with
others importing the correct interface variability via use mpi
.