Skip to content

Update Github Actions CI for the master branch #192

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 6 commits into from
Jan 4, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .cargo/config
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Allow normal use of "cargo run" and "cargo test" on these wasm32 platforms.
[target.wasm32-unknown-unknown]
runner = 'wasm-bindgen-test-runner'

[target.wasm32-wasi]
runner = 'wasmtime'
1 change: 1 addition & 0 deletions .clippy.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
msrv = "1.34"
223 changes: 160 additions & 63 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,36 +14,47 @@ env:

jobs:
check-doc:
name: Doc deadlinks
name: Docs, deadlinks, minimal dependencies
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install toolchain
uses: actions-rs/toolchain@v1
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: nightly
toolchain: nightly # Needed for -Z minimal-versions
override: true
- run: cargo install cargo-deadlinks
- run: cargo deadlinks -- --features custom
- name: Install precompiled cargo-deadlinks
run: |
export URL=$(curl -s https://api.github.com/repos/deadlinks/cargo-deadlinks/releases/latest | jq -r '.assets[] | select(.name | contains("cargo-deadlinks-linux")) | .browser_download_url')
wget -O /tmp/cargo-deadlinks $URL
chmod +x /tmp/cargo-deadlinks
mv /tmp/cargo-deadlinks ~/.cargo/bin
- run: cargo deadlinks -- --features=custom,std
- run: |
cargo generate-lockfile -Z minimal-versions
cargo test --features=custom,std

main-tests:
name: Main tests
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
os: [ubuntu-latest, windows-latest]
toolchain: [nightly, beta, stable, 1.34]
# Only Test macOS on stable to reduce macOS CI jobs
include:
- os: macos-latest
toolchain: stable
steps:
- uses: actions/checkout@v2
- name: Install toolchain
uses: actions-rs/toolchain@v1
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: ${{ matrix.toolchain }}
override: true
- run: cargo test
- run: cargo test --features std
- run: cargo test --features=std
- run: cargo test --features=custom # custom should do nothing here
- if: ${{ matrix.toolchain == 'nightly' }}
run: cargo build --benches

Expand All @@ -59,18 +70,40 @@ jobs:
]
steps:
- uses: actions/checkout@v2
- name: Install toolchain
uses: actions-rs/toolchain@v1
- uses: actions-rs/toolchain@v1
with:
profile: minimal
target: ${{ matrix.target }}
toolchain: stable
override: true
# update is needed to fix the 404 error on install, see:
# https://github.com/actions/virtual-environments/issues/675
- run: sudo apt-get update
- run: sudo apt-get install gcc-multilib
- run: cargo test --target ${{ matrix.target }}
- name: Install multilib
# update is needed to fix the 404 error on install, see:
# https://github.com/actions/virtual-environments/issues/675
run: |
sudo apt-get update
sudo apt-get install gcc-multilib
- run: cargo test --target=${{ matrix.target }} --features=std

# We can only Build/Link on these targets for now.
# TODO: Run the iOS binaries in the simulator
# TODO: build/run aarch64-apple-darwin binaries on a x86_64 Mac
apple-tests:
name: Additional Apple targets
runs-on: macos-latest
strategy:
matrix:
target: [
aarch64-apple-ios,
x86_64-apple-ios,
]
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
profile: minimal
target: ${{ matrix.target }}
toolchain: stable
- name: Build Tests
run: cargo test --no-run --target=${{ matrix.target }} --features=std

windows-tests:
name: Additional Windows targets
Expand All @@ -90,88 +123,149 @@ jobs:
profile: minimal
toolchain: ${{ matrix.toolchain }}
override: true
- run: cargo test
- run: cargo test --features=std

# TODO: Add emscripten when it's working with Cross
cross-tests:
name: Cross tests
runs-on: ${{ matrix.os }}
name: Cross Test
runs-on: ubuntu-latest
strategy:
matrix:
include:
- os: ubuntu-latest
target: mips-unknown-linux-gnu
toolchain: stable
target: [
aarch64-unknown-linux-gnu,
aarch64-linux-android,
mips-unknown-linux-gnu,
]
steps:
- uses: actions/checkout@v2
- name: Install toolchain
uses: actions-rs/toolchain@v1
- uses: actions-rs/toolchain@v1
with:
profile: minimal
target: ${{ matrix.target }}
toolchain: ${{ matrix.toolchain }}
override: true
- name: Cache cargo plugins
uses: actions/cache@v1
with:
path: ~/.cargo/bin/
key: ${{ runner.os }}-cargo-plugins
- name: Install cross
run: cargo install cross || true
toolchain: stable
- name: Install precompiled cross
run: |
export URL=$(curl -s https://api.github.com/repos/rust-embedded/cross/releases/latest | jq -r '.assets[] | select(.name | contains("x86_64-unknown-linux-gnu.tar.gz")) | .browser_download_url')
wget -O /tmp/binaries.tar.gz $URL
tar -C /tmp -xzf /tmp/binaries.tar.gz
mv /tmp/cross ~/.cargo/bin
- name: Test
run: cross test --no-fail-fast --target ${{ matrix.target }}
run: cross test --no-fail-fast --target=${{ matrix.target }} --features=std

build:
name: Build-only
cross-link:
name: Cross Build/Link
runs-on: ubuntu-latest
strategy:
matrix:
target: [
x86_64-sun-solaris,
x86_64-unknown-netbsd,
]
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
profile: minimal
target: ${{ matrix.target }}
toolchain: stable
- name: Install precompiled cross
run: |
export URL=$(curl -s https://api.github.com/repos/rust-embedded/cross/releases/latest | jq -r '.assets[] | select(.name | contains("x86_64-unknown-linux-gnu.tar.gz")) | .browser_download_url')
wget -O /tmp/binaries.tar.gz $URL
tar -C /tmp -xzf /tmp/binaries.tar.gz
mv /tmp/cross ~/.cargo/bin
- name: Build Tests
run: cross test --no-run --target=${{ matrix.target }} --features=std

web-tests:
name: Web tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
profile: minimal
target: wasm32-unknown-unknown
toolchain: stable
- name: Install precompiled wasm-bindgen-test-runner
run: |
export VERSION=$(cargo metadata --format-version=1 | jq -r '.packages[] | select ( .name == "wasm-bindgen" ) | .version')
wget -O /tmp/binaries.tar.gz https://github.com/rustwasm/wasm-bindgen/releases/download/$VERSION/wasm-bindgen-$VERSION-x86_64-unknown-linux-musl.tar.gz
tar -C /tmp -xzf /tmp/binaries.tar.gz --strip-components=1
mv /tmp/wasm-bindgen-test-runner ~/.cargo/bin
- name: Test (Node)
run: cargo test --target=wasm32-unknown-unknown --features=js
- name: Test (Firefox)
env:
GECKODRIVER: /usr/bin/geckodriver
run: cargo test --target=wasm32-unknown-unknown --features=js,test-in-browser
- name: Test (Chrome)
env:
CHROMEDRIVER: /usr/bin/chromedriver
run: cargo test --target=wasm32-unknown-unknown --features=js,test-in-browser
- name: Build Tests (with custom, without JS)
run: cargo test --no-run --target=wasm32-unknown-unknown --features=custom

wasi-tests:
name: WASI test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
profile: minimal
target: wasm32-wasi
toolchain: stable
- name: Install precompiled wasmtime
run: |
export URL=$(curl -s https://api.github.com/repos/bytecodealliance/wasmtime/releases/latest | jq -r '.assets[] | select(.name | contains("x86_64-linux.tar.xz")) | .browser_download_url')
wget -O /tmp/binaries.tar.xz $URL
tar -C /tmp -xf /tmp/binaries.tar.xz --strip-components=1
mv /tmp/wasmtime ~/.cargo/bin
- run: cargo test --target wasm32-wasi

build:
name: Build only
runs-on: ubuntu-latest
strategy:
matrix:
target: [
x86_64-unknown-freebsd,
x86_64-fuchsia,
x86_64-unknown-netbsd,
x86_64-unknown-redox,
x86_64-fortanix-unknown-sgx,
]
steps:
- uses: actions/checkout@v2
- name: Install toolchain
uses: actions-rs/toolchain@v1
- uses: actions-rs/toolchain@v1
with:
profile: minimal
target: ${{ matrix.target }}
toolchain: nightly
toolchain: nightly # Required to build libc for Redox
override: true
- name: Build
run: cargo build --target ${{ matrix.target }}
run: cargo build --target=${{ matrix.target }} --features=std

build-rdrand:
name: Build-only RDRAND
build-std:
name: Build-only (build-std)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: nightly
toolchain: nightly # Required to build libcore
components: rust-src
override: true
- name: Cache cargo plugins
uses: actions/cache@v1
with:
path: ~/.cargo/bin/
key: ${{ runner.os }}-cargo-plugins
- name: Install xbuild
run: cargo install cargo-xbuild || true
- name: UEFI
run: cargo xbuild --features=rdrand --target x86_64-unknown-uefi
- name: Hermit
run: cargo xbuild --features=rdrand --target x86_64-unknown-hermit
- name: L4Re
run: cargo xbuild --features=rdrand --target x86_64-unknown-l4re-uclibc
- name: UEFI (RDRAND)
run: cargo build -Z build-std=core --features=rdrand --target=x86_64-unknown-uefi
- name: Hermit (RDRAND)
run: cargo build -Z build-std=core --features=rdrand --target=x86_64-unknown-hermit
- name: L4Re (RDRAND)
run: cargo build -Z build-std=core --features=rdrand --target=x86_64-unknown-l4re-uclibc
- name: VxWorks
run: cargo xbuild --features=rdrand --target x86_64-wrs-vxworks
run: cargo build -Z build-std=core --target=x86_64-wrs-vxworks

clippy-fmt:
name: Clippy + rustfmt
Expand All @@ -181,9 +275,12 @@ jobs:
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
# https://github.com/rust-lang/rust-clippy/pull/6379 added MSRV
# support, so we need to use nightly until this is on stable.
toolchain: nightly
components: rustfmt, clippy
override: true
- name: clippy
run: cargo clippy --all
run: cargo clippy --all --features=custom,std
- name: fmt
run: cargo fmt --all -- --check
2 changes: 0 additions & 2 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -146,8 +146,6 @@
)]
#![no_std]
#![warn(rust_2018_idioms, unused_lifetimes, missing_docs)]
// `matches!` macro was added only in Rust 1.42, which is bigger than our MSRV
#![allow(clippy::match_like_matches_macro)]

#[macro_use]
extern crate cfg_if;
Expand Down