fix(postinstall): persist default sandbox url
This commit is contained in:
parent
84c901f77a
commit
196152921b
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"packages": {
|
"packages": {
|
||||||
"trapos-core": "0.6.2",
|
"trapos-core": "0.6.3",
|
||||||
"trapos-test": "0.2.1",
|
"trapos-test": "0.2.1",
|
||||||
"trapos-boot": "0.3.3",
|
"trapos-boot": "0.3.3",
|
||||||
"trapos-net": "0.3.0",
|
"trapos-net": "0.3.0",
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "trapos-core",
|
"name": "trapos-core",
|
||||||
"version": "0.6.2",
|
"version": "0.6.3",
|
||||||
"description": "TrapOS base: package manager, event loop, upgrade and event tools",
|
"description": "TrapOS base: package manager, event loop, upgrade and event tools",
|
||||||
"dependencies": [],
|
"dependencies": [],
|
||||||
"files": [
|
"files": [
|
||||||
|
|||||||
@ -47,8 +47,7 @@ local version = readManifestVersion();
|
|||||||
local configuredSandboxUrl = false;
|
local configuredSandboxUrl = false;
|
||||||
|
|
||||||
if isBlank(settings.get(SANDBOX_URL_SETTING)) then
|
if isBlank(settings.get(SANDBOX_URL_SETTING)) then
|
||||||
settings.set(SANDBOX_URL_SETTING, DEFAULT_SANDBOX_URL);
|
shell.run('set', SANDBOX_URL_SETTING, DEFAULT_SANDBOX_URL);
|
||||||
settings.save();
|
|
||||||
configuredSandboxUrl = true;
|
configuredSandboxUrl = true;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@ -7,27 +7,29 @@ local DEFAULT_SANDBOX_URL = 'wss://trapos.trapcloud.fr';
|
|||||||
local function fakeSettings(values)
|
local function fakeSettings(values)
|
||||||
return {
|
return {
|
||||||
values = values or {},
|
values = values or {},
|
||||||
saved = 0,
|
|
||||||
get = function(self, key)
|
get = function(self, key)
|
||||||
return self.values[key];
|
return self.values[key];
|
||||||
end,
|
end,
|
||||||
set = function(self, key, value)
|
|
||||||
self.values[key] = value;
|
|
||||||
end,
|
|
||||||
save = function(self)
|
|
||||||
self.saved = self.saved + 1;
|
|
||||||
end,
|
|
||||||
};
|
};
|
||||||
end
|
end
|
||||||
|
|
||||||
local function runPostinstall(settingsLib)
|
local function runPostinstall(settingsLib)
|
||||||
local lines = {};
|
local lines = {};
|
||||||
|
local shellRuns = {};
|
||||||
local env = setmetatable({
|
local env = setmetatable({
|
||||||
require = require,
|
require = require,
|
||||||
settings = {
|
settings = {
|
||||||
get = function(key) return settingsLib:get(key); end,
|
get = function(key) return settingsLib:get(key); end,
|
||||||
set = function(key, value) settingsLib:set(key, value); end,
|
},
|
||||||
save = function() settingsLib:save(); end,
|
shell = {
|
||||||
|
run = function(...)
|
||||||
|
local args = { ... };
|
||||||
|
shellRuns[#shellRuns + 1] = args;
|
||||||
|
if args[1] == 'set' and args[2] then
|
||||||
|
settingsLib.values[args[2]] = args[3];
|
||||||
|
end
|
||||||
|
return true;
|
||||||
|
end,
|
||||||
},
|
},
|
||||||
print = function(line)
|
print = function(line)
|
||||||
lines[#lines + 1] = line or '';
|
lines[#lines + 1] = line or '';
|
||||||
@ -38,7 +40,7 @@ local function runPostinstall(settingsLib)
|
|||||||
if not chunk then error(loadErr, 0); end
|
if not chunk then error(loadErr, 0); end
|
||||||
local ok, err = pcall(chunk);
|
local ok, err = pcall(chunk);
|
||||||
if not ok then error(err, 0); end
|
if not ok then error(err, 0); end
|
||||||
return lines;
|
return lines, shellRuns;
|
||||||
end
|
end
|
||||||
|
|
||||||
local function containsLine(lines, expected)
|
local function containsLine(lines, expected)
|
||||||
@ -50,20 +52,23 @@ end
|
|||||||
|
|
||||||
testlib.test('postinstall defaults missing sandbox url', function()
|
testlib.test('postinstall defaults missing sandbox url', function()
|
||||||
local settingsLib = fakeSettings();
|
local settingsLib = fakeSettings();
|
||||||
local lines = runPostinstall(settingsLib);
|
local lines, shellRuns = runPostinstall(settingsLib);
|
||||||
|
|
||||||
testlib.assertEquals(settingsLib.values['sandbox.url'], DEFAULT_SANDBOX_URL);
|
testlib.assertEquals(settingsLib.values['sandbox.url'], DEFAULT_SANDBOX_URL);
|
||||||
testlib.assertEquals(settingsLib.saved, 1);
|
testlib.assertEquals(#shellRuns, 1);
|
||||||
|
testlib.assertEquals(shellRuns[1][1], 'set');
|
||||||
|
testlib.assertEquals(shellRuns[1][2], 'sandbox.url');
|
||||||
|
testlib.assertEquals(shellRuns[1][3], DEFAULT_SANDBOX_URL);
|
||||||
testlib.assertTrue(containsLine(lines, '=> Configured sandbox.url to ' .. DEFAULT_SANDBOX_URL .. '.'));
|
testlib.assertTrue(containsLine(lines, '=> Configured sandbox.url to ' .. DEFAULT_SANDBOX_URL .. '.'));
|
||||||
testlib.assertTrue(containsLine(lines, '=> Sandbox password not set.'));
|
testlib.assertTrue(containsLine(lines, '=> Sandbox password not set.'));
|
||||||
end);
|
end);
|
||||||
|
|
||||||
testlib.test('postinstall treats empty sandbox url as missing', function()
|
testlib.test('postinstall treats empty sandbox url as missing', function()
|
||||||
local settingsLib = fakeSettings({ ['sandbox.url'] = '' });
|
local settingsLib = fakeSettings({ ['sandbox.url'] = '' });
|
||||||
runPostinstall(settingsLib);
|
local _, shellRuns = runPostinstall(settingsLib);
|
||||||
|
|
||||||
testlib.assertEquals(settingsLib.values['sandbox.url'], DEFAULT_SANDBOX_URL);
|
testlib.assertEquals(settingsLib.values['sandbox.url'], DEFAULT_SANDBOX_URL);
|
||||||
testlib.assertEquals(settingsLib.saved, 1);
|
testlib.assertEquals(#shellRuns, 1);
|
||||||
end);
|
end);
|
||||||
|
|
||||||
testlib.test('postinstall preserves existing sandbox url and password', function()
|
testlib.test('postinstall preserves existing sandbox url and password', function()
|
||||||
@ -71,10 +76,10 @@ testlib.test('postinstall preserves existing sandbox url and password', function
|
|||||||
['sandbox.url'] = 'wss://custom.example',
|
['sandbox.url'] = 'wss://custom.example',
|
||||||
['sandbox.password'] = 'secret',
|
['sandbox.password'] = 'secret',
|
||||||
});
|
});
|
||||||
local lines = runPostinstall(settingsLib);
|
local lines, shellRuns = runPostinstall(settingsLib);
|
||||||
|
|
||||||
testlib.assertEquals(settingsLib.values['sandbox.url'], 'wss://custom.example');
|
testlib.assertEquals(settingsLib.values['sandbox.url'], 'wss://custom.example');
|
||||||
testlib.assertEquals(settingsLib.saved, 0);
|
testlib.assertEquals(#shellRuns, 0);
|
||||||
testlib.assertTrue(containsLine(lines, '=> Keeping existing sandbox.url.'));
|
testlib.assertTrue(containsLine(lines, '=> Keeping existing sandbox.url.'));
|
||||||
testlib.assertTrue(containsLine(lines, '=> Sandbox password already configured.'));
|
testlib.assertTrue(containsLine(lines, '=> Sandbox password already configured.'));
|
||||||
end);
|
end);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user