gioser

tawasuyu/taffy

A high performance rust-powered UI layout library

HTML 5544Rust 88Markdown 11TOML 91926 Definitions

⎇ 3aa0419460ed255f4d4ef8c7a3b9e2446157f7eb .github/workflows/ci.yml YAML · 311 lines · 10.8 KB History raw

Bump DavidAnson/markdownlint-cli2-action from 22 to 23 (#939) 3aa041946 · dependabot[bot] ·

1on:
2  pull_request:
3  push:
4    branches:
5      - main
6      - 0.2.x
7      - 0.3.x
8
9name: CI
10
11env:
12  RUSTDOCFLAGS: "-D warnings"
13  CARGO_REGISTRIES_CRATES_IO_PROTOCOL: "sparse"
14
15jobs:
16  # MSRV check.
17  # Taffy only guarantees "latest stable". However we have this check here to ensure that we advertise
18  # our MSRV. We also make an effort not to increase MSRV in patch versions of Taffy.
19  #
20  # We only run `cargo build` (not `cargo test`) so as to avoid requiring dev-dependencies to build with the MSRV
21  # version. Building is likely sufficient as runtime errors varying between rust versions is very unlikely.
22  build-features-msrv:
23    name: "MSRV Build [Rust 1.71]"
24    runs-on: ubuntu-latest
25    steps:
26      - uses: actions/checkout@v6
27      - uses: dtolnay/rust-toolchain@master
28        with:
29          toolchain: 1.71
30      - run: cargo build
31
32  build-features-debug:
33    name: "Build [debug feature]"
34    runs-on: ubuntu-latest
35    steps:
36      - uses: actions/checkout@v6
37      - uses: dtolnay/rust-toolchain@stable
38      - run: cargo build --features debug
39
40  build-examples:
41    name: "Build Examples"
42    runs-on: ubuntu-latest
43    steps:
44      - uses: actions/checkout@v6
45      - uses: dtolnay/rust-toolchain@stable
46      - run: cargo build --examples
47
48  # cosmic_text example is excluded from the workspace as it breaks compilation of all crates
49  # in the workspace with our MSRV compiler
50  build-cosmic-text-example:
51    name: "Build cosmic-text example"
52    runs-on: ubuntu-latest
53    steps:
54      - uses: actions/checkout@v6
55      - uses: dtolnay/rust-toolchain@stable
56      - run: cd examples/cosmic_text && cargo build
57
58  # No features
59  test-features-none:
60    name: "Test Suite [no features]"
61    runs-on: ubuntu-latest
62    steps:
63      - uses: actions/checkout@v6
64      - uses: dtolnay/rust-toolchain@stable
65      - run: cargo build --no-default-features
66      - run: cargo test --tests --no-default-features --features taffy_tree
67
68  # Default
69  test-features-default:
70    name: "Test Suite [default features]"
71    runs-on: ubuntu-latest
72    steps:
73      - uses: actions/checkout@v6
74      - uses: dtolnay/rust-toolchain@stable
75      - run: cargo build
76      - run: cargo test --tests
77
78  test-features-all:
79    name: "Test Suite [all features]"
80    runs-on: ubuntu-latest
81    steps:
82      - uses: actions/checkout@v6
83      - uses: dtolnay/rust-toolchain@stable
84      - run: cargo build --all-features
85      - run: cargo test --tests --all-features
86
87  # The main reason for this target is to test compilation on 32bit targets
88  test-features-android-32bit:
89    name: "Test Suite [all features (i686-linux-android)]"
90    runs-on: ubuntu-latest
91    steps:
92      - uses: actions/checkout@v6
93      - uses: dtolnay/rust-toolchain@stable
94        with:
95          targets: i686-linux-android
96      - run: cargo build --all-features --target i686-linux-android
97      # TODO: enable tests (currently running into linking errors)
98      # - run: cargo test --tests --all-features --target i686-linux-android
99
100  test-features-default-with-serde:
101    name: "Test Suite [default + serde]"
102    runs-on: ubuntu-latest
103    steps:
104      - uses: actions/checkout@v6
105      - uses: dtolnay/rust-toolchain@stable
106      - run: cargo build --features serde
107      - run: cargo test --tests --features serde
108
109  test-features-default-with-parse-faster:
110    name: "Test Suite [default + parse_faster]"
111    runs-on: ubuntu-latest
112    steps:
113      - uses: actions/checkout@v6
114      - uses: dtolnay/rust-toolchain@stable
115      - run: cargo build --features parse_faster
116      - run: cargo test --tests --features parse_faster
117
118  test-features-default-except-content-size:
119    name: "Test Suite [default except content_size]"
120    runs-on: ubuntu-latest
121    steps:
122      - uses: actions/checkout@v6
123      - uses: dtolnay/rust-toolchain@stable
124      - run: cargo build --no-default-features --features std,taffy_tree,grid,flexbox,block_layout
125      - run: cargo test --tests --no-default-features --features std,taffy_tree,grid,flexbox,block_layout,calc
126
127  test-features-default-except-calc:
128    name: "Test Suite [default except calc]"
129    runs-on: ubuntu-latest
130    steps:
131      - uses: actions/checkout@v6
132      - uses: dtolnay/rust-toolchain@stable
133      - run: cargo build --no-default-features --features std,taffy_tree,grid,flexbox,block_layout
134      - run: cargo test --tests --no-default-features --features std,taffy_tree,grid,flexbox,block_layout
135
136  test-features-no-grid-nor-flexbox:
137    name: "Test Suite [std (no algorithms)]"
138    runs-on: ubuntu-latest
139    steps:
140      - uses: actions/checkout@v6
141      - uses: dtolnay/rust-toolchain@stable
142      - run: cargo build --no-default-features --features std
143      - run: cargo build --no-default-features --features std,taffy_tree
144      - run: cargo test --tests --no-default-features --features std,taffy_tree,calc
145
146  # With std feature
147  test-features-flexbox:
148    name: "Test Suite [std + flexbox]"
149    runs-on: ubuntu-latest
150    steps:
151      - uses: actions/checkout@v6
152      - uses: dtolnay/rust-toolchain@stable
153      - run: cargo build --no-default-features --features flexbox,std
154      - run: cargo build --no-default-features --features flexbox,std,taffy_tree
155      - run: cargo test --tests --no-default-features --features flexbox,std,taffy_tree
156
157  test-features-grid:
158    name: "Test Suite [std + grid]"
159    runs-on: ubuntu-latest
160    steps:
161      - uses: actions/checkout@v6
162      - uses: dtolnay/rust-toolchain@stable
163      - run: cargo build --no-default-features --features grid,std
164      - run: cargo build --no-default-features --features grid,std,taffy_tree
165      - run: cargo test --tests --no-default-features --features grid,std,taffy_tree
166
167  test-features-block:
168    name: "Test Suite [std + block)]"
169    runs-on: ubuntu-latest
170    steps:
171      - uses: actions/checkout@v6
172      - uses: dtolnay/rust-toolchain@stable
173      - run: cargo build --no-default-features --features block_layout,std
174      - run: cargo build --no-default-features --features block_layout,std,taffy_tree
175      - run: cargo test --tests --no-default-features --features block_layout,std,taffy_tree
176
177  # With detailed layout info
178  test-features-grid-detailed-info:
179    name: "Test Suite [std + grid + detailed_layout_info]"
180    runs-on: ubuntu-latest
181    steps:
182      - uses: actions/checkout@v6
183      - uses: dtolnay/rust-toolchain@stable
184      - run: cargo build --no-default-features --features grid,detailed_layout_info,std
185      - run: cargo build --no-default-features --features grid,detailed_layout_info,std,taffy_tree
186      - run: cargo test --tests --no-default-features --features grid,detailed_layout_info,std,taffy_tree
187
188  # With detailed layout info
189  test-features-flex-detailed-info:
190    name: "Test Suite [std + flexbox + detailed_layout_info]"
191    runs-on: ubuntu-latest
192    steps:
193      - uses: actions/checkout@v6
194      - uses: dtolnay/rust-toolchain@stable
195      - run: cargo build --no-default-features --features flexbox,detailed_layout_info,std
196      - run: cargo build --no-default-features --features flexbox,detailed_layout_info,std,taffy_tree
197      - run: cargo test --tests --no-default-features --features flexbox,detailed_layout_info,std,taffy_tree
198
199  # With alloc feature
200
201  test-features-grid-with-alloc:
202    name: "Test Suite [alloc + no algorithms]"
203    runs-on: ubuntu-latest
204    steps:
205      - uses: actions/checkout@v6
206      - uses: dtolnay/rust-toolchain@stable
207      - run: cargo build --no-default-features --features alloc
208      - run: cargo build --no-default-features --features alloc,taffy_tree
209      - run: cargo test --tests --no-default-features --features alloc,taffy_tree
210
211  test-features-alloc:
212    name: "Test Suite [alloc + all algorithms]"
213    runs-on: ubuntu-latest
214    steps:
215      - uses: actions/checkout@v6
216      - uses: dtolnay/rust-toolchain@stable
217      - run: cargo build --no-default-features --features alloc,grid,flexbox,block_layout
218      - run: cargo build --no-default-features --features alloc,grid,flexbox,block_layout,taffy_tree
219      - run: cargo test --tests  --no-default-features --features alloc,grid,flexbox,block_layout,taffy_tree
220
221  fmt:
222    name: Rustfmt
223    runs-on: ubuntu-latest
224    steps:
225      - uses: actions/checkout@v6
226      - uses: dtolnay/rust-toolchain@master
227        with:
228          toolchain: stable
229          components: rustfmt
230      - run: cargo fmt --all -- --check
231
232  clippy:
233    name: Clippy
234    runs-on: ubuntu-latest
235    steps:
236      - uses: actions/checkout@v6
237      - uses: dtolnay/rust-toolchain@master
238        with:
239          toolchain: stable
240          components: clippy
241      - run: cargo clippy --workspace -- -D warnings
242
243  # Run rustdoc with the `docsrs` cfg to ensure that the documentation is compatible with docs.rs.
244  # This enables the doc_auto_cfg feature, which requires the nightly toolchain.
245  # Also checks that the examples can be scraped.
246  doc:
247    name: Documentation
248    runs-on: ubuntu-latest
249    env:
250      RUSTDOCFLAGS: "--cfg docsrs"
251    steps:
252      - uses: actions/checkout@v6
253      - uses: dtolnay/rust-toolchain@master
254        with:
255          toolchain: nightly
256          components: clippy
257      - run: cargo +nightly doc -Zunstable-options -Zrustdoc-scrape-examples --all-features --no-deps
258
259  markdownlint:
260    name: Markdown Lint
261    runs-on: ubuntu-latest
262    steps:
263      - uses: actions/checkout@v6
264      - name: Run Markdown Lint
265        uses: DavidAnson/markdownlint-cli2-action@v23
266        with:
267          globs: "**/*.md"
268
269  fixture-format:
270    name: Test Fixture Formatting
271    runs-on: ubuntu-latest
272    steps:
273      - uses: actions/checkout@v6
274      - name: Run format script
275        run: cargo run -p format-fixtures
276      - name: Ensure no changes
277        run: |
278          if [ -z "$(git status --porcelain)" ]; then 
279            echo "Fixtures formatted correctly"
280          else 
281            git status && echo -e "\nTest fixtures are not formatted correctly. Please run 'cargo format-fixtures'"
282            exit 1
283          fi
284
285  # benches is excluded from the workspace as it depends on cosmic-text which breaks compilation
286  # of all crates in the workspace with our MSRV compiler
287  benchmarks:
288    name: Build Benchmarks
289    runs-on: ubuntu-latest
290    steps:
291      - uses: actions/checkout@v6
292      - uses: dtolnay/rust-toolchain@stable
293      - name: Install fontconfig
294        run: sudo apt-get update && sudo apt-get install libfontconfig-dev
295      - run: cd benches && cargo bench --no-run
296        name: Build benchmarks
297        env:
298          RUSTFLAGS: "-C opt-level=0"
299
300  benchmarks-with-yoga:
301    name: Build Benchmarks (w/ yoga)
302    runs-on: ubuntu-latest
303    steps:
304      - uses: actions/checkout@v6
305      - uses: dtolnay/rust-toolchain@stable
306      - name: Install fontconfig
307        run: sudo apt-get update && sudo apt-get install libfontconfig-dev
308      - run: cd benches && cargo bench --no-run --features yoga
309        name: Build benchmarks (w/yoga)
310        env:
311          RUSTFLAGS: "-C opt-level=0"