项目文件夹

文件
wehub-resource-sync 98e40dac97
CLI Smoke Test / smoke-test-linux (20) (push) Has been cancelled
CLI Smoke Test / smoke-test-linux (24) (push) Has been cancelled
CLI Smoke Test / smoke-test-windows (20) (push) Has been cancelled
CLI Smoke Test / smoke-test-windows (24) (push) Has been cancelled
Expo App TypeScript typecheck / typecheck (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:40:49 +08:00

58 行
2.5 KiB
TypeScript

import { describe, it, expect } from 'vitest';
import { compareVersions, isVersionSupported, parseVersion, MINIMUM_CLI_VERSION } from './versionUtils';
describe('versionUtils', () => {
describe('compareVersions', () => {
it('should correctly compare versions', () => {
expect(compareVersions('1.0.0', '1.0.0')).toBe(0);
expect(compareVersions('1.0.0', '1.0.1')).toBe(-1);
expect(compareVersions('1.0.1', '1.0.0')).toBe(1);
expect(compareVersions('2.0.0', '1.9.9')).toBe(1);
expect(compareVersions('1.9.9', '2.0.0')).toBe(-1);
});
it('should handle pre-release versions', () => {
expect(compareVersions('0.10.0-1', '0.10.0')).toBe(0);
expect(compareVersions('0.10.0-beta', '0.10.0')).toBe(0);
expect(compareVersions('0.10.1-1', '0.10.0')).toBe(1);
});
it('should handle versions with different segment counts', () => {
expect(compareVersions('1.0', '1.0.0')).toBe(0);
expect(compareVersions('1', '1.0.0')).toBe(0);
expect(compareVersions('1.1', '1.0.5')).toBe(1);
});
});
describe('isVersionSupported', () => {
it('should check if version meets minimum requirement', () => {
expect(isVersionSupported('0.10.0', '0.10.0')).toBe(true);
expect(isVersionSupported('0.10.1', '0.10.0')).toBe(true);
expect(isVersionSupported('0.9.9', '0.10.0')).toBe(false);
expect(isVersionSupported('1.0.0', '0.10.0')).toBe(true);
});
it('should handle undefined version', () => {
expect(isVersionSupported(undefined, '0.10.0')).toBe(false);
});
it('should use default minimum version', () => {
expect(isVersionSupported('0.10.0')).toBe(true);
expect(isVersionSupported('0.9.0')).toBe(false);
});
});
describe('parseVersion', () => {
it('should parse valid version strings', () => {
expect(parseVersion('1.2.3')).toEqual({ major: 1, minor: 2, patch: 3 });
expect(parseVersion('0.10.0')).toEqual({ major: 0, minor: 10, patch: 0 });
expect(parseVersion('0.10.0-1')).toEqual({ major: 0, minor: 10, patch: 0 });
});
it('should return null for invalid versions', () => {
expect(parseVersion('invalid')).toBe(null);
expect(parseVersion('')).toBe(null);
expect(parseVersion('1.a.3')).toBe(null);
});
});
});