diff options
Diffstat (limited to 'test/diagnostics')
-rw-r--r-- | test/diagnostics/common.lua | 6 | ||||
-rw-r--r-- | test/diagnostics/init.lua | 33 |
2 files changed, 38 insertions, 1 deletions
diff --git a/test/diagnostics/common.lua b/test/diagnostics/common.lua index 89537771..a1dbe819 100644 --- a/test/diagnostics/common.lua +++ b/test/diagnostics/common.lua @@ -2262,3 +2262,9 @@ else function X.f() end end ]] + +TESTWITH 'global-in-nil-env' [[ +local function foo(_ENV) + Joe = "human" +end +]] diff --git a/test/diagnostics/init.lua b/test/diagnostics/init.lua index 3c19e58d..827d4d08 100644 --- a/test/diagnostics/init.lua +++ b/test/diagnostics/init.lua @@ -27,7 +27,7 @@ local function founded(targets, results) end ---@diagnostic disable: await-in-sync -function TEST(script, ...) +function TEST(script) local newScript, catched = catch(script, '!') files.setText(TESTURI, newScript) files.open(TESTURI) @@ -53,5 +53,36 @@ function TEST(script, ...) end end +function TESTWITH(code) + return function (script) + local newScript, catched = catch(script, '!') + files.setText(TESTURI, newScript) + files.open(TESTURI) + local origins = {} + local results = {} + core(TESTURI, false, function (result) + if code ~= result.code then + return + end + results[#results+1] = { result.start, result.finish } + origins[#origins+1] = result + end) + + if results[1] then + if not founded(catched['!'] or {}, results) then + error(('%s\n%s'):format(util.dump(catched['!']), util.dump(results))) + end + else + assert(#catched['!'] == 0) + end + + files.remove(TESTURI) + + return function (callback) + callback(origins) + end + end +end + require 'diagnostics.common' require 'diagnostics.type-check' |