Skip to content

Commit 8e3e540

Browse files
committed
test: fix merge
1 parent ff50284 commit 8e3e540

4 files changed

Lines changed: 25 additions & 84 deletions

File tree

src/providers/diagnostics/rules/upgrade.ts

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,24 +11,23 @@ import lte from 'semver/functions/lte'
1111
import prerelease from 'semver/functions/prerelease'
1212
import { DiagnosticSeverity, Uri } from 'vscode'
1313

14-
export function resolveUpgrade(dep: ResolvedDependencyInfo, pkg: PackageInfo, exactVersion: string) {
14+
export function resolveUpgrade(dep: ResolvedDependencyInfo, pkg: PackageInfo, resolvedVersion: string, ignoreList = config.ignore.upgrade) {
1515
const { distTags } = pkg
1616
if (Object.hasOwn(distTags, dep.resolvedSpec))
1717
return
1818

19-
const ignoreList = config.ignore.upgrade
2019
const { latest } = distTags
2120
const { resolvedName } = dep
2221

23-
if (gt(latest, exactVersion)) {
22+
if (gt(latest, resolvedVersion)) {
2423
const targetVersion = formatUpgradeVersion(dep, latest)
2524
if (checkIgnored({ ignoreList, name: resolvedName, version: targetVersion }))
2625
return
2726

2827
return targetVersion
2928
}
3029

31-
const currentPreId = prerelease(exactVersion)?.[0]
30+
const currentPreId = prerelease(resolvedVersion)?.[0]
3231
if (currentPreId == null)
3332
return
3433

@@ -37,7 +36,7 @@ export function resolveUpgrade(dep: ResolvedDependencyInfo, pkg: PackageInfo, ex
3736
continue
3837
if (prerelease(tagVersion)?.[0] !== currentPreId)
3938
continue
40-
if (lte(tagVersion, exactVersion))
39+
if (lte(tagVersion, resolvedVersion))
4140
continue
4241
const targetVersion = formatUpgradeVersion(dep, tagVersion)
4342
if (checkIgnored({ ignoreList, name: resolvedName, version: targetVersion }))
@@ -60,11 +59,11 @@ function createUpgradeDiagnostic(range: OffsetRange, name: string, targetVersion
6059
}
6160

6261
export const checkUpgrade: DiagnosticRule = async ({ dep, pkg }) => {
63-
const exactVersion = await dep.resolvedVersion()
64-
if (!exactVersion)
62+
const resolvedVersion = await dep.resolvedVersion()
63+
if (!resolvedVersion)
6564
return
6665

67-
const result = resolveUpgrade(dep, pkg, exactVersion)
66+
const result = resolveUpgrade(dep, pkg, resolvedVersion)
6867
if (!result)
6968
return
7069

tests/diagnostics/context.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ interface CreateContextOptions {
1919
export function createContext(options: CreateContextOptions): DiagnosticContext {
2020
const { name, version, distTags = {}, versionsMeta = {} } = options
2121
const { protocol, resolvedName, resolvedSpec, resolvedProtocol } = resolveDependencySpec(name, version)
22-
const pkg = { distTags, versionsMeta, versionToTag: new Map() } as PackageInfo
22+
const pkg = { distTags, versionsMeta } as PackageInfo
2323

2424
const dep: DiagnosticContext['dep'] = {
2525
category: 'dependencies',

tests/diagnostics/engine-mismatch.test.ts

Lines changed: 1 addition & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { describe, expect, it } from 'vitest'
2-
import { checkEngineMismatch, resolveEngineMismatches } from '../../src/providers/diagnostics/rules/engine-mismatch'
3-
import { createContext } from './context'
2+
import { resolveEngineMismatches } from '../../src/providers/diagnostics/rules/engine-mismatch'
43

54
describe('resolveEngineMismatches', () => {
65
it('should flag when engine ranges do not overlap', () => {
@@ -58,44 +57,3 @@ describe('resolveEngineMismatches', () => {
5857
)).toEqual([])
5958
})
6059
})
61-
62-
describe('checkEngineMismatch', () => {
63-
it('should format a diagnostic when mismatches exist', async () => {
64-
const result = await checkEngineMismatch(createContext({
65-
name: 'foo',
66-
version: '^1.0.0',
67-
distTags: { latest: '1.0.0' },
68-
versionsMeta: {
69-
'1.0.0': {
70-
engines: { node: '>=20' },
71-
},
72-
},
73-
engines: { node: '^18.0.0' },
74-
}))
75-
76-
expect(result).toBeDefined()
77-
expect(result!.code).toMatchObject({ value: 'engine-mismatch' })
78-
expect(result!.message).toContain('requires ">=20", but package supports "^18.0.0"')
79-
})
80-
81-
it('should not flag when either engines is missing', async () => {
82-
expect(await checkEngineMismatch(createContext({
83-
name: 'foo',
84-
version: '^1.0.0',
85-
distTags: { latest: '1.0.0' },
86-
versionsMeta: {
87-
'1.0.0': { engines: { node: '>=18' } },
88-
},
89-
}))).toBeUndefined()
90-
91-
expect(await checkEngineMismatch(createContext({
92-
name: 'foo',
93-
version: '^1.0.0',
94-
distTags: { latest: '1.0.0' },
95-
versionsMeta: {
96-
'1.0.0': {},
97-
},
98-
engines: { node: '>=18' },
99-
}))).toBeUndefined()
100-
})
101-
})

tests/diagnostics/upgrade.test.ts

Lines changed: 16 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
1+
import type { ResolvedDependencyInfo } from '#types/context'
12
import type { PackageInfo } from '#utils/api/package'
2-
import type { ResolveUpgradeOptions } from '../../src/providers/diagnostics/rules/upgrade'
3-
import { resolveExactVersion } from '#utils/package'
4-
import { isSupportedProtocol, parseVersion } from '#utils/version'
53
import { describe, expect, it } from 'vitest'
64
import { resolveUpgrade } from '../../src/providers/diagnostics/rules/upgrade'
5+
import { createContext } from './context'
76

87
const distTags: Record<string, string> = {
98
latest: '2.7.0',
@@ -17,53 +16,38 @@ const versionsMeta: Record<string, object> = {
1716
'3.0.0-alpha.5': {},
1817
}
1918

20-
function createOptions(version: string, ignoreList: string[] = []): ResolveUpgradeOptions | undefined {
21-
const parsed = parseVersion(version)
22-
if (!parsed)
23-
return
24-
const exactVersion = isSupportedProtocol(parsed.protocol)
25-
? resolveExactVersion({ distTags, versionsMeta, versionToTag: new Map() } as PackageInfo, parsed.version)
26-
: null
27-
if (!exactVersion)
28-
return
29-
return { name: 'vite', version, parsed, exactVersion, distTags, ignoreList }
19+
async function createOptions(version: string): Promise<[ResolvedDependencyInfo, PackageInfo, string]> {
20+
const ctx = createContext({ name: 'vite', version, distTags, versionsMeta })
21+
return [ctx.dep, ctx.pkg, (await ctx.dep.resolvedVersion())!]
3022
}
3123

3224
describe('resolveUpgrade', () => {
33-
it('should flag when latest is greater than current version', () => {
34-
expect(resolveUpgrade(createOptions('^1.0.0')!)).toMatchObject({
35-
name: 'vite',
36-
targetVersion: '^2.7.0',
37-
})
25+
it('should flag when latest is greater than current version', async () => {
26+
expect(resolveUpgrade(...await createOptions('^1.0.0'))).toBe('^2.7.0')
3827
})
3928

4029
it.each([
4130
'^2.7.0',
4231
'latest',
4332
'npm:latest',
4433
'3.0.0-alpha.5',
45-
])('should not flag for "%s"', (version) => {
46-
const options = createOptions(version)
34+
])('should not flag for "%s"', async (version) => {
35+
const options = await createOptions(version)
4736
if (!options) {
48-
expect(options).toBeUndefined()
4937
return
5038
}
51-
expect(resolveUpgrade(options)).toBeUndefined()
39+
expect(resolveUpgrade(...options)).toBeUndefined()
5240
})
5341

54-
it('should flag prerelease upgrade within same pre-id', () => {
55-
expect(resolveUpgrade(createOptions('3.0.0-alpha.1')!)).toMatchObject({
56-
targetVersion: '3.0.0-alpha.5',
57-
})
42+
it('should flag prerelease upgrade within same pre-id', async () => {
43+
expect(resolveUpgrade(...await createOptions('3.0.0-alpha.1'))).toBe('3.0.0-alpha.5')
5844
})
5945

60-
it('should not flag when target upgrade version is ignored', () => {
61-
expect(resolveUpgrade(createOptions('^1.0.0', ['vite@^2.7.0'])!)).toBeUndefined()
46+
it('should not flag when target upgrade version is ignored', async () => {
47+
expect(resolveUpgrade(...await createOptions('^1.0.0'), ['vite@^2.7.0'])).toBeUndefined()
6248
})
6349

64-
it('should preserve protocol prefix in targetVersion', () => {
65-
expect(resolveUpgrade(createOptions('npm:^1.0.0')!)).toMatchObject({
66-
targetVersion: 'npm:^2.7.0',
67-
})
50+
it('should preserve protocol prefix in targetVersion', async () => {
51+
expect(resolveUpgrade(...await createOptions('npm:^1.0.0'))).toBe('npm:^2.7.0')
6852
})
6953
})

0 commit comments

Comments
 (0)