diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-13 21:11:59 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-13 21:11:59 +0000 |
commit | 3cd01b932e1c85394272ae64fae67ebeda92fb00 (patch) | |
tree | c5a3115d710afc1879ddea5349362a2bc651733c /test-luawrapper.cc | |
parent | Initial commit. (diff) | |
download | dnsdist-3cd01b932e1c85394272ae64fae67ebeda92fb00.tar.xz dnsdist-3cd01b932e1c85394272ae64fae67ebeda92fb00.zip |
Adding upstream version 1.8.3.upstream/1.8.3
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'test-luawrapper.cc')
-rw-r--r-- | test-luawrapper.cc | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/test-luawrapper.cc b/test-luawrapper.cc new file mode 100644 index 0000000..1004790 --- /dev/null +++ b/test-luawrapper.cc @@ -0,0 +1,33 @@ +#define BOOST_TEST_DYN_LINK +#define BOOST_TEST_NO_MAIN +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif +#include <boost/test/unit_test.hpp> +#include "ext/luawrapper/include/LuaContext.hpp" + +BOOST_AUTO_TEST_SUITE(test_lua_lightuserdata) + +BOOST_AUTO_TEST_CASE(test_registerFunction) +{ + // This test comes from luawrapper/tests/custom_types.cc, TEST(CustomTypes, MemberFunctions). + // In some versions of luajit, as shipped by Debian Buster and others, Lua lightuserdata + // objects can only hold 47 bits of the address of a pointer. If the kernel puts our heap + // above that 47 bit limit, this test crashes. Many arm64 Linux kernels are known to put + // the heap in that problematic area. + struct Object + { + void increment() { ++value; } + int value; + }; + + LuaContext context; + context.registerFunction("increment", &Object::increment); + + context.writeVariable("obj", Object{10}); + context.executeCode("obj:increment()"); + + BOOST_CHECK_EQUAL(11, context.readVariable<Object>("obj").value); +} + +BOOST_AUTO_TEST_SUITE_END() |