diff options
Diffstat (limited to 'testes/db.lua')
| -rw-r--r-- | testes/db.lua | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/testes/db.lua b/testes/db.lua index f891e9b8..02b96aca 100644 --- a/testes/db.lua +++ b/testes/db.lua | |||
| @@ -16,7 +16,7 @@ end | |||
| 16 | assert(not debug.gethook()) | 16 | assert(not debug.gethook()) |
| 17 | 17 | ||
| 18 | local testline = 19 -- line where 'test' is defined | 18 | local testline = 19 -- line where 'test' is defined |
| 19 | function test (s, l, p) -- this must be line 19 | 19 | local function test (s, l, p) -- this must be line 19 |
| 20 | collectgarbage() -- avoid gc during trace | 20 | collectgarbage() -- avoid gc during trace |
| 21 | local function f (event, line) | 21 | local function f (event, line) |
| 22 | assert(event == 'line') | 22 | assert(event == 'line') |
| @@ -50,7 +50,7 @@ end | |||
| 50 | 50 | ||
| 51 | 51 | ||
| 52 | -- test file and string names truncation | 52 | -- test file and string names truncation |
| 53 | a = "function f () end" | 53 | local a = "function f () end" |
| 54 | local function dostring (s, x) return load(s, x)() end | 54 | local function dostring (s, x) return load(s, x)() end |
| 55 | dostring(a) | 55 | dostring(a) |
| 56 | assert(debug.getinfo(f).short_src == string.format('[string "%s"]', a)) | 56 | assert(debug.getinfo(f).short_src == string.format('[string "%s"]', a)) |
| @@ -72,7 +72,8 @@ dostring(a, string.format("=%s", string.rep('x', 500))) | |||
| 72 | assert(string.find(debug.getinfo(f).short_src, "^x*$")) | 72 | assert(string.find(debug.getinfo(f).short_src, "^x*$")) |
| 73 | dostring(a, "=") | 73 | dostring(a, "=") |
| 74 | assert(debug.getinfo(f).short_src == "") | 74 | assert(debug.getinfo(f).short_src == "") |
| 75 | a = nil; f = nil; | 75 | _G.a = nil; _G.f = nil; |
| 76 | _G[string.rep("p", 400)] = nil | ||
| 76 | 77 | ||
| 77 | 78 | ||
| 78 | repeat | 79 | repeat |
| @@ -120,6 +121,7 @@ else | |||
| 120 | end | 121 | end |
| 121 | ]], {2,3,4,7}) | 122 | ]], {2,3,4,7}) |
| 122 | 123 | ||
| 124 | |||
| 123 | test([[ | 125 | test([[ |
| 124 | local function foo() | 126 | local function foo() |
| 125 | end | 127 | end |
| @@ -128,6 +130,7 @@ A = 1 | |||
| 128 | A = 2 | 130 | A = 2 |
| 129 | A = 3 | 131 | A = 3 |
| 130 | ]], {2, 3, 2, 4, 5, 6}) | 132 | ]], {2, 3, 2, 4, 5, 6}) |
| 133 | _G.A = nil | ||
| 131 | 134 | ||
| 132 | 135 | ||
| 133 | test([[-- | 136 | test([[-- |
| @@ -175,6 +178,8 @@ end | |||
| 175 | 178 | ||
| 176 | test([[for i=1,4 do a=1 end]], {1,1,1,1}) | 179 | test([[for i=1,4 do a=1 end]], {1,1,1,1}) |
| 177 | 180 | ||
| 181 | _G.a = nil | ||
| 182 | |||
| 178 | 183 | ||
| 179 | do -- testing line info/trace with large gaps in source | 184 | do -- testing line info/trace with large gaps in source |
| 180 | 185 | ||
| @@ -194,6 +199,7 @@ do -- testing line info/trace with large gaps in source | |||
| 194 | end | 199 | end |
| 195 | end | 200 | end |
| 196 | end | 201 | end |
| 202 | _G.a = nil | ||
| 197 | 203 | ||
| 198 | 204 | ||
| 199 | do -- testing active lines | 205 | do -- testing active lines |
| @@ -287,7 +293,6 @@ foo(200, 3, 4) | |||
| 287 | local a = {} | 293 | local a = {} |
| 288 | for i = 1, (_soft and 100 or 1000) do a[i] = i end | 294 | for i = 1, (_soft and 100 or 1000) do a[i] = i end |
| 289 | foo(table.unpack(a)) | 295 | foo(table.unpack(a)) |
| 290 | a = nil | ||
| 291 | 296 | ||
| 292 | 297 | ||
| 293 | 298 | ||
| @@ -307,13 +312,14 @@ do -- test hook presence in debug info | |||
| 307 | debug.sethook() | 312 | debug.sethook() |
| 308 | assert(count == 4) | 313 | assert(count == 4) |
| 309 | end | 314 | end |
| 315 | _ENV.a = nil | ||
| 310 | 316 | ||
| 311 | 317 | ||
| 312 | -- hook table has weak keys | 318 | -- hook table has weak keys |
| 313 | assert(getmetatable(debug.getregistry()._HOOKKEY).__mode == 'k') | 319 | assert(getmetatable(debug.getregistry()._HOOKKEY).__mode == 'k') |
| 314 | 320 | ||
| 315 | 321 | ||
| 316 | a = {}; L = nil | 322 | a = {}; local L = nil |
| 317 | local glob = 1 | 323 | local glob = 1 |
| 318 | local oldglob = glob | 324 | local oldglob = glob |
| 319 | debug.sethook(function (e,l) | 325 | debug.sethook(function (e,l) |
| @@ -354,7 +360,7 @@ function foo() | |||
| 354 | end; foo() -- set L | 360 | end; foo() -- set L |
| 355 | -- check line counting inside strings and empty lines | 361 | -- check line counting inside strings and empty lines |
| 356 | 362 | ||
| 357 | _ = 'alo\ | 363 | local _ = 'alo\ |
| 358 | alo' .. [[ | 364 | alo' .. [[ |
| 359 | 365 | ||
| 360 | ]] | 366 | ]] |
| @@ -403,6 +409,7 @@ function g(a,b) return (a+1) + f() end | |||
| 403 | 409 | ||
| 404 | assert(g(0,0) == 30) | 410 | assert(g(0,0) == 30) |
| 405 | 411 | ||
| 412 | _G.f, _G.g = nil | ||
| 406 | 413 | ||
| 407 | debug.sethook(nil); | 414 | debug.sethook(nil); |
| 408 | assert(not debug.gethook()) | 415 | assert(not debug.gethook()) |
| @@ -446,7 +453,7 @@ local function collectlocals (level) | |||
| 446 | end | 453 | end |
| 447 | 454 | ||
| 448 | 455 | ||
| 449 | X = nil | 456 | local X = nil |
| 450 | a = {} | 457 | a = {} |
| 451 | function a:f (a, b, ...) local arg = {...}; local c = 13 end | 458 | function a:f (a, b, ...) local arg = {...}; local c = 13 end |
| 452 | debug.sethook(function (e) | 459 | debug.sethook(function (e) |
| @@ -469,6 +476,7 @@ a:f(1,2,3,4,5) | |||
| 469 | assert(X.self == a and X.a == 1 and X.b == 2 and X.c == nil) | 476 | assert(X.self == a and X.a == 1 and X.b == 2 and X.c == nil) |
| 470 | assert(XX == 12) | 477 | assert(XX == 12) |
| 471 | assert(not debug.gethook()) | 478 | assert(not debug.gethook()) |
| 479 | _G.XX = nil | ||
| 472 | 480 | ||
| 473 | 481 | ||
| 474 | -- testing access to local variables in return hook (bug in 5.2) | 482 | -- testing access to local variables in return hook (bug in 5.2) |
| @@ -593,6 +601,7 @@ end | |||
| 593 | 601 | ||
| 594 | debug.sethook() | 602 | debug.sethook() |
| 595 | 603 | ||
| 604 | local g, g1 | ||
| 596 | 605 | ||
| 597 | -- tests for tail calls | 606 | -- tests for tail calls |
| 598 | local function f (x) | 607 | local function f (x) |
| @@ -638,7 +647,7 @@ h(false) | |||
| 638 | debug.sethook() | 647 | debug.sethook() |
| 639 | assert(b == 2) -- two tail calls | 648 | assert(b == 2) -- two tail calls |
| 640 | 649 | ||
| 641 | lim = _soft and 3000 or 30000 | 650 | local lim = _soft and 3000 or 30000 |
| 642 | local function foo (x) | 651 | local function foo (x) |
| 643 | if x==0 then | 652 | if x==0 then |
| 644 | assert(debug.getinfo(2).what == "main") | 653 | assert(debug.getinfo(2).what == "main") |
| @@ -940,7 +949,7 @@ end | |||
| 940 | 949 | ||
| 941 | 950 | ||
| 942 | print("testing debug functions on chunk without debug info") | 951 | print("testing debug functions on chunk without debug info") |
| 943 | prog = [[-- program to be loaded without debug information (strip) | 952 | local prog = [[-- program to be loaded without debug information (strip) |
| 944 | local debug = require'debug' | 953 | local debug = require'debug' |
| 945 | local a = 12 -- a local variable | 954 | local a = 12 -- a local variable |
| 946 | 955 | ||
