summaryrefslogtreecommitdiff
path: root/tests/projects/xmake_cli/ide_integration/src/main.c
diff options
context:
space:
mode:
authorruki <[email protected]>2025-02-06 23:23:21 +0800
committerruki <[email protected]>2025-02-06 23:23:21 +0800
commit051d645e3feb5db8061e513ed95a3ac2b61eb492 (patch)
tree115078e99329d88242dc1a038494ca4de1b3be30 /tests/projects/xmake_cli/ide_integration/src/main.c
parent378ce254ca617f0d2772be7d7acd4ccc2428aef1 (diff)
improve ide integratio test
Diffstat (limited to 'tests/projects/xmake_cli/ide_integration/src/main.c')
-rw-r--r--tests/projects/xmake_cli/ide_integration/src/main.c39
1 files changed, 34 insertions, 5 deletions
diff --git a/tests/projects/xmake_cli/ide_integration/src/main.c b/tests/projects/xmake_cli/ide_integration/src/main.c
index 24e911fbe..a2624670d 100644
--- a/tests/projects/xmake_cli/ide_integration/src/main.c
+++ b/tests/projects/xmake_cli/ide_integration/src/main.c
@@ -1,24 +1,53 @@
#include <xmake/xmake.h>
-static tb_bool_t load_scriptfile(xm_engine_ref_t engine, tb_char_t const* filepath, tb_char_t const* arg1) {
+static lua_State* g_lua = tb_null;
+static tb_void_t lni_initalizer(xm_engine_ref_t engine, lua_State* lua) {
+ g_lua = lua;
+}
+
+static tb_char_t const* load_scriptfile(xm_engine_ref_t engine, tb_char_t const* filepath, tb_char_t const* arg1) {
+ // reset result first
+ lua_getglobal(g_lua, "_lni");
+ lua_pushnil(g_lua);
+ lua_setfield(g_lua, -2, "result");
+ lua_pop(g_lua, 1);
+
+ // load script and get result (string)
tb_char_t* argv[] = {"xmake"};
tb_char_t* taskargv[] = {"lua", "-D", (tb_char_t*)filepath, (tb_char_t*)arg1, tb_null};
- return xm_engine_main(engine, 1, argv, taskargv) == 0;
+ tb_char_t const* result = tb_null;
+ if (xm_engine_main(engine, 1, argv, taskargv) == 0) {
+ lua_getglobal(g_lua, "_lni");
+ lua_getfield(g_lua, -1, "result");
+ if (lua_isstring(g_lua, -1)) {
+ result = tb_strdup(lua_tostring(g_lua, -1));
+ }
+ lua_pop(g_lua, 2);
+ }
+ return result;
}
static tb_void_t dump_targets(xm_engine_ref_t engine) {
tb_trace_i("------------------------- targets -------------------------");
- load_scriptfile(engine, "assets/targets.lua", tb_null);
+ tb_char_t const* result = load_scriptfile(engine, "assets/targets.lua", tb_null);
+ if (result) {
+ tb_trace_i("result: %s", result);
+ tb_free(result);
+ }
}
static tb_void_t dump_targetpath(xm_engine_ref_t engine) {
tb_trace_i("------------------------- targetpath -------------------------");
- load_scriptfile(engine, "assets/targetpath.lua", "ide");
+ tb_char_t const* result = load_scriptfile(engine, "assets/targetpath.lua", "ide");
+ if (result) {
+ tb_trace_i("result: %s", result);
+ tb_free(result);
+ }
}
tb_int_t main(tb_int_t argc, tb_char_t** argv) {
if (xm_init()) {
- xm_engine_ref_t engine = xm_engine_init("xmake", tb_null);
+ xm_engine_ref_t engine = xm_engine_init("xmake", lni_initalizer);
if (engine) {
dump_targets(engine);
dump_targetpath(engine);