#!/usr/bin/env bash set -eox pipefail export DEFMT_LOG=trace MSRV="1.65.0" RUSTC_VERSIONS=( $MSRV "stable" "nightly" ) FEATURES_TEST=( "default" "std,proto-ipv4" "std,medium-ethernet,phy-raw_socket,proto-ipv6,socket-udp,socket-dns" "std,medium-ethernet,phy-tuntap_interface,proto-ipv6,socket-udp" "std,medium-ethernet,proto-ipv4,proto-ipv4-fragmentation,socket-raw,socket-dns" "std,medium-ethernet,proto-ipv4,proto-igmp,socket-raw,socket-dns" "std,medium-ethernet,proto-ipv4,socket-udp,socket-tcp,socket-dns" "std,medium-ethernet,proto-ipv4,proto-dhcpv4,socket-udp" "std,medium-ethernet,medium-ip,medium-ieee802154,proto-ipv6,socket-udp,socket-dns" "std,medium-ethernet,proto-ipv6,socket-tcp" "std,medium-ethernet,medium-ip,proto-ipv4,socket-icmp,socket-tcp" "std,medium-ip,proto-ipv6,socket-icmp,socket-tcp" "std,medium-ieee802154,proto-sixlowpan,socket-udp" "std,medium-ieee802154,proto-sixlowpan,proto-sixlowpan-fragmentation,socket-udp" "std,medium-ieee802154,proto-rpl,proto-sixlowpan,proto-sixlowpan-fragmentation,socket-udp" "std,medium-ip,proto-ipv4,proto-ipv6,socket-tcp,socket-udp" "std,medium-ethernet,medium-ip,medium-ieee802154,proto-ipv4,proto-ipv6,socket-raw,socket-udp,socket-tcp,socket-icmp,socket-dns,async" "std,medium-ieee802154,medium-ip,proto-ipv4,socket-raw" "std,medium-ethernet,proto-ipv4,proto-ipsec,socket-raw" ) FEATURES_TEST_NIGHTLY=( "alloc,medium-ethernet,proto-ipv4,proto-ipv6,socket-raw,socket-udp,socket-tcp,socket-icmp" ) FEATURES_CHECK=( "medium-ip,medium-ethernet,medium-ieee802154,proto-ipv6,proto-ipv6,proto-igmp,proto-dhcpv4,proto-ipsec,socket-raw,socket-udp,socket-tcp,socket-icmp,socket-dns,async" "defmt,medium-ip,medium-ethernet,proto-ipv6,proto-ipv6,proto-igmp,proto-dhcpv4,socket-raw,socket-udp,socket-tcp,socket-icmp,socket-dns,async" "defmt,alloc,medium-ip,medium-ethernet,proto-ipv6,proto-ipv6,proto-igmp,proto-dhcpv4,socket-raw,socket-udp,socket-tcp,socket-icmp,socket-dns,async" ) test() { local version=$1 rustup toolchain install $version for features in ${FEATURES_TEST[@]}; do cargo +$version test --no-default-features --features "$features" done if [[ $version == "nightly" ]]; then for features in ${FEATURES_TEST_NIGHTLY[@]}; do cargo +$version test --no-default-features --features "$features" done fi } check() { local version=$1 rustup toolchain install $version export DEFMT_LOG="trace" for features in ${FEATURES_CHECK[@]}; do cargo +$version check --no-default-features --features "$features" done } clippy() { rustup toolchain install $MSRV rustup component add clippy --toolchain=$MSRV cargo +$MSRV clippy --tests --examples -- -D warnings } coverage() { for features in ${FEATURES_TEST[@]}; do cargo llvm-cov --no-report --no-default-features --features "$features" done cargo llvm-cov report --lcov --output-path lcov.info } if [[ $1 == "test" || $1 == "all" ]]; then if [[ -n $2 ]]; then if [[ $2 == "msrv" ]]; then test $MSRV else test $2 fi else for version in ${RUSTC_VERSIONS[@]}; do test $version done fi fi if [[ $1 == "check" || $1 == "all" ]]; then if [[ -n $2 ]]; then if [[ $2 == "msrv" ]]; then check $MSRV else check $2 fi else for version in ${RUSTC_VERSIONS[@]}; do check $version done fi fi if [[ $1 == "clippy" || $1 == "all" ]]; then clippy fi if [[ $1 == "coverage" || $1 == "all" ]]; then coverage fi