diff options
| author | Benoit Giannangeli <giann008@gmail.com> | 2017-05-29 14:51:35 +0200 | 
|---|---|---|
| committer | Benoit Giannangeli <giann008@gmail.com> | 2017-05-31 13:19:46 +0200 | 
| commit | 13d56c391dfea596eba9cd247fd4a35a328e5746 (patch) | |
| tree | 0c9ac299dad3063c243bed846c34f00609badd9b | |
| parent | 7b98fc12c2d64d6a5febca2ec53151b66193376f (diff) | |
| download | fengari-13d56c391dfea596eba9cd247fd4a35a328e5746.tar.gz fengari-13d56c391dfea596eba9cd247fd4a35a328e5746.tar.bz2 fengari-13d56c391dfea596eba9cd247fd4a35a328e5746.zip | |
[test-suite] db.js
| -rw-r--r-- | tests/test-suite/inprogress/db.js | 98 | 
1 files changed, 98 insertions, 0 deletions
| diff --git a/tests/test-suite/inprogress/db.js b/tests/test-suite/inprogress/db.js new file mode 100644 index 0000000..5ff307c --- /dev/null +++ b/tests/test-suite/inprogress/db.js @@ -0,0 +1,98 @@ +"use strict"; + +const test     = require('tape'); + +global.WEB = false; + +const lua     = require('../../../src/lua.js'); +const lauxlib = require('../../../src/lauxlib.js'); +const lualib  = require('../../../src/lualib.js'); + + +const prefix = ` +    local function dostring(s) return assert(load(s))() end + +    local testline = 4          -- line where 'test' is defined +    function test (s, l, p)     -- this must be line 4 +      -- collectgarbage()   -- avoid gc during trace +      local function f (event, line) +        assert(event == 'line') +        local l = table.remove(l, 1) +        if p then print(l, line) end +        assert(l == line, "wrong trace!!") +      end +      debug.sethook(f,"l"); load(s)(); debug.sethook() +      assert(#l == 0) +    end +`; + +test("[test-suite] db: getinfo, ...line...", function (t) { +    let luaCode = `-- $Id: db.lua,v 1.79 2016/11/07 13:02:34 roberto Exp $ +        -- See Copyright Notice in file all.lua + +        -- testing debug library + +        local debug = require "debug" + +        local function dostring(s) return assert(load(s))() end + +        print"testing debug library and debug information" + +        do +        local a=1 +        end + +        assert(not debug.gethook()) + +        local testline = 19         -- line where 'test' is defined +        function test (s, l, p)     -- this must be line 19 +          collectgarbage()   -- avoid gc during trace +          local function f (event, line) +            assert(event == 'line') +            local l = table.remove(l, 1) +            if p then print(l, line) end +            assert(l == line, "wrong trace!!") +          end +          debug.sethook(f,"l"); load(s)(); debug.sethook() +          assert(#l == 0) +        end + + +        do +          assert(not pcall(debug.getinfo, print, "X"))   -- invalid option +          assert(not debug.getinfo(1000))   -- out of range level +          assert(not debug.getinfo(-1))     -- out of range level +          local a = debug.getinfo(print) +          assert(a.what == "J" and a.short_src == "[JS]") +          a = debug.getinfo(print, "L") +          assert(a.activelines == nil) +          local b = debug.getinfo(test, "SfL") +          assert(b.name == nil and b.what == "Lua" and b.linedefined == testline and +                 b.lastlinedefined == b.linedefined + 10 and +                 b.func == test and string.find(b.short_src, "%[")) +          assert(b.activelines[b.linedefined + 1] and +                 b.activelines[b.lastlinedefined]) +          assert(not b.activelines[b.linedefined] and +                 not b.activelines[b.lastlinedefined + 1]) +        end +    `, L; + +    t.plan(2); + +    t.doesNotThrow(function () { + +        L = lauxlib.luaL_newstate(); + +        lualib.luaL_openlibs(L); + +        lauxlib.luaL_loadstring(L, lua.to_luastring(luaCode)); + +    }, "Lua program loaded without error"); + +    t.doesNotThrow(function () { + +        lua.lua_call(L, 0, -1); + +    }, "Lua program ran without error"); + +}); | 
