• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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