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)) {
|
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)) {
|
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)) {
|
else if (result.build = isAdd(actions)) {
|
||||||
result.delete.push(...getDropped(prev.repos[actions.addRepo], curr.repos[actions.addRepo]));
|
result.delete.push(...getDropped(prev.repos[actions.addRepo], curr.repos[actions.addRepo]));
|
||||||
|
|||||||
@@ -18,7 +18,8 @@ describe('pkgbase parser', () => {
|
|||||||
triggersNoCheck: false
|
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 () => {
|
it('can remove dangling packages in an add operation', async () => {
|
||||||
@@ -36,6 +37,64 @@ describe('pkgbase parser', () => {
|
|||||||
triggersNoCheck: false
|
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