mirror of
https://github.com/balena-os/balena-supervisor.git
synced 2024-12-26 00:41:07 +00:00
118 lines
2.3 KiB
TypeScript
118 lines
2.3 KiB
TypeScript
|
import { AppendDirective } from '../src/config/backends/extlinux-file';
|
||
|
import { expect } from './lib/chai-config';
|
||
|
|
||
|
describe('APPEND directive', () => {
|
||
|
const supportedConfigValues = ['isolcpus'];
|
||
|
const directive = new AppendDirective(supportedConfigValues);
|
||
|
|
||
|
it('parses valid APPEND value', () => {
|
||
|
VALID_VALUES.forEach(({ input, output }) =>
|
||
|
expect(directive.parse(input)).to.deep.equal(output),
|
||
|
);
|
||
|
});
|
||
|
|
||
|
it('errors when parsing invalid APPEND value', () => {
|
||
|
INVALID_VALUES.forEach(({ input, reason }) =>
|
||
|
// @ts-expect-error
|
||
|
expect(() => directive.parse(input)).to.throw(reason),
|
||
|
);
|
||
|
});
|
||
|
|
||
|
it('generates new string from existing string', () => {
|
||
|
expect(
|
||
|
directive.generate(
|
||
|
{
|
||
|
isolcpus: '2',
|
||
|
},
|
||
|
'ro rootwait',
|
||
|
),
|
||
|
).to.deep.equal('ro rootwait isolcpus=2');
|
||
|
});
|
||
|
|
||
|
it('generates string from existing string (replaces values)', () => {
|
||
|
expect(
|
||
|
directive.generate(
|
||
|
{
|
||
|
isolcpus: '2,4',
|
||
|
},
|
||
|
'ro rootwait isolcpus=2',
|
||
|
),
|
||
|
).to.deep.equal('ro rootwait isolcpus=2,4');
|
||
|
});
|
||
|
|
||
|
it('generates string from nothing', () => {
|
||
|
expect(
|
||
|
directive.generate({
|
||
|
isolcpus: '2,4',
|
||
|
}),
|
||
|
).to.deep.equal('isolcpus=2,4');
|
||
|
});
|
||
|
|
||
|
it('generates string from nothing', () => {
|
||
|
expect(
|
||
|
directive.generate({
|
||
|
rootwait: '',
|
||
|
ro: '',
|
||
|
isolcpus: '2,4',
|
||
|
}),
|
||
|
).to.deep.equal('rootwait ro isolcpus=2,4');
|
||
|
});
|
||
|
|
||
|
it('errors when generating with invalid ConfigOptions', () => {
|
||
|
INVALID_CONFIGS_OPTIONS.forEach(({ input, reason }) =>
|
||
|
expect(() => directive.generate(input)).to.throw(reason),
|
||
|
);
|
||
|
});
|
||
|
});
|
||
|
|
||
|
const VALID_VALUES = [
|
||
|
{
|
||
|
input: {
|
||
|
APPEND: '${cbootargs} ${resin_kernel_root} ro rootwait isolcpus=2',
|
||
|
},
|
||
|
output: {
|
||
|
'${cbootargs}': '',
|
||
|
'${resin_kernel_root}': '',
|
||
|
ro: '',
|
||
|
rootwait: '',
|
||
|
isolcpus: '2',
|
||
|
},
|
||
|
},
|
||
|
{
|
||
|
input: {
|
||
|
APPEND: '',
|
||
|
},
|
||
|
output: {},
|
||
|
},
|
||
|
{
|
||
|
input: {
|
||
|
APPEND: 'isolcpus=2,4',
|
||
|
},
|
||
|
output: { isolcpus: '2,4' },
|
||
|
},
|
||
|
];
|
||
|
|
||
|
const INVALID_VALUES = [
|
||
|
{
|
||
|
input: {},
|
||
|
reason:
|
||
|
'Could not find APPEND directive in default extlinux.conf boot entry',
|
||
|
},
|
||
|
{
|
||
|
input: {
|
||
|
APPEND: 'isolcpus=2=4',
|
||
|
},
|
||
|
reason: 'Unable to parse invalid value: isolcpus=2=4',
|
||
|
},
|
||
|
];
|
||
|
|
||
|
const INVALID_CONFIGS_OPTIONS = [
|
||
|
{
|
||
|
input: {
|
||
|
isolcpus: '2,4=',
|
||
|
},
|
||
|
reason:
|
||
|
'One of the values being set contains an invalid character: [ value: 2,4=, key: isolcpus ]',
|
||
|
},
|
||
|
];
|