From da44ed7dc719f936a2fcb2570117511d1331f9af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois?= Date: Sat, 14 Feb 2026 23:53:34 +0100 Subject: [PATCH] various small improvements. lua_func validation in progress. --- doc/examples/example_conditional.tum | 2 +- .../test_items/items_common_attributes.rst | 8 +- doc/manual/sphinx/source/tum_syntax.rst | 2 +- doc/manual/testium_manual.pdf | Bin 669328 -> 669329 bytes .../interpreter/test_items/test_item.py | 10 +- src/testium/interpreter/utils/params.py | 2 +- test/validation/items/common/results/test.tum | 2 +- test/validation/items/lua_func/lua_func.lua | 30 +++ test/validation/items/lua_func/param.yaml | 6 + .../items/{func => lua_func}/test.tum | 0 .../items/{func => py_func}/param.yaml | 0 .../{func/func.py => py_func/py_func.py} | 0 test/validation/items/py_func/test.tum | 179 ++++++++++++++++++ 13 files changed, 225 insertions(+), 16 deletions(-) create mode 100644 test/validation/items/lua_func/lua_func.lua create mode 100644 test/validation/items/lua_func/param.yaml rename test/validation/items/{func => lua_func}/test.tum (100%) rename test/validation/items/{func => py_func}/param.yaml (100%) rename test/validation/items/{func/func.py => py_func/py_func.py} (100%) create mode 100644 test/validation/items/py_func/test.tum diff --git a/doc/examples/example_conditional.tum b/doc/examples/example_conditional.tum index 7aaadf6..f04aa19 100644 --- a/doc/examples/example_conditional.tum +++ b/doc/examples/example_conditional.tum @@ -35,7 +35,7 @@ main: no_fail: True exit_condition: - value: <| "$(last_test_result)" == "PASS" |> + value: <| "$(last_step_result)" == "PASS" |> - let: diff --git a/doc/manual/sphinx/source/test_items/items_common_attributes.rst b/doc/manual/sphinx/source/test_items/items_common_attributes.rst index b9c2f15..cc7e024 100644 --- a/doc/manual/sphinx/source/test_items/items_common_attributes.rst +++ b/doc/manual/sphinx/source/test_items/items_common_attributes.rst @@ -92,12 +92,12 @@ if not provided is given in the table as well. last test result ----------------------------------------------- -The global variable ``last_test_result`` is automatically set at the end of a test item execution. +The global variable ``last_step_result`` is automatically set at the end of a test item execution. -If the corresponding test item does not return any acutal, the content of the ``last_test_result`` +If the corresponding test item does not return any acutal, the content of the ``last_step_result`` variable will be the test success (``PASS``, ``FAIL`` or ``SKIP``). -It the test item returns a value, the ``last_test_result`` variable will contain the returned value. +It the test item returns a value, the ``last_step_result`` variable will contain the returned value. The main test items returning a value are: @@ -192,7 +192,7 @@ Export attribute - check: name: Example of result specific to the step 001 values: - - $(last_test_result) == PASS + - $(last_step_result) == PASS key: - GID-1510554_step_1 report: diff --git a/doc/manual/sphinx/source/tum_syntax.rst b/doc/manual/sphinx/source/tum_syntax.rst index 4cecc6b..ce204a3 100644 --- a/doc/manual/sphinx/source/tum_syntax.rst +++ b/doc/manual/sphinx/source/tum_syntax.rst @@ -132,7 +132,7 @@ library API (see :ref:`helper library`) * ``test_name``: The name of the file being executed without extension, * ``home``: the path of the current user's home directory, * ``test_outputs``: list of the paths of the test log and test report (if any), -* ``last_test_result``: test result of the last step (see :ref:`sec_item_common`), +* ``last_step_result``: test result of the last step (see :ref:`sec_item_common`), * ``ts_start_``: timestamp at the start of test item execution (see :ref:`sec_item_common`), * ``ts_end_``: timestamp at the end of test item execution (see :ref:`sec_item_common`), * ``ts_duration_``: duration of test item execution in seconds (see :ref:`sec_item_common`), diff --git a/doc/manual/testium_manual.pdf b/doc/manual/testium_manual.pdf index eb9a886dd25f2fc833c7b32cb283b32ba848989e..fb2ace688ed271988182140a8963ef4c71c6f6bc 100644 GIT binary patch delta 6135 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 E0BNrSFaQ7m delta 6134 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 IB}Gq03N`NmzyJUM diff --git a/src/testium/interpreter/test_items/test_item.py b/src/testium/interpreter/test_items/test_item.py index 2557e0c..d1953f6 100644 --- a/src/testium/interpreter/test_items/test_item.py +++ b/src/testium/interpreter/test_items/test_item.py @@ -279,9 +279,9 @@ class TestItem: self.result.sendStatus(self.status_queue) if not self.result.value is None: - tm.setgd("last_test_result", str(self.result.value)) + tm.setgd("last_step_result", str(self.result.value)) else: - tm.setgd("last_test_result", str(self.result.test_result)) + tm.setgd("last_step_result", str(self.result.test_result)) self.write_footer() self._is_running = False self._is_stopped = False @@ -316,12 +316,6 @@ class TestItem: print(e) self.result.set(TestValue.FAILURE, "Result processing failed") - if isinstance(self.result.value, bool): - if self.result.value: - self.result.set(TestValue.SUCCESS, "Processing result returned 'True'") - else: - self.result.set(TestValue.FAILURE, "Processing result returned 'False'") - def process_report(self, report_eval): tm.print_debug(f"Export reported values:") rep_eval = self._prms.expanse(report_eval) diff --git a/src/testium/interpreter/utils/params.py b/src/testium/interpreter/utils/params.py index d8c22a1..4c39ea4 100644 --- a/src/testium/interpreter/utils/params.py +++ b/src/testium/interpreter/utils/params.py @@ -10,7 +10,7 @@ class TestItemParams: self._parent = parent def expanse(self, param_value): - return expanse(param_value, self._parent) + return expanse(param_value, parent=self._parent) def getParam(self, parameter, default=None, required=False, processed=False): """Returns a parameter value from the test item dictionnary. diff --git a/test/validation/items/common/results/test.tum b/test/validation/items/common/results/test.tum index fb17fbe..f9cec2c 100644 --- a/test/validation/items/common/results/test.tum +++ b/test/validation/items/common/results/test.tum @@ -49,7 +49,7 @@ file: $(test_path)$(psep)results$(psep)results.py func_name: echo param: [ 28 ] - expected_result: "$(last_test_result)" + expected_result: "$(last_step_result)" - group: name : Expected result Failure raised issue diff --git a/test/validation/items/lua_func/lua_func.lua b/test/validation/items/lua_func/lua_func.lua new file mode 100644 index 0000000..ad3c409 --- /dev/null +++ b/test/validation/items/lua_func/lua_func.lua @@ -0,0 +1,30 @@ +tm = require("tm") + +local module = {} + +function module.donothing(param) + return 0 +end + +function module.assertparam(param) + assert(param) +end + +function module.checkglobal(param, index) + return tm.gd("lua_data_to_be_returned")[index] +end + +function module.should_not_be_called(param) + assert(false) +end + +function module.echo(param) + return param +end + +function module.tuple_return(first, second) + return first, second +end + + +return module \ No newline at end of file diff --git a/test/validation/items/lua_func/param.yaml b/test/validation/items/lua_func/param.yaml new file mode 100644 index 0000000..3caeeaf --- /dev/null +++ b/test/validation/items/lua_func/param.yaml @@ -0,0 +1,6 @@ +skipped_test_item: ['skipped_checkglobal'] + +lua_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/func/test.tum b/test/validation/items/lua_func/test.tum similarity index 100% rename from test/validation/items/func/test.tum rename to test/validation/items/lua_func/test.tum diff --git a/test/validation/items/func/param.yaml b/test/validation/items/py_func/param.yaml similarity index 100% rename from test/validation/items/func/param.yaml rename to test/validation/items/py_func/param.yaml diff --git a/test/validation/items/func/func.py b/test/validation/items/py_func/py_func.py similarity index 100% rename from test/validation/items/func/func.py rename to test/validation/items/py_func/py_func.py diff --git a/test/validation/items/py_func/test.tum b/test/validation/items/py_func/test.tum new file mode 100644 index 0000000..7819af3 --- /dev/null +++ b/test/validation/items/py_func/test.tum @@ -0,0 +1,179 @@ + +- lua_func: + name: pass lua_func + key: $(test)_PASS + file: lua_func.lua + func_name: func_to_be_executed + param: + - true + +- lua_func: + name: fail lua_func + key: $(test)_FAIL + file: $(test_path)$(psep)lua_func.lua + func_name: assertparam + param: + - false + +- lua_func: + name: fail lua_func with expected result FAIL + key: $(test)_PASS + file: $(test_path)$(psep)lua_func.lua + func_name: assertparam + param: + - false + expected_result: FAIL + +- lua_func: + name: pass lua_func with expected result FAIL + key: $(test)_FAIL + file: $(test_path)$(psep)lua_func.lua + func_name: assertparam + param: + - true + expected_result: FAIL + +- lua_func: + name: expected -1 + key: $(test)_PASS + file: $(test_path)$(psep)lua_func.lua + func_name: echo + param: + - -1 + expected_result: -1 + +- lua_func: + name: expected eval + key: $(test)_PASS + file: $(test_path)$(psep)lua_func.lua + func_name: echo + param: + - -1 + expected_result: "354848436 - 354848437" + +- lua_func: + name: expected table + key: $(test)_PASS + file: $(test_path)$(psep)lua_func.lua + func_name: echo + param: + - [-1, a, {toto: tata}] + expected_result: "[-1, 'a', {'toto': 'tata'}]" + +- lua_func: + name: global param lua_func + key: $(test)_PASS + file: $(test_path)$(psep)lua_func.lua + func_name: checkglobal + param: + - $(test parameter) + +- let: + name: python2func + key: $(test)_PASS + values: + - py: $(test_path)$(psep)lua_func.lua + +- lua_func: + name: global param lua_func + key: $(test)_PASS + file: $(py) + func_name: checkglobal + param: + - $(test parameter) + +- lua_func: + name: skipped_checkglobal + file: $(test_path)$(psep)lua_func.lua + func_name: should_not_be_called + param: + - $(test parameter) + +- lua_func: + name: skipped true + file: $(test_path)$(psep)lua_func.lua + func_name: checkglobal + skipped: true + param: + - $(test parameter) + +- lua_func: + name: skipped true + file: $(test_path)$(psep)lua_func.lua + func_name: checkglobal + skipped: true + param: + - $(test parameter) + +- lua_func: + name: skipped 1 + file: $(test_path)$(psep)lua_func.lua + func_name: checkglobal + skipped: 1 + param: + - $(test parameter) + +- lua_func: + name: FunctionItem test + file: $(test_path)$(psep)lua_func.lua + func_name: ValidationTest + param: + - $(test parameter) + +- group: + name: Function results check + steps: + - group: + name: Function result failure + steps: + - lua_func: + name: int failure + key: $(test)_FAIL + file: $(test_path)$(psep)lua_func.lua + func_name: echo + param: [-1] + - lua_func: + name: float failure + key: $(test)_FAIL + file: $(test_path)$(psep)lua_func.lua + func_name: echo + param: [-1.3] + - lua_func: + name: String failure + key: $(test)_FAIL + file: $(test_path)$(psep)lua_func.lua + func_name: echo + param: [ "FAIL" ] + - lua_func: + name: Tuple int,str failure + key: $(test)_FAIL + 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 + key: $(test)_PASS + file: $(test_path)$(psep)lua_func.lua + func_name: tuple_return + param: [ 0, "OK" ]