From 63749400c33680ca1e4ad825873d2e60bb39eecb Mon Sep 17 00:00:00 2001 From: Daniel Silverstone Date: Sun, 13 May 2012 20:51:00 +0100 Subject: Handle the last conditional result for allow/deny in builtin --- lib/lace/builtin.lua | 9 +++++++++ test/test-lace.builtin.lua | 19 ++++++++++++++++++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/lib/lace/builtin.lua b/lib/lace/builtin.lua index e99105b..289f688 100644 --- a/lib/lace/builtin.lua +++ b/lib/lace/builtin.lua @@ -16,6 +16,7 @@ end --[ Allow and Deny ]------------------------------------------------ local unconditional_result = nil +local last_result = nil local function get_set_last_unconditional_result(newv) local ret = unconditional_result @@ -23,6 +24,12 @@ local function get_set_last_unconditional_result(newv) return ret end +local function get_set_last_result(newv) + local ret = last_result + last_result = newv + return ret +end + local function _do_return(exec_context, result, reason, cond) if #cond > 0 then -- Run the conditions @@ -42,6 +49,7 @@ local function _return(compcontext, result, reason, ...) if #cond == 0 then unconditional_result = result end + last_result = result return { fn = _do_return, @@ -84,4 +92,5 @@ end return { commands = builtin, get_set_last_unconditional_result = get_set_last_unconditional_result, + get_set_last_result = get_set_last_result, } diff --git a/test/test-lace.builtin.lua b/test/test-lace.builtin.lua index 6f5ff00..4da3bb2 100644 --- a/test/test-lace.builtin.lua +++ b/test/test-lace.builtin.lua @@ -67,8 +67,13 @@ function suite.builtin_get_set_unconditional() "Result not saved") end +function suite.builtin_get_set_last() + builtin.get_set_last_result("FOO") + assert(builtin.get_set_last_result() == "FOO", + "Result not saved") +end + function suite.run_builtin_allow_deny_unconditional_saved() - -- Clear builtin.get_set_last_unconditional_result() local cmdtab, msg = builtin.commands.allow({}, "allow", "because") @@ -83,6 +88,18 @@ function suite.run_builtin_allow_deny_unconditional_saved() assert(last == "allow", "The last unconditional result was not allow?") end +function suite.run_builtin_allow_deny_conditional_saved() + builtin.get_set_last_result() + + local cmdtab, msg = builtin.commands.allow({}, "allow", "because", "fishes") + assert(type(cmdtab) == "table", "Result should be a table") + assert(type(cmdtab.fn) == "function", "Result should contain a function") + assert(type(cmdtab.args) == "table", "Result table should contain an args table") + + local last = builtin.get_set_last_result() + assert(last == "allow", "The last conditional result was not allow?") +end + function suite.compile_builtin_default_noresult() local compctx = {[".lace"] = {}} local cmdtab, msg = builtin.commands.default(compctx, "default") -- cgit v1.2.1