JS client: Better handling of error output #294
This file contains hidden or 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: 5 | |
| # only run one copy per PR | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
| cancel-in-progress: true | |
| jobs: | |
| check-formatting: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Check out github | |
| uses: actions/checkout@v6 | |
| with: | |
| submodules: recursive | |
| - name: Set up Julia | |
| uses: julia-actions/install-juliaup@v2 | |
| with: | |
| channel: "lts" | |
| - name: Install Formatters | |
| run: | | |
| sudo apt install -y clang-format black isort | |
| curl --proto '=https' --tlsv1.2 -LsSf https://github.com/posit-dev/air/releases/download/0.8.0/air-installer.sh | sh | |
| julia --project=clients/julia -e 'import Pkg; Pkg.add("JuliaFormatter")' | |
| - name: Run formatting checks | |
| run: | | |
| make format-check || (echo "::error title=Formatting::Formatting check failed, run \`make format\` locally" && exit 1) | |
| build: | |
| runs-on: ${{matrix.os}} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| # windows-2022 is a workaround for a julia issue as of 10/23/2025 | |
| # https://github.com/JuliaLang/julia/issues/59931 | |
| os: [windows-2022, ubuntu-latest, macos-latest] | |
| env: | |
| GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} | |
| steps: | |
| - name: Check out github | |
| uses: actions/checkout@v6 | |
| 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-2022] | |
| python-version: ["3.9", "3"] | |
| fail-fast: false | |
| steps: | |
| - name: Check out github | |
| uses: actions/checkout@v6 | |
| with: | |
| submodules: recursive | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v6 | |
| 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-2022] | |
| fail-fast: false | |
| steps: | |
| - name: Check out github | |
| uses: actions/checkout@v6 | |
| with: | |
| submodules: recursive | |
| - name: Install R | |
| uses: r-lib/actions/setup-r@v2.11.4 | |
| - name: Install R dependencies | |
| uses: r-lib/actions/setup-r-dependencies@v2.11.4 | |
| 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-2022' | |
| run: | | |
| cd clients/R | |
| Rscript -e "devtools::test(reporter = c(\"summary\", \"fail\"))" | |
| env: | |
| TINYSTAN: ${{ github.workspace }} | |
| - name: Run tests (windows) | |
| if: matrix.os == 'windows-2022' | |
| 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-2022] | |
| julia-version: ["1"] | |
| fail-fast: false | |
| steps: | |
| - name: Check out github | |
| uses: actions/checkout@v6 | |
| with: | |
| submodules: recursive | |
| - name: Set up Julia | |
| uses: julia-actions/install-juliaup@v2 | |
| with: | |
| channel: ${{ 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 --color yes -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@v6 | |
| - name: Set up Node | |
| uses: actions/setup-node@v6 | |
| 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 | |