All checks were successful
Unit tests / Unit tests (latest) (push) Successful in -1m59s
Unit tests / Unit tests (lts/hydrogen) (push) Successful in -2m0s
Distribution check / Generated files check (push) Successful in -1m58s
NPM Audit Check / Check NPM audit (push) Successful in -2m10s
Unit tests / Unit tests (lts/*) (push) Successful in -2m0s
213 lines
7.5 KiB
TypeScript
213 lines
7.5 KiB
TypeScript
import path from 'path';
|
|
import { describe, expect, it } from 'vitest';
|
|
import { parse, getDepRepo, type Result } from '../src/pkgbase.js';
|
|
|
|
describe('pkgbase parser', () => {
|
|
it('can detect an add operation', async () => {
|
|
const expected: Result = {
|
|
build: true,
|
|
move: [],
|
|
delete: [],
|
|
deps: 'staging',
|
|
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 detect an add operation on a new repo', async () => {
|
|
const expected: Result = {
|
|
build: true,
|
|
move: [],
|
|
delete: [],
|
|
deps: 'stable',
|
|
actions: {
|
|
addRepo: 'world',
|
|
removeRepo: null,
|
|
triggersBuild: true,
|
|
triggersRebuild: false,
|
|
triggersRepoAdd: true,
|
|
triggersRepoRemove: false,
|
|
triggersNoCheck: false
|
|
}
|
|
};
|
|
const rDir = 'add-new';
|
|
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: [],
|
|
delete: [
|
|
{
|
|
architecture: "x86_64",
|
|
package: "pidgin",
|
|
repository: "world",
|
|
version: "2.14.14-3",
|
|
},
|
|
{
|
|
"architecture": "x86_64",
|
|
"package": "libpurple",
|
|
"repository": "world",
|
|
"version": "2.14.14-3",
|
|
},
|
|
{
|
|
"architecture": "x86_64",
|
|
"package": "finch",
|
|
"repository": "world",
|
|
"version": "2.14.14-3",
|
|
}
|
|
],
|
|
deps: 'stable',
|
|
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: [
|
|
{
|
|
architecture: "x86_64",
|
|
package: "opencascade",
|
|
repository: "world-gremlins",
|
|
version: "1:7.9.2-1",
|
|
}
|
|
],
|
|
delete: [{
|
|
"architecture": "x86_64",
|
|
"package": "opencascade",
|
|
"repository": "world",
|
|
"version": "1:7.9.1-1",
|
|
}],
|
|
deps: 'stable',
|
|
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: [
|
|
{
|
|
architecture: "x86_64",
|
|
package: "libpurple",
|
|
repository: "world-gremlins",
|
|
version: "2.14.14-4",
|
|
},
|
|
{
|
|
architecture: "x86_64",
|
|
package: "finch",
|
|
repository: "world-gremlins",
|
|
version: "2.14.14-4",
|
|
}
|
|
],
|
|
delete: [
|
|
{
|
|
architecture: "x86_64",
|
|
package: "pidgin",
|
|
repository: "world",
|
|
version: "2.14.14-3",
|
|
},
|
|
{
|
|
"architecture": "x86_64",
|
|
"package": "libpurple",
|
|
"repository": "world",
|
|
"version": "2.14.14-3",
|
|
},
|
|
{
|
|
"architecture": "x86_64",
|
|
"package": "finch",
|
|
"repository": "world",
|
|
"version": "2.14.14-3",
|
|
}
|
|
],
|
|
deps: 'stable',
|
|
actions: {
|
|
addRepo: 'world',
|
|
removeRepo: 'world-gremlins',
|
|
triggersBuild: false,
|
|
triggersRebuild: false,
|
|
triggersRepoAdd: true,
|
|
triggersRepoRemove: true,
|
|
triggersNoCheck: false
|
|
}
|
|
};
|
|
const rDir = 'move-with-dropped';
|
|
await expect(parse(`https://git.sanin.dev/packages_infra/pkgbase-yaml-parser/raw/branch/master/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: [],
|
|
delete: [
|
|
{
|
|
architecture: "any",
|
|
package: "python-nntplib",
|
|
repository: "world",
|
|
version: "3.13.0-2",
|
|
},
|
|
{
|
|
architecture: "any",
|
|
package: "python-cgi",
|
|
repository: "world",
|
|
version: "3.13.0-2",
|
|
},
|
|
{
|
|
architecture: "any",
|
|
package: "python-mailcap",
|
|
repository: "world",
|
|
version: "3.13.0-2",
|
|
}
|
|
],
|
|
deps: 'stable',
|
|
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);
|
|
});
|
|
|
|
it('can handle Arch repos', async () => {
|
|
expect(getDepRepo('core')).to.be.equal('stable');
|
|
expect(getDepRepo('core-testing')).to.be.equal('testing');
|
|
expect(getDepRepo('extra-staging')).to.be.equal('staging');
|
|
});
|
|
}); |