sourceMap.spec.ts 5.1 KB
Newer Older
fxy060608's avatar
fxy060608 已提交
1 2
import { resolve } from 'path'
import {
fxy060608's avatar
fxy060608 已提交
3
  resolveUTSPluginSourceMapFile,
fxy060608's avatar
fxy060608 已提交
4 5 6 7 8 9 10 11 12 13 14 15 16
  generatedPositionFor,
  originalPositionFor,
} from '../src'

const inputDir = resolve(__dirname, '../../playground/uts')
const outputDir = resolve(
  __dirname,
  '../../playground/uts/unpackage/dist/dev/app-plus'
)
const utssdkPluginDir = 'utssdk/test-uts'

const uniModulesPluginDir = 'uni_modules/test-uniplugin'

fxy060608's avatar
fxy060608 已提交
17
describe('uts:sourceMap', () => {
fxy060608's avatar
fxy060608 已提交
18 19
  test('resolveUTSPluginSourceMapFile with uni_modules uts=>kotlin', () => {
    const sourceMapFile = resolveUTSPluginSourceMapFile(
fxy060608's avatar
fxy060608 已提交
20 21 22 23 24 25 26
      'kotlin',
      resolve(inputDir, uniModulesPluginDir, 'utssdk/app-android/index.uts'),
      inputDir,
      outputDir
    )
    expect(sourceMapFile).toBeDefined()
    expect(
fxy060608's avatar
fxy060608 已提交
27
      resolveUTSPluginSourceMapFile(
fxy060608's avatar
fxy060608 已提交
28 29 30 31 32 33 34
        'kotlin',
        resolve(inputDir, uniModulesPluginDir, 'utssdk/index.uts'),
        inputDir,
        outputDir
      )
    ).toBe(sourceMapFile)
    expect(
fxy060608's avatar
fxy060608 已提交
35
      resolveUTSPluginSourceMapFile(
fxy060608's avatar
fxy060608 已提交
36 37 38 39 40 41 42 43 44 45 46 47
        'kotlin',
        resolve(
          inputDir,
          uniModulesPluginDir,
          'utssdk/app-android/utils/utils.uts'
        ),
        inputDir,
        outputDir
      )
    ).toBe(sourceMapFile)
  })

fxy060608's avatar
fxy060608 已提交
48 49
  test('resolveUTSPluginSourceMapFile with uni_modules uts=>swift', () => {
    const sourceMapFile = resolveUTSPluginSourceMapFile(
fxy060608's avatar
fxy060608 已提交
50 51 52 53 54 55 56 57
      'swift',
      resolve(inputDir, uniModulesPluginDir, 'utssdk/app-ios/index.uts'),
      inputDir,
      outputDir
    )
    expect(sourceMapFile).toBeDefined()
  })

fxy060608's avatar
fxy060608 已提交
58 59
  test('resolveUTSPluginSourceMapFile with utssdk uts=>kotlin', () => {
    const sourceMapFile = resolveUTSPluginSourceMapFile(
fxy060608's avatar
fxy060608 已提交
60 61 62 63 64 65 66
      'kotlin',
      resolve(inputDir, utssdkPluginDir, 'app-android/index.uts'),
      inputDir,
      outputDir
    )
    expect(sourceMapFile).toBeDefined()
  })
fxy060608's avatar
fxy060608 已提交
67 68
  test('resolveUTSPluginSourceMapFile with utssdk uts=>swift', () => {
    const sourceMapFile = resolveUTSPluginSourceMapFile(
fxy060608's avatar
fxy060608 已提交
69 70 71 72 73 74 75 76
      'swift',
      resolve(inputDir, utssdkPluginDir, 'app-ios/index.uts'),
      inputDir,
      outputDir
    )
    expect(sourceMapFile).toBeDefined()
  })

fxy060608's avatar
fxy060608 已提交
77 78
  test('resolveUTSPluginSourceMapFile with uni_modules kt', () => {
    const sourceMapFile = resolveUTSPluginSourceMapFile(
fxy060608's avatar
fxy060608 已提交
79 80 81 82 83 84 85
      'kotlin',
      resolve(outputDir, uniModulesPluginDir, 'utssdk/app-android/index.kt'),
      inputDir,
      outputDir
    )
    expect(sourceMapFile).toBeDefined()
  })
fxy060608's avatar
fxy060608 已提交
86 87
  test('resolveUTSPluginSourceMapFile with uni_modules swift', () => {
    const sourceMapFile = resolveUTSPluginSourceMapFile(
fxy060608's avatar
fxy060608 已提交
88 89 90 91 92 93
      'swift',
      resolve(outputDir, uniModulesPluginDir, 'utssdk/app-ios/index.swift'),
      inputDir,
      outputDir
    )
    expect(sourceMapFile).toBeDefined()
fxy060608's avatar
fxy060608 已提交
94
    const sourceMapFile2 = resolveUTSPluginSourceMapFile(
fxy060608's avatar
fxy060608 已提交
95 96 97 98 99 100
      'swift',
      resolve(outputDir, uniModulesPluginDir, 'utssdk/app-ios/src/index.swift'),
      inputDir,
      outputDir
    )
    expect(sourceMapFile2).toBeDefined()
fxy060608's avatar
fxy060608 已提交
101
  })
fxy060608's avatar
fxy060608 已提交
102 103
  test('resolveUTSPluginSourceMapFile with utssdk kt', () => {
    const sourceMapFile = resolveUTSPluginSourceMapFile(
fxy060608's avatar
fxy060608 已提交
104 105 106 107 108 109 110
      'kotlin',
      resolve(outputDir, utssdkPluginDir, 'app-android/index.kt'),
      inputDir,
      outputDir
    )
    expect(sourceMapFile).toBeDefined()
  })
fxy060608's avatar
fxy060608 已提交
111 112
  test('resolveUTSPluginSourceMapFile with utssdk swift', () => {
    const sourceMapFile = resolveUTSPluginSourceMapFile(
fxy060608's avatar
fxy060608 已提交
113 114 115 116 117 118 119 120 121 122 123 124 125
      'swift',
      resolve(outputDir, utssdkPluginDir, 'app-ios/index.swift'),
      inputDir,
      outputDir
    )
    expect(sourceMapFile).toBeDefined()
  })
  test('generatedPositionFor', async () => {
    const filename = resolve(
      inputDir,
      uniModulesPluginDir,
      'utssdk/app-android/login.uts'
    )
fxy060608's avatar
fxy060608 已提交
126
    const sourceMapFile = resolveUTSPluginSourceMapFile(
fxy060608's avatar
fxy060608 已提交
127 128 129 130 131 132 133 134 135
      'kotlin',
      filename,
      inputDir,
      outputDir
    )
    const res = await generatedPositionFor({
      sourceMapFile,
      filename,
      line: 3,
fxy060608's avatar
fxy060608 已提交
136
      column: 17,
fxy060608's avatar
fxy060608 已提交
137
      outputDir,
fxy060608's avatar
fxy060608 已提交
138 139
    })
    expect(res).toEqual({
fxy060608's avatar
fxy060608 已提交
140
      line: 17,
fxy060608's avatar
fxy060608 已提交
141 142
      column: 16,
      lastColumn: null,
fxy060608's avatar
fxy060608 已提交
143 144 145 146 147
      source: resolve(
        outputDir,
        uniModulesPluginDir,
        'utssdk/app-android/index.kt'
      ),
fxy060608's avatar
fxy060608 已提交
148 149 150 151 152 153 154 155
    })
  })
  test('originalPositionFor', async () => {
    const filename = resolve(
      outputDir,
      uniModulesPluginDir,
      'utssdk/app-android/index.kt'
    )
fxy060608's avatar
fxy060608 已提交
156
    const sourceMapFile = resolveUTSPluginSourceMapFile(
fxy060608's avatar
fxy060608 已提交
157 158 159 160 161 162 163
      'kotlin',
      filename,
      inputDir,
      outputDir
    )
    const { line, column, source } = await originalPositionFor({
      sourceMapFile,
fxy060608's avatar
fxy060608 已提交
164
      line: 17,
fxy060608's avatar
fxy060608 已提交
165 166 167
      column: 16,
    })

fxy060608's avatar
fxy060608 已提交
168 169
    expect(line).toBe(3)
    expect(column).toBe(14)
fxy060608's avatar
fxy060608 已提交
170 171
    expect(source).toContain('login.uts')
  })
fxy060608's avatar
fxy060608 已提交
172 173 174 175 176 177
  test('originalPositionFor ios', async () => {
    const filename = resolve(
      outputDir,
      uniModulesPluginDir,
      'utssdk/app-ios/src/index.kt'
    )
fxy060608's avatar
fxy060608 已提交
178
    const sourceMapFile = resolveUTSPluginSourceMapFile(
fxy060608's avatar
fxy060608 已提交
179 180 181 182 183 184 185
      'swift',
      filename,
      inputDir,
      outputDir
    )
    const { line, column, source } = await originalPositionFor({
      sourceMapFile,
fxy060608's avatar
fxy060608 已提交
186
      line: 50,
fxy060608's avatar
fxy060608 已提交
187
      column: 0,
fxy060608's avatar
fxy060608 已提交
188 189
    })

fxy060608's avatar
fxy060608 已提交
190
    expect(line).toBe(19)
fxy060608's avatar
fxy060608 已提交
191
    expect(column).toBe(2)
fxy060608's avatar
fxy060608 已提交
192 193
    expect(source).toContain('index.uts')
  })
fxy060608's avatar
fxy060608 已提交
194
})