tests, slightly more robust parsing logic
All checks were successful
All checks were successful
This commit is contained in:
@@ -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]));
|
||||
|
||||
@@ -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);
|
||||
});
|
||||
});
|
||||
60
test/resources/move-clean/pkgbase.new.yaml
Normal file
60
test/resources/move-clean/pkgbase.new.yaml
Normal 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
|
||||
61
test/resources/move-clean/pkgbase.old.yaml
Normal file
61
test/resources/move-clean/pkgbase.old.yaml
Normal 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
|
||||
61
test/resources/move-with-dropped/pkgbase.new.yaml
Normal file
61
test/resources/move-with-dropped/pkgbase.new.yaml
Normal 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
|
||||
64
test/resources/move-with-dropped/pkgbase.old.yaml
Normal file
64
test/resources/move-with-dropped/pkgbase.old.yaml
Normal 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
|
||||
59
test/resources/remove/pkgbase.new.yaml
Normal file
59
test/resources/remove/pkgbase.new.yaml
Normal 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: []
|
||||
59
test/resources/remove/pkgbase.old.yaml
Normal file
59
test/resources/remove/pkgbase.old.yaml
Normal 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: []
|
||||
Reference in New Issue
Block a user