mirror of
https://github.com/ansible-collections/community.general.git
synced 2026-05-06 21:32:49 +00:00
J2 test docs (#16646)
* moved tests from filters to actual jinja2 tests also removed some unused declarations and imports * split tests into their own docs removed isnan as existing jinja2's 'number' already covers same added missing docs for several tests * updated as per feedback
This commit is contained in:
@@ -26,7 +26,6 @@ import itertools
|
||||
import json
|
||||
import os.path
|
||||
import ntpath
|
||||
import types
|
||||
import pipes
|
||||
import glob
|
||||
import re
|
||||
@@ -34,13 +33,11 @@ import crypt
|
||||
import hashlib
|
||||
import string
|
||||
from functools import partial
|
||||
import operator as py_operator
|
||||
from random import SystemRandom, shuffle
|
||||
import uuid
|
||||
|
||||
import yaml
|
||||
from jinja2.filters import environmentfilter
|
||||
from distutils.version import LooseVersion, StrictVersion
|
||||
from ansible.compat.six import iteritems, string_types
|
||||
|
||||
from ansible import errors
|
||||
@@ -186,32 +183,6 @@ def ternary(value, true_val, false_val):
|
||||
return false_val
|
||||
|
||||
|
||||
def version_compare(value, version, operator='eq', strict=False):
|
||||
''' Perform a version comparison on a value '''
|
||||
op_map = {
|
||||
'==': 'eq', '=': 'eq', 'eq': 'eq',
|
||||
'<': 'lt', 'lt': 'lt',
|
||||
'<=': 'le', 'le': 'le',
|
||||
'>': 'gt', 'gt': 'gt',
|
||||
'>=': 'ge', 'ge': 'ge',
|
||||
'!=': 'ne', '<>': 'ne', 'ne': 'ne'
|
||||
}
|
||||
|
||||
if strict:
|
||||
Version = StrictVersion
|
||||
else:
|
||||
Version = LooseVersion
|
||||
|
||||
if operator in op_map:
|
||||
operator = op_map[operator]
|
||||
else:
|
||||
raise errors.AnsibleFilterError('Invalid operator type')
|
||||
|
||||
try:
|
||||
method = getattr(py_operator, operator)
|
||||
return method(Version(str(value)), Version(str(version)))
|
||||
except Exception as e:
|
||||
raise errors.AnsibleFilterError('Version comparison: %s' % e)
|
||||
|
||||
def regex_escape(string):
|
||||
'''Escape all regular expressions special characters from STRING.'''
|
||||
@@ -261,7 +232,6 @@ def get_encrypted_password(password, hashtype='sha512', salt=None):
|
||||
'sha512': '6',
|
||||
}
|
||||
|
||||
hastype = hashtype.lower()
|
||||
if hashtype in cryptmethod:
|
||||
if salt is None:
|
||||
r = SystemRandom()
|
||||
@@ -461,9 +431,6 @@ class FilterModule(object):
|
||||
'ternary': ternary,
|
||||
|
||||
# list
|
||||
# version comparison
|
||||
'version_compare': version_compare,
|
||||
|
||||
# random stuff
|
||||
'random': rand,
|
||||
'shuffle': randomize_list,
|
||||
|
||||
@@ -585,7 +585,6 @@ def nthhost(value, query=''):
|
||||
return False
|
||||
|
||||
try:
|
||||
vsize = ipaddr(v, 'size')
|
||||
nth = int(query)
|
||||
if value.size > nth:
|
||||
return value[nth]
|
||||
|
||||
@@ -70,12 +70,6 @@ def max(a):
|
||||
_max = __builtins__.get('max')
|
||||
return _max(a);
|
||||
|
||||
def isnotanumber(x):
|
||||
try:
|
||||
return math.isnan(x)
|
||||
except TypeError:
|
||||
return False
|
||||
|
||||
|
||||
def logarithm(x, base=math.e):
|
||||
try:
|
||||
@@ -136,7 +130,6 @@ class FilterModule(object):
|
||||
def filters(self):
|
||||
return {
|
||||
# general math
|
||||
'isnan': isnotanumber,
|
||||
'min' : min,
|
||||
'max' : max,
|
||||
|
||||
|
||||
@@ -20,6 +20,9 @@ from __future__ import (absolute_import, division, print_function)
|
||||
__metaclass__ = type
|
||||
|
||||
import re
|
||||
import operator as py_operator
|
||||
from distutils.version import LooseVersion, StrictVersion
|
||||
|
||||
from ansible import errors
|
||||
|
||||
def failed(*a, **kw):
|
||||
@@ -84,6 +87,33 @@ def search(value, pattern='', ignorecase=False, multiline=False):
|
||||
''' Perform a `re.search` returning a boolean '''
|
||||
return regex(value, pattern, ignorecase, multiline, 'search')
|
||||
|
||||
def version_compare(value, version, operator='eq', strict=False):
|
||||
''' Perform a version comparison on a value '''
|
||||
op_map = {
|
||||
'==': 'eq', '=': 'eq', 'eq': 'eq',
|
||||
'<': 'lt', 'lt': 'lt',
|
||||
'<=': 'le', 'le': 'le',
|
||||
'>': 'gt', 'gt': 'gt',
|
||||
'>=': 'ge', 'ge': 'ge',
|
||||
'!=': 'ne', '<>': 'ne', 'ne': 'ne'
|
||||
}
|
||||
|
||||
if strict:
|
||||
Version = StrictVersion
|
||||
else:
|
||||
Version = LooseVersion
|
||||
|
||||
if operator in op_map:
|
||||
operator = op_map[operator]
|
||||
else:
|
||||
raise errors.AnsibleFilterError('Invalid operator type')
|
||||
|
||||
try:
|
||||
method = getattr(py_operator, operator)
|
||||
return method(Version(str(value)), Version(str(version)))
|
||||
except Exception as e:
|
||||
raise errors.AnsibleFilterError('Version comparison: %s' % e)
|
||||
|
||||
class TestModule(object):
|
||||
''' Ansible core jinja2 tests '''
|
||||
|
||||
@@ -108,4 +138,7 @@ class TestModule(object):
|
||||
'search': search,
|
||||
'regex': regex,
|
||||
|
||||
# version comparison
|
||||
'version_compare': version_compare,
|
||||
|
||||
}
|
||||
|
||||
@@ -18,12 +18,20 @@
|
||||
from __future__ import (absolute_import, division, print_function)
|
||||
__metaclass__ = type
|
||||
|
||||
import math
|
||||
|
||||
def issubset(a, b):
|
||||
return set(a) <= set(b)
|
||||
|
||||
def issuperset(a, b):
|
||||
return set(a) >= set(b)
|
||||
|
||||
def isnotanumber(x):
|
||||
try:
|
||||
return math.isnan(x)
|
||||
except TypeError:
|
||||
return False
|
||||
|
||||
class TestModule:
|
||||
''' Ansible math jinja2 tests '''
|
||||
|
||||
@@ -32,4 +40,5 @@ class TestModule:
|
||||
# set theory
|
||||
'issubset': issubset,
|
||||
'issuperset': issuperset,
|
||||
'isnan': isnotanumber,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user