Fix .config.json unit tests

This commit is contained in:
Nick O'Leary
2020-09-24 15:42:52 +01:00
parent fb2da0ee9e
commit 4d0c572c2e
3 changed files with 105 additions and 65 deletions

View File

@@ -15,7 +15,6 @@
**/
var fs = require('fs-extra');
var when = require('when');
var fspath = require("path");
var log = require("@node-red/util").log; // TODO: separate module
@@ -29,6 +28,11 @@ var projects = require("./projects");
var initialFlowLoadComplete = false;
var settings;
function checkForConfigFile(dir) {
return fs.existsSync(fspath.join(dir,".config.json")) ||
fs.existsSync(fspath.join(dir,".config.nodes.json"))
}
var localfilesystem = {
init: function(_settings, runtime) {
settings = _settings;
@@ -36,34 +40,24 @@ var localfilesystem = {
var promises = [];
if (!settings.userDir) {
try {
fs.statSync(fspath.join(process.env.NODE_RED_HOME,".config.json"));
settings.userDir = process.env.NODE_RED_HOME;
} catch(err) {
try {
// Consider compatibility for older versions
if (process.env.HOMEPATH) {
fs.statSync(fspath.join(process.env.HOMEPATH,".node-red",".config.json"));
settings.userDir = fspath.join(process.env.HOMEPATH,".node-red");
}
} catch(err) {
}
if (!settings.userDir) {
settings.userDir = fspath.join(process.env.HOME || process.env.USERPROFILE || process.env.HOMEPATH || process.env.NODE_RED_HOME,".node-red");
if (!settings.readOnly) {
promises.push(fs.ensureDir(fspath.join(settings.userDir,"node_modules")));
}
}
if (checkForConfigFile(process.env.NODE_RED_HOME)) {
settings.userDir = process.env.NODE_RED_HOME
} else if (process.env.HOMEPATH && checkForConfigFile(fspath.join(process.env.HOMEPATH,".node-red"))) {
settings.userDir = fspath.join(process.env.HOMEPATH,".node-red");
} else {
settings.userDir = fspath.join(process.env.HOME || process.env.USERPROFILE || process.env.HOMEPATH || process.env.NODE_RED_HOME,".node-red");
}
}
if (!settings.readOnly) {
promises.push(fs.ensureDir(fspath.join(settings.userDir,"node_modules")));
}
sessions.init(settings);
runtimeSettings.init(settings);
promises.push(runtimeSettings.init(settings));
promises.push(library.init(settings));
promises.push(projects.init(settings, runtime));
var packageFile = fspath.join(settings.userDir,"package.json");
var packagePromise = when.resolve();
var packagePromise = Promise.resolve();
if (!settings.readOnly) {
packagePromise = function() {
@@ -81,7 +75,7 @@ var localfilesystem = {
return true;
}
}
return when.all(promises).then(packagePromise);
return Promise.all(promises).then(packagePromise);
},

View File

@@ -21,7 +21,6 @@ const log = require("@node-red/util").log;
const util = require("./util");
const configSections = ['nodes','users','projects'];
let initialisePromise;
const settingsCache = {};
@@ -78,7 +77,9 @@ async function readSettings() {
configSections.forEach(key => {
const sectionFilename = getSettingsFilename(key);
readPromises.push(util.readFile(sectionFilename,sectionFilename+".backup",{}).then(sectionData => {
result[key] = sectionData;
if (Object.keys(sectionData).length > 0) {
result[key] = sectionData;
}
}))
});
return Promise.all(readPromises).then(() => result);
@@ -95,18 +96,18 @@ module.exports = {
globalSettingsBackup = fspath.join(settings.userDir,".config.json.backup");
if (fs.existsSync(globalSettingsFile) && !settings.readOnly) {
initialisePromise = migrateToMultipleConfigFiles();
return migrateToMultipleConfigFiles();
} else {
initialisePromise = Promise.resolve();
return Promise.resolve();
}
},
getSettings: function() {
return initialisePromise.then(readSettings)
return readSettings()
},
saveSettings: function(newSettings) {
if (settings.readOnly) {
return Promise.resolve();
}
return initialisePromise.then(() => writeSettings(newSettings));
return writeSettings(newSettings);
}
}