dcsctp 0.1.14

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

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

permissions:
  contents: read

env:
  CARGO_TERM_COLOR: always

jobs:
  test:
    name: Test
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
        with:
          persist-credentials: false
      - uses: actions-rust-lang/setup-rust-toolchain@166cdcfd11aee3cb47222f9ddb555ce30ddb9659 # v1.17.0
      - run: cargo test --workspace --verbose

  fuzz:
    name: Fuzz
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
        with:
          persist-credentials: false
      - uses: actions-rust-lang/setup-rust-toolchain@166cdcfd11aee3cb47222f9ddb555ce30ddb9659 # v1.17.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@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
        with:
          persist-credentials: false
      - uses: actions-rust-lang/setup-rust-toolchain@166cdcfd11aee3cb47222f9ddb555ce30ddb9659 # v1.17.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@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
        with:
          persist-credentials: false
      - 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@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
        with:
          persist-credentials: false
      - uses: actions-rust-lang/setup-rust-toolchain@166cdcfd11aee3cb47222f9ddb555ce30ddb9659 # v1.17.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@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
        with:
          persist-credentials: false
      - uses: actions-rust-lang/setup-rust-toolchain@166cdcfd11aee3cb47222f9ddb555ce30ddb9659 # v1.17.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@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
        with:
          persist-credentials: false
      - uses: actions-rust-lang/setup-rust-toolchain@166cdcfd11aee3cb47222f9ddb555ce30ddb9659 # v1.17.0
      - run: |
          cd examples/pingpong/
          make clean all
          ./main