100 lines
3.7 KiB
TypeScript
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);
|
|
});
|
|
}); |