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();