Skip to content

Add source of NPM typescript package (#38) #177

Add source of NPM typescript package (#38)

Add source of NPM typescript package (#38) #177

Workflow file for this run

name: tinystan tests
on:
push:
branches:
- 'main'
pull_request:
workflow_dispatch: {}
env:
CACHE_VERSION: 1
# 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