07a9de1247
* fix coverage output from synthetic packages
* synthetic packages (eg, implicit collection packages without `__init__.py`) were always created at runtime with empty string source, which was compiled to a code object and exec'd during the package load. When run with code coverage, it created a bogus coverage entry (since the `__synthetic__`-suffixed `__file__` entry didn't exist on disk).
* modified collection loader `get_code` to preserve the distinction between `None` (eg synthetic package) and empty string (eg empty `__init__.py`) values from `get_source`, and to return `None` when the source is `None`. This allows the package loader to skip `exec`ing things that truly have no source file on disk, thus not creating bogus coverage entries, while preserving behavior and coverage reporting for empty package inits that actually exist.
* add unit test
(cherry picked from commit
|
||
---|---|---|
.. | ||
_vendor | ||
ansible_test | ||
cli | ||
compat | ||
config | ||
errors | ||
executor | ||
galaxy | ||
inventory | ||
inventory_test_data/group_vars | ||
mock | ||
module_utils | ||
modules | ||
parsing | ||
playbook | ||
plugins | ||
regex | ||
template | ||
utils | ||
vars | ||
__init__.py | ||
requirements.txt | ||
test_constants.py | ||
test_context.py |