🐛 fix(vscode): 跳到定义时对准名字并闪
This commit is contained in:
1 parent
06df8919c8
commit
fc403d5b20
6 files changed
+307
-50
No files matched your search
@@ -0,0 +1,42 @@
|
||||
import { describe, expect, it, vi } from 'vitest'
|
||||
import { definitionOffset } from './definitions'
|
||||
|
||||
vi.mock('vscode', () => ({
|
||||
commands: { executeCommand: vi.fn() },
|
||||
EventEmitter: class EventEmitter { event = vi.fn(); fire = vi.fn() },
|
||||
Range: class Range {},
|
||||
Uri: { parse: vi.fn() },
|
||||
window: { createOutputChannel: vi.fn(() => ({ appendLine: vi.fn(), info: vi.fn(), warn: vi.fn(), error: vi.fn() })) },
|
||||
workspace: { openTextDocument: vi.fn(), asRelativePath: vi.fn() },
|
||||
}))
|
||||
|
||||
const SOURCE = [
|
||||
'export class DeployActionError extends Error {',
|
||||
' status = 1',
|
||||
'}',
|
||||
'export const fetchAppDeployments = async () => 1',
|
||||
].join('\n')
|
||||
|
||||
describe('定义范围的起点不在名字上时,用范围里那个名字', () => {
|
||||
const nameAt = SOURCE.indexOf('fetchAppDeployments')
|
||||
const whole = { start: 0, end: SOURCE.length }
|
||||
|
||||
it('没有选区:在大范围里找到和点击的名字一致的那一处,不用大范围的起点', () => {
|
||||
expect(definitionOffset(SOURCE, whole, undefined, 'fetchAppDeployments')).toBe(nameAt)
|
||||
})
|
||||
|
||||
it('选区起点已经在名字上:用选区,不再往范围更前面找', () => {
|
||||
const earlier = SOURCE.indexOf('DeployActionError')
|
||||
expect(definitionOffset(SOURCE, whole, { start: nameAt, end: nameAt + 'fetchAppDeployments'.length }, 'fetchAppDeployments')).toBe(nameAt)
|
||||
expect(definitionOffset(SOURCE, whole, { start: earlier, end: earlier + 'DeployActionError'.length }, 'DeployActionError')).toBe(earlier)
|
||||
})
|
||||
|
||||
it('选区是一整段、起点不在名字上:仍在这段里找名字', () => {
|
||||
expect(definitionOffset(SOURCE, whole, whole, 'fetchAppDeployments')).toBe(nameAt)
|
||||
})
|
||||
|
||||
it('只是更长名字的前缀不算', () => {
|
||||
const text = 'const fetchAppDeploymentsExtra = fetchAppDeployments'
|
||||
expect(definitionOffset(text, { start: 0, end: text.length }, undefined, 'fetchAppDeployments')).toBe(text.lastIndexOf('fetchAppDeployments'))
|
||||
})
|
||||
})
|
||||
Reference in new issue
Block a user