diff options
Diffstat (limited to 'testes/files.lua')
| -rw-r--r-- | testes/files.lua | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/testes/files.lua b/testes/files.lua index e68eb9b8..34fcf851 100644 --- a/testes/files.lua +++ b/testes/files.lua | |||
| @@ -200,7 +200,7 @@ return x + y * z | |||
| 200 | assert(f:close()) | 200 | assert(f:close()) |
| 201 | f = coroutine.wrap(dofile) | 201 | f = coroutine.wrap(dofile) |
| 202 | assert(f(file) == 10) | 202 | assert(f(file) == 10) |
| 203 | print(f(100, 101) == 20) | 203 | assert(f(100, 101) == 20) |
| 204 | assert(f(200) == 100 + 200 * 101) | 204 | assert(f(200) == 100 + 200 * 101) |
| 205 | assert(os.remove(file)) | 205 | assert(os.remove(file)) |
| 206 | 206 | ||
| @@ -422,6 +422,41 @@ assert(load(io.lines(file, "L"), nil, nil, t))() | |||
| 422 | assert(t.a == -((10 + 34) * 2)) | 422 | assert(t.a == -((10 + 34) * 2)) |
| 423 | 423 | ||
| 424 | 424 | ||
| 425 | do -- testing closing file in line iteration | ||
| 426 | |||
| 427 | -- get the to-be-closed variable from a loop | ||
| 428 | local function gettoclose (lv) | ||
| 429 | lv = lv + 1 | ||
| 430 | for i = 1, math.maxinteger do | ||
| 431 | local n, v = debug.getlocal(lv, i) | ||
| 432 | if n == "(for toclose)" then | ||
| 433 | return v | ||
| 434 | end | ||
| 435 | end | ||
| 436 | end | ||
| 437 | |||
| 438 | local f | ||
| 439 | for l in io.lines(file) do | ||
| 440 | f = gettoclose(1) | ||
| 441 | assert(io.type(f) == "file") | ||
| 442 | break | ||
| 443 | end | ||
| 444 | assert(io.type(f) == "closed file") | ||
| 445 | |||
| 446 | f = nil | ||
| 447 | local function foo (name) | ||
| 448 | for l in io.lines(name) do | ||
| 449 | f = gettoclose(1) | ||
| 450 | assert(io.type(f) == "file") | ||
| 451 | error(f) -- exit loop with an error | ||
| 452 | end | ||
| 453 | end | ||
| 454 | local st, msg = pcall(foo, file) | ||
| 455 | assert(st == false and io.type(msg) == "closed file") | ||
| 456 | |||
| 457 | end | ||
| 458 | |||
| 459 | |||
| 425 | -- test for multipe arguments in 'lines' | 460 | -- test for multipe arguments in 'lines' |
| 426 | io.output(file); io.write"0123456789\n":close() | 461 | io.output(file); io.write"0123456789\n":close() |
| 427 | for a,b in io.lines(file, 1, 1) do | 462 | for a,b in io.lines(file, 1, 1) do |
