mirror of
https://github.com/balena-io/etcher.git
synced 2025-07-19 09:16:38 +00:00
Fix writing config file
Changelog-entry: Fix writing config file Change-type: patch
This commit is contained in:
parent
08716efbd5
commit
a24be20e95
@ -92,14 +92,17 @@ async function load(): Promise<void> {
|
|||||||
|
|
||||||
const loaded = load();
|
const loaded = load();
|
||||||
|
|
||||||
export async function set(key: string, value: any): Promise<void> {
|
export async function set(
|
||||||
|
key: string,
|
||||||
|
value: any,
|
||||||
|
writeConfigFileFn = writeConfigFile,
|
||||||
|
): Promise<void> {
|
||||||
debug('set', key, value);
|
debug('set', key, value);
|
||||||
await loaded;
|
await loaded;
|
||||||
const previousValue = settings[key];
|
const previousValue = settings[key];
|
||||||
settings[key] = value;
|
settings[key] = value;
|
||||||
try {
|
try {
|
||||||
// Use exports.writeConfigFile() so it can be mocked in tests
|
await writeConfigFileFn(CONFIG_PATH, settings);
|
||||||
await exports.writeConfigFile(CONFIG_PATH, settings);
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
// Revert to previous value if persisting settings failed
|
// Revert to previous value if persisting settings failed
|
||||||
settings[key] = previousValue;
|
settings[key] = previousValue;
|
||||||
|
@ -44,16 +44,15 @@ describe('Browser: settings', () => {
|
|||||||
await settings.set('foo', 'bar');
|
await settings.set('foo', 'bar');
|
||||||
expect(await settings.get('foo')).to.equal('bar');
|
expect(await settings.get('foo')).to.equal('bar');
|
||||||
|
|
||||||
const writeConfigFileStub = stub(settings, 'writeConfigFile');
|
const writeConfigFileStub = stub();
|
||||||
writeConfigFileStub.returns(Promise.reject(new Error('settings error')));
|
writeConfigFileStub.returns(Promise.reject(new Error('settings error')));
|
||||||
|
|
||||||
const p = settings.set('foo', 'baz');
|
const p = settings.set('foo', 'baz', writeConfigFileStub);
|
||||||
await checkError(p, async (error) => {
|
await checkError(p, async (error) => {
|
||||||
expect(error).to.be.an.instanceof(Error);
|
expect(error).to.be.an.instanceof(Error);
|
||||||
expect(error.message).to.equal('settings error');
|
expect(error.message).to.equal('settings error');
|
||||||
expect(await settings.get('foo')).to.equal('bar');
|
expect(await settings.get('foo')).to.equal('bar');
|
||||||
});
|
});
|
||||||
writeConfigFileStub.restore();
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -83,15 +82,17 @@ describe('Browser: settings', () => {
|
|||||||
await settings.set('foo', 'bar');
|
await settings.set('foo', 'bar');
|
||||||
expect(await settings.get('foo')).to.equal('bar');
|
expect(await settings.get('foo')).to.equal('bar');
|
||||||
|
|
||||||
const writeConfigFileStub = stub(settings, 'writeConfigFile');
|
const writeConfigFileStub = stub();
|
||||||
writeConfigFileStub.returns(Promise.reject(new Error('settings error')));
|
writeConfigFileStub.returns(Promise.reject(new Error('settings error')));
|
||||||
|
|
||||||
await checkError(settings.set('foo', 'baz'), async (error) => {
|
await checkError(
|
||||||
expect(error).to.be.an.instanceof(Error);
|
settings.set('foo', 'baz', writeConfigFileStub),
|
||||||
expect(error.message).to.equal('settings error');
|
async (error) => {
|
||||||
expect(await settings.get('foo')).to.equal('bar');
|
expect(error).to.be.an.instanceof(Error);
|
||||||
});
|
expect(error.message).to.equal('settings error');
|
||||||
writeConfigFileStub.restore();
|
expect(await settings.get('foo')).to.equal('bar');
|
||||||
|
},
|
||||||
|
);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user