Skip to content

Lyrebird

Lyrebird #52

Workflow file for this run

name: Rust
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
env:
CARGO_TERM_COLOR: always
RUSTFLAGS: '-D warnings'
jobs:
format:
name: Verify code Fromatting
runs-on: "ubuntu-latest"
steps:
- uses: actions/checkout@v3
- name: Format
run: cargo fmt --all -- --check
lint:
name: Lint with clippy
needs: format
strategy:
fail-fast: true
runs-on: "ubuntu-latest"
env:
RUSTFLAGS: -Dwarnings
steps:
- uses: actions/checkout@v3
- name: Install Rust
uses: dtolnay/rust-toolchain@nightly
with:
components: clippy, rustfmt
- name: Install clippy
run: rustup component add clippy --toolchain nightly
- name: Lint
run: cargo clippy --workspace --all-targets --verbose --all-features
# bench:
# name: Check that benchmarks compile
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v3
# - uses: dtolnay/rust-toolchain@stable
# - name: Build u32 bench
# env:
# RUSTFLAGS: '--cfg curve25519_dalek_bits="32"'
# run: cargo build --benches
# - name: Build u64 bench
# env:
# RUSTFLAGS: '--cfg curve25519_dalek_bits="64"'
# run: cargo build --benches
# - name: Build default (host native) bench
# run: cargo build --benches
test-stable:
name: Test 32/64 bit stable
runs-on: ubuntu-latest
strategy:
matrix:
include:
# 32-bit target
- target: i686-unknown-linux-gnu
deps: >
sudo dpkg --add-architecture i386;
sudo touch /etc/apt/sources.list.d/i386-cross-compile-sources.list;
echo "deb [arch=i386] http://ports.ubuntu.com/ focal universe\ndeb [arch=i386] http://ports.ubuntu.com/ focal-updates universe\n" | sudo tee -a /etc/apt/sources.list.d/i386-cross-compile-sources.list;
sudo apt update && sudo apt install gcc-multilib libsqlite3-dev:i386
# 64-bit target
- target: x86_64-unknown-linux-gnu
steps:
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@stable
- run: rustup target add ${{ matrix.target }}
- run: ${{ matrix.deps }}
- run: cargo test --target ${{ matrix.target }} --workspace --all-targets --all-features
# - run: cargo test --target ${{ matrix.target }} --workspace --all-targets
# - run: cargo test --target ${{ matrix.target }} --workspace --all-targets --no-default-features
test-nightly:
name: Test Nightly
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@nightly
- run: cargo test --workspace --all-targets
build:
name: Build
needs: format
# needs: [format, lint]
strategy:
fail-fast: true
matrix:
os: [ "ubuntu-latest" ]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
- name: Install Rust
uses: dtolnay/rust-toolchain@nightly
# Build ptrs library
- name: Build library and bins
run: cargo build
- name: Install cargo-llvm-cov
uses: taiki-e/install-action@cargo-llvm-cov
- name: Generate code coverage
run: cargo llvm-cov --all-features --workspace --codecov --output-path codecov.json
- name: Codecov
uses: codecov/[email protected]
with:
fail_ci_if_error: true
files: codecov.json
token: ${{ secrets.CODECOV_TOKEN }} # required
verbose: true
slug: jmwample/o7