diff --git a/packages/index.json b/packages/index.json index 17cb9fb..df8bbdf 100644 --- a/packages/index.json +++ b/packages/index.json @@ -1,6 +1,6 @@ { "packages": { - "trapos-core": "0.6.2", + "trapos-core": "0.6.3", "trapos-test": "0.2.1", "trapos-boot": "0.3.3", "trapos-net": "0.3.0", diff --git a/packages/trapos-core/ccpm.json b/packages/trapos-core/ccpm.json index 8782fa2..45cef32 100644 --- a/packages/trapos-core/ccpm.json +++ b/packages/trapos-core/ccpm.json @@ -1,6 +1,6 @@ { "name": "trapos-core", - "version": "0.6.2", + "version": "0.6.3", "description": "TrapOS base: package manager, event loop, upgrade and event tools", "dependencies": [], "files": [ diff --git a/programs/trapos-postinstall.lua b/programs/trapos-postinstall.lua index 9c3bf26..cf9a74a 100644 --- a/programs/trapos-postinstall.lua +++ b/programs/trapos-postinstall.lua @@ -47,8 +47,7 @@ local version = readManifestVersion(); local configuredSandboxUrl = false; if isBlank(settings.get(SANDBOX_URL_SETTING)) then - settings.set(SANDBOX_URL_SETTING, DEFAULT_SANDBOX_URL); - settings.save(); + shell.run('set', SANDBOX_URL_SETTING, DEFAULT_SANDBOX_URL); configuredSandboxUrl = true; end diff --git a/tests/postinstall.lua b/tests/postinstall.lua index b42eaa5..dedfc30 100644 --- a/tests/postinstall.lua +++ b/tests/postinstall.lua @@ -7,27 +7,29 @@ local DEFAULT_SANDBOX_URL = 'wss://trapos.trapcloud.fr'; local function fakeSettings(values) return { values = values or {}, - saved = 0, get = function(self, key) return self.values[key]; end, - set = function(self, key, value) - self.values[key] = value; - end, - save = function(self) - self.saved = self.saved + 1; - end, }; end local function runPostinstall(settingsLib) local lines = {}; + local shellRuns = {}; local env = setmetatable({ require = require, settings = { 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) lines[#lines + 1] = line or ''; @@ -38,7 +40,7 @@ local function runPostinstall(settingsLib) if not chunk then error(loadErr, 0); end local ok, err = pcall(chunk); if not ok then error(err, 0); end - return lines; + return lines, shellRuns; end local function containsLine(lines, expected) @@ -50,20 +52,23 @@ end testlib.test('postinstall defaults missing sandbox url', function() local settingsLib = fakeSettings(); - local lines = runPostinstall(settingsLib); + local lines, shellRuns = runPostinstall(settingsLib); 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, '=> Sandbox password not set.')); end); testlib.test('postinstall treats empty sandbox url as missing', function() local settingsLib = fakeSettings({ ['sandbox.url'] = '' }); - runPostinstall(settingsLib); + local _, shellRuns = runPostinstall(settingsLib); testlib.assertEquals(settingsLib.values['sandbox.url'], DEFAULT_SANDBOX_URL); - testlib.assertEquals(settingsLib.saved, 1); + testlib.assertEquals(#shellRuns, 1); end); 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.password'] = 'secret', }); - local lines = runPostinstall(settingsLib); + local lines, shellRuns = runPostinstall(settingsLib); 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, '=> Sandbox password already configured.')); end);