Implement auto test

This commit is contained in:
Trebor-Huang
2021-10-31 02:10:33 +08:00
parent 137d9296cd
commit 9dcbd86fc3
2 changed files with 51 additions and 0 deletions

View File

@@ -1,8 +1,17 @@
NONE={}function NULL()end
EDITING=""
LOADED=false
TEST_MODE=false
ERRDATA={}
--Test script
--[[
Yield a number to sleep for that many frames, otherwise just do it!
We will set the script after we load stuff.
--]]
TESTS = nil
TEST_SLEEP = 0
--Pure lua modules (basic)
COLOR= require'Zframework.color'
TABLE= require'Zframework.tableExtend'
@@ -400,6 +409,12 @@ function love.errorhandler(msg)
love.audio.stop()
gc.reset()
--In test mode, we fail early
if TEST_MODE then
print("\27[91m\27[1mAutomatic Test Failed :(\27[0m\nWe are in test mode, so we error out. The error message is:\n"..msg.."\27[91m\nAborting\27[0m")
love.event.quit(1)
end
if LOADED and #ERRDATA<3 then
BG.set('none')
local scn=SCN and SCN.cur or"NULL"
@@ -533,6 +548,14 @@ function love.run()
love.resize(gc.getWidth(),gc.getHeight())
-- Argument parsing
-- TODO: currently very simple, only support one argument
for i, c in ipairs(arg) do
if c=='--test' then
TEST_MODE = true
end
end
--Scene Launch
while #SCN.stack>0 do SCN.pop()end
SCN.push('quit','slowFade')
@@ -692,6 +715,18 @@ function love.run()
end
end
--Execute testing tasks
if TEST_MODE then
if TEST_SLEEP > 0 then
TEST_SLEEP = TEST_SLEEP - 1
else
TEST_SLEEP = TESTS()
if TEST_SLEEP == nil then
love.event.quit(0)
end
end
end
--Keep 60fps
_=timer()-lastFrame
if _<.0162 then WAIT(.0162-_)end