From b143d1ec3813f25128e34d06aa552b9d6703569b Mon Sep 17 00:00:00 2001 From: Daniel Silverstone Date: Sat, 8 Sep 2012 14:25:36 +0100 Subject: GALL.LL: Initial testing for gall.ll --- Makefile | 2 +- lib/gall/ll.lua | 9 ++++-- test/test-gall.ll.lua | 89 +++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 96 insertions(+), 4 deletions(-) create mode 100644 test/test-gall.ll.lua diff --git a/Makefile b/Makefile index 71479f2..5bf34f6 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ all: test -MODULES := gall gall.util +MODULES := gall gall.util gall.ll LUA_VER := 5.1 INST_BASE := /usr/local diff --git a/lib/gall/ll.lua b/lib/gall/ll.lua index 7f20683..24f76bb 100644 --- a/lib/gall/ll.lua +++ b/lib/gall/ll.lua @@ -65,8 +65,11 @@ local function _rungit(t) return why, stdout, stderr end -local function _setgit(e) - git_exe = e +local function get_set_git(e) + if e then + git_exe = e + end + return git_exe end local function _chomp(s) @@ -76,7 +79,7 @@ end local mod_ret = { rungit = _rungit, - setgit = _setgit, + get_set_git = get_set_git, chomp = _chomp } diff --git a/test/test-gall.ll.lua b/test/test-gall.ll.lua new file mode 100644 index 0000000..90e3f8b --- /dev/null +++ b/test/test-gall.ll.lua @@ -0,0 +1,89 @@ +-- test/test-gall.util.lua +-- +-- Git Abstraction layer for Lua - Utility function tests +-- +-- Copyright 2012 Daniel Silverstone +-- +-- For Licence terms, see COPYING +-- + +-- Step one, start coverage + +local luacov = require 'luacov' + +local gall = require 'gall' + +local testnames = {} + +local real_assert = assert +local total_asserts = 0 +local function assert(...) + local retval = real_assert(...) + total_asserts = total_asserts + 1 + return retval +end + +local function add_test(suite, name, value) + rawset(suite, name, value) + testnames[#testnames+1] = name +end + +local suite = setmetatable({}, {__newindex = add_test}) + +function suite.test_ll_chomp() + local instr = "foo\n" + local outstr = gall.ll.chomp(instr) + assert(outstr == "foo") +end + +function suite.test_get_set_git() + local now_git = gall.ll.get_set_git() + assert(now_git == gall.ll.get_set_git()) + assert(now_git == "git") + assert("foobar" == gall.ll.get_set_git("foobar")) + assert(gall.ll.get_set_git() == "foobar") + assert(now_git == gall.ll.get_set_git(now_git)) + assert(now_git == gall.ll.get_set_git()) + assert(now_git == "git") +end + +function suite.test_rungit() + local args = { + repo = ".", + env = { GIT_EDITOR = "foobarbaz" }, + stdout = gall.ll.chomp, + "var", "GIT_EDITOR" + } + local why, stdout, stderr = gall.ll.rungit(args) + assert(why == 0) + assert(stdout == "foobarbaz") + assert(stderr == nil or stderr == "") +end + +function suite.test_hash_object() + local args = { + repo = ".", + stdin = "FOOBAR", + "-t", "blob", "--stdin", + } + local why, stdout, stderr = gall.ll.hash_object(args) + assert(why == 0) + assert(stdout == "389865bb681b358c9b102d79abd8d5f941e96551") + assert(stderr == nil or stderr == "") +end + +local count_ok = 0 +for _, testname in ipairs(testnames) do +-- print("Run: " .. testname) + local ok, err = xpcall(suite[testname], debug.traceback) + if not ok then + print(err) + print() + else + count_ok = count_ok + 1 + end +end + +print(tostring(count_ok) .. "/" .. tostring(#testnames) .. " [" .. tostring(total_asserts) .. "] OK") + +os.exit(count_ok == #testnames and 0 or 1) -- cgit v1.2.1