Each generated script is now prepared for code coverage

This commit is contained in:
Pedro Algarvio 2019-04-20 14:04:27 +01:00
parent 294d6f43b9
commit 0af561ef24
No known key found for this signature in database
GPG key ID: BB36BF6584A298FF

View file

@ -19,6 +19,7 @@ import sys
import stat
import logging
import tempfile
import textwrap
import salt.utils.path
@ -73,7 +74,6 @@ TMP_SCRIPT_DIR = os.path.join(TMP, 'scripts')
ENGINES_DIR = os.path.join(FILES, 'engines')
LOG_HANDLERS_DIR = os.path.join(FILES, 'log_handlers')
SCRIPT_TEMPLATES = {
'salt': [
'from salt.scripts import salt_main\n',
@ -99,7 +99,24 @@ SCRIPT_TEMPLATES = {
' if not os.path.exists(cfile):\n',
' py_compile.compile(__file__, cfile)\n',
' salt_{0}()'
]
],
'coverage': textwrap.dedent(
'''
SITECUSTOMIZE_DIR = os.path.join(CODE_DIR, 'tests', 'support', 'coverage')
COVERAGE_PROCESS_START = os.path.join(CODE_DIR, '.coveragerc')
PYTHONPATH = os.environ.get('PYTHONPATH') or None
if PYTHONPATH is None:
PYTHONPATH_ENV_VAR = SITECUSTOMIZE_DIR
else:
PYTHON_PATH_ENTRIES = PYTHONPATH.split(os.pathsep)
if SITECUSTOMIZE_DIR in PYTHON_PATH_ENTRIES:
PYTHON_PATH_ENTRIES.remove(SITECUSTOMIZE_DIR)
PYTHON_PATH_ENTRIES.insert(0, SITECUSTOMIZE_DIR)
PYTHONPATH_ENV_VAR = os.pathsep.join(PYTHON_PATH_ENTRIES)
os.environ['PYTHONPATH'] = PYTHONPATH_ENV_VAR
os.environ['COVERAGE_PROCESS_START'] = COVERAGE_PROCESS_START
'''
)
}
@ -157,12 +174,20 @@ class ScriptPathMixin(object):
# the right python is picked up
shebang = '/usr/bin/env python'
if 'COVERAGE_PROCESS_START' in os.environ:
coverage_snippet = SCRIPT_TEMPLATES['coverage']
else:
coverage_snippet = ''
sfh.write(
'#!{0}\n\n'.format(shebang) +
'from __future__ import absolute_import\n'
'import os\n'
'import sys\n' +
'CODE_DIR = r"{0}"\n'.format(CODE_DIR) +
'if CODE_DIR not in sys.path:\n' +
' sys.path.insert(0, CODE_DIR)\n\n' +
' sys.path.insert(0, CODE_DIR)\n' +
coverage_snippet + '\n' +
'\n'.join(script_template).format(script_name.replace('salt-', ''))
)
fst = os.stat(script_path)