mirror of
https://github.com/ntop/ntopng.git
synced 2026-04-30 16:09:32 +00:00
Implements Lua unit tests
This commit is contained in:
parent
3819af0037
commit
831e5d91e6
15 changed files with 179 additions and 20 deletions
73
scripts/lua/modules/test/unittest.lua
Normal file
73
scripts/lua/modules/test/unittest.lua
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
--
|
||||
-- (C) 2017-18 - ntop.org
|
||||
--
|
||||
|
||||
local dirs = ntop.getDirs()
|
||||
package.path = dirs.installdir .. "/scripts/lua/modules/?.lua;" .. package.path
|
||||
require "lua_trace"
|
||||
local unittest = {}
|
||||
|
||||
function unittest:runner(test_no, test_name, f)
|
||||
return function(...)
|
||||
-- for each function run by this runner, failed assertions are counted
|
||||
-- so we start clean with a reset
|
||||
self.failed_assertions = 0
|
||||
|
||||
local f_name = debug.getinfo(1, "n").name
|
||||
local start = os.time()
|
||||
local result = {f(...)}
|
||||
local finish = os.time()
|
||||
|
||||
local result = table.unpack(result)
|
||||
|
||||
traceError(TRACE_NORMAL,TRACE_CONSOLE, string.format("[%s][test: %.2u][%s] executed in %i secs",
|
||||
self.failed_assertions > 0 and "FAILED" or "OK",
|
||||
test_no, test_name, finish - start))
|
||||
|
||||
return self.failed_assertions == 0
|
||||
end
|
||||
end
|
||||
|
||||
function unittest:new(options)
|
||||
local obj = {
|
||||
test_fns = {},
|
||||
failed_assertions = 0,
|
||||
-- add here other class members and possibly initialize them from the options
|
||||
}
|
||||
|
||||
setmetatable(obj, self)
|
||||
self.__index = self
|
||||
|
||||
return obj
|
||||
end
|
||||
|
||||
function unittest:assertEqual(actual, expected, msg)
|
||||
if actual ~= expected then
|
||||
traceError(TRACE_ERROR, TRACE_CONSOLE,
|
||||
string.format("Assertion failed [actual: %s][expected: %s][%s]", tostring(actual), tostring(expected), msg))
|
||||
self.failed_assertions = self.failed_assertions + 1
|
||||
return false
|
||||
end
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
function unittest:appendTest(test_name, test_fn)
|
||||
self.test_fns[#self.test_fns + 1] = {test_name = test_name, test_fn = test_fn}
|
||||
end
|
||||
|
||||
function unittest:run()
|
||||
local unittest_file = debug.getinfo(2).short_src
|
||||
traceError(TRACE_NORMAL, TRACE_CONSOLE, string.format("Running unittest [%s]", unittest_file))
|
||||
|
||||
for test_no, test_fn in ipairs(self.test_fns) do
|
||||
local test_name = test_fn["test_name"]
|
||||
local test_fn = test_fn["test_fn"]
|
||||
|
||||
self:runner(test_no, test_name, test_fn)()
|
||||
end
|
||||
|
||||
traceError(TRACE_NORMAL, TRACE_CONSOLE, string.format("Unittest done [%s]", unittest_file))
|
||||
end
|
||||
|
||||
return unittest
|
||||
Loading…
Add table
Add a link
Reference in a new issue