Files
pkgbase-yaml-parser/test/pkgbase.test.ts
Cory Sanin 25532f16b3
All checks were successful
NPM Audit Check / Check NPM audit (push) Successful in -2m10s
Unit tests / Unit tests (latest) (push) Successful in -2m2s
Unit tests / Unit tests (lts/*) (push) Successful in -2m1s
Unit tests / Unit tests (lts/hydrogen) (push) Successful in -2m2s
tests, slightly more robust parsing logic
2025-11-05 02:07:02 -05:00

100 lines
3.7 KiB
TypeScript

import path from 'path';
import { describe, expect, it } from 'vitest';
import { parse, type Result } from '../src/pkgbase.js';
describe('pkgbase parser', () => {
it('can detect an add operation', async () => {
const expected: Result = {
build: true,
move: false,
delete: [],
actions: {
addRepo: 'system-goblins',
removeRepo: null,
triggersBuild: false,
triggersRebuild: true,
triggersRepoAdd: true,
triggersRepoRemove: false,
triggersNoCheck: false
}
};
const rDir = 'add-clean';
await expect(parse(path.join('test', 'resources', rDir, 'pkgbase.old.yaml'), path.join('test', 'resources', rDir, 'pkgbase.new.yaml'))).resolves.toEqual(expected);
});
it('can remove dangling packages in an add operation', async () => {
const expected: Result = {
build: true,
move: false,
delete: ['pidgin'],
actions: {
addRepo: 'world',
removeRepo: null,
triggersBuild: true,
triggersRebuild: false,
triggersRepoAdd: true,
triggersRepoRemove: false,
triggersNoCheck: false
}
};
const rDir = 'add-with-dropped';
await expect(parse(path.join('test', 'resources', rDir, 'pkgbase.old.yaml'), path.join('test', 'resources', rDir, 'pkgbase.new.yaml'))).resolves.toEqual(expected);
});
it('can detect a move operation', async () => {
const expected: Result = {
build: false,
move: true,
delete: ['opencascade'],
actions: {
addRepo: 'world',
removeRepo: 'world-gremlins',
triggersBuild: false,
triggersRebuild: false,
triggersRepoAdd: true,
triggersRepoRemove: true,
triggersNoCheck: false
}
};
const rDir = 'move-clean';
await expect(parse(path.join('test', 'resources', rDir, 'pkgbase.old.yaml'), path.join('test', 'resources', rDir, 'pkgbase.new.yaml'))).resolves.toEqual(expected);
});
it('can remove dangling packages in a move operation', async () => {
const expected: Result = {
build: false,
move: true,
delete: ['pidgin', 'libpurple', 'finch'],
actions: {
addRepo: 'world',
removeRepo: 'world-gremlins',
triggersBuild: false,
triggersRebuild: false,
triggersRepoAdd: true,
triggersRepoRemove: true,
triggersNoCheck: false
}
};
const rDir = 'move-with-dropped';
await expect(parse(path.join('test', 'resources', rDir, 'pkgbase.old.yaml'), path.join('test', 'resources', rDir, 'pkgbase.new.yaml'))).resolves.toEqual(expected);
});
it('can detect a delete operation', async () => {
const expected: Result = {
build: false,
move: false,
delete: ['world/python-nntplib', 'world/python-cgi', 'world/python-mailcap'],
actions: {
addRepo: null,
removeRepo: 'world',
triggersBuild: false,
triggersRebuild: false,
triggersRepoAdd: false,
triggersRepoRemove: true,
triggersNoCheck: false
}
};
const rDir = 'remove';
await expect(parse(path.join('test', 'resources', rDir, 'pkgbase.old.yaml'), path.join('test', 'resources', rDir, 'pkgbase.new.yaml'))).resolves.toEqual(expected);
});
});