Skip to content

Commit

Permalink
Document run_args limitation on Python Modules.
Browse files Browse the repository at this point in the history
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 <[email protected]>
  • Loading branch information
josegomezr and Martchus committed Oct 23, 2023
1 parent 83ab402 commit c5de908
Showing 1 changed file with 10 additions and 3 deletions.
13 changes: 10 additions & 3 deletions docs/WritingTests.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -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.
-------------------------------------------------------------------

Expand All @@ -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
Expand Down Expand Up @@ -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
Expand All @@ -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"]

Expand Down

0 comments on commit c5de908

Please sign in to comment.