fix(validate) corruption of config when root not found

This commit is contained in:
coderaiser 2018-11-13 15:00:29 +02:00
parent 4ff7973d43
commit eb6a79cf97
2 changed files with 14 additions and 11 deletions

View file

@ -1,5 +1,7 @@
'use strict';
const tryCatch = require('try-catch');
const config = require('./config');
const exit = require('./exit');
const columns = require('./columns');
@ -14,15 +16,14 @@ module.exports.root = (dir, fn) => {
if (config('dropbox'))
return;
const fs = require('fs');
const {statSync} = require('fs');
const [error] = tryCatch(statSync, dir);
fs.stat(dir, (error) => {
if (error)
return exit('cloudcmd --root: %s', error.message);
if (typeof fn === 'function')
fn('root:', dir);
});
if (error)
return exit('cloudcmd --root: %s', error.message);
if (typeof fn === 'function')
fn('root:', dir);
};
module.exports.editor = (name) => {

View file

@ -50,10 +50,12 @@ test('validate: root: /home', (t) => {
test('validate: root: stat', (t) => {
const fn = sinon.stub();
const {stat} = fs;
const {statSync} = fs;
const error = 'ENOENT';
fs.stat = (dir, fn) => fn(Error(error));
fs.statSync = () => {
throw Error(error);
};
mockRequire(exitPath, fn);
@ -62,7 +64,7 @@ test('validate: root: stat', (t) => {
root('hello', fn);
const msg = 'cloudcmd --root: %s';
fs.stat = stat;
fs.statSync = statSync;
mockRequire.stop(exitPath);
t.ok(fn.calledWith(msg, error), 'should call fn');