dcsctp 0.1.13

An SCTP implementation for WebRTC Data Channels
Documentation
---
name: Continuous Integration

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

permissions: read-all

env:
  CARGO_TERM_COLOR: always

jobs:
  test:
    name: Test
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
      - uses: actions-rust-lang/setup-rust-toolchain@2b1f5e9b395427c92ee4e3331786ca3c37afe2d7 # v1.16.0
      - run: cargo test --workspace --verbose

  fuzz:
    name: Fuzz
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
      - uses: actions-rust-lang/setup-rust-toolchain@2b1f5e9b395427c92ee4e3331786ca3c37afe2d7 # v1.16.0
        with:
          toolchain: nightly
      - run: |
          cargo install cargo-fuzz
          cargo fuzz build
          cargo fuzz run parse_parameters -- -max_total_time=10 -timeout=1 -max_len=200
          cargo fuzz run parse_error_causes -- -max_total_time=10 -timeout=1 -max_len=200
          cargo fuzz run parse_packet -- -max_total_time=10 -timeout=1 -max_len=200
          cargo fuzz run fuzz_outstanding_data -- -max_total_time=10 -timeout=1 -max_len=200

  check-rustfmt:
    name: Check (rustfmt)
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
      - uses: actions-rust-lang/setup-rust-toolchain@2b1f5e9b395427c92ee4e3331786ca3c37afe2d7 # v1.16.0
        with:
          toolchain: nightly
          components: rustfmt
      - run: cargo fmt --all -- --check

  check-clang-format:
    name: Check (clang-format)
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
      - run: |
          git ls-files -z '*.cc' '*.h' | xargs -0 clang-format --dry-run --Werror

  check-clippy:
    name: Check (clippy)
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
      - uses: actions-rust-lang/setup-rust-toolchain@2b1f5e9b395427c92ee4e3331786ca3c37afe2d7 # v1.16.0
        with:
          components: clippy
      - run: >
          cargo clippy
          --workspace
          --all-features
          --all-targets
          --
          -D warnings

  check-doctests:
    name: Check (doc tests)
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
      - uses: actions-rust-lang/setup-rust-toolchain@2b1f5e9b395427c92ee4e3331786ca3c37afe2d7 # v1.16.0
      # NOTE: We need to run `cargo test --doc` separately from normal tests:
      # https://github.com/rust-lang/cargo/issues/6669
      - env:
          RUST_BACKTRACE: 1
        run: cargo test --workspace --doc
      - env:
          RUSTDOCFLAGS: "--deny warnings"
        run: >
          cargo doc
          --workspace
          --no-deps
          --all-features
          --document-private-items

  check-cxx:
    name: Check (cxx)
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
      - uses: actions-rust-lang/setup-rust-toolchain@2b1f5e9b395427c92ee4e3331786ca3c37afe2d7 # v1.16.0
      - run: |
          cd examples/pingpong/
          make clean all
          ./main