Skip to content

Commit 0ec0847

Browse files
committed
feat(ci): run napi tests on windows (#14383)
1 parent 8f056ad commit 0ec0847

File tree

3 files changed

+61
-6
lines changed

3 files changed

+61
-6
lines changed

.github/workflows/ci.yml

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,56 @@ jobs:
171171
name: Test NAPI
172172
runs-on: ubuntu-latest
173173
steps:
174+
- name: Enable long paths on Windows
175+
if: matrix.os == 'windows-latest'
176+
run: git config --system core.longpaths true
177+
- uses: taiki-e/checkout-action@b13d20b7cda4e2f325ef19895128f7ff735c0b3d # v1.3.1
178+
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
179+
id: filter
180+
with:
181+
predicate-quantifier: "every"
182+
filters: |
183+
src:
184+
- '!crates/oxc_linter/**'
185+
- '!crates/oxc_language_server/**'
186+
- '!editors/**'
187+
- uses: oxc-project/setup-rust@1ff88fdaffd6ae35c0fb32ccc159340b37d0beac # v1.0.7
188+
if: steps.filter.outputs.src == 'true'
189+
with:
190+
cache-key: napi
191+
save-cache: ${{ github.ref_name == 'main' }}
192+
- uses: oxc-project/setup-node@fdbf0dfd334c4e6d56ceeb77d91c76339c2a0885 # v1.0.4
193+
if: steps.filter.outputs.src == 'true'
194+
- uses: ./.github/actions/clone-submodules
195+
if: steps.filter.outputs.src == 'true'
196+
with:
197+
babel: false
198+
prettier: false
199+
- if: steps.filter.outputs.src == 'true'
200+
name: Run tests in workspace
201+
env:
202+
RUN_RAW_RANGE_TESTS: "true"
203+
run: |
204+
rustup target add wasm32-wasip1-threads
205+
pnpm run build-test
206+
pnpm run test
207+
- if: steps.filter.outputs.src == 'true'
208+
name: Run e2e tests
209+
run: |
210+
pnpm install --frozen-lockfile
211+
pnpm run test
212+
working-directory: tasks/e2e
213+
- if: steps.filter.outputs.src == 'true'
214+
run: |
215+
git diff --exit-code # Must commit everything
216+
217+
test-napi-windows:
218+
name: Test NAPI (windows)
219+
runs-on: windows-latest
220+
if: ${{ github.ref_name == 'main' }}
221+
steps:
222+
- name: Enable long paths on Windows
223+
run: git config --system core.longpaths true
174224
- uses: taiki-e/checkout-action@b13d20b7cda4e2f325ef19895128f7ff735c0b3d # v1.3.1
175225
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
176226
id: filter

apps/oxlint/test/eslint-compat.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ async function testFixture(fixtureName: string): Promise<void> {
1717
});
1818
}
1919

20-
describe('ESLint compatibility', () => {
20+
describe('ESLint compatibility', { timeout: 10_000 }, () => {
2121
it('`definePlugin` should work', async () => {
2222
await testFixture('definePlugin');
2323
});

napi/parser/vitest.config.ts

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,24 @@
11
import { defineConfig } from 'vitest/config';
22

3-
const { env } = process;
3+
const { env, platform } = process;
44
const isEnabled = envValue => envValue === 'true' || envValue === '1';
5-
let exclude;
5+
const exclude = new Set<string>();
66
if (!isEnabled(env.RUN_LAZY_TESTS)) {
7-
exclude = ['lazy-deserialization.test.ts'];
8-
if (!isEnabled(env.RUN_RAW_TESTS) && !isEnabled(env.RUN_RAW_RANGE_TESTS)) exclude.push('parse-raw.test.ts');
7+
exclude.add('lazy-deserialization.test.ts');
8+
if (!isEnabled(env.RUN_RAW_TESTS) && !isEnabled(env.RUN_RAW_RANGE_TESTS)) exclude.add('parse-raw.test.ts');
9+
}
10+
// TinyPool doesn't seem to work on Windows with Vitest
11+
// Ref: https://github.com/vitest-dev/vitest/issues/8201
12+
if (platform === 'win32') {
13+
exclude.add('parse-raw.test.ts');
914
}
1015

1116
export default defineConfig({
1217
test: {
1318
diff: {
1419
expand: false,
1520
},
16-
exclude,
21+
exclude: [...exclude],
1722
},
1823
plugins: [
1924
// Enable Codspeed plugin in CI only

0 commit comments

Comments
 (0)