-
Notifications
You must be signed in to change notification settings - Fork 184
133 lines (124 loc) · 3.55 KB
/
Copy pathrust-bindings.yml
File metadata and controls
133 lines (124 loc) · 3.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
name: Rust bindings
on:
push:
paths: &paths
- ".github/workflows/rust-bindings.yml"
- "include/**"
- "src/**"
- "rust/**"
- "*akefile*"
branches:
- main
- ruby-4.0
pull_request:
paths: *paths
env:
RUSTFLAGS: "-D warnings"
jobs:
test:
name: cargo:test
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v7
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: ruby
bundler-cache: true
- name: Set up Rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
targets: wasm32-wasip1
- uses: actions/cache@v6
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.toml') }}
- name: Run tests
run: bundle exec rake cargo:test
- name: Run tests with buildtime_bindgen
run: cargo test --features buildtime_bindgen -- --nocapture
working-directory: rust/ruby-prism-sys
- name: Check pregenerated bindings on wasm32-wasip1
if: ${{ matrix.os == 'ubuntu-latest' }}
run: cargo check --target wasm32-wasip1 --no-default-features
working-directory: rust/ruby-prism-sys
env:
PRISM_LIB_DIR: "."
- name: Run examples
if: ${{ matrix.os != 'windows-latest' }}
run: bundle exec rake cargo:examples
sys-bindings:
name: cargo:bindings
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: ruby
bundler-cache: true
- name: Set up Rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: "1.91.1"
- name: rake cargo:bindings
run: bundle exec rake cargo:bindings
- name: Check that the pregenerated bindings are up to date
run: git diff --color --no-ext-diff --exit-code -- rust/ruby-prism-sys/src/bindings.rs
lint:
name: cargo:lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: ruby
bundler-cache: true
- name: Set up Rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: "1.91.1"
components: clippy, rustfmt
- uses: actions/cache@v6
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo--${{ hashFiles('**/Cargo.toml') }}
- name: rake cargo:build
run: bundle exec rake cargo:build
- name: rake cargo:lint
run: bundle exec rake cargo:lint
sanitize:
name: cargo:sanitize:${{ matrix.sanitizer }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
sanitizer: [address]
steps:
- uses: actions/checkout@v7
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: ruby
bundler-cache: true
- name: rake cargo:build
run: bundle exec rake cargo:build
- uses: dtolnay/rust-toolchain@master
with:
toolchain: nightly
target: "x86_64-unknown-linux-gnu"
components: "rust-src"
- name: Test with sanitizer
run: bundle exec rake cargo:sanitize:${{ matrix.sanitizer }}