summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Silverstone <dsilvers@digital-scurf.org>2012-05-13 20:51:00 +0100
committerDaniel Silverstone <dsilvers@digital-scurf.org>2012-05-13 20:51:00 +0100
commit63749400c33680ca1e4ad825873d2e60bb39eecb (patch)
tree5fecf968afd428b5909adc4284296a3fbd6b9633
parent3db82b74ef702ad04da1d0b88f9092097e30dcae (diff)
downloadlace-63749400c33680ca1e4ad825873d2e60bb39eecb.tar.gz
Handle the last conditional result for allow/deny in builtin
-rw-r--r--lib/lace/builtin.lua9
-rw-r--r--test/test-lace.builtin.lua19
2 files changed, 27 insertions, 1 deletions
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")