BREAKING CHANGE - Enhance Python bindings plus streaming decryption support, improve chunk handling, add comprehensive tests #308
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# PR workflow. | |
# | |
# Runs full suite of checks, with warnings treated as errors. | |
# Gathers code coverage stats and publish them on coveralls.io. | |
name: PR | |
on: [pull_request] | |
env: | |
# Run all cargo commands with --verbose. | |
CARGO_TERM_VERBOSE: true | |
RUST_BACKTRACE: 1 | |
# Deny all compiler warnings. | |
RUSTFLAGS: "-D warnings" | |
jobs: | |
checks: | |
if: "!startsWith(github.event.pull_request.title, 'Automated version bump')" | |
name: Clippy & fmt | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
override: true | |
components: rustfmt, clippy | |
# Cache. | |
- name: Cargo cache registry, index and build | |
uses: actions/[email protected] | |
with: | |
path: | | |
~/.cargo/registry | |
~/.cargo/git | |
target | |
key: ${{ runner.os }}-cargo-cache-${{ hashFiles('**/Cargo.lock') }} | |
# Check if the code is formatted correctly. | |
- name: Check formatting | |
run: cargo fmt --all -- --check | |
# Run Clippy. | |
- name: Clippy checks | |
run: cargo clippy --all-targets --all-features | |
check_pr_size: | |
if: "!startsWith(github.event.pull_request.title, 'Automated version bump')" | |
name: Check PR size doesn't break set limit | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
fetch-depth: "0" | |
- uses: maidsafe/pr_size_checker@v2 | |
with: | |
max_lines_changed: 200 | |
coverage: | |
if: "!startsWith(github.event.pull_request.title, 'Automated version bump')" | |
name: Code coverage check | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
# Install Rust and required components | |
- uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
override: true | |
# Cache. | |
- name: Cargo cache registry, index and build | |
uses: actions/[email protected] | |
with: | |
path: | | |
~/.cargo/registry | |
~/.cargo/git | |
target | |
key: ${{ runner.os }}-cargo-cache-${{ hashFiles('**/Cargo.lock') }} | |
# Generate code coverage & push result to coveralls.io | |
- name: Install cargo-llvm-cov | |
uses: taiki-e/install-action@cargo-llvm-cov | |
- name: Generate code coverage | |
run: cargo llvm-cov --all-features --workspace --lcov --output-path lcov.info | |
- name: Push code coverage results to coveralls.io | |
uses: coverallsapp/github-action@master | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
parallel: true | |
path-to-lcov: ./lcov.info | |
- name: Coveralls Finished | |
uses: coverallsapp/github-action@master | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
parallel-finished: true | |
cargo-udeps: | |
if: "!startsWith(github.event.pull_request.title, 'Automated version bump')" | |
name: Unused dependency check | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
# Install Rust and required components | |
- uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: nightly | |
override: true | |
- name: Run cargo-udeps | |
uses: aig787/cargo-udeps-action@v1 | |
with: | |
version: 'latest' | |
args: '--all-targets' | |
cargo-deny: | |
if: "!startsWith(github.event.pull_request.title, 'Automated version bump')" | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
# wget the shared deny.toml file from the QA repo | |
- shell: bash | |
run: wget https://raw.githubusercontent.com/maidsafe/QA/master/misc-scripts/deny.toml | |
- uses: EmbarkStudios/cargo-deny-action@v1 | |
tests: | |
if: "!startsWith(github.event.pull_request.title, 'Automated version bump')" | |
name: Test | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
# Install Rust | |
- uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
override: true | |
# Cache. | |
- name: Cargo cache registry, index and build | |
uses: actions/[email protected] | |
with: | |
path: | | |
~/.cargo/registry | |
~/.cargo/git | |
target | |
key: ${{ runner.os }}-cargo-cache-${{ hashFiles('**/Cargo.lock') }} | |
# Run tests. | |
- name: Cargo test | |
run: cargo test --release | |
tests32: | |
if: "!startsWith(github.event.pull_request.title, 'Automated version bump')" | |
name: Test 32bit | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
# Install Rust | |
- uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
override: true | |
# Install 32 Bit compiler | |
- name: Install 32bit target | |
run: rustup target install i686-unknown-linux-gnu | |
- name: Install GCC Multilib | |
run: sudo apt install gcc-multilib | |
# Cache. | |
- name: Cargo cache registry, index and build | |
uses: actions/[email protected] | |
with: | |
path: | | |
~/.cargo/registry | |
~/.cargo/git | |
target | |
key: ${{ runner.os }}-cargo-cache-${{ hashFiles('**/Cargo.lock') }} | |
# Run tests. | |
- name: Cargo test | |
run: cargo test --release --target=i686-unknown-linux-gnu | |
# Test publish using --dry-run. | |
test-publish: | |
if: "!startsWith(github.event.pull_request.title, 'Automated version bump')" | |
name: Test Publish | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
# Install Rust | |
- uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
override: true | |
# Cargo publish dry run | |
- name: Cargo Publish Dry Run | |
run: cargo publish --dry-run |