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).

A note of caution is added to warn against using any argument in
the `run` function and updated examples.
  • Loading branch information
josegomezr committed Oct 20, 2023
1 parent 83ab402 commit 7610667
Showing 1 changed file with 9 additions and 4 deletions.
13 changes: 9 additions & 4 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(*_):
# 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(*_):
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(*_):
perl.require('x11utils')
# Start vncviewer - notice the named arguments passed as positional arguments
Expand All @@ -235,6 +235,11 @@ def run():
# [...] omitted for brevity
-------------------------------------------------------------------

Additionally, the `run` method in Python is not able to handle any argument
passed. Due to how `Inline::Python` handles arguments 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 Expand Up @@ -354,7 +359,7 @@ implementing the interface described above.
--------------------------------------------------------------
from testapi import *
def run(self):
def run(*_):
assert_screen('openqa-logged-in')
assert_and_click('openqa-search')
type_string('shutdown.pm')
Expand Down

0 comments on commit 7610667

Please sign in to comment.