Skip to content

Commit

Permalink
ansible-test - Narrow the scope of some sanity tests (ansible#81273)
Browse files Browse the repository at this point in the history
* ansible-test - Limit scope of replace-urlopen test

Only ansible-core code and plugins in collections can be expected to rely on module_utils.

* ansible-test - Limit scope of use-compat-six test

Only ansible-core code and plugins in collections can be expected to rely on module_utils.

* ansible-test - Limit scope of no-get-exception test

Only ansible-core code and plugins in collections should be checked for usage of outdated module_utils functions.

* Add integration tests
  • Loading branch information
mattclay committed Jul 15, 2023
1 parent 3f7bf0b commit 765b2bd
Show file tree
Hide file tree
Showing 20 changed files with 101 additions and 5 deletions.
7 changes: 7 additions & 0 deletions changelogs/fragments/ansible-test-sanity-scope.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
minor_changes:
- ansible-test - The ``replace-urlopen`` sanity test is now limited to plugins in collections.
Previously any Python file in a collection was checked for ``urlopen`` usage.
- ansible-test - The ``use-compat-six`` sanity test is now limited to plugins in collections.
Previously any Python file in a collection was checked for ``six`` usage.
- ansible-test - The ``no-get-exception`` sanity test is now limited to plugins in collections.
Previously any Python file in a collection was checked for ``get_exception`` usage.
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
shippable/posix/group3 # runs in the distro test containers
shippable/generic/group1 # runs in the default test container
context/controller
needs/target/collection
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
from ansible.module_utils.pycompat24 import get_exception


def do_stuff():
get_exception()
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
from ansible.module_utils.pycompat24 import get_exception


def do_stuff():
get_exception()
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
plugins/modules/check-me.py:1:44: do not use `get_exception`
plugins/modules/check-me.py:5:4: do not use `get_exception`
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#!/usr/bin/env bash

set -eu

source ../collection/setup.sh

set -x

ansible-test sanity --test no-get-exception --color --lint --failure-ok "${@}" > actual.txt

diff -u "${TEST_DIR}/expected.txt" actual.txt
diff -u do-not-check-me.py plugins/modules/check-me.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
shippable/posix/group3 # runs in the distro test containers
shippable/generic/group1 # runs in the default test container
context/controller
needs/target/collection
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import urllib.request


def do_stuff():
urllib.request.urlopen('https://www.ansible.com/')
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import urllib.request


def do_stuff():
urllib.request.urlopen('https://www.ansible.com/')
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
plugins/modules/check-me.py:5:20: use `ansible.module_utils.urls.open_url` instead of `urlopen`
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#!/usr/bin/env bash

set -eu

source ../collection/setup.sh

set -x

ansible-test sanity --test replace-urlopen --color --lint --failure-ok "${@}" > actual.txt

diff -u "${TEST_DIR}/expected.txt" actual.txt
diff -u do-not-check-me.py plugins/modules/check-me.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
shippable/posix/group3 # runs in the distro test containers
shippable/generic/group1 # runs in the default test container
context/controller
needs/target/collection
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import six


def do_stuff():
assert six.text_type
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import six


def do_stuff():
assert six.text_type
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
plugins/modules/check-me.py:1:1: use `ansible.module_utils.six` instead of `six`
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#!/usr/bin/env bash

set -eu

source ../collection/setup.sh

set -x

ansible-test sanity --test use-compat-six --color --lint --failure-ok "${@}" > actual.txt

diff -u "${TEST_DIR}/expected.txt" actual.txt
diff -u do-not-check-me.py plugins/modules/check-me.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@
"extensions": [
".py"
],
"prefixes": [
"lib/ansible/",
"plugins/"
],
"ignore_self": true,
"output": "path-line-column-message"
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@
"extensions": [
".py"
],
"prefixes": [
"lib/ansible/",
"plugins/"
],
"ignore_self": true,
"output": "path-line-column-message"
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,9 @@
"extensions": [
".py"
],
"prefixes": [
"lib/ansible/",
"plugins/"
],
"output": "path-line-column-message"
}
5 changes: 0 additions & 5 deletions test/sanity/ignore.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
.azure-pipelines/scripts/publish-codecov.py replace-urlopen
lib/ansible/cli/scripts/ansible_connection_cli_stub.py shebang
lib/ansible/config/base.yml no-unwanted-files
lib/ansible/executor/powershell/async_watchdog.ps1 pslint:PSCustomUseLiteralPath
Expand Down Expand Up @@ -138,7 +137,6 @@ test/integration/targets/win_script/files/test_script_removes_file.ps1 pslint:PS
test/integration/targets/win_script/files/test_script_with_args.ps1 pslint:PSAvoidUsingWriteHost # Keep
test/integration/targets/win_script/files/test_script_with_splatting.ps1 pslint:PSAvoidUsingWriteHost # Keep
test/lib/ansible_test/_data/requirements/sanity.pslint.ps1 pslint:PSCustomUseLiteralPath # Uses wildcards on purpose
test/lib/ansible_test/_util/target/setup/requirements.py replace-urlopen
test/support/network-integration/collections/ansible_collections/ansible/netcommon/plugins/module_utils/compat/ipaddress.py no-unicode-literals
test/support/network-integration/collections/ansible_collections/cisco/ios/plugins/cliconf/ios.py pylint:arguments-renamed
test/support/network-integration/collections/ansible_collections/vyos/vyos/plugins/cliconf/vyos.py pylint:arguments-renamed
Expand Down Expand Up @@ -167,9 +165,6 @@ test/units/module_utils/basic/test_deprecate_warn.py pylint:ansible-deprecated-v
test/units/module_utils/common/warnings/test_deprecate.py pylint:ansible-deprecated-no-version # testing Display.deprecated call without a version or date
test/units/module_utils/common/warnings/test_deprecate.py pylint:ansible-deprecated-version # testing Deprecated version found in call to Display.deprecated or AnsibleModule.deprecate
test/units/module_utils/urls/fixtures/multipart.txt line-endings # Fixture for HTTP tests that use CRLF
test/units/module_utils/urls/test_fetch_url.py replace-urlopen
test/units/module_utils/urls/test_gzip.py replace-urlopen
test/units/module_utils/urls/test_Request.py replace-urlopen
test/units/utils/collection_loader/fixtures/collections/ansible_collections/testns/testcoll/plugins/action/my_action.py pylint:relative-beyond-top-level
test/units/utils/collection_loader/fixtures/collections/ansible_collections/testns/testcoll/plugins/modules/__init__.py empty-init # testing that collections don't need inits
test/units/utils/collection_loader/fixtures/collections_masked/ansible_collections/ansible/__init__.py empty-init # testing that collections don't need inits
Expand Down

0 comments on commit 765b2bd

Please sign in to comment.