Skip to content

Commit

Permalink
ci: add windows test (#61)
Browse files Browse the repository at this point in the history
  • Loading branch information
SoonIter authored Aug 9, 2024
1 parent 2216330 commit 38fcca5
Show file tree
Hide file tree
Showing 8 changed files with 191 additions and 27 deletions.
4 changes: 4 additions & 0 deletions .github/workflows/test-ubuntu.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@ jobs:
changed:
- "!**/*.md"
- "!**/*.mdx"
- "!**/_meta.json"
- "!**/dictionary.txt"
- name: Setup Node.js ${{ matrix.node-version }}
if: steps.changes.outputs.changed == 'true'
Expand Down Expand Up @@ -83,6 +85,8 @@ jobs:
changed:
- "!**/*.md"
- "!**/*.mdx"
- "!**/_meta.json"
- "!**/dictionary.txt"
- name: Setup Node.js ${{ matrix.node-version }}
if: steps.changes.outputs.changed == 'true'
Expand Down
120 changes: 120 additions & 0 deletions .github/workflows/test-windows.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
name: Test (Windows)

# Controls when the action will run.
on:
# Triggers the workflow on pull request events but only for the main branch
pull_request:
branches: [main]

push:
branches: [main]

merge_group:

# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# ======== ut ========
ut-windows:
runs-on: windows-latest
strategy:
matrix:
node-version: [18.x]

# Steps represent a sequence of tasks that will be executed as part of the job
steps:
- name: Git config
shell: bash
run: |
git config --system core.longpaths true
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 10

- name: Install Pnpm
run: corepack enable

- uses: dorny/paths-filter@v3
id: changes
with:
predicate-quantifier: 'every'
filters: |
changed:
- "!**/*.md"
- "!**/*.mdx"
- "!**/_meta.json"
- "!**/dictionary.txt"
- name: Setup Node.js ${{ matrix.node-version }}
if: steps.changes.outputs.changed == 'true'
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: 'pnpm'

- name: Install Dependencies
if: steps.changes.outputs.changed == 'true'
run: pnpm install

- name: Unit Test
if: steps.changes.outputs.changed == 'true'
run: pnpm run test:unit

# # ======== e2e ========
e2e-windows:
runs-on: windows-latest
strategy:
matrix:
node-version: [18.x]

# Steps represent a sequence of tasks that will be executed as part of the job
steps:
- name: Git config
shell: bash
run: |
git config --system core.longpaths true
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 10

- name: Install Pnpm
run: corepack enable

- uses: dorny/paths-filter@v3
id: changes
with:
predicate-quantifier: 'every'
filters: |
changed:
- "!**/*.md"
- "!**/*.mdx"
- "!**/_meta.json"
- "!**/dictionary.txt"
- name: Setup Node.js ${{ matrix.node-version }}
if: steps.changes.outputs.changed == 'true'
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: 'pnpm'

- name: Install Dependencies
if: steps.changes.outputs.changed == 'true'
run: pnpm install && cd ./e2e && npx playwright install

- name: E2E Test
if: steps.changes.outputs.changed == 'true'
run: |
pnpm run test:artifact
pnpm run test:e2e
- name: Examples Test
if: steps.changes.outputs.changed == 'true'
run: |
pnpm run build:examples
2 changes: 1 addition & 1 deletion e2e/cases/alias/__snapshots__/index.test.ts.snap
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ console.info(a);
`;

exports[`source.alias 2`] = `
""use strict";
"\\"use strict\\";
var __webpack_exports__ = {};
;// CONCATENATED MODULE: ./src/a.ts
Expand Down
10 changes: 5 additions & 5 deletions e2e/cases/syntax/__snapshots__/index.test.ts.snap
Original file line number Diff line number Diff line change
Expand Up @@ -20,23 +20,23 @@ export { Foo };

exports[`should downgrade class private method with output.syntax config 1`] = `
"
;// CONCATENATED MODULE: ../../../../node_modules/.pnpm/@[email protected]/node_modules/@swc/helpers/esm/_class_private_method_get.js
;// CONCATENATED MODULE: ../../../../node_modules/<PNPM_INNER>/@swc/helpers/esm/_class_private_method_get.js
function _class_private_method_get(receiver, privateSet, fn) {
if (!privateSet.has(receiver)) throw new TypeError("attempted to get private field on non-instance");
if (!privateSet.has(receiver)) throw new TypeError(\\"attempted to get private field on non-instance\\");
return fn;
}
;// CONCATENATED MODULE: ../../../../node_modules/.pnpm/@[email protected]/node_modules/@swc/helpers/esm/_check_private_redeclaration.js
;// CONCATENATED MODULE: ../../../../node_modules/<PNPM_INNER>/@swc/helpers/esm/_check_private_redeclaration.js
function _check_private_redeclaration(obj, privateCollection) {
if (privateCollection.has(obj)) {
throw new TypeError("Cannot initialize the same private elements twice on an object");
throw new TypeError(\\"Cannot initialize the same private elements twice on an object\\");
}
}
;// CONCATENATED MODULE: ../../../../node_modules/.pnpm/@[email protected]/node_modules/@swc/helpers/esm/_class_private_method_init.js
;// CONCATENATED MODULE: ../../../../node_modules/<PNPM_INNER>/@swc/helpers/esm/_class_private_method_init.js
function _class_private_method_init(obj, privateSet) {
Expand Down
3 changes: 2 additions & 1 deletion e2e/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
"@types/node": "~18.19.39",
"@types/react": "^18.3.3",
"fast-glob": "^3.3.2",
"fs-extra": "^11.2.0"
"fs-extra": "^11.2.0",
"path-serializer": "0.0.6"
}
}
10 changes: 9 additions & 1 deletion e2e/setupVitestTests.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,16 @@
import path from 'node:path';
import process from 'node:process';
import { beforeEach } from 'vitest';
import { createSnapshotSerializer } from 'path-serializer';
import { beforeEach, expect } from 'vitest';

beforeEach(() => {
// since our NODE_ENV injection logic is via cli, we need to
// delete "test" NODE_ENV to avoid affecting the default build config
delete process.env.NODE_ENV;
});

expect.addSnapshotSerializer(
createSnapshotSerializer({
workspace: path.join(__dirname, '..'),
}),
);
61 changes: 42 additions & 19 deletions packages/core/tests/lcp.test.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import os from 'node:os';
import { vol } from 'memfs';
import { beforeEach, describe, expect, it, vi } from 'vitest';
import { calcLongestCommonPath } from '../src/utils/helper';
Expand All @@ -19,35 +20,57 @@ describe('LCP calculate correctly', () => {
it('correct 1', async () => {
vol.fromJSON({ '/Users/Someone/project-a/src': null });

const result = await calcLongestCommonPath([
'/Users/Someone/project-a/src/helpers',
'/Users/Someone/project-a/src',
'/Users/Someone/project-a/src/utils',
]);
expect(result).toBe('/Users/Someone/project-a/src');
if (os.platform() !== 'win32') {
const result = await calcLongestCommonPath([
'/Users/Someone/project-a/src/helpers',
'/Users/Someone/project-a/src',
'/Users/Someone/project-a/src/utils',
]);
expect(result).toEqual('/Users/Someone/project-a/src');
} else {
const result = await calcLongestCommonPath([
'D:\\Users\\Someone\\project-a\\src\\helpers',
'D:\\Users\\Someone\\project-a\\src',
'D:\\Users\\Someone\\project-a\\src\\utils',
]);
expect(result).toEqual('D:\\Users\\Someone\\project-a\\src');
}
});

it('correct 2', async () => {
vol.fromJSON({ '/Users/Someone/project-monorepo': null });

const result = await calcLongestCommonPath([
'/Users/Someone/project-monorepo/packages-a/src/index.ts',
'/Users/Someone/project-monorepo/packages-util/src/index.js',
'/Users/Someone/project-monorepo/script.js',
]);

expect(result).toBe('/Users/Someone/project-monorepo');
if (os.platform() !== 'win32') {
const result = await calcLongestCommonPath([
'/Users/Someone/project-monorepo/packages-a/src/index.ts',
'/Users/Someone/project-monorepo/packages-util/src/index.js',
'/Users/Someone/project-monorepo/script.js',
]);
expect(result).toEqual('/Users/Someone/project-monorepo');
} else {
const result = await calcLongestCommonPath([
'D:\\Users\\Someone\\project-monorepo\\packages-a\\src\\index.ts',
'D:\\Users\\Someone\\project-monorepo\\packages-util\\src\\index.js',
'D:\\Users\\Someone\\project-monorepo\\script.js',
]);
expect(result).toEqual('D:\\Users\\Someone\\project-monorepo');
}
});

it('correct 3', async () => {
vol.fromJSON({
'/Users/Someone/project/src/index.js': '',
});

const result = await calcLongestCommonPath([
'/Users/Someone/project/src/index.js',
]);

expect(result).toBe('/Users/Someone/project/src');
if (os.platform() !== 'win32') {
const result = await calcLongestCommonPath([
'/Users/Someone/project/src/index.js',
]);
expect(result).toEqual('/Users/Someone/project/src');
} else {
const result = await calcLongestCommonPath([
'D:\\Users\\Someone\\project\\src\\index.js',
]);
expect(result).toEqual('D:\\Users\\Someone\\project\\src');
}
});
});
8 changes: 8 additions & 0 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 38fcca5

Please sign in to comment.