hypercore 0.17.0-alpha.1

Secure, distributed, append-only log
Documentation
name: 'CI'
on:
  pull_request:
  push:
    branches:
      - master

env:
  RUST_BACKTRACE: 1
  CARGO_TERM_COLOR: always
  RUSTFLAGS: "-Dwarnings"
  RUSTDOCFLAGS: "-Dwarnings"

jobs:
  ci-pass:
    name: CI is green
    runs-on: ubuntu-latest
    needs:
      - test-linux
      - test-windows
      - test-macos
      - build-extra
      - lint
    steps:
      - run: exit 0

  test-linux:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3
    - uses: dtolnay/rust-toolchain@stable
      with:
        components: rustfmt
    - name: Run tests
      run: |
        cargo check --all-targets
        cargo check --all-targets --all-features
        cargo check --all-targets --no-default-features
        cargo check --all-targets --no-default-features --features sparse
        cargo check --all-targets --no-default-features --features sparse,cache
        cargo test
        cargo test --all-features
        cargo test --no-default-features
        cargo test --no-default-features --features js_interop_tests
        cargo test --no-default-features --features js_interop_tests,sparse
        cargo test --no-default-features --features js_interop_tests,sparse,cache
        cargo test --benches --no-default-features
  test-windows:
    runs-on: windows-latest

    steps:
      - uses: actions/checkout@v3
      - uses: dtolnay/rust-toolchain@stable
        with:
          components: rustfmt
      - name: Run tests
        run: |
          cargo check --all-targets
          cargo check --all-targets --all-features
          cargo check --all-targets --no-default-features
          cargo check --all-targets --no-default-features --features sparse
          cargo check --all-targets --no-default-features --features sparse,cache
          cargo test
          cargo test --all-features
          cargo test --no-default-features
          cargo test --no-default-features --features sparse
          cargo test --no-default-features --features sparse,cache
          cargo test --benches --no-default-features

  test-macos:
    runs-on: macos-latest

    steps:
      - uses: actions/checkout@v3
      - uses: dtolnay/rust-toolchain@stable
        with:
          components: rustfmt
      - name: Run tests
        run: |
          cargo check --all-targets
          cargo check --all-targets --all-features
          cargo check --all-targets --no-default-features
          cargo check --all-targets --no-default-features --features sparse
          cargo check --all-targets --no-default-features --features sparse,cache
          cargo test
          cargo test --all-features
          cargo test --no-default-features
          cargo test --no-default-features --features js_interop_tests
          cargo test --no-default-features --features js_interop_tests,sparse
          cargo test --no-default-features --features js_interop_tests,sparse,cache
          cargo test --benches --no-default-features

  build-extra:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3
      - uses: dtolnay/rust-toolchain@stable
        with:
          targets: wasm32-unknown-unknown
      - name: Build WASM
        run: |
          cargo build --target=wasm32-unknown-unknown --no-default-features
      - name: Build release
        run: |
          cargo build --release --no-default-features
          cargo build --release --no-default-features --features sparse
          cargo build --release --no-default-features --features sparse,cache
      - name: Run examples
        run: |
          cargo run --no-default-features --example disk
          cargo run --no-default-features --example memory
          cargo run --no-default-features --example replication

  lint:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3
    - uses: dtolnay/rust-toolchain@stable
      with:
        components: rustfmt, clippy
    - uses: actions-rs/clippy-check@v1
      with:
        token: ${{ secrets.GITHUB_TOKEN }}
    - name: Format check
      run: |
        cargo doc
        cargo fmt -- --check
        cargo clippy --all-targets