-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #70 from n-claes/tests/improved_testing
Improved CI, code coverage and test extensions
- Loading branch information
Showing
138 changed files
with
7,078 additions
and
4,129 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,146 @@ | ||
name: legolas | ||
|
||
on: | ||
push: | ||
branches: [master, develop] | ||
pull_request: | ||
branches: [master, develop] | ||
|
||
env: | ||
CC: /usr/bin/gcc-9 | ||
FC: /usr/bin/gfortran-9 | ||
PFUNIT_DIR: /home/runner/work/legolas/legolas/tests/pFUnit/build/installed | ||
LEGOLASDIR: /home/runner/work/legolas/legolas | ||
ARPACK_ROOT: /home/runner/work/legolas/legolas/tests/arpack-ng | ||
|
||
jobs: | ||
test: | ||
name: "${{ matrix.name }}" | ||
runs-on: ubuntu-latest | ||
|
||
strategy: | ||
fail-fast: false | ||
matrix: | ||
include: | ||
- name: unit-tests | ||
coverage: true | ||
- name: regression | ||
coverage: true | ||
|
||
steps: | ||
- uses: actions/checkout@v2 | ||
- name: Set up Python 3.8 | ||
uses: actions/setup-python@v1 | ||
with: | ||
python-version: 3.8 | ||
|
||
- name: Install dependencies | ||
run: | | ||
sudo add-apt-repository ppa:ubuntu-toolchain-r/test | ||
sudo apt update | ||
sudo apt-get install gfortran-9 | ||
sudo apt-get -y install cmake | ||
sudo apt-get install libblas-dev | ||
sudo apt-get install liblapack-dev | ||
sudo apt-get install lcov | ||
gfortran-9 --version | ||
cmake --version | ||
which gcov | ||
which gcov-9 | ||
- name: Install Python dependencies & Pylbo | ||
run: | | ||
python -m pip install --upgrade pip | ||
pip install pytest numpy matplotlib f90nml tqdm psutil pytest-mpl | ||
cd post_processing | ||
python setup.py develop | ||
- name: Cache pFUnit | ||
id: pfunit-cache | ||
uses: actions/cache@v1 | ||
with: | ||
path: tests/pFUnit/ | ||
key: ${{ runner.os }}-pfunitv1 | ||
|
||
- name: Build pFUnit | ||
if: steps.pfunit-cache.outputs.cache-hit != 'true' | ||
run: | | ||
cd tests/ | ||
git clone https://github.com/Goddard-Fortran-Ecosystem/pFUnit.git | ||
cd pFUnit | ||
mkdir build | ||
cd build | ||
cmake .. -DSKIP_MPI=YES -DSKIP_OPENMP=YES -DSKIP_FHAMCREST=YES | ||
make -j 2 tests | ||
make -j 2 install | ||
- name: Cache ARPACK | ||
id: arpack-cache | ||
uses: actions/cache@v1 | ||
with: | ||
path: tests/arpack-ng/ | ||
key: ${{ runner.os }}-arpackv2 | ||
|
||
- name: Build ARPACK | ||
if: steps.arpack-cache.outputs.cache-hit != 'true' | ||
run: | | ||
cd tests | ||
git clone https://github.com/opencollab/arpack-ng.git | ||
cd arpack-ng | ||
mkdir build | ||
mkdir installed | ||
cd build | ||
cmake -DEXAMPLES=OFF -DMPI=OFF -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=../installed .. | ||
make -j 2 | ||
sudo make -j 2 install | ||
- name: Compile Legolas | ||
run: | | ||
mkdir build | ||
cd build | ||
if [[ "${{ matrix.coverage }}" ]]; then | ||
cmake -DCoverage=ON .. | ||
else | ||
cmake .. | ||
fi | ||
make -j 2 | ||
- name: Run tests | ||
run: | | ||
# depending on unit or regression tests we use different coverage options | ||
if [[ "${{ matrix.name }}" == "unit-tests" ]]; then | ||
cd $LEGOLASDIR/tests/unit_tests | ||
mkdir build | ||
cd build | ||
cmake -DCoverage=ON .. | ||
make -j 2 | ||
cd .. | ||
./test_legolas | ||
elif [[ "${{ matrix.name }}" == "regression" ]]; then | ||
cd $LEGOLASDIR/tests/regression_tests | ||
pytest -v regression.py test* | ||
fi | ||
if [[ "${{ matrix.coverage }}" ]]; then | ||
# generate coverage report | ||
cd $LEGOLASDIR | ||
mkdir coverage | ||
cd coverage | ||
lcov --capture --directory $LEGOLASDIR/build \ | ||
--output-file ${{ matrix.name }}.info \ | ||
--gcov-tool /usr/bin/gcov-9 | ||
fi | ||
# filter out coverage files | ||
find $LEGOLASDIR/build -name '*.gc*' -delete | ||
- name: Archive failed logs | ||
uses: actions/upload-artifact@v2 | ||
if: failure() | ||
with: | ||
name: failed_logs | ||
path: tests/regression_tests/image_comparisons | ||
|
||
- name: Upload coverage report | ||
uses: codecov/codecov-action@v1 | ||
if: ${{ matrix.coverage }} | ||
with: | ||
files: ./coverage/${{ matrix.name }}.info |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
import pickle | ||
|
||
|
||
def pickle_dataseries_to_file(series, filepath): | ||
with open(filepath, "wb") as ostream: | ||
pickle.dump(series, ostream, pickle.HIGHEST_PROTOCOL) | ||
|
||
|
||
def load_pickled_dataseries(filepath): | ||
with open(filepath, "rb") as istream: | ||
series = pickle.load(istream) | ||
return series |
Oops, something went wrong.