mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
Add new default Docker container for ansible-test. (#31944)
* Add new default Docker container for ansible-test. * Update ansible-test change classification. * Update list of disabled pylint rules. * Fix pylint issues with ansible-test.
This commit is contained in:
parent
fbbffbabde
commit
f76afab6e5
9 changed files with 115 additions and 3 deletions
3
test/runner/.dockerignore
Normal file
3
test/runner/.dockerignore
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
*
|
||||||
|
!docker
|
||||||
|
!requirements
|
39
test/runner/Dockerfile
Normal file
39
test/runner/Dockerfile
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
FROM ubuntu:16.04
|
||||||
|
|
||||||
|
COPY docker/deadsnakes.list /etc/apt/sources.list.d/deadsnakes.list
|
||||||
|
|
||||||
|
RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F23C5A6CF475977595C89F51BA6932366A755776
|
||||||
|
|
||||||
|
RUN apt-get update -y && \
|
||||||
|
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
|
||||||
|
gcc \
|
||||||
|
git \
|
||||||
|
libffi-dev \
|
||||||
|
libxml2-dev \
|
||||||
|
libxslt1-dev \
|
||||||
|
locales \
|
||||||
|
make \
|
||||||
|
python2.6-dev \
|
||||||
|
python2.7-dev \
|
||||||
|
python3.5-dev \
|
||||||
|
python3.6-dev \
|
||||||
|
shellcheck \
|
||||||
|
&& \
|
||||||
|
apt-get clean
|
||||||
|
|
||||||
|
RUN rm /etc/apt/apt.conf.d/docker-clean
|
||||||
|
RUN locale-gen en_US.UTF-8
|
||||||
|
VOLUME /sys/fs/cgroup /run/lock /run /tmp
|
||||||
|
|
||||||
|
ADD https://bootstrap.pypa.io/get-pip.py /tmp/get-pip.py
|
||||||
|
|
||||||
|
COPY requirements/*.txt /tmp/requirements/
|
||||||
|
COPY docker/requirements.sh /tmp/
|
||||||
|
RUN cd /tmp/requirements && /tmp/requirements.sh
|
||||||
|
|
||||||
|
RUN ln -s python2.7 /usr/bin/python2
|
||||||
|
RUN ln -s python3.6 /usr/bin/python3
|
||||||
|
RUN ln -s python3 /usr/bin/python
|
||||||
|
|
||||||
|
ENV container=docker
|
||||||
|
CMD ["/sbin/init"]
|
2
test/runner/docker/deadsnakes.list
Normal file
2
test/runner/docker/deadsnakes.list
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
deb http://ppa.launchpad.net/deadsnakes/ppa/ubuntu xenial main
|
||||||
|
deb-src http://ppa.launchpad.net/deadsnakes/ppa/ubuntu xenial main
|
23
test/runner/docker/requirements.sh
Executable file
23
test/runner/docker/requirements.sh
Executable file
|
@ -0,0 +1,23 @@
|
||||||
|
#!/bin/bash -eu
|
||||||
|
|
||||||
|
python_versions=(
|
||||||
|
2.6
|
||||||
|
2.7
|
||||||
|
3.5
|
||||||
|
3.6
|
||||||
|
)
|
||||||
|
|
||||||
|
requirements=()
|
||||||
|
|
||||||
|
for requirement in *.txt; do
|
||||||
|
if [ "${requirement}" != "constraints.txt" ]; then
|
||||||
|
requirements+=("-r" "${requirement}")
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
for python_version in "${python_versions[@]}"; do
|
||||||
|
set -x
|
||||||
|
"python${python_version}" /tmp/get-pip.py -c constraints.txt
|
||||||
|
"pip${python_version}" install --disable-pip-version-check -c constraints.txt "${requirements[@]}"
|
||||||
|
set +x
|
||||||
|
done
|
|
@ -461,6 +461,9 @@ class PathMapper(object):
|
||||||
|
|
||||||
test_path = os.path.dirname(test_path)
|
test_path = os.path.dirname(test_path)
|
||||||
|
|
||||||
|
if path.startswith('test/runner/docker/'):
|
||||||
|
return minimal # not used by tests, only used to build the default container
|
||||||
|
|
||||||
if path.startswith('test/runner/lib/cloud/'):
|
if path.startswith('test/runner/lib/cloud/'):
|
||||||
cloud_target = 'cloud/%s/' % name
|
cloud_target = 'cloud/%s/' % name
|
||||||
|
|
||||||
|
@ -476,6 +479,32 @@ class PathMapper(object):
|
||||||
'sanity': 'all', # test infrastructure, run all sanity checks
|
'sanity': 'all', # test infrastructure, run all sanity checks
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if path.startswith('test/runner/requirements/'):
|
||||||
|
if name in (
|
||||||
|
'integration',
|
||||||
|
'network-integration',
|
||||||
|
'windows-integration',
|
||||||
|
):
|
||||||
|
return {
|
||||||
|
name: self.integration_all_target,
|
||||||
|
}
|
||||||
|
|
||||||
|
if name in (
|
||||||
|
'sanity',
|
||||||
|
'units',
|
||||||
|
):
|
||||||
|
return {
|
||||||
|
name: 'all',
|
||||||
|
}
|
||||||
|
|
||||||
|
if name.startswith('integration.cloud.'):
|
||||||
|
cloud_target = 'cloud/%s/' % name.split('.')[2]
|
||||||
|
|
||||||
|
if cloud_target in self.integration_targets_by_alias:
|
||||||
|
return {
|
||||||
|
'integration': cloud_target,
|
||||||
|
}
|
||||||
|
|
||||||
if path.startswith('test/runner/'):
|
if path.startswith('test/runner/'):
|
||||||
return all_tests(self.args) # test infrastructure, run all tests
|
return all_tests(self.args) # test infrastructure, run all tests
|
||||||
|
|
||||||
|
|
|
@ -83,7 +83,7 @@ def command_sanity(args):
|
||||||
if isinstance(test, SanityMultipleVersion):
|
if isinstance(test, SanityMultipleVersion):
|
||||||
versions = SUPPORTED_PYTHON_VERSIONS
|
versions = SUPPORTED_PYTHON_VERSIONS
|
||||||
else:
|
else:
|
||||||
versions = None,
|
versions = (None,)
|
||||||
|
|
||||||
for version in versions:
|
for version in versions:
|
||||||
if args.python and version and version != args.python:
|
if args.python and version and version != args.python:
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
coverage >= 4.2, != 4.3.2 # features in 4.2+ required, avoid known bug in 4.3.2 on python 2.6
|
coverage >= 4.2, != 4.3.2 # features in 4.2+ required, avoid known bug in 4.3.2 on python 2.6
|
||||||
pywinrm >= 0.2.1 # 0.1.1 required, but 0.2.1 provides better performance
|
pywinrm >= 0.2.1 # 0.1.1 required, but 0.2.1 provides better performance
|
||||||
pylint >= 1.5.3, < 1.7.0 # 1.4.1 adds JSON output, but 1.5.3 fixes bugs related to JSON output
|
pylint == 1.7.4 ; python_version >= '3.5' # versions before 1.7.1 hang or fail to install on python 3.x
|
||||||
|
pylint == 1.6.5 ; python_version <= '2.7' # versions after 1.6.5 hang or fail during test on python 2.x
|
||||||
sphinx < 1.6 ; python_version < '2.7' # sphinx 1.6 and later require python 2.7 or later
|
sphinx < 1.6 ; python_version < '2.7' # sphinx 1.6 and later require python 2.7 or later
|
||||||
wheel < 0.30.0 ; python_version < '2.7' # wheel 0.30.0 and later require python 2.7 or later
|
wheel < 0.30.0 ; python_version < '2.7' # wheel 0.30.0 and later require python 2.7 or later
|
||||||
yamllint != 1.8.0 ; python_version < '2.7' # yamllint 1.8.0 requires python 2.7+ while earlier/later versions do not
|
yamllint != 1.8.0 ; python_version < '2.7' # yamllint 1.8.0 requires python 2.7+ while earlier/later versions do not
|
||||||
|
|
|
@ -3,7 +3,7 @@ jinja2
|
||||||
mock
|
mock
|
||||||
paramiko
|
paramiko
|
||||||
pycodestyle
|
pycodestyle
|
||||||
pylint
|
pylint ; python_version >= '2.7' # pylint 1.5.3+ is required for non-buggy JSON output, but 1.4+ requires python 2.7+
|
||||||
pytest
|
pytest
|
||||||
rstcheck
|
rstcheck
|
||||||
sphinx
|
sphinx
|
||||||
|
|
|
@ -13,7 +13,9 @@ blacklisted-name
|
||||||
broad-except
|
broad-except
|
||||||
cell-var-from-loop
|
cell-var-from-loop
|
||||||
consider-iterating-dictionary
|
consider-iterating-dictionary
|
||||||
|
consider-merging-isinstance
|
||||||
consider-using-enumerate
|
consider-using-enumerate
|
||||||
|
consider-using-ternary
|
||||||
deprecated-lambda
|
deprecated-lambda
|
||||||
deprecated-method
|
deprecated-method
|
||||||
deprecated-module
|
deprecated-module
|
||||||
|
@ -29,11 +31,16 @@ global-variable-undefined
|
||||||
import-error
|
import-error
|
||||||
import-self
|
import-self
|
||||||
invalid-name
|
invalid-name
|
||||||
|
invalid-sequence-index
|
||||||
|
invalid-unary-operand-type
|
||||||
|
len-as-condition
|
||||||
line-too-long
|
line-too-long
|
||||||
|
literal-comparison
|
||||||
locally-disabled
|
locally-disabled
|
||||||
method-hidden
|
method-hidden
|
||||||
misplaced-comparison-constant
|
misplaced-comparison-constant
|
||||||
missing-docstring
|
missing-docstring
|
||||||
|
no-else-return
|
||||||
no-init
|
no-init
|
||||||
no-member
|
no-member
|
||||||
no-name-in-module
|
no-name-in-module
|
||||||
|
@ -47,11 +54,14 @@ old-style-class
|
||||||
pointless-statement
|
pointless-statement
|
||||||
pointless-string-statement
|
pointless-string-statement
|
||||||
protected-access
|
protected-access
|
||||||
|
pylint
|
||||||
|
redefined-argument-from-local
|
||||||
redefined-builtin
|
redefined-builtin
|
||||||
redefined-outer-name
|
redefined-outer-name
|
||||||
redefined-variable-type
|
redefined-variable-type
|
||||||
reimported
|
reimported
|
||||||
relative-import
|
relative-import
|
||||||
|
signature-differs
|
||||||
simplifiable-if-statement
|
simplifiable-if-statement
|
||||||
super-init-not-called
|
super-init-not-called
|
||||||
superfluous-parens
|
superfluous-parens
|
||||||
|
@ -68,17 +78,22 @@ too-many-nested-blocks
|
||||||
too-many-public-methods
|
too-many-public-methods
|
||||||
too-many-return-statements
|
too-many-return-statements
|
||||||
too-many-statements
|
too-many-statements
|
||||||
|
trailing-comma-tuple
|
||||||
|
unbalanced-tuple-unpacking
|
||||||
undefined-loop-variable
|
undefined-loop-variable
|
||||||
ungrouped-imports
|
ungrouped-imports
|
||||||
unidiomatic-typecheck
|
unidiomatic-typecheck
|
||||||
unneeded-not
|
unneeded-not
|
||||||
unsubscriptable-object
|
unsubscriptable-object
|
||||||
|
unsupported-assignment-operation
|
||||||
|
unsupported-delete-operation
|
||||||
unsupported-membership-test
|
unsupported-membership-test
|
||||||
unused-argument
|
unused-argument
|
||||||
unused-import
|
unused-import
|
||||||
unused-variable
|
unused-variable
|
||||||
unused-wildcard-import
|
unused-wildcard-import
|
||||||
used-before-assignment
|
used-before-assignment
|
||||||
|
useless-super-delegation
|
||||||
wildcard-import
|
wildcard-import
|
||||||
wrong-import-order
|
wrong-import-order
|
||||||
wrong-import-position
|
wrong-import-position
|
||||||
|
|
Loading…
Add table
Reference in a new issue