name: CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
types: [ opened, synchronize ]
workflow_dispatch:
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [macos-latest, ubuntu-latest, windows-latest]
defaults:
run:
shell: bash
steps:
- uses: actions/checkout@v2
- name: Check format
if: matrix.os == 'ubuntu-latest'
run: cargo fmt -- --check
- name: Run linter
if: matrix.os == 'ubuntu-latest'
run: cargo clippy -- -D clippy::all -D warnings
- name: Setup Python
uses: actions/setup-python@v2
with:
python-version: '3.x'
- name: Install Poetry
uses: snok/install-poetry@v1.2.1
with:
virtualenvs-create: true
virtualenvs-in-project: false
- name: Cache pip wheels
uses: actions/cache@v2
with:
path: ~/.cache
key: wheels-${{ runner.os }}-${{ hashFiles('**/poetry.lock') }}
- name: Install Poetry dependencies
run: poetry install --no-interaction
working-directory: api/mock_server
- name: Run tests
run: cargo test -- --nocapture