diff options
| author | ruki <[email protected]> | 2025-02-06 23:23:21 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2025-02-06 23:23:21 +0800 |
| commit | 051d645e3feb5db8061e513ed95a3ac2b61eb492 (patch) | |
| tree | 115078e99329d88242dc1a038494ca4de1b3be30 /tests/projects/xmake_cli | |
| parent | 378ce254ca617f0d2772be7d7acd4ccc2428aef1 (diff) | |
improve ide integratio test
Diffstat (limited to 'tests/projects/xmake_cli')
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); |
