diff options
-rw-r--r-- | marigold.lua | 30 | ||||
-rwxr-xr-x | test.lua | 32 |
2 files changed, 55 insertions, 7 deletions
diff --git a/marigold.lua b/marigold.lua index 939a7ba..c95ecb5 100644 --- a/marigold.lua +++ b/marigold.lua @@ -36,4 +36,34 @@ local marigold = {} +marigold.get_metavars = function() + local vars = { + "AUTH_TYPE", "CONTENT_LENGTH", + "CONTENT_TYPE", "GATEWAY_INTERFACE", + "PATH_INFO", "PATH_TRANSLATED", + "QUERY_STRING", "REMOTE_ADDR", + "REMOTE_HOST", "REMOTE_IDENT", + "REMOTE_USER", "REQUEST_METHOD", + "SCRIPT_NAME", "SERVER_NAME", + "SERVER_PORT", "SERVER_PROTOCOL", + "SERVER_SOFTWARE" + } + local metavars = {} + for _, var in ipairs(vars) do + metavars[string.lower(var)] = os.getenv(var) + end + return metavars +end + + +marigold.h = function(tag_type, content, tbl) + local tag = {} + tag.tag = tag_type + tag.content = content + tag.attributes = {} + tag.children = {} + return tag +end + +return marigold @@ -14,11 +14,6 @@ function test(description, func) end end -function test_assert(str) - local f = assert(loadstring('return ' .. str)) - assert(f(), 'assertion failed: ' .. str) -end - test("marigold.get_metavars correctly calls os.getenv", function() -- mock os.getenv @@ -37,12 +32,35 @@ test("marigold.get_metavars correctly calls os.getenv", function() REQUEST_METHOD = 'uhh, to do what?', SCRIPT_NAME = 'pretty sure this is hamlet', SERVER_NAME = 'this isnt a restaurant', + SERVER_PORT = 'what, like a ship?', SERVER_PROTOCOL = 'no really, not a restaurant', SERVER_SOFTWARE = 'not familiar with that dish...', } os.getenv = function(varname) return env_tbl[varname] end -- actually call the function - --local metavars = marigold.get_metavars() - test_assert("type(metavars) == 'table'") + metavars = marigold.get_metavars() + + assert(type(metavars) == 'table') + for k, v in pairs(env_tbl) do + assert(metavars[string.lower(k)]) + assert(metavars[string.lower(k)] == env_tbl[k]) + end + + -- restore os.getenv + os.getenv = old_getenv +end) + + +test("marigold.h produces a correct basic tag", function() + local h = marigold.h + local h1 = h('h1', 'hello, world!') + assert(type(h1) == 'table') + assert(h1.tag == 'h1') + assert(h1.content == 'hello, world!') + -- should have no entries in the h1.attributes table + for k, v in pairs(h1.attributes) do + assert(false, string.format("%s, %s", tostring(k), tostring(v))) + end + assert(#(h1.children) == 0) end) |