refined path handling in build.rs, make it portable over windows #38
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
name: Rust CI # https://docs.github.com/en/actions, https://course.rs/test/ci.html | |
on: | |
push: | |
branches: [ master ] | |
pull_request: | |
branches: [ master ] | |
#schedule: -cron:'0 0 * * *' | |
# Allows you to run this workflow manually from the Actions tab | |
workflow_dispatch: | |
env: | |
CARGO_TERM_COLOR: always | |
jobs: | |
testbench: | |
#name: Build Rust Project | |
runs-on: ubuntu-latest # https://github.com/actions/virtual-environments | |
#strategy: | |
# matrix: | |
# toolchain: | |
# - stable | |
# - nightly | |
# | |
# build: [linux, macos, windows] | |
# include: | |
# - build: linux | |
# os: ubuntu-latest | |
# target: x86_64-unknown-linux-musl | |
# - build: macos | |
# os: macos-latest | |
# target: aarch64-apple-darwin | |
# - build: windows | |
# os: windows-latest | |
# target: x86_64-pc-windows-msvc | |
# fail-fast: false | |
steps: | |
#- run: rustup update ${{ matrix.toolchain }} && rustup default ${{ matrix.toolchain }} | |
#- name: Install toolchain | |
# uses: dtolnay/rust-toolchain@stable | |
# | |
# uses: actions-rs/toolchain@v1 | |
# with: | |
# toolchain: nightly | |
# #toolchain: ${{ matrix.rust }} | |
# #target: ${{ matrix.target }} | |
# #profile: minimal | |
# #override: true | |
#- uses: Swatinem/rust-cache@v2 | |
- uses: actions/cache@v3 | |
with: | |
path: | | |
~/.cargo/bin/ | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
target/ | |
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Run tests | |
# uses: taiki-e/install-action@nextest | |
run: cargo test -- --color always --nocapture #cargo nextest r | |
# cargo t --features num-rational -- --nocapture | |
# cargo r --features debug -- -G -2 1 2 3 4 | |
# cargo +nightly fuzz run calc24 | |
# cargo r -- -A 0 -G -2 1 2 3 4 | |
- name: Benchmark | |
run: cargo bench | |
# cargo bench --features pprof | |
# cargo bench --features dhat-heap | |
# cargo bench --features num-rational | |
# sudo cargo flamegraph --bench calc24_bench | |
#- name: Publish to crates-io | |
# uses: katyo/publish-crates@v2 | |
# with: | |
# registry-token: ${{ secrets.CARGO_REGISTRY_TOKEN }} | |
coverage: # https://github.com/xd009642/tarpaulin | |
runs-on: ubuntu-latest | |
#container: | |
# image: xd009642/tarpaulin:develop-nightly | |
# options: --security-opt seccomp=unconfined | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- uses: Swatinem/rust-cache@v2 | |
- uses: taiki-e/install-action@cargo-llvm-cov | |
- run: rustup toolchain install nightly --profile minimal --component llvm-tools | |
- name: Generate code coverage # https://github.com/actions-rs/tarpaulin | |
env: | |
CC: clang | |
CXX: clang++ | |
run: cargo +nightly llvm-cov --include-ffi --doctests --lcov --output-path lcov.info #--workspace --all-features | |
# cargo tarpaulin --run-types 'Tests,Doctests' --out Lcov --exclude-files 'inperse/src/*' | |
# cargo install tarpaulin | |
#uses: actions-rs/tarpaulin@v0.1 # XXX: no more working | |
#with: | |
# #version: '0.20.1' | |
# #args: '-- --test-threads 1' | |
# run-types: 'Tests,Doctests' | |
- name: Upload to codecov.io | |
uses: codecov/codecov-action@v3 | |
with: | |
# token: ${{secrets.CODECOV_TOKEN}} # not required for public repos | |
# fail_ci_if_error: true | |
files: lcov.info | |
#- name: Archive code coverage results | |
# uses: actions/upload-artifact@v3 | |
# with: | |
# name: code-coverage-report | |
# path: cobertura.xml | |