From 9586b36eb6495200dd374f577ada2571bb96d218 Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Thu, 26 May 2016 00:44:42 -0700 Subject: [PATCH] defaults(fix): purge entry from persistent file --- .../filemanager/filemanagersetdefaults.lua | 15 ++++++- spec/unit/defaults_spec.lua | 39 +++++++++++++++++++ 2 files changed, 52 insertions(+), 2 deletions(-) diff --git a/frontend/apps/filemanager/filemanagersetdefaults.lua b/frontend/apps/filemanager/filemanagersetdefaults.lua index abb205a84..e6e98aac2 100644 --- a/frontend/apps/filemanager/filemanagersetdefaults.lua +++ b/frontend/apps/filemanager/filemanagersetdefaults.lua @@ -291,12 +291,23 @@ function SetDefaults:SaveSettings() if not self.changed[j] then checked[j] = true end end - -- handle case "found in persistent" and changed, replace it + -- load default value for defaults + local defaults = {} + local load_defaults = loadfile(defaults_path) + setfenv(load_defaults, defaults) + load_defaults() + -- handle case "found in persistent" and changed, replace/delete it for k, v in pairs(persisted_defaults) do for j=1, #self.defaults_name do if not checked[j] and k == self.defaults_name[j] then - persisted_defaults[k] = self.defaults_value[j] + -- remove from persist if value got reverted back to the + -- default one + if defaults[k] == self.defaults_value[j] then + persisted_defaults[k] = nil + else + persisted_defaults[k] = self.defaults_value[j] + end checked[j] = true end end diff --git a/spec/unit/defaults_spec.lua b/spec/unit/defaults_spec.lua index bda9c28f1..be7cca889 100644 --- a/spec/unit/defaults_spec.lua +++ b/spec/unit/defaults_spec.lua @@ -82,6 +82,45 @@ DCREREADER_CONFIG_MARGIN_SIZES_LARGE = { [4] = 20 } DCREREADER_VIEW_MODE = "page" +]], + fd:read("*a")) + fd:close() + os.remove(persistent_filename) + end) + + it("should delete entry from defaults.persistent.lua if value is reverted back to default", function() + local persistent_filename = DataStorage:getDataDir() .. "/defaults.persistent.lua" + local fd = io.open(persistent_filename, "w") + fd:write( +[[-- For configuration changes that persists between updates +SEARCH_TITLE = true +DCREREADER_CONFIG_MARGIN_SIZES_LARGE = { + [1] = 20, + [2] = 20, + [3] = 20, + [4] = 20 +} +DCREREADER_VIEW_MODE = "page" +DHINTCOUNT = 2 +]]) + fd:close() + + -- in persistent + Defaults:init() + Defaults.changed[29] = true + Defaults.defaults_value[29] = 1 + Defaults:SaveSettings() + fd = io.open(persistent_filename) + assert.Equals( +[[-- For configuration changes that persists between updates +SEARCH_TITLE = true +DCREREADER_VIEW_MODE = "page" +DCREREADER_CONFIG_MARGIN_SIZES_LARGE = { + [1] = 20, + [2] = 20, + [3] = 20, + [4] = 20 +} ]], fd:read("*a")) fd:close()