]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
ci: setup windows ci for compiler and SSR tests (#8143)
authorEvan You <yyx990803@gmail.com>
Mon, 24 Apr 2023 03:31:13 +0000 (11:31 +0800)
committerGitHub <noreply@github.com>
Mon, 24 Apr 2023 03:31:13 +0000 (11:31 +0800)
.github/workflows/ci.yml
packages/compiler-sfc/src/script/resolveType.ts
packages/compiler-sfc/src/script/utils.ts

index d022e11cca4c7406a8bbf1e50aebe8d5a2600ba8..c52bbc0697044b47f037656acc296b4fa744976c 100644 (file)
@@ -26,11 +26,40 @@ jobs:
           node-version: 18
           cache: 'pnpm'
 
-      - run: PUPPETEER_SKIP_DOWNLOAD=1 pnpm install
+      - name: Skip Puppeteer download
+        run: echo "PUPPETEER_SKIP_DOWNLOAD=1" >> $GITHUB_ENV
+
+      - run: pnpm install
 
       - name: Run unit tests
         run: pnpm run test-unit
 
+  unit-test-windows:
+    runs-on: windows-latest
+    if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository
+    steps:
+      - uses: actions/checkout@v3
+
+      - name: Install pnpm
+        uses: pnpm/action-setup@v2
+
+      - name: Set node version to 18
+        uses: actions/setup-node@v3
+        with:
+          node-version: 18
+          cache: 'pnpm'
+
+      - name: Skip Puppeteer download
+        run: echo "PUPPETEER_SKIP_DOWNLOAD=1" >> $env:GITHUB_ENV
+
+      - run: pnpm install
+
+      - name: Run compiler unit tests
+        run: pnpm run test-unit compiler
+
+      - name: Run ssr unit tests
+        run: pnpm run test-unit server-renderer
+
   e2e-test:
     runs-on: ubuntu-latest
     if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository
@@ -72,7 +101,10 @@ jobs:
           node-version: 18
           cache: 'pnpm'
 
-      - run: PUPPETEER_SKIP_DOWNLOAD=1 pnpm install
+      - name: Skip Puppeteer download
+        run: echo "PUPPETEER_SKIP_DOWNLOAD=1" >> $GITHUB_ENV
+
+      - run: pnpm install
 
       - name: Run eslint
         run: pnpm run lint
index ac1a42be9bd0a3bc015b32b7ef4f3b9d22a9c212..d0fd9c5896cc5616e7bc73279dc22b9b38dfd409 100644 (file)
@@ -29,7 +29,8 @@ import {
   createGetCanonicalFileName,
   getId,
   getImportedName,
-  normalizePath
+  normalizePath,
+  joinPaths
 } from './utils'
 import { ScriptCompileContext, resolveParserPlugins } from './context'
 import { ImportBinding, SFCScriptCompileOptions } from '../compileScript'
@@ -38,7 +39,7 @@ import { parse as babelParse } from '@babel/parser'
 import { parse } from '../parse'
 import { createCache } from '../cache'
 import type TS from 'typescript'
-import path from 'path'
+import { extname, dirname } from 'path'
 
 /**
  * TypeResolveContext is compatible with ScriptCompileContext
@@ -718,7 +719,7 @@ function importSourceToScope(
   let resolved
   if (source.startsWith('.')) {
     // relative import - fast path
-    const filename = normalizePath(path.join(scope.filename, '..', source))
+    const filename = joinPaths(scope.filename, '..', source)
     resolved = resolveExt(filename, fs)
   } else {
     // module or aliased import - use full TS resolution, only supported in Node
@@ -741,9 +742,10 @@ function importSourceToScope(
     resolved = resolveWithTS(scope.filename, source, fs)
   }
   if (resolved) {
+    resolved = normalizePath(resolved)
     // (hmr) register dependency file on ctx
     ;(ctx.deps || (ctx.deps = new Set())).add(resolved)
-    return fileToScope(ctx, normalizePath(resolved))
+    return fileToScope(ctx, resolved)
   } else {
     return ctx.error(
       `Failed to resolve import source ${JSON.stringify(source)}.`,
@@ -761,8 +763,8 @@ function resolveExt(filename: string, fs: FS) {
     tryResolve(filename) ||
     tryResolve(filename + `.ts`) ||
     tryResolve(filename + `.d.ts`) ||
-    tryResolve(filename + `/index.ts`) ||
-    tryResolve(filename + `/index.d.ts`)
+    tryResolve(joinPaths(filename, `index.ts`)) ||
+    tryResolve(joinPaths(filename, `index.d.ts`))
   )
 }
 
@@ -800,7 +802,7 @@ function resolveWithTS(
       const parsed = ts.parseJsonConfigFileContent(
         ts.readConfigFile(configPath, fs.readFile).config,
         parseConfigHost,
-        path.dirname(configPath),
+        dirname(configPath),
         undefined,
         configPath
       )
@@ -870,7 +872,7 @@ function parseFile(
   content: string,
   parserPlugins?: SFCScriptCompileOptions['babelParserPlugins']
 ): Statement[] {
-  const ext = path.extname(filename)
+  const ext = extname(filename)
   if (ext === '.ts' || ext === '.tsx') {
     return babelParse(content, {
       plugins: resolveParserPlugins(ext.slice(1), parserPlugins),
index e8a0518b5706a9ae62ee3659c9653fc4c518378e..53362fcdca80cc6d3f0191822fadbdd2b1501f89 100644 (file)
@@ -99,9 +99,12 @@ export function createGetCanonicalFileName(useCaseSensitiveFileNames: boolean) {
   return useCaseSensitiveFileNames ? identity : toFileNameLowerCase
 }
 
+// in the browser build, the polyfill doesn't expose posix, but defaults to
+// posix behavior.
+const normalize = (path.posix || path).normalize
 const windowsSlashRE = /\\/g
 export function normalizePath(p: string) {
-  // in the browser build, the polyfill doesn't expose posix, but defaults to
-  // posix behavior.
-  return (path.posix || path).normalize(p.replace(windowsSlashRE, '/'))
+  return normalize(p.replace(windowsSlashRE, '/'))
 }
+
+export const joinPaths = (path.posix || path).join