Relax nonzero dimension requirement on HMC #178
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: tinystan tests | |
on: | |
push: | |
branches: | |
- 'main' | |
pull_request: | |
workflow_dispatch: {} | |
env: | |
CACHE_VERSION: 2 | |
# only run one copy per PR | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
jobs: | |
build: | |
runs-on: ${{matrix.os}} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [windows-latest, ubuntu-latest, macos-latest] | |
env: | |
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} | |
steps: | |
- name: Check out github | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Stan build caching | |
# note: not quite working since we use a development branch of Stan | |
uses: actions/cache@v4 | |
id: stan-cache | |
with: | |
path: ./stan/ | |
key: ${{ runner.os }}-stan-${{ hashFiles('stan/src/stan/version.hpp') }}-v${{ env.CACHE_VERSION }} | |
# we use the cache here to build the Stan models once for multiple interfaces | |
- name: Set up test model cache | |
uses: actions/cache@v4 | |
id: test-models | |
with: | |
path: ./test_models/ | |
key: ${{ hashFiles('**/*.stan', 'src/*', 'stan/src/stan/version.hpp', 'Makefile') }}-${{ matrix.os }}-v${{ env.CACHE_VERSION }} | |
- name: Build test models | |
run: | | |
make O=2 test_models -j4 | |
python: | |
needs: [build] | |
runs-on: ${{matrix.os}} | |
strategy: | |
matrix: | |
os: [ubuntu-latest, macos-latest, windows-latest] | |
python-version: ["3.9", "3.12"] | |
fail-fast: false | |
steps: | |
- name: Check out github | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Restore Stan | |
uses: actions/cache@v4 | |
id: stan-cache | |
with: | |
path: ./stan/ | |
key: ${{ runner.os }}-stan-${{ hashFiles('stan/src/stan/version.hpp') }}-v${{ env.CACHE_VERSION }} | |
- name: Restore built models | |
uses: actions/cache@v4 | |
id: test-models | |
with: | |
path: ./test_models/ | |
key: ${{ hashFiles('**/*.stan', 'src/*', 'stan/src/stan/version.hpp', 'Makefile') }}-${{ matrix.os }}-v${{ env.CACHE_VERSION }} | |
- name: Install package | |
run: | | |
cd clients/python/ | |
pip install pytest | |
pip install . | |
- name: Test import | |
run: | | |
python -c "import tinystan" | |
- name: Run tests | |
run: | | |
pytest -v clients/python/ | |
env: | |
TINYSTAN: ${{ github.workspace }} | |
- name: Run example | |
run: | | |
python clients/python/example.py | |
env: | |
TINYSTAN: ${{ github.workspace }} | |
Rlang: | |
needs: [build] | |
runs-on: ${{matrix.os}} | |
strategy: | |
matrix: | |
os: [ubuntu-latest, macos-latest, windows-latest] | |
fail-fast: false | |
steps: | |
- name: Check out github | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Install R | |
uses: r-lib/actions/[email protected] | |
- name: Install R dependencies | |
uses: r-lib/actions/[email protected] | |
with: | |
packages: | | |
any::R6 | |
any::testthat | |
any::devtools | |
any::posterior | |
- name: Restore Stan | |
uses: actions/cache@v4 | |
with: | |
path: ./stan/ | |
key: ${{ runner.os }}-stan-${{ hashFiles('stan/src/stan/version.hpp') }}-v${{ env.CACHE_VERSION }} | |
- name: Restore built models | |
uses: actions/cache@v4 | |
id: test-models | |
with: | |
path: ./test_models/ | |
key: ${{ hashFiles('**/*.stan', 'src/*', 'stan/src/stan/version.hpp', 'Makefile') }}-${{ matrix.os }}-v${{ env.CACHE_VERSION }} | |
- name: Run tests | |
if: matrix.os != 'windows-latest' | |
run: | | |
cd clients/R | |
Rscript -e "devtools::test(reporter = c(\"summary\", \"fail\"))" | |
env: | |
TINYSTAN: ${{ github.workspace }} | |
- name: Run tests (windows) | |
if: matrix.os == 'windows-latest' | |
run: | | |
cd clients/R | |
Rscript -e 'devtools::test(reporter = c("summary", "fail"))' | |
if (!$LASTEXITCODE.Equals(0)) {exit $LASTEXITCODE} | |
env: | |
TINYSTAN: ${{ github.workspace }} | |
julia: | |
needs: [build] | |
runs-on: ${{matrix.os}} | |
strategy: | |
matrix: | |
os: [ubuntu-latest, macos-latest, windows-latest] | |
julia-version: ["1"] | |
fail-fast: false | |
steps: | |
- name: Check out github | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Set up Julia | |
uses: julia-actions/setup-julia@v2 | |
with: | |
version: ${{ matrix.julia-version }} | |
- name: Restore Stan | |
uses: actions/cache@v4 | |
id: stan-cache | |
with: | |
path: ./stan/ | |
key: ${{ runner.os }}-stan-${{ hashFiles('stan/src/stan/version.hpp') }}-v${{ env.CACHE_VERSION }} | |
- name: Restore built models | |
uses: actions/cache@v4 | |
id: test-models | |
with: | |
path: ./test_models/ | |
key: ${{ hashFiles('**/*.stan', 'src/*', 'stan/src/stan/version.hpp', 'Makefile') }}-${{ matrix.os }}-v${{ env.CACHE_VERSION }} | |
- name: Check import | |
run: | | |
cd clients/julia/ | |
julia --project=. -e "using Pkg; Pkg.instantiate()" | |
julia --project=. -e "using TinyStan" | |
- name: Run tests | |
run: | | |
julia --project=clients/julia -t 2 -e "using Pkg; Pkg.test()" | |
env: | |
TINYSTAN: ${{ github.workspace }} | |
- name: Run examples | |
run: | | |
julia --project=clients/julia clients/julia/example.jl | |
env: | |
TINYSTAN: ${{ github.workspace }} | |
typescript: | |
# needs: [build] # all tests are mocked at the moment | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Set up Node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
cache: 'yarn' | |
cache-dependency-path: clients/typescript/yarn.lock | |
- name: Install typescript dependencies | |
run: cd clients/typescript; yarn | |
- name: Run tests | |
run: cd clients/typescript; yarn test | |