wiretun 0.5.0

WireGuard Library
Documentation
name: CI

on:
  push:
    branches: [ "master" ]
  pull_request:
    branches: [ "master" ]

env:
  CARGO_TERM_COLOR: always

jobs:
  lint:
    name: Coding style check
    runs-on: ubuntu-latest
    timeout-minutes: 10
    steps:
      - name: Checkout Code
        uses: actions/checkout@v3
      - name: Install rust toolchain
        uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
          components: clippy
          override: true
      - name: Install just
        uses: extractions/setup-just@v1
      - name: Run lint
        run: |
          just lint

  unit-test:
    name: Unit test
    runs-on: ubuntu-latest
    timeout-minutes: 10
    steps:
      - name: Checkout Code
        uses: actions/checkout@v3
      - name: Install rust toolchain
        uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
          components: clippy
          override: true
      - name: Install just
        uses: extractions/setup-just@v1
      - name: Install cargo-nextest
        uses: baptiste0928/cargo-install@v1
        with:
          crate: cargo-nextest
          locked: true
      - name: Run tests
        run: |
          just unit-test

  integration-test:
    name: Integration test
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest]
        scenario: [native-tun, wiretun-to-wiretun, wireguard-to-wiretun]
    runs-on: ${{ matrix.os }}
    timeout-minutes: 30
    steps:
      - name: Checkout Code
        uses: actions/checkout@v3
      - name: Install rust toolchain
        uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
          components: clippy
          override: true
      - name: Install just
        uses: extractions/setup-just@v1
      - name: Install WireGuard tools (Linux)
        if: runner.os == 'Linux'
        run: |
          sudo apt update -y
          sudo apt install -y wireguard
      - name: Set up Homebrew (MacOS)
        if: runner.os == 'macOS'
        uses: Homebrew/actions/setup-homebrew@master
      - name: Install WireGuard tools (MacOS)
        if: runner.os == 'macOS'
        run: |
          brew install wireguard-tools
      - name: Run tests
        run: |
          just integration-test-${{ matrix.scenario }}