Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:smarty12:Python
python-typer-slim
set-proper-pythonpath-for-tutorial-script-tests...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File set-proper-pythonpath-for-tutorial-script-tests.patch of Package python-typer-slim
From: Matthias Bach <marix@marix.org> Date: Fri, 24 Jun 2022 19:54:06 +0200 Subject: [PATCH] Ensure the PYTHONPATH is set properly when testing the tutorial scripts References: https://github.com/tiangolo/typer/pull/407 Upstream: sent When packaging Typer for openSUSE I ran into errors because the tutorial scripts were unable to import their colocated modules. Curiously this only seems to be occurring when these scripts are run via coverage, as they are in the tests. Them being run via coverage however also prevents just changing the working directory for the script runs, as then the coverage file would end up in the wrong directory. Curiously, I have not been able to reproduce this issue on openSUSE Leap but only seen it on openSUSE Tumbleweed. Thus, there might be something weird with the Python stack or the coverage version on Tumbleweed. However, as the same PYTHONPATH-patching is also done for the tests of the tutorial code that run it directly and not as a subprocess, I think it is just consistent to also do this for the script test. For reference, this is the error that I am observing in the packaging environment and that gets resolved by this commit: [ 123s] =================================== FAILURES =================================== [ 123s] _________________________________ test_scripts _________________________________ [ 123s] [ 123s] mod = <module 'docs_src.subcommands.tutorial001.main' from '/home/abuild/rpmbuild/BUILD/typer-0.4.1/docs_src/subcommands/tutorial001/main.py'> [ 123s] [ 123s] def test_scripts(mod): [ 123s] from docs_src.subcommands.tutorial001 import items, users [ 123s] [ 123s] for module in [mod, items, users]: [ 123s] result = subprocess.run( [ 123s] ["coverage", "run", module.__file__, "--help"], [ 123s] stdout=subprocess.PIPE, [ 123s] stderr=subprocess.PIPE, [ 123s] encoding="utf-8", [ 123s] ) [ 123s] > assert "Usage" in result.stdout [ 123s] E assert 'Usage' in '' [ 123s] E + where '' = CompletedProcess(args=['coverage', 'run', '/home/abuild/rpmbuild/BUILD/typer-0.4.1/docs_src/subcommands/tutorial001/main.py', '--help'], returncode=1, stdout='', stderr='Traceback (most recent call last):\n File "/home/abuild/rpmbuild/BUILD/typer-0.4.1/docs_src/subcommands/tutorial001/main.py", line 3, in <module>\n import items\nModuleNotFoundError: No module named \'items\'\n').stdout [ 123s] [ 123s] tests/test_tutorial/test_subcommands/test_tutorial001.py:94: AssertionError [ 123s] _________________________________ test_scripts _________________________________ [ 123s] [ 123s] mod = <module 'docs_src.subcommands.tutorial003.main' from '/home/abuild/rpmbuild/BUILD/typer-0.4.1/docs_src/subcommands/tutorial003/main.py'> [ 123s] [ 123s] def test_scripts(mod): [ 123s] from docs_src.subcommands.tutorial003 import items, lands, reigns, towns, users [ 123s] [ 123s] for module in [mod, items, lands, reigns, towns, users]: [ 123s] result = subprocess.run( [ 123s] ["coverage", "run", module.__file__, "--help"], [ 123s] stdout=subprocess.PIPE, [ 123s] stderr=subprocess.PIPE, [ 123s] encoding="utf-8", [ 123s] ) [ 123s] > assert "Usage" in result.stdout [ 123s] E assert 'Usage' in '' [ 123s] E + where '' = CompletedProcess(args=['coverage', 'run', '/home/abuild/rpmbuild/BUILD/typer-0.4.1/docs_src/subcommands/tutorial003/main.py', '--help'], returncode=1, stdout='', stderr='Traceback (most recent call last):\n File "/home/abuild/rpmbuild/BUILD/typer-0.4.1/docs_src/subcommands/tutorial003/main.py", line 3, in <module>\n import items\nModuleNotFoundError: No module named \'items\'\n').stdout [ 123s] [ 123s] tests/test_tutorial/test_subcommands/test_tutorial003.py:146: AssertionError --- tests/test_tutorial/test_subcommands/test_tutorial001.py | 2 +- tests/test_tutorial/test_subcommands/test_tutorial003.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_tutorial/test_subcommands/test_tutorial001.py b/tests/test_tutorial/test_subcommands/test_tutorial001.py index 1280e22..6f86826 100644 --- a/tests/test_tutorial/test_subcommands/test_tutorial001.py +++ b/tests/test_tutorial/test_subcommands/test_tutorial001.py @@ -87,7 +87,7 @@ def test_scripts(mod): from docs_src.subcommands.tutorial001 import items, users env = os.environ.copy() - env["PYTHONPATH"] = ":".join(list(tutorial001.__path__)) + env["PYTHONPATH"] = ":".join(list(tutorial001.__path__) + [env["PYTHONPATH"]] if "PYTHONPATH" in env else []) for module in [mod, items, users]: result = subprocess.run( diff --git a/tests/test_tutorial/test_subcommands/test_tutorial003.py b/tests/test_tutorial/test_subcommands/test_tutorial003.py index 2d6149c..0a05ae0 100644 --- a/tests/test_tutorial/test_subcommands/test_tutorial003.py +++ b/tests/test_tutorial/test_subcommands/test_tutorial003.py @@ -160,7 +160,7 @@ def test_scripts(mod): from docs_src.subcommands.tutorial003 import items, lands, reigns, towns, users env = os.environ.copy() - env["PYTHONPATH"] = ":".join(list(tutorial003.__path__)) + env["PYTHONPATH"] = ":".join(list(tutorial003.__path__) + [env["PYTHONPATH"]] if "PYTHONPATH" in env else []) for module in [mod, items, lands, reigns, towns, users]: result = subprocess.run( -- 2.35.3
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor