name: test
on:
push:
branches:
- main
pull_request:
jobs:
build:
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
- windows-latest
runs-on: ${{ matrix.os }}
defaults:
run:
shell: bash
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 - uses: swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 - run: tools/build.sh
- run: git diff --exit-code
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a with:
name: build-${{ matrix.os }}
path: |
target/release/turtle
target/release/turtle.exe
unit_test:
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
- windows-latest
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 - uses: swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 - run: cargo test
integration_test:
needs: build
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
- os: windows-latest
options: -t ~@unix
runs-on: ${{ matrix.os }}
defaults:
run:
shell: bash
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 - uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e with:
go-version: stable
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c with:
name: build-${{ matrix.os }}
path: target/release
- run: chmod +x target/release/turtle*
- run: tools/integration_test.sh ${{ matrix.options }}
integration_test_test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 - uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e with:
go-version: stable
- uses: raviqqe/enable-homebrew@6bd383659a321c332bd0c0ed445c32d54e04efe8 - run: brew install ninja
- run: mkdir -p target/release
- run: cp tools/turtle.sh target/release/turtle
- run: tools/integration_test.sh -t ~@turtle
test:
needs:
- build
- unit_test
- integration_test
- integration_test_test
if: always()
runs-on: ubuntu-latest
steps:
- run: for result in ${{ join(needs.*.result, ' ') }}; do [ $result = success ]; done