Some additional changes from the previous commit for merging gcov files:
With the --long-file-names (-l) and --preserve-paths (-p) options to gcov,
some of the file names would exceed the filesystem limits (255 characters).
One solution for shortening the names is to use the -source-prefix (-s) option
which removes some of the path elements in the name. The shortened path is
used in the file name and in the Source: tag in the file.
This causes problems with gcovr, so the path prefix is restored to the Source:
tag when merging gcov files.
The processing pipeline for gcov files has an extra step - the long file names
are written to the tgcov_*_raw directories, and then merged to the corresponding
tgcov_* directory.
Many files have some executed code related to static initializers. It clutters
the output to have those included in the output, even though they only have one
line in them and it's considered covered. Add files of this type to the files
to be removed in 'remove_unwanted_file'.
The gcov file merge and write does not yet handle branch information, which also
includes function headers. These function headers are necessary for filtering the
static initializers. Add an explicit step to filter the gcov files in the *_raw
directories.
Check a list of python modules to ensure they are installed before adding the estimator tests.
The test for module installation is based on whether the module successully imports or not.
If needed, additional tests of module functionality could be added.
- Enable OpenMP by default (eventually will need to be off by default for Mac, on everywhere else)
- define __forceinclude
- suppress warnings about undefined template variables in src/spline2. The class variables are
defined for several types in the *.cpp files. If they are somehow not present (or if the spline
templates are used for a new type), there will be link errors.
- arithmetic on void pointers is not allowed. Cast to char *, since these are byte-granularity addresses.
1. Implemented SIMPLE_RUN_AND_CHECK function in macros.cmake to run one
input, then run one test script.
2. Incorporated estimator tests in ctest suite.
3. Completed manual entries, including a paragraph on makeClone.
to-do:
1. make symbolic link to tests/solids/bccH_1x1x1_ae/pwscf.pwscf.h5
currently, the links have to be made manually in each estimator test
folder.
Move the coverage flags from the ctest script to the compiler scripts.
Both GCC and Clang support the GCC-style output with the --coverage flag.
Use the ENABLE_GCOV flag to add the compiler coverage flag.
Add a script (run_coverage.sh) to create the gcov files (and HTML reports
if gcovr is present) after a build is done with coverage enabled.
Add CMake module for handling coverage - create gcov files using the 'gcov'
tool, compare different runs, pack up tar files for upload to CDash, etc.
Modify the ctest script to handle coverage. Activate by using the 'coverage' option
to -S (ctest -S ctest_script.cmake,coverage)
Some of the *.BFD.xml files in the test inputs are referenceed using a relative
symbolic link. Using FILE(COPY ...) will keep the link, which then becomes a
dangling link pointing to nothing. The previous method of
'cmake -E copy_directory' converted to link to an actual file copy. The fix is
to treat the psuedopotential files the same as the *.h5 files, and the code
creates a symbolic link to the original file.
Also print a status message with the state of QMC_SYMLINK_TEST_FILES and a short
explanation of the consequences.