-- SPDX-License-Identifier: GPL-3.0-or-later
-- disable output buffering to crashes do not leave us without log
io.stdout:setvbuf('no')
io.stderr:setvbuf('no')

-- modify path to be able to load testing modules
package.path = package.path .. ';' .. env.SOURCE_PATH .. '/?.lua'

-- export testing module in globals
local tapered = require('tapered.src.tapered')
for k, v in pairs(tapered) do
	_G[k] = v
end

-- don't send priming queries etc.
modules.unload 'detect_time_skew'
modules.unload 'priming'
modules.unload 'ta_signal_query'
modules.unload 'ta_update'

-- load test
local ffi = require('ffi')
assert(type(env.TEST_FILE) == 'string')
log_info(ffi.C.LOG_GRP_TESTS, 'processing test file %s', env.TEST_FILE)
local tests = dofile(env.TEST_FILE)

-- run test after processed config file
-- default config will be used and we can test it.
assert(type(tests) == 'table',
	string.format('file %s did not return a table of test'
		.. ' functions, did you forget return?',
		env.TEST_FILE))

local runtest = require('test_utils').test
worker.coroutine(function ()
	local at_least_one_test = false
	for idx, t in ipairs(tests) do
		assert(type(t) == 'function',
			string.format('test table idx %d in file %s'
				.. ' is not a function', idx, env.TEST_FILE))
		at_least_one_test = true
		runtest(t)
	end
	assert(at_least_one_test, 'test set is empty?! a typo in function name?')
	done()
end)
