Prior to python 3.6 the os.path() function expected a string or bytes
object for the pathname. Use a compat method to convert the path-like
object to a string on interpreters that lack PEP-519 [1] support.
Traceback (most recent call last):
File "tests/regression/tools/context/test_ust.py", line 156, in <module>
tap, test_env, lttngtest.VpidContextType(), lambda test_app: test_app.vpid
File "tests/regression/tools/context/test_ust.py", line 114, in test_static_context
test_app = test_env.launch_wait_trace_test_application(50)
File "tests/utils/lttngtest/environment.py", line 541, in launch_wait_trace_test_application
wait_before_exit_file_path,
File "tests/utils/lttngtest/environment.py", line 163, in __init__
self._wait_for_file_to_be_created(pathlib.Path(app_ready_file_path))
File "tests/utils/lttngtest/environment.py", line 168, in _wait_for_file_to_be_created
if os.path.exists(sync_file_path):
File "/usr/lib/python3.5/genericpath.py", line 19, in exists
os.stat(path)
TypeError: argument should be string, bytes or integer, not PosixPath
[1] https://peps.python.org/pep-0519/
Change-Id: I783e36f61223d44667294ccbf4b3aec5bff68701
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
tempfile.mktemp(
prefix="app_",
suffix="_start_tracing",
tempfile.mktemp(
prefix="app_",
suffix="_start_tracing",
- dir=self._compat_open_path(environment.lttng_home_location),
+ dir=self._compat_pathlike(environment.lttng_home_location),
)
)
# File that the application will create when all events have been emitted.
)
)
# File that the application will create when all events have been emitted.
tempfile.mktemp(
prefix="app_",
suffix="_done_tracing",
tempfile.mktemp(
prefix="app_",
suffix="_done_tracing",
- dir=self._compat_open_path(environment.lttng_home_location),
+ dir=self._compat_pathlike(environment.lttng_home_location),
tempfile.mktemp(
prefix="app_",
suffix="_exit",
tempfile.mktemp(
prefix="app_",
suffix="_exit",
- dir=self._compat_open_path(environment.lttng_home_location),
+ dir=self._compat_pathlike(environment.lttng_home_location),
app_ready_file_path = tempfile.mktemp(
prefix="app_",
suffix="_ready",
app_ready_file_path = tempfile.mktemp(
prefix="app_",
suffix="_ready",
- dir=self._compat_open_path(environment.lttng_home_location),
+ dir=self._compat_pathlike(environment.lttng_home_location),
) # type: str
test_app_args = [str(binary_path)]
) # type: str
test_app_args = [str(binary_path)]
def _wait_for_file_to_be_created(self, sync_file_path):
# type: (pathlib.Path) -> None
while True:
def _wait_for_file_to_be_created(self, sync_file_path):
# type: (pathlib.Path) -> None
while True:
- if os.path.exists(sync_file_path):
+ if os.path.exists(self._compat_pathlike(sync_file_path)):
break
if self._process.poll() is not None:
break
if self._process.poll() is not None:
return_code=self._process.returncode
)
)
return_code=self._process.returncode
)
)
- open(self._compat_open_path(self._app_start_tracing_file_path), mode="x")
+ open(self._compat_pathlike(self._app_start_tracing_file_path), mode="x")
def wait_for_tracing_done(self):
# type: () -> None
def wait_for_tracing_done(self):
# type: () -> None
return self._process.pid
@staticmethod
return self._process.pid
@staticmethod
- def _compat_open_path(path):
+ def _compat_pathlike(path):
# type: (pathlib.Path) -> pathlib.Path | str
"""
# type: (pathlib.Path) -> pathlib.Path | str
"""
- The builtin open() in python >= 3.6 expects a path-like object while
- prior versions expect a string or bytes object. Return the correct type
- based on the presence of the "__fspath__" attribute specified in PEP-519.
+ The builtin open() and many methods of the 'os' library in Python >= 3.6
+ expect a path-like object while prior versions expect a string or
+ bytes object. Return the correct type based on the presence of the
+ "__fspath__" attribute specified in PEP-519.
"""
if hasattr(path, "__fspath__"):
return path
"""
if hasattr(path, "__fspath__"):
return path
tempfile.mktemp(
prefix="app_group_",
suffix="_exit",
tempfile.mktemp(
prefix="app_group_",
suffix="_exit",
- dir=_WaitTraceTestApplication._compat_open_path(
+ dir=_WaitTraceTestApplication._compat_pathlike(
environment.lttng_home_location
),
)
environment.lttng_home_location
),
)
app.wait_for_tracing_done()
open(
app.wait_for_tracing_done()
open(
- _WaitTraceTestApplication._compat_open_path(
+ _WaitTraceTestApplication._compat_pathlike(
self._wait_before_exit_file_path
),
mode="x",
self._wait_before_exit_file_path
),
mode="x",