bpo-39517: Allow runpy.run_path() to accept path-like objects (GH-18699)
This commit is contained in:
parent
4ca060d8ad
commit
0911ea5c17
|
@ -15,6 +15,7 @@ import importlib.machinery # importlib first so we can test #15386 via -m
|
|||
import importlib.util
|
||||
import io
|
||||
import types
|
||||
import os
|
||||
from pkgutil import read_code, get_importer
|
||||
|
||||
__all__ = [
|
||||
|
@ -229,11 +230,12 @@ def _get_main_module_details(error=ImportError):
|
|||
|
||||
def _get_code_from_file(run_name, fname):
|
||||
# Check for a compiled file first
|
||||
with io.open_code(fname) as f:
|
||||
decoded_path = os.path.abspath(os.fsdecode(fname))
|
||||
with io.open_code(decoded_path) as f:
|
||||
code = read_code(f)
|
||||
if code is None:
|
||||
# That didn't work, so try it as normal source code
|
||||
with io.open_code(fname) as f:
|
||||
with io.open_code(decoded_path) as f:
|
||||
code = compile(f.read(), fname, 'exec')
|
||||
return code, fname
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@ import tempfile
|
|||
import importlib, importlib.machinery, importlib.util
|
||||
import py_compile
|
||||
import warnings
|
||||
import pathlib
|
||||
from test.support import (
|
||||
forget, make_legacy_pyc, unload, verbose, no_tracing,
|
||||
create_empty_file, temp_dir)
|
||||
|
@ -652,6 +653,14 @@ class RunPathTestCase(unittest.TestCase, CodeExecutionMixin):
|
|||
self._check_script(script_name, "<run_path>", script_name,
|
||||
script_name, expect_spec=False)
|
||||
|
||||
def test_basic_script_with_path_object(self):
|
||||
with temp_dir() as script_dir:
|
||||
mod_name = 'script'
|
||||
script_name = pathlib.Path(self._make_test_script(script_dir,
|
||||
mod_name))
|
||||
self._check_script(script_name, "<run_path>", script_name,
|
||||
script_name, expect_spec=False)
|
||||
|
||||
def test_basic_script_no_suffix(self):
|
||||
with temp_dir() as script_dir:
|
||||
mod_name = 'script'
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
Fix runpy.run_path() when using pathlike objects
|
Loading…
Reference in New Issue