libp2p 0.16.0

Peer-to-peer networking library
Documentation
name: Continuous integration

on:
  pull_request:
  push:
    branches:    
      - master

jobs:
  test-desktop:
    name: Build and test
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v1
    - name: Cache cargo registry
      uses: actions/cache@v1
      with:
        path: ~/.cargo/registry
        key: cargo-registry-${{ hashFiles('Cargo.toml') }}
    - name: Cache cargo index
      uses: actions/cache@v1
      with:
        path: ~/.cargo/git
        key: cargo-index-${{ hashFiles('Cargo.toml') }}
    - name: Cache cargo build
      uses: actions/cache@v1
      with:
        path: target
        key: cargo-build-target-${{ hashFiles('Cargo.toml') }}
    - name: Run tests, with no feature
      run: cargo test --workspace --no-default-features
    - name: Run tests, with all features
      run: cargo test --workspace --all-features

  test-wasm:
    name: Build on WASM
    runs-on: ubuntu-latest
    container:
      image: rust
      env:
        CC: clang-9
    steps:
    - uses: actions/checkout@v1
    - name: Install Rust
      uses: actions-rs/toolchain@v1
      with:
        toolchain: stable
        target: wasm32-unknown-unknown
        override: true
    - name: Install a recent version of clang
      run: |
        wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add -
        echo "deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-9 main" >> /etc/apt/sources.list
        apt-get update
        apt-get install -y clang-9
    - name: Install CMake
      run: apt-get install -y cmake
    - name: Cache cargo registry
      uses: actions/cache@v1
      with:
        path: ~/.cargo/registry
        key: wasm-cargo-registry-${{ hashFiles('Cargo.toml') }}
    - name: Cache cargo index
      uses: actions/cache@v1
      with:
        path: ~/.cargo/git
        key: wasm-cargo-index-${{ hashFiles('Cargo.toml') }}
    - name: Cache cargo build
      uses: actions/cache@v1
      with:
        path: target
        key: wasm-cargo-build-target-${{ hashFiles('Cargo.toml') }}
    - name: Build on WASM
      # TODO: also run `cargo test`
      # TODO: ideally we would build `--workspace`, but not all crates compile for WASM
      run: cargo build --target=wasm32-unknown-unknown

  check-rustdoc-links:
    name: Check rustdoc intra-doc links
    runs-on: ubuntu-latest
    container:
      image: rust
    steps:
    - uses: actions/checkout@v1
    - name: Install nightly Rust
      # TODO: intra-doc links are available on nightly only
      # see https://doc.rust-lang.org/nightly/rustdoc/lints.html#intra_doc_link_resolution_failure
      run: rustup default nightly
    - name: Check rustdoc links
      run: RUSTDOCFLAGS="--deny intra_doc_link_resolution_failure" cargo +nightly doc --verbose --workspace --no-deps --document-private-items