mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-10-09 01:44:03 -07:00
Deprecate tests used as filters (#32361)
* Warn on tests used as filters * Update docs, add aliases for tests that fit more gramatically with test syntax * Fix rst formatting * Add successful filter, alias of success * Remove renamed_deprecation, it was overkill * Make directory alias for is_dir * Update tests to use proper jinja test syntax * Update additional documentation, living outside of YAML files, to reflect proper jinja test syntax * Add conversion script, porting guide updates, and changelog updates * Update newly added uses of tests as filters * No underscore variable * Convert recent tests as filter changes to win_stat * Fix some changes related to rebasing a few integration tests * Make tests_as_filters_warning explicitly accept the name of the test, instead of inferring the name * Add test for tests_as_filters_warning * Update tests as filters in newly added/modified tests * Address recent changes to several integration tests * Address recent changes in cs_vpc
This commit is contained in:
parent
fd4a6cf7ad
commit
4fe08441be
349 changed files with 4086 additions and 3844 deletions
|
@ -27,6 +27,7 @@ import pwd
|
|||
import re
|
||||
import time
|
||||
|
||||
from functools import wraps
|
||||
from io import StringIO
|
||||
from numbers import Number
|
||||
|
||||
|
@ -157,6 +158,26 @@ def _count_newlines_from_end(in_str):
|
|||
return i
|
||||
|
||||
|
||||
def tests_as_filters_warning(name, func):
|
||||
'''
|
||||
Closure to enable displaying a deprecation warning when tests are used as a filter
|
||||
|
||||
This closure is only used when registering ansible provided tests as filters
|
||||
|
||||
This function should be removed in 2.9 along with registering ansible provided tests as filters
|
||||
in Templar._get_filters
|
||||
'''
|
||||
@wraps(func)
|
||||
def wrapper(*args, **kwargs):
|
||||
display.deprecated(
|
||||
'Using tests as filters is deprecated. Instead of using `result|%(name)s` instead use '
|
||||
'`result is %(name)s`' % dict(name=name),
|
||||
version='2.9'
|
||||
)
|
||||
return func(*args, **kwargs)
|
||||
return wrapper
|
||||
|
||||
|
||||
class AnsibleContext(Context):
|
||||
'''
|
||||
A custom context, which intercepts resolve() calls and sets a flag
|
||||
|
@ -283,7 +304,10 @@ class Templar:
|
|||
self._filters = dict()
|
||||
for fp in plugins:
|
||||
self._filters.update(fp.filters())
|
||||
self._filters.update(self._get_tests())
|
||||
|
||||
# TODO: Remove registering tests as filters in 2.9
|
||||
for name, func in self._get_tests().items():
|
||||
self._filters[name] = tests_as_filters_warning(name, func)
|
||||
|
||||
return self._filters.copy()
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue