dep-protobuf/lua/main.c
Adam Cozzette 038aaa98fa Remove our vendored copy of lunit
The [upstream](https://github.com/mrothNET/lunit) project is apparently
unmaintained and unavailable in BCR. Since our Lua protobuf implementation is
experimental and not being very actively developed, I think we might as well
drop our lunit dependency and use simple `assert` statements instead.

While I was at it I noticed we had some cases of multiple test functions with
the same name, causing the later definitions to shadow earlier ones. We had two
functions called `test_utf8()` that tested roughly the same thing, so I deleted
one of them. We also had two functions named `test_string_double_map()`, but
one of them was actually testing packed repeated fields, so I just renamed it.

PiperOrigin-RevId: 741324780
2025-03-27 16:47:58 -07:00

71 lines
1.8 KiB
C

// Protocol Buffers - Google's data interchange format
// Copyright 2023 Google LLC. All rights reserved.
//
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file or at
// https://developers.google.com/open-source/licenses/bsd
#include <lauxlib.h>
#include <lua.h>
#include <lualib.h>
#include <signal.h>
#include "lua/upb.h"
lua_State* L;
static void interrupt(lua_State* L, lua_Debug* ar) {
(void)ar;
lua_sethook(L, NULL, 0, 0);
luaL_error(L, "SIGINT");
}
static void sighandler(int i) {
fprintf(stderr, "Signal!\n");
signal(i, SIG_DFL);
lua_sethook(L, interrupt, LUA_MASKCALL | LUA_MASKRET | LUA_MASKCOUNT, 1);
}
const char* init =
"package.preload['lupb'] = ... "
"package.path = '"
"./?.lua;"
"external/com_google_protobuf/?.lua;"
"external/com_google_protobuf/src/?.lua;"
"bazel-bin/?.lua;"
"bazel-bin/external/com_google_protobuf/src/?.lua;"
"bazel-bin/external/com_google_protobuf/?.lua;"
"lua/?.lua;"
// These additional paths handle the case where this test is invoked from
// the protobuf repo's Bazel workspace.
"external/?.lua;"
"src/?.lua;"
"bazel-bin/external/?.lua;"
"external/lua/?.lua"
"'";
int main(int argc, char** argv) {
if (argc < 2) {
fprintf(stderr, "missing argument with path to .lua file\n");
return 1;
}
int ret = 0;
L = luaL_newstate();
luaL_openlibs(L);
lua_pushcfunction(L, luaopen_lupb);
ret = luaL_loadstring(L, init);
lua_pushcfunction(L, luaopen_lupb);
signal(SIGINT, sighandler);
ret = ret || lua_pcall(L, 1, LUA_MULTRET, 0) || luaL_dofile(L, argv[1]);
signal(SIGINT, SIG_DFL);
if (ret) {
fprintf(stderr, "error testing Lua: %s\n", lua_tostring(L, -1));
ret = 1;
}
lua_close(L);
return ret;
}