add support for ansible_collections site-package (from pip ansible==2.10.0 install) + switch to ansible 2.10.0 rather than github tag

This commit is contained in:
Steven Robertson 2020-10-03 15:31:25 -07:00
parent 1ffb319300
commit 33e176d62e
3 changed files with 31 additions and 28 deletions

View File

@ -3,10 +3,6 @@
# Add steps that analyze code, save the dist with the build record, publish to a PyPI-compatible index, and more: # Add steps that analyze code, save the dist with the build record, publish to a PyPI-compatible index, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/python # https://docs.microsoft.com/azure/devops/pipelines/languages/python
# pointing to ansible 2.10 tag on github; ansible changed to ansible-base on pypi
# so to avoid complicating things for now, use git hash
# TODO: point to ansible==2.10 when it comes out so we don't need to install collections separately
jobs: jobs:
- job: Mac - job: Mac
@ -19,12 +15,12 @@ jobs:
Mito27_27: Mito27_27:
python.version: '2.7' python.version: '2.7'
MODE: mitogen MODE: mitogen
VER: git+https://github.com/ansible/ansible.git@v2.10.0 VER: 2.10.0
# TODO: test python3, python3 tests are broken # TODO: test python3, python3 tests are broken
Ans210_27: Ans210_27:
python.version: '2.7' python.version: '2.7'
MODE: localhost_ansible MODE: localhost_ansible
VER: git+https://github.com/ansible/ansible.git@v2.10.0 VER: 2.10.0
- job: Linux - job: Linux
@ -41,7 +37,7 @@ jobs:
python.version: '2.7' python.version: '2.7'
MODE: mitogen MODE: mitogen
DISTRO: debian DISTRO: debian
VER: git+https://github.com/ansible/ansible.git@v2.10.0 VER: 2.10.0
#MitoPy27CentOS6_26: #MitoPy27CentOS6_26:
#python.version: '2.7' #python.version: '2.7'
@ -52,13 +48,13 @@ jobs:
python.version: '3.6' python.version: '3.6'
MODE: mitogen MODE: mitogen
DISTRO: centos6 DISTRO: centos6
VER: git+https://github.com/ansible/ansible.git@v2.10.0 VER: 2.10.0
Mito37Debian_27: Mito37Debian_27:
python.version: '3.7' python.version: '3.7'
MODE: mitogen MODE: mitogen
DISTRO: debian DISTRO: debian
VER: git+https://github.com/ansible/ansible.git@v2.10.0 VER: 2.10.0
#Py26CentOS7: #Py26CentOS7:
#python.version: '2.7' #python.version: '2.7'
@ -105,9 +101,9 @@ jobs:
Ansible_210_27: Ansible_210_27:
python.version: '2.7' python.version: '2.7'
MODE: ansible MODE: ansible
VER: git+https://github.com/ansible/ansible.git@v2.10.0 VER: 2.10.0
Ansible_210_35: Ansible_210_35:
python.version: '3.5' python.version: '3.5'
MODE: ansible MODE: ansible
VER: git+https://github.com/ansible/ansible.git@v2.10.0 VER: 2.10.0

View File

@ -34,45 +34,45 @@ matrix:
# Debops tests. # Debops tests.
# 2.10; 3.6 -> 2.7 # 2.10; 3.6 -> 2.7
- python: "3.6" - python: "3.6"
env: MODE=debops_common VER=git+https://github.com/ansible/ansible.git@v2.10.0 env: MODE=debops_common VER=2.10.0
# 2.10; 2.7 -> 2.7 # 2.10; 2.7 -> 2.7
- python: "2.7" - python: "2.7"
env: MODE=debops_common VER=git+https://github.com/ansible/ansible.git@v2.10.0 env: MODE=debops_common VER=2.10.0
# Sanity check against vanilla Ansible. One job suffices. # Sanity check against vanilla Ansible. One job suffices.
- python: "2.7" - python: "2.7"
env: MODE=ansible VER=git+https://github.com/ansible/ansible.git@v2.10.0 DISTROS=debian STRATEGY=linear env: MODE=ansible VER=2.10.0 DISTROS=debian STRATEGY=linear
# ansible_mitogen tests. # ansible_mitogen tests.
# 2.10 -> {debian, centos6, centos7} # 2.10 -> {debian, centos6, centos7}
- python: "3.6" - python: "3.6"
env: MODE=ansible VER=git+https://github.com/ansible/ansible.git@v2.10.0 env: MODE=ansible VER=2.10.0
# 2.10 -> {debian, centos6, centos7} # 2.10 -> {debian, centos6, centos7}
- python: "2.7" - python: "2.7"
env: MODE=ansible VER=git+https://github.com/ansible/ansible.git@v2.10.0 env: MODE=ansible VER=2.10.0
# 2.10 -> {debian, centos6, centos7} # 2.10 -> {debian, centos6, centos7}
- python: "2.6" - python: "2.6"
env: MODE=ansible VER=git+https://github.com/ansible/ansible.git@v2.10.0 env: MODE=ansible VER=2.10.0
# 2.10 -> {centos5} # 2.10 -> {centos5}
- python: "2.6" - python: "2.6"
env: MODE=ansible DISTROS=centos5 VER=git+https://github.com/ansible/ansible.git@v2.10.0 env: MODE=ansible DISTROS=centos5 VER=2.10.0
# Mitogen tests. # Mitogen tests.
# 2.4 -> 2.4 # 2.4 -> 2.4
- language: c - language: c
env: MODE=mitogen_py24 DISTROS=centos5 VER=git+https://github.com/ansible/ansible.git@v2.10.0 env: MODE=mitogen_py24 DISTROS=centos5 VER=2.10.0
# 2.7 -> 2.7 -- moved to Azure # 2.7 -> 2.7 -- moved to Azure
# 2.7 -> 2.6 # 2.7 -> 2.6
#- python: "2.7" #- python: "2.7"
#env: MODE=mitogen DISTRO=centos6 #env: MODE=mitogen DISTRO=centos6
- python: "3.6" - python: "3.6"
env: MODE=mitogen DISTROS=centos7 VER=git+https://github.com/ansible/ansible.git@v2.10.0 env: MODE=mitogen DISTROS=centos7 VER=2.10.0
# 2.6 -> 2.7 # 2.6 -> 2.7
- python: "2.6" - python: "2.6"
env: MODE=mitogen DISTROS=centos7 VER=git+https://github.com/ansible/ansible.git@v2.10.0 env: MODE=mitogen DISTROS=centos7 VER=2.10.0
# 2.6 -> 3.5 # 2.6 -> 3.5
- python: "2.6" - python: "2.6"
env: MODE=mitogen DISTROS=debian-py3 VER=git+https://github.com/ansible/ansible.git@v2.10.0 env: MODE=mitogen DISTROS=debian-py3 VER=2.10.0
# 3.6 -> 2.6 -- moved to Azure # 3.6 -> 2.6 -- moved to Azure

View File

@ -90,10 +90,10 @@ RLOG = logging.getLogger('mitogen.ctx')
# there are some cases where modules are loaded in memory only, such as # there are some cases where modules are loaded in memory only, such as
# ansible collections, and the module "filename" is something like __synthetic__ # ansible collections, and the module "filename" doesn't actually exist
# which doesn't actually exist
SPECIAL_FILE_PATHS = { SPECIAL_FILE_PATHS = {
"__synthetic__", "__synthetic__",
"<ansible_synthetic_collection_package>"
} }
@ -146,7 +146,7 @@ def is_stdlib_path(path):
) )
def get_child_modules(path): def get_child_modules(path, fullname):
""" """
Return the suffixes of submodules directly neated beneath of the package Return the suffixes of submodules directly neated beneath of the package
directory at `path`. directory at `path`.
@ -155,12 +155,19 @@ def get_child_modules(path):
Path to the module's source code on disk, or some PEP-302-recognized Path to the module's source code on disk, or some PEP-302-recognized
equivalent. Usually this is the module's ``__file__`` attribute, but equivalent. Usually this is the module's ``__file__`` attribute, but
is specified explicitly to avoid loading the module. is specified explicitly to avoid loading the module.
:param str fullname:
Name of the package we're trying to get child modules for
:return: :return:
List of submodule name suffixes. List of submodule name suffixes.
""" """
it = pkgutil.iter_modules([os.path.dirname(path)]) mod_path = os.path.dirname(path)
return [to_text(name) for _, name, _ in it] if mod_path != '':
return [to_text(name) for _, name, _ in pkgutil.iter_modules([mod_path])]
else:
# we loaded some weird package in memory, so we'll see if it has a custom loader we can use
loader = pkgutil.find_loader(fullname)
return [to_text(name) for name, _ in loader.iter_modules(None)] if loader else []
def _looks_like_script(path): def _looks_like_script(path):
@ -993,7 +1000,7 @@ class ModuleResponder(object):
self.minify_secs += mitogen.core.now() - t0 self.minify_secs += mitogen.core.now() - t0
if is_pkg: if is_pkg:
pkg_present = get_child_modules(path) pkg_present = get_child_modules(path, fullname)
self._log.debug('%s is a package at %s with submodules %r', self._log.debug('%s is a package at %s with submodules %r',
fullname, path, pkg_present) fullname, path, pkg_present)
else: else: