Skip to content

Build and Test with Coverage #2266

Build and Test with Coverage

Build and Test with Coverage #2266

name: Build and Test with Coverage
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
schedule: # Build every day at 5PM UTC
- cron: '0 17 * * *'
env:
CARGO_TERM_COLOR: always
CARGO_INCREMENTAL: 0
jobs:
test-book-build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: install graphviz
run: sudo apt-get update && sudo apt-get -y install graphviz
- name: install mdbook
run: curl -sSL https://github.com/rust-lang/mdBook/releases/download/v0.4.27/mdbook-v0.4.27-x86_64-unknown-linux-gnu.tar.gz | tar -xz --directory=$HOME/.cargo/bin
- name: install link checker
run: |
curl -sSL https://github.com/Michael-F-Bryan/mdbook-linkcheck/releases/download/v0.7.7/mdbook-linkcheck.x86_64-unknown-linux-gnu.zip > mdbook-linkcheck.zip
mkdir -p $HOME/.cargo/bin
unzip mdbook-linkcheck.zip -d $HOME/.cargo/bin
chmod +x $HOME/.cargo/bin/mdbook-linkcheck
echo "PATH=$HOME/.cargo/bin:$PATH" >> "$GITHUB_ENV"
- name: make book
run: make book
clippy:
runs-on: ubuntu-latest
steps:
- name: Install latest nightly
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: nightly
override: true
components: clippy
- name: Checkout
uses: actions/checkout@v3
- name: run clippy
uses: actions-rs/cargo@v1
with:
command: clippy
args: --tests --no-deps --all-features --all-targets -- --warn clippy::pedantic
build-and-test:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ macos-14, ubuntu-latest ]
rust: [ nightly ]
steps:
- name: Checkout
uses: actions/checkout@v3
- name: SetupEnv
run: |
echo "PATH=$GITHUB_WORKSPACE/target/debug:$PATH" >> "$GITHUB_ENV"
echo "CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse" >> "$GITHUB_ENV"
- name: Install latest nightly
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: nightly
override: true
target: wasm32-unknown-unknown
- name: InstallLinuxDependencies
if: runner.os == 'Linux'
run: |
sudo apt-get update && sudo apt-get -y install libzmq3-dev binaryen lcov
wget https://github.com/WebAssembly/binaryen/releases/download/version_116/binaryen-version_116-x86_64-linux.tar.gz
tar -xvzf binaryen-version_116-x86_64-linux.tar.gz
sudo cp binaryen-version_116/bin/* /bin/
rm -rf binaryen-version_116
rm binaryen-version_116-x86_64-linux.tar.gz
which wasm-opt
wasm-opt --version
- name: InstallMacDependencies
if: runner.os == 'macOS'
run: brew install zmq binaryen lcov
- name: InstallWasmTools
uses: actions-rs/cargo@v1
with:
command: install
args: wasm-gc wasm-snip
- name: ConfigureCoverage
run: |
cargo install grcov
rustup component add llvm-tools-preview
echo RUSTFLAGS="-C instrument-coverage" >> "$GITHUB_ENV"
echo LLVM_PROFILE_FILE="flow-%p-%m.profraw" >> "$GITHUB_ENV"
- name: build
uses: actions-rs/cargo@v1
with:
command: build
- name: compile flowstdlib to WASM
run: target/debug/flowc -d -g -O flowstdlib
- name: compile flowrcli
run: target/debug/flowc flowr/src/bin/flowrcli
- name: compile flowrgui
run: target/debug/flowc flowr/src/bin/flowrgui
- name: test
uses: actions-rs/cargo@v1
with:
command: test
args: --features "online_tests"
- name: test-examples
uses: actions-rs/cargo@v1
with:
command: test
args: --examples
- name: UploadCoverage
run: |
grcov . --binary-path target/debug/ -s . -t lcov --branch --ignore-not-existing --ignore "/*" -o lcov.info
lcov --ignore-errors inconsistent --remove lcov.info 'target/debug/build/**' '**/errors.rs' '*tests/*' -o lcov.info
bash <(curl -s https://codecov.io/bash) -f lcov.info
rm -f lcov.info