tests, slightly more robust parsing logic
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

This commit is contained in:
2025-11-05 02:07:02 -05:00
parent ab6ea77c34
commit 25532f16b3
8 changed files with 428 additions and 4 deletions

View File

@@ -56,10 +56,11 @@ async function parse(previous: PathLike, current: PathLike): Promise<Result> {
};
if (isDelete(actions)) {
result.delete.push(...(prev.repos[actions.removeRepo] as RepoContents).packages);
const repo: RepoContents = prev.repos[actions.removeRepo];
result.delete.push(...repo.packages.map(p => `${actions.removeRepo}/${p.split(`-${repo.version}`)[0]}`));
}
else if (result.move = isMove(actions)) {
result.delete.push(...getDropped(prev.repos[actions.removeRepo], curr.repos[actions.addRepo]));
result.delete.push(...getDropped(prev.repos[actions.addRepo], curr.repos[actions.removeRepo]));
}
else if (result.build = isAdd(actions)) {
result.delete.push(...getDropped(prev.repos[actions.addRepo], curr.repos[actions.addRepo]));

View File

@@ -18,7 +18,8 @@ describe('pkgbase parser', () => {
triggersNoCheck: false
}
};
await expect(parse(path.join('test', 'resources', 'add-clean', 'pkgbase.old.yaml'), path.join('test', 'resources', 'add-clean', 'pkgbase.new.yaml'))).resolves.toEqual(expected);
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 () => {
@@ -36,6 +37,64 @@ describe('pkgbase parser', () => {
triggersNoCheck: false
}
};
await expect(parse(path.join('test', 'resources', 'add-with-dropped', 'pkgbase.old.yaml'), path.join('test', 'resources', 'add-with-dropped', 'pkgbase.new.yaml'))).resolves.toEqual(expected);
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);
});
});

View File

@@ -0,0 +1,60 @@
---
actions:
addRepo: world
removeRepo: world-gremlins
triggersBuild: false
triggersRebuild: false
triggersRepoAdd: true
triggersRepoRemove: true
triggersNoCheck: false
repos:
system-goblins:
version: null
packages: []
debug: []
system-gremlins:
version: null
packages: []
debug: []
system:
version: null
packages: []
debug: []
world-goblins:
version: null
packages: []
debug: []
world-gremlins:
version: null
packages: []
debug: []
world:
version: 1:7.9.2-1
packages:
- opencascade-1:7.9.2-1-x86_64.pkg.tar.zst
debug: []
lib32-goblins:
version: null
packages: []
debug: []
lib32-gremlins:
version: null
packages: []
debug: []
lib32:
version: null
packages: []
debug: []
galaxy-goblins:
version: null
packages: []
debug: []
galaxy-gremlins:
version: null
packages: []
debug: []
galaxy:
version: null
packages: []
debug: []
team: world

View File

@@ -0,0 +1,61 @@
---
actions:
addRepo: world-gremlins
removeRepo: null
triggersBuild: false
triggersRebuild: true
triggersRepoAdd: true
triggersRepoRemove: false
triggersNoCheck: false
repos:
system-goblins:
version: null
packages: []
debug: []
system-gremlins:
version: null
packages: []
debug: []
system:
version: null
packages: []
debug: []
world-goblins:
version: null
packages: []
debug: []
world-gremlins:
version: 1:7.9.2-1
packages:
- opencascade-1:7.9.2-1-x86_64.pkg.tar.zst
debug: []
world:
version: 1:7.9.1-1
packages:
- opencascade-1:7.9.1-1-x86_64.pkg.tar.zst
debug: []
lib32-goblins:
version: null
packages: []
debug: []
lib32-gremlins:
version: null
packages: []
debug: []
lib32:
version: null
packages: []
debug: []
galaxy-goblins:
version: null
packages: []
debug: []
galaxy-gremlins:
version: null
packages: []
debug: []
galaxy:
version: null
packages: []
debug: []
team: world

View File

@@ -0,0 +1,61 @@
---
actions:
addRepo: world
removeRepo: world-gremlins
triggersBuild: false
triggersRebuild: false
triggersRepoAdd: true
triggersRepoRemove: true
triggersNoCheck: false
repos:
system-goblins:
version: null
packages: []
debug: []
system-gremlins:
version: null
packages: []
debug: []
system:
version: null
packages: []
debug: []
world-goblins:
version: null
packages: []
debug: []
world-gremlins:
version: null
packages: []
debug: []
world:
version: 2.14.14-4
packages:
- libpurple-2.14.14-4-x86_64.pkg.tar.zst
- finch-2.14.14-4-x86_64.pkg.tar.zst
debug: []
lib32-goblins:
version: null
packages: []
debug: []
lib32-gremlins:
version: null
packages: []
debug: []
lib32:
version: null
packages: []
debug: []
galaxy-goblins:
version: null
packages: []
debug: []
galaxy-gremlins:
version: null
packages: []
debug: []
galaxy:
version: null
packages: []
debug: []
team: world

View File

@@ -0,0 +1,64 @@
---
actions:
addRepo: world-gremlins
removeRepo: null
triggersBuild: false
triggersRebuild: true
triggersRepoAdd: true
triggersRepoRemove: false
triggersNoCheck: false
repos:
system-goblins:
version: null
packages: []
debug: []
system-gremlins:
version: null
packages: []
debug: []
system:
version: null
packages: []
debug: []
world-goblins:
version: null
packages: []
debug: []
world-gremlins:
version: 2.14.14-4
packages:
- libpurple-2.14.14-4-x86_64.pkg.tar.zst
- finch-2.14.14-4-x86_64.pkg.tar.zst
debug: []
world:
version: 2.14.14-3
packages:
- pidgin-2.14.14-3-x86_64.pkg.tar.zst
- libpurple-2.14.14-3-x86_64.pkg.tar.zst
- finch-2.14.14-3-x86_64.pkg.tar.zst
debug: []
lib32-goblins:
version: null
packages: []
debug: []
lib32-gremlins:
version: null
packages: []
debug: []
lib32:
version: null
packages: []
debug: []
galaxy-goblins:
version: null
packages: []
debug: []
galaxy-gremlins:
version: null
packages: []
debug: []
galaxy:
version: null
packages: []
debug: []
team: world

View File

@@ -0,0 +1,59 @@
---
team: world
actions:
addRepo: null
removeRepo: world
triggersBuild: false
triggersRebuild: false
triggersRepoAdd: false
triggersRepoRemove: true
triggersNoCheck: false
repos:
system-goblins:
version: null
packages: []
debug: []
system-gremlins:
version: null
packages: []
debug: []
system:
version: null
packages: []
debug: []
world-goblins:
version: null
packages: []
debug: []
world-gremlins:
version: null
packages: []
debug: []
world:
version: null
packages: []
debug: []
lib32-goblins:
version: null
packages: []
debug: []
lib32-gremlins:
version: null
packages: []
debug: []
lib32:
version: null
packages: []
debug: []
galaxy-goblins:
version: null
packages: []
debug: []
galaxy-gremlins:
version: null
packages: []
debug: []
galaxy:
version: null
packages: []
debug: []

View File

@@ -0,0 +1,59 @@
---
team: world
pkgbase:
name: python-deadlib
version: 3.13.0-2
arch:
- any
pkgname:
- python-nntplib
- python-cgi
- python-mailcap
actions:
addRepo: world
removeRepo: world-gremlins
triggersBuild: false
triggersRebuild: false
triggersRepoAdd: true
triggersRepoRemove: true
triggersNoCheck: false
repos:
system-goblins:
version: null
packages: []
system-gremlins:
version: null
packages: []
system:
version: null
packages: []
world-goblins:
version: null
packages: []
world-gremlins:
version: null
packages: []
world:
version: 3.13.0-2
packages:
- python-nntplib-3.13.0-2-any.pkg.tar.zst
- python-cgi-3.13.0-2-any.pkg.tar.zst
- python-mailcap-3.13.0-2-any.pkg.tar.zst
lib32-goblins:
version: null
packages: []
lib32-gremlins:
version: null
packages: []
lib32:
version: null
packages: []
galaxy-goblins:
version: null
packages: []
galaxy-gremlins:
version: null
packages: []
galaxy:
version: null
packages: []