{"body":"\nlocal TU = {}\n\nspawn(function() wait(5)\n\twarn(\"Initiating Tests...\")\n\tfor k,v in pairs(script:GetChildren()) do\n\t\trequire(v)\n\tend\nend)\n\nlocal stack,t\nlocal function clear()\n\tstack,t = nil\nend\nlocal function Terror(msg,lev)\n\tstack = debug.traceback()\n\tt = \"Forced error\"\n\terror(msg,(lev or 2)+1)\nend\nlocal function Tassert(obj,msg)\n\tif not obj then\n\t\tstack = debug.traceback()\n\t\tt = \"Assertion failed\"\n\t\terror(msg or \"assertion failed!\",2)\n\tend\nend\n\nsetmetatable(TU,{\n\t__index = function(s,k)\n\t\treturn getfenv(2)[k]\n\tend;\n})\n\nfunction TU:Import()\n\tlocal env,tests = getfenv(2),{}\n\tprint(\"func:\",setfenv(2,setmetatable({},{\n\t\t__newindex = function(s,k,v)\n\t\t\tif #tests > 0 and type(v) == \"function\" then\n\t\t\t\tprint(\"Running tests for:\",k)\n\t\t\t\tfor a,b in pairs(tests) do\n\t\t\t\t\tlocal s,e = pcall(v,unpack(b,1,b.n))\n\t\t\t\t\tif s then\n\t\t\t\t\t\tprint(\"  - \",a..\". Test succesfull\")\n\t\t\t\t\telseif t == \"Forced error\" then\n\t\t\t\t\t\tprint(\"  - \",a..\". Forced error:\",e)\n\t\t\t\t\t\tprint(\"      \"..stack:gsub(\"\\n\",\"\\n        \"))\n\t\t\t\t\telseif t == \"Assertion failed\" then\n\t\t\t\t\t\tprint(\"  - \",a..\". Assertion failed:\",e)\n\t\t\t\t\t\tprint(\"      \"..stack:gsub(\"\\n\",\"\\n        \"))\n\t\t\t\t\telse\n\t\t\t\t\t\tprint(\"  - \",a..\". Running error:\",e)\n\t\t\t\t\tend clear()\n\t\t\t\tend\n\t\t\tend rawset(s,k,v)\n\t\tend;\n\t\t__index = function(s,k,v)\n\t\t\tif k == \"Test\" then\n\t\t\t\treturn function(...)\n\t\t\t\t\tlocal tup = {n=select(\"#\",...),...}\n\t\t\t\t\tif tup[1] == TU then\n\t\t\t\t\t\ttable.remove(tup,1)\n\t\t\t\t\t\ttup.n = tup.n - 1\n\t\t\t\t\tend table.insert(tests,tup)\n\t\t\t\tend\n\t\t\telseif k == \"error\" then\n\t\t\t\treturn Terror\n\t\t\telseif k == \"assert\" then\n\t\t\t\treturn Tassert\n\t\t\tend return env[k]\n\t\tend;\n\t})))\nend\n\nreturn TU","name":"","extension":"txt","url":"https://www.irccloud.com/pastebin/FPa9MCbB","modified":1446226977,"id":"FPa9MCbB","size":1624,"lines":74,"own_paste":false,"theme":"","date":1446226977}