summaryrefslogtreecommitdiff
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
parent378ce254ca617f0d2772be7d7acd4ccc2428aef1 (diff)
improve ide integratio test
-rw-r--r--tests/projects/xmake_cli/ide_integration/assets/targetpath.lua7
-rw-r--r--tests/projects/xmake_cli/ide_integration/assets/targets.lua8
-rw-r--r--tests/projects/xmake_cli/ide_integration/src/main.c39
3 files changed, 38 insertions, 16 deletions
diff --git a/tests/projects/xmake_cli/ide_integration/assets/targetpath.lua b/tests/projects/xmake_cli/ide_integration/assets/targetpath.lua
index 4217c5172..2e8c65fe9 100644
--- a/tests/projects/xmake_cli/ide_integration/assets/targetpath.lua
+++ b/tests/projects/xmake_cli/ide_integration/assets/targetpath.lua
@@ -1,5 +1,6 @@
import("core.project.config")
import("core.project.project")
+import("lib.lni")
function main (targetname)
config.load()
@@ -20,16 +21,12 @@ function main (targetname)
end
end
end
-
- print("__begin__")
if target then
local targetfile = target:targetfile()
if not path.is_absolute(targetfile) then
targetfile = path.absolute(targetfile, os.projectdir())
end
- print(targetfile)
+ lni.result = targetfile
end
-
- print("__end__")
end
diff --git a/tests/projects/xmake_cli/ide_integration/assets/targets.lua b/tests/projects/xmake_cli/ide_integration/assets/targets.lua
index 87800392f..e5fdb6142 100644
--- a/tests/projects/xmake_cli/ide_integration/assets/targets.lua
+++ b/tests/projects/xmake_cli/ide_integration/assets/targets.lua
@@ -1,7 +1,7 @@
--- imports
import("core.project.config")
import("core.project.project")
import("core.base.json")
+import("lib.lni")
function main ()
config.load()
@@ -14,9 +14,5 @@ function main ()
if json.mark_as_array then
json.mark_as_array(names)
end
- local localjson = json.encode(names)
-
- print("__begin__")
- print(localjson)
- print("__end__")
+ lni.result = json.encode(names)
end
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);