# Pastebin FPa9MCbB local TU = {} spawn(function() wait(5) warn("Initiating Tests...") for k,v in pairs(script:GetChildren()) do require(v) end end) local stack,t local function clear() stack,t = nil end local function Terror(msg,lev) stack = debug.traceback() t = "Forced error" error(msg,(lev or 2)+1) end local function Tassert(obj,msg) if not obj then stack = debug.traceback() t = "Assertion failed" error(msg or "assertion failed!",2) end end setmetatable(TU,{ __index = function(s,k) return getfenv(2)[k] end; }) function TU:Import() local env,tests = getfenv(2),{} print("func:",setfenv(2,setmetatable({},{ __newindex = function(s,k,v) if #tests > 0 and type(v) == "function" then print("Running tests for:",k) for a,b in pairs(tests) do local s,e = pcall(v,unpack(b,1,b.n)) if s then print(" - ",a..". Test succesfull") elseif t == "Forced error" then print(" - ",a..". Forced error:",e) print(" "..stack:gsub("\n","\n ")) elseif t == "Assertion failed" then print(" - ",a..". Assertion failed:",e) print(" "..stack:gsub("\n","\n ")) else print(" - ",a..". Running error:",e) end clear() end end rawset(s,k,v) end; __index = function(s,k,v) if k == "Test" then return function(...) local tup = {n=select("#",...),...} if tup[1] == TU then table.remove(tup,1) tup.n = tup.n - 1 end table.insert(tests,tup) end elseif k == "error" then return Terror elseif k == "assert" then return Tassert end return env[k] end; }))) end return TU