From 811e3d356ed726bd2ca7d0105fb1bc9ff208ba00 Mon Sep 17 00:00:00 2001 From: Renaud Walder Date: Fri, 5 Jun 2026 01:47:00 +0200 Subject: [PATCH] Solve a tuple error in Lua and unify Lua and Python tests --- src/testium/lua_func/handle.lua | 10 +- test/validation/items/lua_func/lua_func.lua | 8 +- test/validation/items/lua_func/param.yaml | 2 +- test/validation/items/lua_func/test.tum | 248 +++++++++++++------- test/validation/items/py_func/param.yaml | 7 +- test/validation/items/py_func/py_func.py | 4 +- test/validation/items/py_func/test.tum | 145 +++++++++--- 7 files changed, 298 insertions(+), 126 deletions(-) diff --git a/src/testium/lua_func/handle.lua b/src/testium/lua_func/handle.lua index 6c176ac..916538b 100644 --- a/src/testium/lua_func/handle.lua +++ b/src/testium/lua_func/handle.lua @@ -56,9 +56,17 @@ function handle.func_call(params) if err == nil then print(string.format("Function executed from '%s'", pfile)) utils.log("func_call function found '%s', '%s'", file, fname) - succ, ret = pcall(func, unpack(prms)) + err_res = {pcall(func, unpack(prms))} utils.log("func_call returned '%s', '%s'", tostring(succ), tostring(ret)) + -- manage tuple ouput of a lua function + succ = table.remove(err_res, 1) + if #err_res > 1 then + ret = err_res + else + ret = unpack(err_res) + end + if succ then res = ret else diff --git a/test/validation/items/lua_func/lua_func.lua b/test/validation/items/lua_func/lua_func.lua index a408bc8..86a3631 100644 --- a/test/validation/items/lua_func/lua_func.lua +++ b/test/validation/items/lua_func/lua_func.lua @@ -12,12 +12,12 @@ function module.assertparam(param) end function module.checkglobal(param) - local res = tm.gd(param) - return res + assert(param=='test parameter') + return 0 end function module.checkglobal2(index) - return tm.gd("lua_data_to_be_returned")[index] + return tm.gd("data_to_be_returned")[index+1] end function module.should_not_be_called(param) @@ -53,7 +53,7 @@ function module.return_nothing() -- Returns no value: ret is nil but no error. end -function module.return_explicit_nil() +function module.return_explicit_none() return nil end diff --git a/test/validation/items/lua_func/param.yaml b/test/validation/items/lua_func/param.yaml index 3caeeaf..479a911 100644 --- a/test/validation/items/lua_func/param.yaml +++ b/test/validation/items/lua_func/param.yaml @@ -1,6 +1,6 @@ skipped_test_item: ['skipped_checkglobal'] -lua_data_to_be_returned: +data_to_be_returned: - 1 - {a: 1, b: 2} - ["a", 1, 2.1, True] \ No newline at end of file diff --git a/test/validation/items/lua_func/test.tum b/test/validation/items/lua_func/test.tum index ccef4b5..a24977c 100644 --- a/test/validation/items/lua_func/test.tum +++ b/test/validation/items/lua_func/test.tum @@ -1,7 +1,15 @@ - let: name: lua_func test constants, values: - - lua_func test parameter: test parameter lua_func + - func_test_parameter: test parameter + +- lua_func: + name: pass lua_func + key: $(test)_PASS + file: $(test_path)$(psep)lua_func.lua + func_name: assertparam + param: + - true - lua_func: name: fail lua_func @@ -12,7 +20,7 @@ - false - lua_func: - name: fail lua_func with expected result FAIL + name: fail lua_func with expected result "FAIL" key: $(test)_PASS file: $(test_path)$(psep)lua_func.lua func_name: assertparam @@ -62,35 +70,7 @@ file: $(test_path)$(psep)lua_func.lua func_name: checkglobal param: - - lua_func test parameter - expected_result: $(lua_func test parameter) - -- lua_func: - name: global param lua_func 1 - key: $(test)_PASS - file: $(test_path)$(psep)lua_func.lua - func_name: checkglobal2 - param: - - 1 - expected_result: ($(lua_data_to_be_returned))[0] - -- lua_func: - name: global param lua_func 2 - key: $(test)_PASS - file: $(test_path)$(psep)lua_func.lua - func_name: checkglobal2 - param: - - 2 - expected_result: ($(lua_data_to_be_returned))[1] - -- lua_func: - name: global param lua_func 3 - key: $(test)_PASS - file: $(test_path)$(psep)lua_func.lua - func_name: checkglobal2 - param: - - 3 - expected_result: ($(lua_data_to_be_returned))[2] + - $(func_test_parameter) - let: name: python2func @@ -98,88 +78,189 @@ values: - py: $(test_path)$(psep)lua_func.lua +- lua_func: + name: global param int + key: $(test)_PASS + file: $(test_path)$(psep)lua_func.lua + func_name: checkglobal2 + param: + - 0 + expected_result: ($(data_to_be_returned))[0] + +- lua_func: + name: global param dict + key: $(test)_PASS + file: $(test_path)$(psep)lua_func.lua + func_name: checkglobal2 + param: + - 1 + expected_result: ($(data_to_be_returned))[1] + +- lua_func: + name: global param list + key: $(test)_PASS + file: $(test_path)$(psep)lua_func.lua + func_name: checkglobal2 + param: + - 2 + expected_result: ($(data_to_be_returned))[2] + + + +- lua_func: + name: global param lua_func + key: $(test)_PASS + file: $(py) + func_name: checkglobal + param: + - $(func_test_parameter) - lua_func: name: skipped_checkglobal + key: $(test)_PASS file: $(test_path)$(psep)lua_func.lua func_name: should_not_be_called param: - - $(test parameter) + - $(func_test_parameter) - lua_func: name: skipped true + key: $(test)_FAIL file: $(test_path)$(psep)lua_func.lua - func_name: checkglobal + func_name: echo skipped: true param: - - $(test parameter) + - "skipped" - lua_func: name: skipped 1 + key: $(test)_FAIL file: $(test_path)$(psep)lua_func.lua - func_name: checkglobal + func_name: echo skipped: 1 param: - - $(test parameter) + - "skipped" - group: name: Function results check steps: - group: - name: Function result failure + name: Functions result steps: - lua_func: - name: int failure + name: int key: $(test)_PASS file: $(test_path)$(psep)lua_func.lua func_name: echo param: [-1] - lua_func: - name: float failure + name: float key: $(test)_PASS file: $(test_path)$(psep)lua_func.lua func_name: echo - param: [-1.3] + param: [-20.3] - lua_func: - name: String failure + name: String key: $(test)_PASS file: $(test_path)$(psep)lua_func.lua func_name: echo param: [ "FAIL" ] - lua_func: - name: Tuple int,str failure - key: $(test)_PASS - file: $(test_path)$(psep)lua_func.lua - func_name: tuple_return - param: [ -1, "Got a failure" ] - - group: - name: Functions result success - steps: - - lua_func: - name: int success - key: $(test)_PASS - file: $(test_path)$(psep)lua_func.lua - func_name: echo - param: [0] - - lua_func: - name: float success - key: $(test)_PASS - file: $(test_path)$(psep)lua_func.lua - func_name: echo - param: [0.3] - - lua_func: - name: String success - key: $(test)_PASS - file: $(test_path)$(psep)lua_func.lua - func_name: echo - param: [ "Something that is not only strictly FAIL" ] - - lua_func: - name: Tuple int,str success + name: Tuple int,str key: $(test)_PASS file: $(test_path)$(psep)lua_func.lua func_name: tuple_return param: [ 0, "OK" ] - + - group: + name: Functions result expected + steps: + - lua_func: + name: int expected + key: $(test)_PASS + file: $(test_path)$(psep)lua_func.lua + func_name: echo + param: [18] + expected_result: 18 + - lua_func: + name: float expected + key: $(test)_PASS + file: $(test_path)$(psep)lua_func.lua + func_name: echo + param: [0.3] + expected_result: 0.3 + - lua_func: + name: String expected + key: $(test)_PASS + file: $(test_path)$(psep)lua_func.lua + func_name: echo + param: [ "Something" ] + expected_result: Something + - lua_func: + name: Tuple int,str expected + key: $(test)_PASS + file: $(test_path)$(psep)lua_func.lua + func_name: tuple_return + param: [ 0, "OK" ] + expected_result: [0, "OK"] + - lua_func: + name: small list expected + key: $(test)_PASS + file: $(test_path)$(psep)lua_func.lua + func_name: echo + param: [ [-23] ] + expected_result: [-23] + - lua_func: + name: big list expected + key: $(test)_PASS + file: $(test_path)$(psep)lua_func.lua + func_name: echo + param: [ [-23, 17, 67] ] + expected_result: [-23, 17, 67] + - group: + name: Function result not expected + steps: + - lua_func: + name: int not expected + key: $(test)_FAIL + file: $(test_path)$(psep)lua_func.lua + func_name: echo + param: [18] + expected_result: 17 + - lua_func: + name: float not expected + key: $(test)_FAIL + file: $(test_path)$(psep)lua_func.lua + func_name: echo + param: [0.3] + expected_result: 0.5 + - lua_func: + name: String not expected + key: $(test)_FAIL + file: $(test_path)$(psep)lua_func.lua + func_name: echo + param: [ "Something" ] + expected_result: Nothing + - lua_func: + name: Tuple int,str not expected + key: $(test)_FAIL + file: $(test_path)$(psep)lua_func.lua + func_name: tuple_return + param: [ 0, "OK" ] + expected_result: [0, "OUPS"] + - lua_func: + name: small list not expected + key: $(test)_FAIL + file: $(test_path)$(psep)lua_func.lua + func_name: echo + param: [ [-23] ] + expected_result: [-22] + - lua_func: + name: big list not expected + key: $(test)_FAIL + file: $(test_path)$(psep)lua_func.lua + func_name: echo + param: [ [-23, 17, 67] ] + expected_result: [-23, 16, 67] - lua_func: name: delgd test key: $(test)_PASS @@ -193,40 +274,39 @@ func_name: return_nothing - lua_func: - name: function returning explicit nil should succeed + name: function returning explicit None should succeed key: $(test)_PASS file: $(test_path)$(psep)lua_func.lua - func_name: return_explicit_nil + func_name: return_explicit_none - group: name: context_id tests steps: - lua_func: - name: set context value + name: set serializable value key: $(test)_PASS file: $(test_path)$(psep)lua_func.lua func_name: set_context_value - context_id: lua_ctx_test param: - - hello lua - expected_result: hello lua + - hello context + expected_result: hello context - lua_func: - name: get context value (same context_id) + name: get serializable value (same context_id) key: $(test)_PASS file: $(test_path)$(psep)lua_func.lua func_name: get_context_value - context_id: lua_ctx_test - expected_result: hello lua + context_id: ctx_test + expected_result: hello context - lua_func: - name: get context value (no context_id, from main gd) + name: get serializable value (no context_id, from main gd) key: $(test)_PASS file: $(test_path)$(psep)lua_func.lua func_name: get_context_value - expected_result: hello lua + expected_result: hello context - lua_func: - name: get context value (different context_id) + name: get serializable value (different context_id) key: $(test)_PASS file: $(test_path)$(psep)lua_func.lua func_name: get_context_value - context_id: lua_ctx_other - expected_result: hello lua + context_id: ctx_other + expected_result: hello context diff --git a/test/validation/items/py_func/param.yaml b/test/validation/items/py_func/param.yaml index 21d4048..479a911 100644 --- a/test/validation/items/py_func/param.yaml +++ b/test/validation/items/py_func/param.yaml @@ -1 +1,6 @@ -skipped_test_item: ['skipped_checkglobal'] \ No newline at end of file +skipped_test_item: ['skipped_checkglobal'] + +data_to_be_returned: + - 1 + - {a: 1, b: 2} + - ["a", 1, 2.1, True] \ No newline at end of file diff --git a/test/validation/items/py_func/py_func.py b/test/validation/items/py_func/py_func.py index 6b5ec50..c054c9f 100644 --- a/test/validation/items/py_func/py_func.py +++ b/test/validation/items/py_func/py_func.py @@ -16,8 +16,8 @@ def checkglobal(param): assert param=='test parameter' return 0 -def checkglobal2(): - return tm.gd("py_func test parameter") +def checkglobal2(index): + return tm.gd("data_to_be_returned")[index] def should_not_be_called(param): raise diff --git a/test/validation/items/py_func/test.tum b/test/validation/items/py_func/test.tum index c4ba269..9893337 100644 --- a/test/validation/items/py_func/test.tum +++ b/test/validation/items/py_func/test.tum @@ -1,7 +1,7 @@ - let: name: py_func test constants, values: - - py_func test parameter: test parameter + - func_test_parameter: test parameter - py_func: name: pass py_func @@ -70,7 +70,7 @@ file: $(test_path)$(psep)py_func.py func_name: checkglobal param: - - $(py_func test parameter) + - $(func_test_parameter) - let: name: python2func @@ -79,11 +79,32 @@ - py: $(test_path)$(psep)py_func.py - py_func: - name: global param py_func 2 + name: global param int key: $(test)_PASS - file: $(py) + file: $(test_path)$(psep)py_func.py func_name: checkglobal2 - expected_result: $(py_func test parameter) + param: + - 0 + expected_result: ($(data_to_be_returned))[0] + +- py_func: + name: global param dict + key: $(test)_PASS + file: $(test_path)$(psep)py_func.py + func_name: checkglobal2 + param: + - 1 + expected_result: ($(data_to_be_returned))[1] + +- py_func: + name: global param list + key: $(test)_PASS + file: $(test_path)$(psep)py_func.py + func_name: checkglobal2 + param: + - 2 + expected_result: ($(data_to_be_returned))[2] + - py_func: @@ -92,104 +113,162 @@ file: $(py) func_name: checkglobal param: - - $(py_func test parameter) + - $(func_test_parameter) - py_func: name: skipped_checkglobal + key: $(test)_PASS file: $(test_path)$(psep)py_func.py func_name: should_not_be_called param: - - $(py_func test parameter) + - $(func_test_parameter) - py_func: name: skipped true + key: $(test)_FAIL file: $(test_path)$(psep)py_func.py - func_name: checkglobal + func_name: echo skipped: true param: - - $(py_func test parameter) + - "skipped" - py_func: name: skipped 1 + key: $(test)_FAIL file: $(test_path)$(psep)py_func.py - func_name: checkglobal + func_name: echo skipped: 1 param: - - $(py_func test parameter) + - "skipped" - py_func: name: FunctionItem test + key: $(test)_PASS file: $(test_path)$(psep)py_func.py func_name: ValidationTest param: - - $(py_func test parameter) + - $(func_test_parameter) - group: name: Function results check steps: - group: - name: Function result 1 + name: Functions result steps: - py_func: - name: int failure + name: int key: $(test)_PASS file: $(test_path)$(psep)py_func.py func_name: echo param: [-1] - expected_result: -1 - py_func: - name: float failure + name: float key: $(test)_PASS file: $(test_path)$(psep)py_func.py func_name: echo - param: [-1.3] - expected_result: -1.3 + param: [-20.3] - py_func: - name: String failure + name: String key: $(test)_PASS file: $(test_path)$(psep)py_func.py func_name: echo param: [ "FAIL" ] - expected_result: FAIL - py_func: - name: Tuple int,str failure + name: Tuple int,str key: $(test)_PASS file: $(test_path)$(psep)py_func.py func_name: tuple_return - param: [ -1, "Got a failure" ] - expected_result: [-1, "Got a failure"] + param: [ 0, "OK" ] - group: - name: Functions result 2 + name: Functions result expected steps: - py_func: - name: int success + name: int expected key: $(test)_PASS file: $(test_path)$(psep)py_func.py func_name: echo - param: [0] - expected_result: 0 + param: [18] + expected_result: 18 - py_func: - name: float success + name: float expected key: $(test)_PASS file: $(test_path)$(psep)py_func.py func_name: echo param: [0.3] expected_result: 0.3 - py_func: - name: String success + name: String expected key: $(test)_PASS file: $(test_path)$(psep)py_func.py func_name: echo - param: [ "Something that is not only strictly FAIL" ] - expected_result: Something that is not only strictly FAIL + param: [ "Something" ] + expected_result: Something - py_func: - name: Tuple int,str success + name: Tuple int,str expected key: $(test)_PASS file: $(test_path)$(psep)py_func.py func_name: tuple_return param: [ 0, "OK" ] expected_result: [0, "OK"] - + - py_func: + name: small list expected + key: $(test)_PASS + file: $(test_path)$(psep)py_func.py + func_name: echo + param: [ [-23] ] + expected_result: [-23] + - py_func: + name: big list expected + key: $(test)_PASS + file: $(test_path)$(psep)py_func.py + func_name: echo + param: [ [-23, 17, 67] ] + expected_result: [-23, 17, 67] + - group: + name: Function result not expected + steps: + - py_func: + name: int not expected + key: $(test)_FAIL + file: $(test_path)$(psep)py_func.py + func_name: echo + param: [18] + expected_result: 17 + - py_func: + name: float not expected + key: $(test)_FAIL + file: $(test_path)$(psep)py_func.py + func_name: echo + param: [0.3] + expected_result: 0.5 + - py_func: + name: String not expected + key: $(test)_FAIL + file: $(test_path)$(psep)py_func.py + func_name: echo + param: [ "Something" ] + expected_result: Nothing + - py_func: + name: Tuple int,str not expected + key: $(test)_FAIL + file: $(test_path)$(psep)py_func.py + func_name: tuple_return + param: [ 0, "OK" ] + expected_result: [0, "OUPS"] + - py_func: + name: small list not expected + key: $(test)_FAIL + file: $(test_path)$(psep)py_func.py + func_name: echo + param: [ [-23] ] + expected_result: [-22] + - py_func: + name: big list not expected + key: $(test)_FAIL + file: $(test_path)$(psep)py_func.py + func_name: echo + param: [ [-23, 17, 67] ] + expected_result: [-23, 16, 67] - py_func: name: delgd test key: $(test)_PASS