name: CI on: push: branches: [master, main] pull_request: branches: [master, main] jobs: test: strategy: fail-fast: false matrix: os: [ubuntu-22.04, macos-15, windows-latest] runs-on: ${{ matrix.os }} name: ${{ matrix.os }} / Nim ${{ matrix.nim-version }} steps: - uses: actions/checkout@v4 - name: Setup Nim uses: jiro4989/setup-nim-action@v2 with: nim-version: ${{ matrix.nim-version }} repo-token: ${{ secrets.GITHUB_TOKEN }} - name: Install Nimble ${{ env.NIMBLE_VERSION }} shell: bash run: | if [ "$RUNNER_OS" == "Windows" ]; then export PATH="$GITHUB_WORKSPACE/.nim_runtime/bin:$PATH" fi cd /tmp && nimble install "nimble@${{ env.NIMBLE_VERSION }}" -y echo "$HOME/.nimble/bin" >> $GITHUB_PATH - name: Cache nimble deps id: cache-nimbledeps uses: actions/cache@v4 with: path: ~/.nimble key: ${{ runner.os }}-nimble-${{ matrix.nim-version }}-${{ hashFiles('*.nimble') }} restore-keys: | ${{ runner.os }}-nimbledeps- - name: Install nimble deps if: steps.cache-nimbledeps.outputs.cache-hit != 'true' shell: bash run: | if [ "$RUNNER_OS" == "Windows" ]; then export PATH="$GITHUB_WORKSPACE/.nim_runtime/bin:$HOME/.nimble/bin:$PATH" fi nimble setup --localdeps -y - name: Build shell: bash run: | if [ "$RUNNER_OS" == "Windows" ]; then export PATH="$GITHUB_WORKSPACE/.nim_runtime/bin:$HOME/.nimble/bin:$PATH" fi nimble build -y - name: Run allocation tests shell: bash run: | if [ "$RUNNER_OS" == "Windows" ]; then export PATH="$GITHUB_WORKSPACE/.nim_runtime/bin:$HOME/.nimble/bin:$PATH" fi nimble test_alloc -y - name: Run FFI context tests shell: bash run: | if [ "$RUNNER_OS" == "Windows" ]; then export PATH="$GITHUB_WORKSPACE/.nim_runtime/bin:$HOME/.nimble/bin:$PATH" fi nimble test_ffi -y