From c5de90848e6256ba64741725b5867be0f320870c Mon Sep 17 00:00:00 2001 From: "Jose D. Gomez R" Date: Fri, 20 Oct 2023 14:35:25 +0200 Subject: [PATCH] Document `run_args` limitation on Python Modules. Arguments sent from Perl to Python can't be used (due to blessed references not properly translated to Python into usable objects) Python test modules do not support any other argument but `self`. A note of caution is added to warn against using any argument in the `run` function and updated examples This limitation is enforced now in os-autoinst and now documented in the docs Co-authored-by: Martchus --- docs/WritingTests.asciidoc | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/docs/WritingTests.asciidoc b/docs/WritingTests.asciidoc index 72cd72913370..6dabefba8b3e 100644 --- a/docs/WritingTests.asciidoc +++ b/docs/WritingTests.asciidoc @@ -65,7 +65,7 @@ And here is an example in Python: ------------------------------------------------------------------- from testapi import * -def run(): +def run(self): # write in this block the code for your test. ------------------------------------------------------------------- @@ -76,7 +76,7 @@ _Please note that the subroutine marked with `*1` are optional._ [source,python] ------------------------------------------------------------------- # Written in type-hinted python to indicate explicitly return types -def run(): -> None +def run(self): def test_flags(): -> dict # *1 def post_fail_hook(): -> None # *1 def pre_run_hook(): -> None # *1 @@ -222,7 +222,7 @@ from testapi import * # [...] omitted for brevity -def run(): +def run(self): perl.require('x11utils') # Start vncviewer - notice the named arguments passed as positional arguments @@ -235,6 +235,13 @@ def run(): # [...] omitted for brevity ------------------------------------------------------------------- +Additionally, Python tests do not support `run_args`. An error will be present +when a Python test detects the presence of `run_args` on schedule. + +This is because of the way `Inline::Python` handles argument passing between +Perl <-> Python, references to complex Perl objects do not reach Python +properly and they can't be used. + === Example Perl test modules [id="testmodule_perl_examples"]