94 lines
3.6 KiB
TypeScript
94 lines
3.6 KiB
TypeScript
import { expect, tap } from '@git.zone/tstest/tapbundle';
|
|
|
|
import * as tools from '../ts/index.js';
|
|
import { PackageManagerUtil } from '../ts/mod_update/classes.packagemanager.js';
|
|
|
|
tap.test('should export runCli function', async () => {
|
|
expect(typeof tools.runCli).toEqual('function');
|
|
});
|
|
|
|
// ============================================
|
|
// isNewerVersion tests
|
|
// ============================================
|
|
|
|
tap.test('isNewerVersion: should detect newer major version', async () => {
|
|
const pmUtil = new PackageManagerUtil();
|
|
expect(pmUtil.isNewerVersion('1.0.0', '2.0.0')).toBeTrue();
|
|
});
|
|
|
|
tap.test('isNewerVersion: should detect newer minor version', async () => {
|
|
const pmUtil = new PackageManagerUtil();
|
|
expect(pmUtil.isNewerVersion('1.0.0', '1.1.0')).toBeTrue();
|
|
});
|
|
|
|
tap.test('isNewerVersion: should detect newer patch version', async () => {
|
|
const pmUtil = new PackageManagerUtil();
|
|
expect(pmUtil.isNewerVersion('1.0.0', '1.0.1')).toBeTrue();
|
|
});
|
|
|
|
tap.test('isNewerVersion: should return false for equal versions', async () => {
|
|
const pmUtil = new PackageManagerUtil();
|
|
expect(pmUtil.isNewerVersion('1.0.0', '1.0.0')).toBeFalse();
|
|
});
|
|
|
|
tap.test('isNewerVersion: should return false when current is newer', async () => {
|
|
const pmUtil = new PackageManagerUtil();
|
|
expect(pmUtil.isNewerVersion('2.0.0', '1.0.0')).toBeFalse();
|
|
expect(pmUtil.isNewerVersion('1.1.0', '1.0.0')).toBeFalse();
|
|
expect(pmUtil.isNewerVersion('1.0.1', '1.0.0')).toBeFalse();
|
|
});
|
|
|
|
tap.test('isNewerVersion: should handle v-prefixed versions', async () => {
|
|
const pmUtil = new PackageManagerUtil();
|
|
expect(pmUtil.isNewerVersion('v1.0.0', 'v2.0.0')).toBeTrue();
|
|
expect(pmUtil.isNewerVersion('v2.0.0', 'v1.0.0')).toBeFalse();
|
|
});
|
|
|
|
tap.test('isNewerVersion: should handle mixed prefixed and non-prefixed', async () => {
|
|
const pmUtil = new PackageManagerUtil();
|
|
expect(pmUtil.isNewerVersion('v1.0.0', '2.0.0')).toBeTrue();
|
|
expect(pmUtil.isNewerVersion('1.0.0', 'v2.0.0')).toBeTrue();
|
|
});
|
|
|
|
tap.test('isNewerVersion: should handle versions with different segment counts', async () => {
|
|
const pmUtil = new PackageManagerUtil();
|
|
expect(pmUtil.isNewerVersion('1.0', '1.0.1')).toBeTrue();
|
|
expect(pmUtil.isNewerVersion('1.0.1', '1.0')).toBeFalse();
|
|
});
|
|
|
|
// ============================================
|
|
// parseYarnPackageName tests
|
|
// ============================================
|
|
|
|
tap.test('parseYarnPackageName: should parse scoped package correctly', async () => {
|
|
const result = PackageManagerUtil.parseYarnPackageName('@git.zone/cli@1.2.3');
|
|
expect(result.name).toEqual('@git.zone/cli');
|
|
expect(result.version).toEqual('1.2.3');
|
|
});
|
|
|
|
tap.test('parseYarnPackageName: should parse unscoped package correctly', async () => {
|
|
const result = PackageManagerUtil.parseYarnPackageName('typescript@5.3.2');
|
|
expect(result.name).toEqual('typescript');
|
|
expect(result.version).toEqual('5.3.2');
|
|
});
|
|
|
|
tap.test('parseYarnPackageName: should handle empty string', async () => {
|
|
const result = PackageManagerUtil.parseYarnPackageName('');
|
|
expect(result.name).toEqual('');
|
|
expect(result.version).toEqual('unknown');
|
|
});
|
|
|
|
tap.test('parseYarnPackageName: should handle name with no version', async () => {
|
|
const result = PackageManagerUtil.parseYarnPackageName('@git.zone/cli');
|
|
expect(result.name).toEqual('@git.zone/cli');
|
|
expect(result.version).toEqual('unknown');
|
|
});
|
|
|
|
tap.test('parseYarnPackageName: should handle unscoped name with no version', async () => {
|
|
const result = PackageManagerUtil.parseYarnPackageName('typescript');
|
|
expect(result.name).toEqual('typescript');
|
|
expect(result.version).toEqual('unknown');
|
|
});
|
|
|
|
export default tap.start();
|