@@ -35,19 +35,48 @@ jobs:
35
35
typescript:
36
36
- 'editors/code/**'
37
37
proc_macros:
38
+ - 'crates/tt/**'
38
39
- 'crates/proc-macro-api/**'
39
40
- 'crates/proc-macro-srv/**'
40
41
- 'crates/proc-macro-srv-cli/**'
41
42
42
- rust :
43
+ proc-macro-srv :
43
44
needs : changes
45
+ if : github.repository == 'rust-lang/rust-analyzer' && needs.changes.outputs.proc_macros == 'true'
46
+ name : proc-macro-srv
47
+ runs-on : ubuntu-latest
48
+ steps :
49
+ - name : Checkout repository
50
+ uses : actions/checkout@v4
51
+ with :
52
+ ref : ${{ github.event.pull_request.head.sha }}
53
+
54
+ - name : Install Rust toolchain
55
+ run : |
56
+ rustup update --no-self-update nightly
57
+ rustup default nightly
58
+ rustup component add --toolchain nightly rust-src rustfmt
59
+ # https://github.com/actions-rust-lang/setup-rust-toolchain/blob/main/rust.json
60
+ - name : Install Rust Problem Matcher
61
+ if : matrix.os == 'ubuntu-latest'
62
+ run : echo "::add-matcher::.github/rust.json"
63
+
64
+ - name : Cache Dependencies
65
+ uses : Swatinem/rust-cache@9bdad043e88c75890e36ad3bbc8d27f0090dd609
66
+
67
+ - name : Bump opt-level
68
+ if : matrix.os == 'ubuntu-latest'
69
+ run : sed -i '/\[profile.dev]/a opt-level=1' Cargo.toml
70
+
71
+ - name : Test
72
+ run : cargo test --features sysroot-abi -p rust-analyzer -p proc-macro-srv -p proc-macro-srv-cli -p proc-macro-api -- --quiet
73
+
74
+ rust :
44
75
if : github.repository == 'rust-lang/rust-analyzer'
45
76
name : Rust
46
77
runs-on : ${{ matrix.os }}
47
78
env :
48
79
CC : deny_c
49
- RUST_CHANNEL : " ${{ needs.changes.outputs.proc_macros == 'true' && 'nightly' || 'stable' }}"
50
- USE_SYSROOT_ABI : " ${{ needs.changes.outputs.proc_macros == 'true' && '--features sysroot-abi' || '' }}"
51
80
52
81
strategy :
53
82
fail-fast : false
62
91
63
92
- name : Install Rust toolchain
64
93
run : |
65
- rustup update --no-self-update ${{ env.RUST_CHANNEL }}
66
- rustup default ${{ env.RUST_CHANNEL }}
67
- rustup component add --toolchain ${{ env.RUST_CHANNEL }} rust-src
94
+ rustup update --no-self-update stable
95
+ rustup default stable
96
+ rustup component add --toolchain stable rust-src
68
97
# We always use a nightly rustfmt, regardless of channel, because we need
69
98
# --file-lines.
70
99
rustup toolchain install nightly --profile minimal --component rustfmt
75
104
76
105
- name : Cache Dependencies
77
106
uses : Swatinem/rust-cache@9bdad043e88c75890e36ad3bbc8d27f0090dd609
78
- with :
79
- key : ${{ env.RUST_CHANNEL }}
80
107
81
108
- name : Bump opt-level
82
109
if : matrix.os == 'ubuntu-latest'
@@ -86,16 +113,16 @@ jobs:
86
113
run : cargo codegen --check
87
114
88
115
- name : Compile (tests)
89
- run : cargo test --no-run --locked ${{ env.USE_SYSROOT_ABI }}
116
+ run : cargo test --no-run --locked
90
117
91
118
# It's faster to `test` before `build` ¯\_(ツ)_/¯
92
119
- name : Compile (rust-analyzer)
93
120
if : matrix.os == 'ubuntu-latest'
94
- run : cargo build --quiet ${{ env.USE_SYSROOT_ABI }}
121
+ run : cargo build --quiet
95
122
96
123
- name : Test
97
124
if : matrix.os == 'ubuntu-latest' || matrix.os == 'windows-latest' || github.event_name == 'push'
98
- run : cargo test ${{ env.USE_SYSROOT_ABI }} -- --nocapture --quiet
125
+ run : cargo test -- --quiet
99
126
100
127
- name : Switch to stable toolchain
101
128
run : |
@@ -156,7 +183,7 @@ jobs:
156
183
157
184
typescript :
158
185
needs : changes
159
- if : github.repository == 'rust-lang/rust-analyzer'
186
+ if : github.repository == 'rust-lang/rust-analyzer' && needs.changes.outputs.typescript == 'true'
160
187
name : TypeScript
161
188
strategy :
162
189
fail-fast : false
@@ -168,21 +195,18 @@ jobs:
168
195
steps :
169
196
- name : Checkout repository
170
197
uses : actions/checkout@v4
171
- if : needs.changes.outputs.typescript == 'true'
172
198
173
199
- name : Install Nodejs
174
200
uses : actions/setup-node@v4
175
201
with :
176
202
node-version : 22
177
- if : needs.changes.outputs.typescript == 'true'
178
203
179
204
- name : Install xvfb
180
- if : matrix.os == 'ubuntu-latest' && needs.changes.outputs.typescript == 'true'
205
+ if : matrix.os == 'ubuntu-latest'
181
206
run : sudo apt-get install -y xvfb
182
207
183
208
- run : npm ci
184
209
working-directory : ./editors/code
185
- if : needs.changes.outputs.typescript == 'true'
186
210
187
211
# - run: npm audit || { sleep 10 && npm audit; } || { sleep 30 && npm audit; }
188
212
# if: runner.os == 'Linux'
@@ -191,35 +215,31 @@ jobs:
191
215
# If this steps fails, your code's type integrity might be wrong at some places at TypeScript level.
192
216
- run : npm run typecheck
193
217
working-directory : ./editors/code
194
- if : needs.changes.outputs.typescript == 'true'
195
218
196
219
# You may fix the code automatically by running `npm run lint:fix` if this steps fails.
197
220
- run : npm run lint
198
221
working-directory : ./editors/code
199
- if : needs.changes.outputs.typescript == 'true'
200
222
201
223
# To fix this steps, please run `npm run format`.
202
224
- run : npm run format:check
203
225
working-directory : ./editors/code
204
- if : needs.changes.outputs.typescript == 'true'
205
226
206
227
- name : Run VS Code tests (Linux)
207
- if : matrix.os == 'ubuntu-latest' && needs.changes.outputs.typescript == 'true'
228
+ if : matrix.os == 'ubuntu-latest'
208
229
env :
209
230
VSCODE_CLI : 1
210
231
run : xvfb-run npm test
211
232
working-directory : ./editors/code
212
233
213
234
- name : Run VS Code tests (Windows)
214
- if : matrix.os == 'windows-latest' && needs.changes.outputs.typescript == 'true'
235
+ if : matrix.os == 'windows-latest'
215
236
env :
216
237
VSCODE_CLI : 1
217
238
run : npm test
218
239
working-directory : ./editors/code
219
240
220
241
- run : npm run package --scripts-prepend-node-path
221
242
working-directory : ./editors/code
222
- if : needs.changes.outputs.typescript == 'true'
223
243
224
244
typo-check :
225
245
name : Typo Check
@@ -241,7 +261,7 @@ jobs:
241
261
run : typos
242
262
243
263
conclusion :
244
- needs : [rust, rust-cross, typescript, typo-check]
264
+ needs : [rust, rust-cross, typescript, typo-check, proc-macro-srv ]
245
265
# We need to ensure this job does *not* get skipped if its dependencies fail,
246
266
# because a skipped job is considered a success by GitHub. So we have to
247
267
# overwrite `if:`. We use `!cancelled()` to ensure the job does still not get run
@@ -256,5 +276,5 @@ jobs:
256
276
run : |
257
277
# Print the dependent jobs to see them in the CI log
258
278
jq -C <<< '${{ toJson(needs) }}'
259
- # Check if all jobs that we depend on (in the needs array) were successful.
260
- jq --exit-status 'all(.result == "success")' <<< '${{ toJson(needs) }}'
279
+ # Check if all jobs that we depend on (in the needs array) were successful (or have been skipped) .
280
+ jq --exit-status 'all(.result == "success" or .result == "skipped" )' <<< '${{ toJson(needs) }}'
0 commit comments