1name: All Tests and Builds 2 3env: 4 # It's really `--all-features`, but not adding the mutually exclusive features from rkyv 5 ALL_NON_EXCLUSIVE_FEATURES: --features "default unstable-locales rkyv-32 rkyv-validation rustc-serialize serde arbitrary" 6 7on: 8 push: 9 branches: [main, 0.4.x] 10 pull_request: 11 12jobs: 13 timezones: 14 strategy: 15 matrix: 16 os: [ubuntu-latest, macos-latest, windows-latest] 17 tz: ["ACST-9:30", "EST4", "UTC0", "Asia/Katmandu"] 18 runs-on: ${{ matrix.os }} 19 steps: 20 - uses: actions/checkout@v4 21 - uses: dtolnay/rust-toolchain@stable 22 - uses: Swatinem/rust-cache@v2 23 - run: cargo test ${{ env.ALL_NON_EXCLUSIVE_FEATURES }} --color=always -- --color=always 24 25 # later this may be able to be included with the below 26 # kept separate for now as the following don't compile on 1.60 27 # * arbitrary (requires 1.63 as of v1.3.0) 28 rust_msrv: 29 strategy: 30 matrix: 31 os: [ubuntu-latest] 32 runs-on: ${{ matrix.os }} 33 steps: 34 - uses: actions/checkout@v4 35 - uses: dtolnay/rust-toolchain@master 36 with: 37 toolchain: "1.61.0" 38 - uses: Swatinem/rust-cache@v2 39 # run --lib and --doc to avoid the long running integration tests 40 # which are run elsewhere 41 - run: | 42 cargo test --lib \ 43 --features \ 44 unstable-locales,wasmbind,oldtime,clock,rustc-serialize,winapi,serde \ 45 --color=always -- --color=always 46 - run: | 47 cargo test --doc \ 48 --features \ 49 unstable-locales,wasmbind,oldtime,clock,rustc-serialize,winapi,serde \ 50 --color=always -- --color=always 51 52 rust_versions: 53 strategy: 54 matrix: 55 os: [ubuntu-latest] 56 rust_version: ["stable", "beta", "nightly"] 57 runs-on: ${{ matrix.os }} 58 steps: 59 - uses: actions/checkout@v4 60 - uses: dtolnay/rust-toolchain@master 61 with: 62 toolchain: ${{ matrix.rust_version }} 63 - uses: Swatinem/rust-cache@v2 64 - run: cargo check --manifest-path bench/Cargo.toml --benches 65 - run: cargo check --manifest-path fuzz/Cargo.toml --all-targets 66 # run --lib and --doc to avoid the long running integration tests 67 # which are run elsewhere 68 - run: cargo test --lib ${{ env.ALL_NON_EXCLUSIVE_FEATURES }} --color=always -- --color=always 69 - run: cargo test --doc ${{ env.ALL_NON_EXCLUSIVE_FEATURES }} --color=always -- --color=always 70 71 features_check: 72 strategy: 73 matrix: 74 os: [ubuntu-latest, macos-latest, windows-latest] 75 runs-on: ${{ matrix.os }} 76 steps: 77 - uses: actions/checkout@v4 78 - uses: dtolnay/rust-toolchain@stable 79 - uses: taiki-e/install-action@cargo-hack 80 - uses: Swatinem/rust-cache@v2 81 - run: | 82 cargo hack check --feature-powerset --optional-deps arbitrary,serde \ 83 --skip __internal_bench,iana-time-zone,pure-rust-locales,libc,winapi,rkyv-16,rkyv-64,rkyv-validation \ 84 --all-targets 85 # run using `bash` on all platforms for consistent 86 # line-continuation marks 87 shell: bash 88 env: 89 RUSTFLAGS: "-D warnings" 90 - run: cargo test --no-default-features 91 - run: cargo test --no-default-features --features=alloc 92 - run: cargo test --no-default-features --features=unstable-locales 93 - run: cargo test --no-default-features --features=alloc,unstable-locales 94 - run: cargo test --no-default-features --features=now 95 96 no_std: 97 strategy: 98 matrix: 99 os: [ubuntu-latest] 100 target: [thumbv6m-none-eabi, x86_64-fortanix-unknown-sgx] 101 runs-on: ${{ matrix.os }} 102 steps: 103 - uses: actions/checkout@v4 104 - uses: dtolnay/rust-toolchain@stable 105 with: 106 targets: ${{ matrix.target }} 107 - uses: Swatinem/rust-cache@v2 108 - run: cargo build --target ${{ matrix.target }} --color=always 109 working-directory: ./ci/core-test 110 111 alternative_targets: 112 strategy: 113 matrix: 114 os: [ubuntu-latest] 115 target: 116 [ 117 wasm32-unknown-emscripten, 118 aarch64-apple-ios, 119 aarch64-linux-android, 120 ] 121 runs-on: ${{ matrix.os }} 122 steps: 123 - uses: actions/checkout@v4 124 - uses: dtolnay/rust-toolchain@stable 125 with: 126 targets: ${{ matrix.target }} 127 - uses: Swatinem/rust-cache@v2 128 - run: cargo build --target ${{ matrix.target }} --color=always 129 130 test_wasm: 131 strategy: 132 matrix: 133 os: [ubuntu-latest] 134 runs-on: ${{ matrix.os }} 135 steps: 136 - uses: actions/checkout@v4 137 - uses: dtolnay/rust-toolchain@stable 138 with: 139 targets: wasm32-unknown-unknown 140 - uses: Swatinem/rust-cache@v2 141 - uses: actions/setup-node@v4 142 - uses: jetli/wasm-pack-action@v0.4.0 143 # The `TZ` and `NOW` variables are used to compare the results inside the WASM environment 144 # with the host system. 145 - run: TZ="$(date +%z)" NOW="$(date +%s)" wasm-pack test --node -- --features wasmbind 146 147 test_wasi: 148 strategy: 149 matrix: 150 os: [ubuntu-latest] 151 target: 152 - wasm32-wasi 153 runs-on: ${{ matrix.os }} 154 steps: 155 - uses: actions/checkout@v4 156 - uses: dtolnay/rust-toolchain@stable 157 with: 158 targets: wasm32-wasi 159 - uses: Swatinem/rust-cache@v2 160 - run: cargo install cargo-wasi 161 - uses: mwilliamson/setup-wasmtime-action@v2 162 with: 163 wasmtime-version: "12.0.1" 164 # We can't use `--all-features` because `rustc-serialize` doesn't support 165 # `wasm32-wasi`. 166 - run: cargo wasi test --features=serde,unstable-locales --color=always -- --color=always 167 168 cross-targets: 169 strategy: 170 matrix: 171 target: 172 - x86_64-sun-solaris 173 runs-on: ubuntu-latest 174 steps: 175 - uses: actions/checkout@v4 176 - run: cargo install cross 177 - uses: Swatinem/rust-cache@v2 178 - run: cross check --target ${{ matrix.target }} 179 180 cross-tests: 181 strategy: 182 matrix: 183 os: [ubuntu-latest] 184 runs-on: ${{ matrix.os }} 185 steps: 186 - uses: actions/checkout@v4 187 - run: cargo install cross 188 - uses: Swatinem/rust-cache@v2 189 - run: cross test --lib ${{ env.ALL_NON_EXCLUSIVE_FEATURES }} --target i686-unknown-linux-gnu --color=always 190 - run: cross test --doc ${{ env.ALL_NON_EXCLUSIVE_FEATURES }} --target i686-unknown-linux-gnu --color=always 191 - run: cross test --lib ${{ env.ALL_NON_EXCLUSIVE_FEATURES }} --target i686-unknown-linux-musl --color=always 192 - run: cross test --doc ${{ env.ALL_NON_EXCLUSIVE_FEATURES }} --target i686-unknown-linux-musl --color=always 193 194 check-docs: 195 runs-on: ubuntu-latest 196 steps: 197 - uses: actions/checkout@v4 198 - uses: dtolnay/rust-toolchain@nightly 199 - run: cargo +nightly doc ${{ env.ALL_NON_EXCLUSIVE_FEATURES }} --no-deps 200 env: 201 RUSTDOCFLAGS: "-D warnings --cfg docsrs" 202