test suite: prune sys.path, set PYTHONPATH to overlay root
- when running scripts under the exec wrapper, ensure that directories in `sys.path` contain no potentially importable names not present in the production environment
This commit is contained in:
parent
6a84ade2c7
commit
f720b8e48e
4 changed files with 17 additions and 9 deletions
|
|
@ -1 +1 @@
|
|||
14.0.dev3
|
||||
14.0.dev4
|
||||
|
|
|
|||
|
|
@ -13,8 +13,12 @@ def exec_wrapper_get_colors():
|
|||
|
||||
def exec_wrapper_init():
|
||||
|
||||
if exec_wrapper_os.path.dirname(exec_wrapper_sys.argv[1]) == 'test': # scripts in ./test do overlay setup themselves
|
||||
exec_wrapper_sys.path[0] = 'test'
|
||||
if exec_wrapper_os.path.dirname(exec_wrapper_sys.argv[1]) == 'test':
|
||||
'support running of test scripts under wrapper'
|
||||
cwd = exec_wrapper_os.getcwd() # assume we’re in repo root
|
||||
exec_wrapper_sys.path[1] = cwd
|
||||
from test.overlay import get_overlay_tree_dir
|
||||
exec_wrapper_sys.path[0] = get_overlay_tree_dir(cwd)
|
||||
else:
|
||||
exec_wrapper_sys.path.pop(0)
|
||||
|
||||
|
|
@ -111,12 +115,12 @@ import sys as exec_wrapper_sys
|
|||
import os as exec_wrapper_os
|
||||
import time as exec_wrapper_time
|
||||
|
||||
exec_wrapper_init() # sets sys.path[0], runs overlay_setup()
|
||||
exec_wrapper_init() # sets sys.path[0] to overlay root
|
||||
|
||||
if exec_wrapper_os.getenv('MMGEN_TRACEMALLOC'):
|
||||
exec_wrapper_tracemalloc_setup()
|
||||
|
||||
# import mmgen mods only after overlay setup!
|
||||
# import mmgen mods only after sys.path[0] is set to overlay root!
|
||||
from mmgen.devinit import init_dev as exec_wrapper_init_dev
|
||||
exec_wrapper_init_dev()
|
||||
|
||||
|
|
|
|||
|
|
@ -19,8 +19,8 @@ os.chdir(repo_root)
|
|||
sys.path[0] = repo_root
|
||||
|
||||
from test.overlay import overlay_setup
|
||||
overlay_setup(repo_root)
|
||||
os.environ['PYTHONPATH'] = repo_root
|
||||
overlay_root = overlay_setup(repo_root)
|
||||
os.environ['PYTHONPATH'] = overlay_root
|
||||
|
||||
if 'TMUX' in os.environ:
|
||||
del os.environ['TMUX']
|
||||
|
|
|
|||
|
|
@ -85,8 +85,12 @@ if sys.argv[-1] == 'clean':
|
|||
print(f'Removed {os.path.relpath(overlay_tree_dir)!r}')
|
||||
else:
|
||||
# overlay must be set up before importing mmgen mods!
|
||||
import include.test_init
|
||||
repo_root = include.test_init.repo_root
|
||||
try:
|
||||
import include.test_init
|
||||
repo_root = include.test_init.repo_root
|
||||
except ModuleNotFoundError: # allow running under exec_wrapper
|
||||
import test.include.test_init
|
||||
repo_root = test.include.test_init.repo_root
|
||||
|
||||
from mmgen.common import *
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue