Skip to content

ci: add more tests #236

ci: add more tests

ci: add more tests #236

Workflow file for this run

name: ci
on:
pull_request:
push:
branches:
- main
defaults:
run:
shell: bash
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
# get list of datasets to check
get_datasets:
runs-on: ubuntu-latest
outputs:
datasets: ${{ steps.datasets.outputs.datasets }}
steps:
- name: checkout
uses: actions/checkout@v4
- name: get data sets
id: datasets
working-directory: qadb
run: |
ls -d pass*/* | jq -Rs '{"dataset": split("\n")[:-1]}' | tee datasets.json
echo datasets=$(jq -c . datasets.json) >> $GITHUB_OUTPUT
# check consistency between Groovy and C++ APIs
test_dataset:
needs:
- get_datasets
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix: ${{ fromJson(needs.get_datasets.outputs.datasets) }}
steps:
- name: checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: setup_groovy
uses: wtfjoke/setup-groovy@v2
with:
groovy-version: 4.x
- name: env
run: |
source environ.sh
echo "QADB=${QADB}" >> $GITHUB_ENV
echo "JYPATH=${JYPATH}" >> $GITHUB_ENV
- name: make sure all the table files exist # since pre-commit.ci auto-fix bot will not `git add` *new* files, we fallback to checking their existence here
working-directory: qadb/${{ matrix.dataset }}
run: |
for f in qaTree.json.table miscTable.md; do
if [ ! -f $f ]; then
echo "missing table file '$f'; run pre-commit hook manually and commit new file(s)"
exit 1
fi
done
- name: sync check
run: util/syncCheck.rb ${{ matrix.dataset }}
- name: diff the Groovy and C++ QADB dumps
run: |
make -C srcC/tests
tests/test_diffGroovyCpp.loop.sh ${{ matrix.dataset }}
- name: concatenate artifacts
id: artifacts
run: |
mkdir -p artifacts/${{ matrix.dataset }}
for lang in cpp groovy ; do
cat tmp/${lang}*.out > artifacts/${{ matrix.dataset }}/${lang}.txt ;
done
echo "artifact_name=groovy_vs_cpp__$(echo ${{ matrix.dataset }} | sed 's;/;_;g')" | tee -a $GITHUB_OUTPUT
- name: upload_artifacts
uses: actions/upload-artifact@v4
with:
name: ${{ steps.artifacts.outputs.artifact_name }}
retention-days: 3
path: artifacts/*
# report status for github status check (successful only if all `test_dataset` jobs pass)
report:
runs-on: ubuntu-latest
needs:
- test_dataset
steps:
- run: echo success