Skip to content

Finish porting all tests to GitHub Actions #46

Finish porting all tests to GitHub Actions

Finish porting all tests to GitHub Actions #46

Workflow file for this run

name: Build and test
# Build on every branch push, tag push, and pull request change:
on: [push]
jobs:
build_wheels:
name: Build and test shark on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
env:
CI_BUILD_DIR: build
TEST_INPUTS_DIR: inputs
TEST_OUTPUTS_DIR: outputs
TEST_SIM_NAME: mini-SURFS
steps:
- uses: actions/checkout@v3
with:
submodules: true
- name: Install system dependencies (Linux)
if: ${{ matrix.os == 'ubuntu-latest' }}
run: |
sudo apt install ninja-build libhdf5-dev hdf5-tools libboost-filesystem-dev libboost-program-options-dev libboost-log-dev cxxtest libgsl-dev
- name: Install system dependencies (MacOS)
if: ${{ matrix.os == 'macos-latest' }}
run: |
brew install ninja hdf5 boost cxxtest gsl libomp
- name: Install Python
uses: actions/setup-python@v4
with:
python-version: "3.10"
- name: Install Python dependencies
run: pip install matplotlib h5py scipy
- name: Configure
# Leaving Werror out for now because there *are* errors
# and I don't know what the proper fix is.
run: cmake -B ${CI_BUILD_DIR} -G Ninja -DSHARK_TEST=ON -DCMAKE_CXX_FLAGS="-Wall" #-Werror
- name: Build
run: cmake --build ${CI_BUILD_DIR}
- name: Run unit tests
run: |
cd ${CI_BUILD_DIR}
ctest --output-on-failure
- name: Prepare test dataset
run: |
mkdir -p ${TEST_INPUTS_DIR}
curl -L -o ${TEST_INPUTS_DIR}/redshifts.txt 'https://docs.google.com/uc?export=download&id=1xvNmJB_KmoBHuQz-QzdPnY0HFs7smkUB'
curl -L -o ${TEST_INPUTS_DIR}/tree_199.0.hdf5 'https://docs.google.com/uc?export=download&id=1JDK8ak13bEhzg9H9xt0uE8Fh_2LD3KpZ'
sed "
s|output_directory.*|output_directory = ${TEST_OUTPUTS_DIR}|
s|redshift_file.*|redshift_file = ${TEST_INPUTS_DIR}/redshifts.txt|
s|tree_files_prefix.*|tree_files_prefix = ${TEST_INPUTS_DIR}/tree_199|
s|sim_name.*|sim_name = ${TEST_SIM_NAME}|
" sample.cfg > ci-test.cfg
- name: Run shark with fixed seed
run: .ci/run_shark.sh my_model -o execution.seed=123456
- name: Check output properties' documentation
run: |
.ci/check_hdf5_docs.sh my_model/199/0/galaxies.hdf5 galaxies.rst
.ci/check_hdf5_docs.sh my_model/156/0/star_formation_histories.hdf5 star_formation_histories.rst
.ci/check_hdf5_docs.sh my_model/199/0/black_hole_histories.hdf5 black_hole_histories.rst
- name: Check fixed seed is reproducible
run: |
.ci/run_shark.sh my_model_same_seed -o execution.seed=123456
.ci/compare_galaxies.sh my_model my_model_same_seed
- name: Check fixed seed is reproducible when multithreaded
run: |
# "-t 0" lets shark use the maximum number of OpenMP threads,
# which OpenMP implementations usually constrain to the available hardware
.ci/run_shark.sh my_model_same_seed_parallel -o execution.seed=123456 -t 0
.ci/compare_galaxies.sh my_model my_model_same_seed_parallel
- name: Check random seed gives different results
run: |
.ci/run_shark.sh my_model_random_seed -t 0
.ci/compare_galaxies.sh my_model my_model_random_seed --expect-unequal
# Currently skipped because there are a few minor problems
# with some plots
- name: Generate all plots
if: false
run: |
echo "backend: Agg" >> matplotlibrc
python standard_plots/all.py -c ci-test.cfg