From 7cdc2924d6be76d718e345b69a6dabcf56bc2f01 Mon Sep 17 00:00:00 2001 From: fxy060608 Date: Tue, 27 Dec 2022 19:51:01 +0800 Subject: [PATCH] wip(uts): sourcemap --- .../uni-uts-v1/__tests__/sourceMap.spec.ts | 29 +++++++++++++++++++ packages/uni-uts-v1/src/sourceMap.ts | 8 +++-- 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/packages/uni-uts-v1/__tests__/sourceMap.spec.ts b/packages/uni-uts-v1/__tests__/sourceMap.spec.ts index 53a0a66ced..fff77014e1 100644 --- a/packages/uni-uts-v1/__tests__/sourceMap.spec.ts +++ b/packages/uni-uts-v1/__tests__/sourceMap.spec.ts @@ -91,6 +91,13 @@ describe('uts:sourceMap', () => { outputDir ) expect(sourceMapFile).toBeDefined() + const sourceMapFile2 = resolveUtsPluginSourceMapFile( + 'swift', + resolve(outputDir, uniModulesPluginDir, 'utssdk/app-ios/src/index.swift'), + inputDir, + outputDir + ) + expect(sourceMapFile2).toBeDefined() }) test('resolveUtsPluginSourceMapFile with utssdk kt', () => { const sourceMapFile = resolveUtsPluginSourceMapFile( @@ -162,4 +169,26 @@ describe('uts:sourceMap', () => { expect(column).toBe(14) expect(source).toContain('login.uts') }) + test('originalPositionFor ios', async () => { + const filename = resolve( + outputDir, + uniModulesPluginDir, + 'utssdk/app-ios/src/index.kt' + ) + const sourceMapFile = resolveUtsPluginSourceMapFile( + 'swift', + filename, + inputDir, + outputDir + ) + const { line, column, source } = await originalPositionFor({ + sourceMapFile, + line: 18, + column: 16, + }) + + expect(line).toBe(21) + expect(column).toBe(4) + expect(source).toContain('index.uts') + }) }) diff --git a/packages/uni-uts-v1/src/sourceMap.ts b/packages/uni-uts-v1/src/sourceMap.ts index 538cb5ffae..e6746ec4af 100644 --- a/packages/uni-uts-v1/src/sourceMap.ts +++ b/packages/uni-uts-v1/src/sourceMap.ts @@ -53,12 +53,16 @@ function resolvePluginDir( // 目标文件是编译后 kt 或 swift if (filename.startsWith(outputDir)) { const relativePath = relative(outputDir, filename) + const hasSrc = normalizePath(relativePath).includes('/src/') // uni_modules/test-uts if (relativePath.startsWith('uni_modules')) { - return join(inputDir, join(relativePath, '../../..')) + return join( + inputDir, + join(relativePath, hasSrc ? '../../../..' : '../../..') + ) } // utssdk/test-uts - return join(inputDir, join(relativePath, '../..')) + return join(inputDir, join(relativePath, hasSrc ? '../../..' : '../..')) } else if (filename.startsWith(inputDir)) { let parent = dirname(filename) const utssdkDir = normalizePath(join(inputDir, 'utssdk')) -- GitLab