Finish porting all tests to GitHub Actions #41
Workflow file for this run
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
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 | |
- name: Install Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: "3.10" | |
- name: Install Python dependencies | |
run: pip install matplotlib h5py | |
- 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 | |
cat 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 randome seed gives different results | |
run: | | |
.ci/run_shark.sh my_model_random_seed | |
.ci/compare_galaxies.sh my_model my_model_random_seed --expect-unequal | |
- name: Generate all plots | |
run: | | |
echo "backend: Agg" >> matplotlibrc | |
python standard_plots/all.py -c ci-test.cfg |