52 lines
1.5 KiB
TypeScript
52 lines
1.5 KiB
TypeScript
import { afterEach, describe, expect, mock, test } from 'bun:test'
|
|
|
|
async function importFileModuleWithKillswitchEnabled(
|
|
killswitchEnabled: boolean,
|
|
) {
|
|
mock.module('../services/analytics/growthbook.js', () => ({
|
|
getFeatureValue_CACHED_MAY_BE_STALE: () => killswitchEnabled,
|
|
}))
|
|
|
|
return import(`./file.js?ts=${Date.now()}-${Math.random()}`)
|
|
}
|
|
|
|
afterEach(() => {
|
|
mock.restore()
|
|
})
|
|
|
|
describe('addLineNumbers', () => {
|
|
test('uses unambiguous arrow compact prefix and preserves leading tabs', async () => {
|
|
const { addLineNumbers } = await importFileModuleWithKillswitchEnabled(false)
|
|
|
|
const result = addLineNumbers({
|
|
content: '\tfirst\n\t\tsecond',
|
|
startLine: 41,
|
|
})
|
|
|
|
expect(result).toBe('41→\tfirst\n42→\t\tsecond')
|
|
})
|
|
|
|
test('keeps padded arrow format when compact mode is disabled', async () => {
|
|
const { addLineNumbers } = await importFileModuleWithKillswitchEnabled(true)
|
|
|
|
const result = addLineNumbers({
|
|
content: 'alpha\nbeta',
|
|
startLine: 1,
|
|
})
|
|
|
|
expect(result).toBe(' 1→alpha\n 2→beta')
|
|
})
|
|
})
|
|
|
|
describe('stripLineNumberPrefix', () => {
|
|
test('strips compact arrow, padded arrow, and legacy tab prefixes', async () => {
|
|
const { stripLineNumberPrefix } = await importFileModuleWithKillswitchEnabled(
|
|
false,
|
|
)
|
|
|
|
expect(stripLineNumberPrefix('41→\tfirst')).toBe('\tfirst')
|
|
expect(stripLineNumberPrefix(' 2→beta')).toBe('beta')
|
|
expect(stripLineNumberPrefix('7\t\tlegacy-tab')).toBe('\tlegacy-tab')
|
|
})
|
|
})
|