2021-12-11 06:05:05 +08:00
|
|
|
-- This file is part of the Luau programming language and is licensed under MIT License; see LICENSE.txt for details
|
|
|
|
print("testing coverage")
|
|
|
|
|
|
|
|
function foo()
|
|
|
|
local x = 1
|
|
|
|
local y = 2
|
|
|
|
assert(x + y)
|
|
|
|
end
|
|
|
|
|
|
|
|
function bar()
|
|
|
|
local function one(x)
|
|
|
|
return x
|
|
|
|
end
|
|
|
|
|
|
|
|
local two = function(x)
|
|
|
|
return x
|
|
|
|
end
|
|
|
|
|
|
|
|
one(1)
|
|
|
|
end
|
|
|
|
|
|
|
|
function validate(stats, hits, misses)
|
|
|
|
local checked = {}
|
|
|
|
|
|
|
|
for _,l in ipairs(hits) do
|
|
|
|
if not (stats[l] and stats[l] > 0) then
|
|
|
|
return false, string.format("expected line %d to be hit", l)
|
|
|
|
end
|
|
|
|
checked[l] = true
|
|
|
|
end
|
|
|
|
|
|
|
|
for _,l in ipairs(misses) do
|
|
|
|
if not (stats[l] and stats[l] == 0) then
|
|
|
|
return false, string.format("expected line %d to be missed", l)
|
|
|
|
end
|
|
|
|
checked[l] = true
|
|
|
|
end
|
|
|
|
|
|
|
|
for k,v in pairs(stats) do
|
|
|
|
if type(k) == "number" and not checked[k] then
|
|
|
|
return false, string.format("expected line %d to be absent", k)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
return true
|
|
|
|
end
|
|
|
|
|
|
|
|
foo()
|
|
|
|
c = getcoverage(foo)
|
|
|
|
assert(#c == 1)
|
|
|
|
assert(c[1].name == "foo")
|
2022-02-18 09:18:01 +08:00
|
|
|
assert(c[1].linedefined == 4)
|
|
|
|
assert(c[1].depth == 0)
|
2021-12-11 06:05:05 +08:00
|
|
|
assert(validate(c[1], {5, 6, 7}, {}))
|
|
|
|
|
|
|
|
bar()
|
|
|
|
c = getcoverage(bar)
|
|
|
|
assert(#c == 3)
|
|
|
|
assert(c[1].name == "bar")
|
2022-02-18 09:18:01 +08:00
|
|
|
assert(c[1].linedefined == 10)
|
|
|
|
assert(c[1].depth == 0)
|
2021-12-11 06:05:05 +08:00
|
|
|
assert(validate(c[1], {11, 15, 19}, {}))
|
|
|
|
assert(c[2].name == "one")
|
2022-02-18 09:18:01 +08:00
|
|
|
assert(c[2].linedefined == 11)
|
|
|
|
assert(c[2].depth == 1)
|
2021-12-11 06:05:05 +08:00
|
|
|
assert(validate(c[2], {12}, {}))
|
|
|
|
assert(c[3].name == nil)
|
2022-02-18 09:18:01 +08:00
|
|
|
assert(c[3].linedefined == 15)
|
|
|
|
assert(c[3].depth == 1)
|
2021-12-11 06:05:05 +08:00
|
|
|
assert(validate(c[3], {}, {16}))
|
|
|
|
|
|
|
|
return 'OK'
|