mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-07-15 17:40:50 -07:00
test/: PEP8 compliancy (#24803)
* test/: PEP8 compliancy - Make PEP8 compliant * Python3 chokes on casting int to bytes (#24952) But if we tell the formatter that the var is a number, it works
This commit is contained in:
parent
31c59ad5f9
commit
4efec414e7
110 changed files with 1702 additions and 1547 deletions
|
@ -20,8 +20,8 @@
|
|||
from __future__ import (absolute_import, division)
|
||||
__metaclass__ = type
|
||||
|
||||
import sys
|
||||
import json
|
||||
import sys
|
||||
|
||||
from units.mock.procenv import swap_stdin_and_argv
|
||||
|
||||
|
@ -31,23 +31,21 @@ from ansible.compat.tests.mock import MagicMock
|
|||
|
||||
class TestModuleUtilsBasic(unittest.TestCase):
|
||||
def test_module_utils_basic__log_invocation(self):
|
||||
with swap_stdin_and_argv(stdin_data=json.dumps(
|
||||
dict(
|
||||
ANSIBLE_MODULE_ARGS=dict(
|
||||
foo=False, bar=[1,2,3], bam="bam", baz=u'baz'),
|
||||
))):
|
||||
with swap_stdin_and_argv(stdin_data=json.dumps(dict(
|
||||
ANSIBLE_MODULE_ARGS=dict(foo=False, bar=[1, 2, 3], bam="bam", baz=u'baz')),
|
||||
)):
|
||||
from ansible.module_utils import basic
|
||||
|
||||
# test basic log invocation
|
||||
basic._ANSIBLE_ARGS = None
|
||||
am = basic.AnsibleModule(
|
||||
argument_spec=dict(
|
||||
foo = dict(default=True, type='bool'),
|
||||
bar = dict(default=[], type='list'),
|
||||
bam = dict(default="bam"),
|
||||
baz = dict(default=u"baz"),
|
||||
password = dict(default=True),
|
||||
no_log = dict(default="you shouldn't see me", no_log=True),
|
||||
foo=dict(default=True, type='bool'),
|
||||
bar=dict(default=[], type='list'),
|
||||
bam=dict(default="bam"),
|
||||
baz=dict(default=u"baz"),
|
||||
password=dict(default=True),
|
||||
no_log=dict(default="you shouldn't see me", no_log=True),
|
||||
),
|
||||
)
|
||||
|
||||
|
@ -73,13 +71,14 @@ class TestModuleUtilsBasic(unittest.TestCase):
|
|||
self.assertIn(' password=NOT_LOGGING_PASSWORD', message)
|
||||
|
||||
kwargs = am.log.call_args[1]
|
||||
self.assertEqual(kwargs,
|
||||
dict(log_args={
|
||||
'foo': 'False',
|
||||
'bar': '[1, 2, 3]',
|
||||
'bam': 'bam',
|
||||
'baz': 'baz',
|
||||
'password': 'NOT_LOGGING_PASSWORD',
|
||||
'no_log': 'NOT_LOGGING_PARAMETER',
|
||||
})
|
||||
)
|
||||
self.assertEqual(
|
||||
kwargs,
|
||||
dict(log_args={
|
||||
'foo': 'False',
|
||||
'bar': '[1, 2, 3]',
|
||||
'bam': 'bam',
|
||||
'baz': 'baz',
|
||||
'password': 'NOT_LOGGING_PASSWORD',
|
||||
'no_log': 'NOT_LOGGING_PARAMETER',
|
||||
})
|
||||
)
|
||||
|
|
|
@ -34,7 +34,7 @@ class TestAnsibleModuleWarnDeprecate(unittest.TestCase):
|
|||
|
||||
ansible.module_utils.basic._ANSIBLE_ARGS = None
|
||||
am = ansible.module_utils.basic.AnsibleModule(
|
||||
argument_spec = dict(),
|
||||
argument_spec=dict(),
|
||||
)
|
||||
am._name = 'unittest'
|
||||
|
||||
|
@ -51,7 +51,7 @@ class TestAnsibleModuleWarnDeprecate(unittest.TestCase):
|
|||
|
||||
ansible.module_utils.basic._ANSIBLE_ARGS = None
|
||||
am = ansible.module_utils.basic.AnsibleModule(
|
||||
argument_spec = dict(),
|
||||
argument_spec=dict(),
|
||||
)
|
||||
am._name = 'unittest'
|
||||
|
||||
|
@ -76,7 +76,7 @@ class TestAnsibleModuleWarnDeprecate(unittest.TestCase):
|
|||
|
||||
ansible.module_utils.basic._ANSIBLE_ARGS = None
|
||||
am = ansible.module_utils.basic.AnsibleModule(
|
||||
argument_spec = dict(),
|
||||
argument_spec=dict(),
|
||||
)
|
||||
am._name = 'unittest'
|
||||
|
||||
|
|
|
@ -25,13 +25,13 @@ import json
|
|||
import sys
|
||||
|
||||
from ansible.compat.tests import unittest
|
||||
from units.mock.procenv import swap_stdin_and_argv, swap_stdout
|
||||
|
||||
from ansible.module_utils import basic
|
||||
from units.mock.procenv import swap_stdin_and_argv, swap_stdout
|
||||
|
||||
|
||||
empty_invocation = {u'module_args': {}}
|
||||
|
||||
|
||||
class TestAnsibleModuleExitJson(unittest.TestCase):
|
||||
def setUp(self):
|
||||
args = json.dumps(dict(ANSIBLE_MODULE_ARGS={}))
|
||||
|
@ -89,31 +89,35 @@ class TestAnsibleModuleExitJson(unittest.TestCase):
|
|||
return_val = json.loads(self.fake_stream.getvalue())
|
||||
self.assertEquals(return_val, dict(changed=True, msg='success', invocation=empty_invocation))
|
||||
|
||||
|
||||
class TestAnsibleModuleExitValuesRemoved(unittest.TestCase):
|
||||
OMIT = 'VALUE_SPECIFIED_IN_NO_LOG_PARAMETER'
|
||||
dataset = (
|
||||
(dict(username='person', password='$ecret k3y'),
|
||||
dict(one=1, pwd='$ecret k3y', url='https://username:password12345@foo.com/login/',
|
||||
not_secret='following the leader', msg='here'),
|
||||
dict(one=1, pwd=OMIT, url='https://username:password12345@foo.com/login/',
|
||||
not_secret='following the leader', changed=False, msg='here',
|
||||
invocation=dict(module_args=dict(password=OMIT, token=None, username='person'))),
|
||||
),
|
||||
(dict(username='person', password='password12345'),
|
||||
dict(one=1, pwd='$ecret k3y', url='https://username:password12345@foo.com/login/',
|
||||
not_secret='following the leader', msg='here'),
|
||||
dict(one=1, pwd='$ecret k3y', url='https://username:********@foo.com/login/',
|
||||
not_secret='following the leader', changed=False, msg='here',
|
||||
invocation=dict(module_args=dict(password=OMIT, token=None, username='person'))),
|
||||
),
|
||||
(dict(username='person', password='$ecret k3y'),
|
||||
dict(one=1, pwd='$ecret k3y', url='https://username:$ecret k3y@foo.com/login/',
|
||||
not_secret='following the leader', msg='here'),
|
||||
dict(one=1, pwd=OMIT, url='https://username:********@foo.com/login/',
|
||||
not_secret='following the leader', changed=False, msg='here',
|
||||
invocation=dict(module_args=dict(password=OMIT, token=None, username='person'))),
|
||||
),
|
||||
)
|
||||
(
|
||||
dict(username='person', password='$ecret k3y'),
|
||||
dict(one=1, pwd='$ecret k3y', url='https://username:password12345@foo.com/login/',
|
||||
not_secret='following the leader', msg='here'),
|
||||
dict(one=1, pwd=OMIT, url='https://username:password12345@foo.com/login/',
|
||||
not_secret='following the leader', changed=False, msg='here',
|
||||
invocation=dict(module_args=dict(password=OMIT, token=None, username='person'))),
|
||||
),
|
||||
(
|
||||
dict(username='person', password='password12345'),
|
||||
dict(one=1, pwd='$ecret k3y', url='https://username:password12345@foo.com/login/',
|
||||
not_secret='following the leader', msg='here'),
|
||||
dict(one=1, pwd='$ecret k3y', url='https://username:********@foo.com/login/',
|
||||
not_secret='following the leader', changed=False, msg='here',
|
||||
invocation=dict(module_args=dict(password=OMIT, token=None, username='person'))),
|
||||
),
|
||||
(
|
||||
dict(username='person', password='$ecret k3y'),
|
||||
dict(one=1, pwd='$ecret k3y', url='https://username:$ecret k3y@foo.com/login/',
|
||||
not_secret='following the leader', msg='here'),
|
||||
dict(one=1, pwd=OMIT, url='https://username:********@foo.com/login/',
|
||||
not_secret='following the leader', changed=False, msg='here',
|
||||
invocation=dict(module_args=dict(password=OMIT, token=None, username='person'))),
|
||||
),
|
||||
)
|
||||
|
||||
def test_exit_json_removes_values(self):
|
||||
self.maxDiff = None
|
||||
|
@ -125,12 +129,12 @@ class TestAnsibleModuleExitValuesRemoved(unittest.TestCase):
|
|||
with swap_stdout():
|
||||
basic._ANSIBLE_ARGS = None
|
||||
module = basic.AnsibleModule(
|
||||
argument_spec = dict(
|
||||
argument_spec=dict(
|
||||
username=dict(),
|
||||
password=dict(no_log=True),
|
||||
token=dict(no_log=True),
|
||||
),
|
||||
)
|
||||
),
|
||||
)
|
||||
with self.assertRaises(SystemExit) as ctx:
|
||||
self.assertEquals(module.exit_json(**return_val), expected)
|
||||
self.assertEquals(json.loads(sys.stdout.getvalue()), expected)
|
||||
|
@ -147,12 +151,12 @@ class TestAnsibleModuleExitValuesRemoved(unittest.TestCase):
|
|||
with swap_stdout():
|
||||
basic._ANSIBLE_ARGS = None
|
||||
module = basic.AnsibleModule(
|
||||
argument_spec = dict(
|
||||
argument_spec=dict(
|
||||
username=dict(),
|
||||
password=dict(no_log=True),
|
||||
token=dict(no_log=True),
|
||||
),
|
||||
)
|
||||
),
|
||||
)
|
||||
with self.assertRaises(SystemExit) as ctx:
|
||||
self.assertEquals(module.fail_json(**return_val), expected)
|
||||
self.assertEquals(json.loads(sys.stdout.getvalue()), expected)
|
||||
|
|
|
@ -25,9 +25,9 @@ import syslog
|
|||
|
||||
from ansible.compat.tests import unittest
|
||||
from ansible.compat.tests.mock import patch, MagicMock
|
||||
|
||||
from ansible.module_utils.basic import heuristic_log_sanitize
|
||||
|
||||
|
||||
class TestHeuristicLogSanitize(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.URL_SECRET = 'http://username:pas:word@foo.com/data'
|
||||
|
@ -39,13 +39,16 @@ class TestHeuristicLogSanitize(unittest.TestCase):
|
|||
def _gen_data(self, records, per_rec, top_level, secret_text):
|
||||
hostvars = {'hostvars': {}}
|
||||
for i in range(1, records, 1):
|
||||
host_facts = {'host%s' % i:
|
||||
{'pstack':
|
||||
{'running': '875.1',
|
||||
'symlinked': '880.0',
|
||||
'tars': [],
|
||||
'versions': ['885.0']},
|
||||
}}
|
||||
host_facts = {
|
||||
'host%s' % i: {
|
||||
'pstack': {
|
||||
'running': '875.1',
|
||||
'symlinked': '880.0',
|
||||
'tars': [],
|
||||
'versions': ['885.0']
|
||||
},
|
||||
}
|
||||
}
|
||||
if per_rec:
|
||||
host_facts['host%s' % i]['secret'] = secret_text
|
||||
hostvars['hostvars'].update(host_facts)
|
||||
|
|
|
@ -51,7 +51,7 @@ class TestAnsibleModuleSysLogSmokeTest(unittest.TestCase):
|
|||
|
||||
ansible.module_utils.basic._ANSIBLE_ARGS = None
|
||||
self.am = ansible.module_utils.basic.AnsibleModule(
|
||||
argument_spec = dict(),
|
||||
argument_spec=dict(),
|
||||
)
|
||||
self.am._name = 'unittest'
|
||||
|
||||
|
@ -89,7 +89,7 @@ class TestAnsibleModuleJournaldSmokeTest(unittest.TestCase):
|
|||
|
||||
ansible.module_utils.basic._ANSIBLE_ARGS = None
|
||||
self.am = ansible.module_utils.basic.AnsibleModule(
|
||||
argument_spec = dict(),
|
||||
argument_spec=dict(),
|
||||
)
|
||||
self.am._name = 'unittest'
|
||||
|
||||
|
@ -120,7 +120,7 @@ class TestAnsibleModuleLogSyslog(unittest.TestCase):
|
|||
b'Byte string': b'Byte string',
|
||||
u'Toshio くらとみ non-ascii test'.encode('utf-8'): u'Toshio くらとみ non-ascii test'.encode('utf-8'),
|
||||
b'non-utf8 :\xff: test': b'non-utf8 :\xff: test'.decode('utf-8', 'replace').encode('utf-8'),
|
||||
}
|
||||
}
|
||||
|
||||
py3_output_data = {
|
||||
u'Text string': u'Text string',
|
||||
|
@ -128,7 +128,7 @@ class TestAnsibleModuleLogSyslog(unittest.TestCase):
|
|||
b'Byte string': u'Byte string',
|
||||
u'Toshio くらとみ non-ascii test'.encode('utf-8'): u'Toshio くらとみ non-ascii test',
|
||||
b'non-utf8 :\xff: test': b'non-utf8 :\xff: test'.decode('utf-8', 'replace')
|
||||
}
|
||||
}
|
||||
|
||||
def setUp(self):
|
||||
args = json.dumps(dict(ANSIBLE_MODULE_ARGS={}))
|
||||
|
@ -138,7 +138,7 @@ class TestAnsibleModuleLogSyslog(unittest.TestCase):
|
|||
|
||||
ansible.module_utils.basic._ANSIBLE_ARGS = None
|
||||
self.am = ansible.module_utils.basic.AnsibleModule(
|
||||
argument_spec = dict(),
|
||||
argument_spec=dict(),
|
||||
)
|
||||
self.am._name = 'unittest'
|
||||
|
||||
|
@ -189,7 +189,7 @@ class TestAnsibleModuleLogJournal(unittest.TestCase):
|
|||
b'Byte string': u'Byte string',
|
||||
u'Toshio くらとみ non-ascii test'.encode('utf-8'): u'Toshio くらとみ non-ascii test',
|
||||
b'non-utf8 :\xff: test': b'non-utf8 :\xff: test'.decode('utf-8', 'replace')
|
||||
}
|
||||
}
|
||||
|
||||
# overriding run lets us use context managers for setup/teardown-esque behavior
|
||||
def setUp(self):
|
||||
|
@ -200,7 +200,7 @@ class TestAnsibleModuleLogJournal(unittest.TestCase):
|
|||
|
||||
ansible.module_utils.basic._ANSIBLE_ARGS = None
|
||||
self.am = ansible.module_utils.basic.AnsibleModule(
|
||||
argument_spec = dict(),
|
||||
argument_spec=dict(),
|
||||
)
|
||||
self.am._name = 'unittest'
|
||||
|
||||
|
@ -270,4 +270,3 @@ class TestAnsibleModuleLogJournal(unittest.TestCase):
|
|||
# We added this journal field
|
||||
self.assertIn('TEST', mock_func.call_args[1])
|
||||
self.assertIn('log unittest', mock_func.call_args[1]['TEST'])
|
||||
|
||||
|
|
|
@ -42,10 +42,21 @@ class TestReturnValues(unittest.TestCase):
|
|||
(['1', '2', '3'], frozenset(['1', '2', '3'])),
|
||||
(('1', '2', '3'), frozenset(['1', '2', '3'])),
|
||||
({'one': 1, 'two': 'dos'}, frozenset(['1', 'dos'])),
|
||||
({'one': 1, 'two': 'dos',
|
||||
'three': ['amigos', 'musketeers', None,
|
||||
{'ping': 'pong', 'base': ('balls', 'raquets')}]},
|
||||
frozenset(['1', 'dos', 'amigos', 'musketeers', 'pong', 'balls', 'raquets'])),
|
||||
(
|
||||
{
|
||||
'one': 1,
|
||||
'two': 'dos',
|
||||
'three': [
|
||||
'amigos', 'musketeers', None, {
|
||||
'ping': 'pong',
|
||||
'base': (
|
||||
'balls', 'raquets'
|
||||
)
|
||||
}
|
||||
]
|
||||
},
|
||||
frozenset(['1', 'dos', 'amigos', 'musketeers', 'pong', 'balls', 'raquets'])
|
||||
),
|
||||
(u'Toshio くらとみ', frozenset(['Toshio くらとみ'])),
|
||||
('Toshio くらとみ', frozenset(['Toshio くらとみ'])),
|
||||
)
|
||||
|
@ -67,13 +78,22 @@ class TestRemoveValues(unittest.TestCase):
|
|||
(1.0, frozenset(['4321'])),
|
||||
(['string', 'strang', 'strung'], frozenset(['nope'])),
|
||||
({'one': 1, 'two': 'dos', 'secret': 'key'}, frozenset(['nope'])),
|
||||
({'one': 1, 'two': 'dos',
|
||||
'three': ['amigos', 'musketeers', None,
|
||||
{'ping': 'pong', 'base': ['balls', 'raquets']}]},
|
||||
frozenset(['nope'])),
|
||||
(
|
||||
{
|
||||
'one': 1,
|
||||
'two': 'dos',
|
||||
'three': [
|
||||
'amigos', 'musketeers', None, {
|
||||
'ping': 'pong', 'base': ['balls', 'raquets']
|
||||
}
|
||||
]
|
||||
},
|
||||
frozenset(['nope'])
|
||||
),
|
||||
('Toshio くら', frozenset(['とみ'])),
|
||||
(u'Toshio くら', frozenset(['とみ'])),
|
||||
)
|
||||
)
|
||||
|
||||
dataset_remove = (
|
||||
('string', frozenset(['string']), OMIT),
|
||||
(1234, frozenset(['1234']), OMIT),
|
||||
|
@ -84,23 +104,43 @@ class TestRemoveValues(unittest.TestCase):
|
|||
(('string', 'strang', 'strung'), frozenset(['string', 'strung']), [OMIT, 'strang', OMIT]),
|
||||
((1234567890, 345678, 987654321), frozenset(['1234567890']), [OMIT, 345678, 987654321]),
|
||||
((1234567890, 345678, 987654321), frozenset(['345678']), [OMIT, OMIT, 987654321]),
|
||||
({'one': 1, 'two': 'dos', 'secret': 'key'}, frozenset(['key']),
|
||||
{'one': 1, 'two': 'dos', 'secret': OMIT}),
|
||||
({'one': 1, 'two': 'dos', 'secret': 'key'}, frozenset(['key', 'dos', '1']),
|
||||
{'one': OMIT, 'two': OMIT, 'secret': OMIT}),
|
||||
({'one': 1, 'two': 'dos', 'secret': 'key'}, frozenset(['key', 'dos', '1']),
|
||||
{'one': OMIT, 'two': OMIT, 'secret': OMIT}),
|
||||
({'one': 1, 'two': 'dos', 'three': ['amigos', 'musketeers', None,
|
||||
{'ping': 'pong', 'base': ['balls', 'raquets']}]},
|
||||
frozenset(['balls', 'base', 'pong', 'amigos']),
|
||||
{'one': 1, 'two': 'dos', 'three': [OMIT, 'musketeers',
|
||||
None, {'ping': OMIT, 'base': [OMIT, 'raquets']}]}),
|
||||
('This sentence has an enigma wrapped in a mystery inside of a secret. - mr mystery',
|
||||
frozenset(['enigma', 'mystery', 'secret']),
|
||||
'This sentence has an ******** wrapped in a ******** inside of a ********. - mr ********'),
|
||||
({'one': 1, 'two': 'dos', 'secret': 'key'}, frozenset(['key']), {'one': 1, 'two': 'dos', 'secret': OMIT}),
|
||||
({'one': 1, 'two': 'dos', 'secret': 'key'}, frozenset(['key', 'dos', '1']), {'one': OMIT, 'two': OMIT, 'secret': OMIT}),
|
||||
({'one': 1, 'two': 'dos', 'secret': 'key'}, frozenset(['key', 'dos', '1']), {'one': OMIT, 'two': OMIT, 'secret': OMIT}),
|
||||
(
|
||||
{
|
||||
'one': 1,
|
||||
'two': 'dos',
|
||||
'three': [
|
||||
'amigos', 'musketeers', None, {
|
||||
'ping': 'pong', 'base': [
|
||||
'balls', 'raquets'
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
frozenset(['balls', 'base', 'pong', 'amigos']),
|
||||
{
|
||||
'one': 1,
|
||||
'two': 'dos',
|
||||
'three': [
|
||||
OMIT, 'musketeers', None, {
|
||||
'ping': OMIT,
|
||||
'base': [
|
||||
OMIT, 'raquets'
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
),
|
||||
(
|
||||
'This sentence has an enigma wrapped in a mystery inside of a secret. - mr mystery',
|
||||
frozenset(['enigma', 'mystery', 'secret']),
|
||||
'This sentence has an ******** wrapped in a ******** inside of a ********. - mr ********'
|
||||
),
|
||||
('Toshio くらとみ', frozenset(['くらとみ']), 'Toshio ********'),
|
||||
(u'Toshio くらとみ', frozenset(['くらとみ']), u'Toshio ********'),
|
||||
)
|
||||
)
|
||||
|
||||
def test_no_removal(self):
|
||||
for value, no_log_strings in self.dataset_no_remove:
|
||||
|
@ -112,5 +152,3 @@ class TestRemoveValues(unittest.TestCase):
|
|||
|
||||
def test_unknown_type(self):
|
||||
self.assertRaises(TypeError, remove_values, object(), frozenset())
|
||||
|
||||
|
||||
|
|
|
@ -27,13 +27,13 @@ from io import BytesIO, StringIO
|
|||
|
||||
import pytest
|
||||
|
||||
from ansible.module_utils.six import PY3
|
||||
from ansible.compat.tests import unittest
|
||||
from ansible.compat.tests.mock import call, MagicMock, Mock, patch, sentinel
|
||||
from ansible.module_utils.six import PY3
|
||||
import ansible.module_utils.basic
|
||||
|
||||
from units.mock.procenv import swap_stdin_and_argv
|
||||
|
||||
import ansible.module_utils.basic
|
||||
|
||||
class OpenBytesIO(BytesIO):
|
||||
"""BytesIO with dummy close() method
|
||||
|
@ -68,7 +68,7 @@ class TestAnsibleModuleRunCommand(unittest.TestCase):
|
|||
if path.startswith('/'):
|
||||
return path
|
||||
else:
|
||||
return self.os.getcwd.return_value + '/' + path
|
||||
return self.os.getcwd.return_value + '/' + path
|
||||
|
||||
args = json.dumps(dict(ANSIBLE_MODULE_ARGS={}))
|
||||
# unittest doesn't have a clean place to use a context manager, so we have to enter/exit manually
|
||||
|
@ -207,4 +207,3 @@ class TestAnsibleModuleRunCommand(unittest.TestCase):
|
|||
else:
|
||||
self.assertEqual(stdout.decode('utf-8'), u'Žarn§')
|
||||
self.assertEqual(stderr.decode('utf-8'), u'لرئيسية')
|
||||
|
||||
|
|
|
@ -36,12 +36,12 @@ VALID_STRINGS = (
|
|||
[("True", True)],
|
||||
[("False", False)],
|
||||
[("{}", {})],
|
||||
)
|
||||
)
|
||||
|
||||
# Passing things that aren't strings should just return the object
|
||||
NONSTRINGS = (
|
||||
[({'a':1}, {'a':1})],
|
||||
)
|
||||
[({'a': 1}, {'a': 1})],
|
||||
)
|
||||
|
||||
# These strings are not basic types. For security, these should not be
|
||||
# executed. We return the same string and get an exception for some
|
||||
|
@ -50,25 +50,29 @@ INVALID_STRINGS = (
|
|||
[("a.foo()", "a.foo()", None)],
|
||||
[("import foo", "import foo", None)],
|
||||
[("__import__('foo')", "__import__('foo')", ValueError)],
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
def _check_simple_types(self, code, expected):
|
||||
# test some basic usage for various types
|
||||
self.assertEqual(self.am.safe_eval(code), expected)
|
||||
|
||||
|
||||
def _check_simple_types_with_exceptions(self, code, expected):
|
||||
# Test simple types with exceptions requested
|
||||
self.assertEqual(self.am.safe_eval(code, include_exceptions=True), (expected, None))
|
||||
|
||||
|
||||
def _check_invalid_strings(self, code, expected):
|
||||
self.assertEqual(self.am.safe_eval(code), expected)
|
||||
|
||||
|
||||
def _check_invalid_strings_with_exceptions(self, code, expected, exception):
|
||||
res = self.am.safe_eval("a=1", include_exceptions=True)
|
||||
self.assertEqual(res[0], "a=1")
|
||||
self.assertEqual(type(res[1]), SyntaxError)
|
||||
|
||||
|
||||
@add_method(_check_simple_types, *VALID_STRINGS)
|
||||
@add_method(_check_simple_types, *NONSTRINGS)
|
||||
@add_method(_check_simple_types_with_exceptions, *VALID_STRINGS)
|
||||
|
|
|
@ -35,6 +35,7 @@ from ansible.module_utils import known_hosts
|
|||
from units.mock.procenv import ModuleTestCase
|
||||
from units.mock.generator import add_method
|
||||
|
||||
|
||||
class TestSetModeIfDifferentBase(ModuleTestCase):
|
||||
|
||||
def setUp(self):
|
||||
|
@ -49,7 +50,7 @@ class TestSetModeIfDifferentBase(ModuleTestCase):
|
|||
basic._ANSIBLE_ARGS = None
|
||||
|
||||
self.am = basic.AnsibleModule(
|
||||
argument_spec = dict(),
|
||||
argument_spec=dict(),
|
||||
)
|
||||
|
||||
def tearDown(self):
|
||||
|
@ -60,8 +61,10 @@ class TestSetModeIfDifferentBase(ModuleTestCase):
|
|||
|
||||
def _check_no_mode_given_returns_previous_changes(self, previous_changes=True):
|
||||
with patch('os.lstat', side_effect=[self.mock_stat1]):
|
||||
|
||||
self.assertEqual(self.am.set_mode_if_different('/path/to/file', None, previous_changes), previous_changes)
|
||||
|
||||
|
||||
def _check_mode_changed_to_0660(self, mode):
|
||||
# Note: This is for checking that all the different ways of specifying
|
||||
# 0660 mode work. It cannot be used to check that setting a mode that is
|
||||
|
@ -71,6 +74,7 @@ def _check_mode_changed_to_0660(self, mode):
|
|||
self.assertEqual(self.am.set_mode_if_different('/path/to/file', mode, False), True)
|
||||
m_lchmod.assert_called_with(b'/path/to/file', 0o660)
|
||||
|
||||
|
||||
def _check_mode_unchanged_when_already_0660(self, mode):
|
||||
# Note: This is for checking that all the different ways of specifying
|
||||
# 0660 mode work. It cannot be used to check that setting a mode that is
|
||||
|
@ -83,18 +87,12 @@ SYNONYMS_0660 = (
|
|||
[[0o660]],
|
||||
[['0o660']],
|
||||
[['660']],
|
||||
)
|
||||
)
|
||||
|
||||
@add_method(_check_no_mode_given_returns_previous_changes,
|
||||
[dict(previous_changes=True)],
|
||||
[dict(previous_changes=False)],
|
||||
)
|
||||
@add_method(_check_mode_changed_to_0660,
|
||||
*SYNONYMS_0660
|
||||
)
|
||||
@add_method(_check_mode_unchanged_when_already_0660,
|
||||
*SYNONYMS_0660
|
||||
)
|
||||
|
||||
@add_method(_check_no_mode_given_returns_previous_changes, [dict(previous_changes=True)], [dict(previous_changes=False)], )
|
||||
@add_method(_check_mode_changed_to_0660, *SYNONYMS_0660)
|
||||
@add_method(_check_mode_unchanged_when_already_0660, *SYNONYMS_0660)
|
||||
class TestSetModeIfDifferent(TestSetModeIfDifferentBase):
|
||||
def test_module_utils_basic_ansible_module_set_mode_if_different(self):
|
||||
with patch('os.lstat') as m:
|
||||
|
@ -105,6 +103,7 @@ class TestSetModeIfDifferent(TestSetModeIfDifferentBase):
|
|||
self.am.set_mode_if_different('/path/to/file', 'o+w,g+w,a-r', False)
|
||||
|
||||
original_hasattr = hasattr
|
||||
|
||||
def _hasattr(obj, name):
|
||||
if obj == os and name == 'lchmod':
|
||||
return False
|
||||
|
@ -131,16 +130,10 @@ def _check_knows_to_change_to_0660_in_check_mode(self, mode):
|
|||
with patch('os.lstat', side_effect=[self.mock_stat1, self.mock_stat2, self.mock_stat2]) as m_lstat:
|
||||
self.assertEqual(self.am.set_mode_if_different('/path/to/file', mode, False), True)
|
||||
|
||||
@add_method(_check_no_mode_given_returns_previous_changes,
|
||||
[dict(previous_changes=True)],
|
||||
[dict(previous_changes=False)],
|
||||
)
|
||||
@add_method(_check_knows_to_change_to_0660_in_check_mode,
|
||||
*SYNONYMS_0660
|
||||
)
|
||||
@add_method(_check_mode_unchanged_when_already_0660,
|
||||
*SYNONYMS_0660
|
||||
)
|
||||
|
||||
@add_method(_check_no_mode_given_returns_previous_changes, [dict(previous_changes=True)], [dict(previous_changes=False)],)
|
||||
@add_method(_check_knows_to_change_to_0660_in_check_mode, *SYNONYMS_0660)
|
||||
@add_method(_check_mode_unchanged_when_already_0660, *SYNONYMS_0660)
|
||||
class TestSetModeIfDifferentWithCheckMode(TestSetModeIfDifferentBase):
|
||||
def setUp(self):
|
||||
super(TestSetModeIfDifferentWithCheckMode, self).setUp()
|
||||
|
|
|
@ -69,7 +69,7 @@ class RetryTestCase(unittest.TestCase):
|
|||
self.counter += 1
|
||||
raise botocore.exceptions.ClientError(err_msg, 'toooo fast!!')
|
||||
|
||||
#with self.assertRaises(botocore.exceptions.ClientError):
|
||||
# with self.assertRaises(botocore.exceptions.ClientError):
|
||||
try:
|
||||
fail()
|
||||
except Exception as e:
|
||||
|
@ -85,7 +85,7 @@ class RetryTestCase(unittest.TestCase):
|
|||
self.counter += 1
|
||||
raise botocore.exceptions.ClientError(err_msg, 'unexpected error')
|
||||
|
||||
#with self.assertRaises(botocore.exceptions.ClientError):
|
||||
# with self.assertRaises(botocore.exceptions.ClientError):
|
||||
try:
|
||||
raise_unexpected_error()
|
||||
except Exception as e:
|
||||
|
|
|
@ -22,11 +22,12 @@ __metaclass__ = type
|
|||
|
||||
import json
|
||||
|
||||
from ansible.compat.tests import unittest
|
||||
from nose.tools import eq_, raises
|
||||
|
||||
from ansible.compat.tests import unittest
|
||||
from ansible.module_utils.json_utils import _filter_non_json_lines
|
||||
|
||||
|
||||
class TestAnsibleModuleExitJson(unittest.TestCase):
|
||||
single_line_json_dict = u"""{"key": "value", "olá": "mundo"}"""
|
||||
single_line_json_array = u"""["a","b","c"]"""
|
||||
|
@ -38,10 +39,12 @@ class TestAnsibleModuleExitJson(unittest.TestCase):
|
|||
"b",
|
||||
"c"]"""
|
||||
|
||||
all_inputs = [single_line_json_dict,
|
||||
single_line_json_array,
|
||||
multi_line_json_dict,
|
||||
multi_line_json_array]
|
||||
all_inputs = [
|
||||
single_line_json_dict,
|
||||
single_line_json_array,
|
||||
multi_line_json_dict,
|
||||
multi_line_json_array
|
||||
]
|
||||
|
||||
junk = [u"single line of junk", u"line 1/2 of junk\nline 2/2 of junk"]
|
||||
|
||||
|
@ -51,7 +54,7 @@ class TestAnsibleModuleExitJson(unittest.TestCase):
|
|||
u'{"No json": "ending"',
|
||||
u'{"wrong": "ending"]',
|
||||
u'["wrong": "ending"}',
|
||||
)
|
||||
)
|
||||
|
||||
def test_just_json(self):
|
||||
for i in self.all_inputs:
|
||||
|
@ -82,7 +85,8 @@ class TestAnsibleModuleExitJson(unittest.TestCase):
|
|||
|
||||
def test_unparsable_filter_non_json_lines(self):
|
||||
for i in self.unparsable_cases:
|
||||
self.assertRaises(ValueError,
|
||||
self.assertRaises(
|
||||
ValueError,
|
||||
lambda data: _filter_non_json_lines(data),
|
||||
data=i
|
||||
)
|
||||
|
|
|
@ -35,6 +35,7 @@ from ansible.module_utils.six.moves import builtins
|
|||
|
||||
realimport = builtins.__import__
|
||||
|
||||
|
||||
class TestModuleUtilsBasic(ModuleTestCase):
|
||||
|
||||
def clear_modules(self, mods):
|
||||
|
@ -95,10 +96,10 @@ class TestModuleUtilsBasic(ModuleTestCase):
|
|||
mod = builtins.__import__('ansible.module_utils.basic')
|
||||
|
||||
# FIXME: doesn't work yet
|
||||
#@patch.object(builtins, 'bytes')
|
||||
#def test_module_utils_basic_bytes(self, mock_bytes):
|
||||
# mock_bytes.side_effect = NameError()
|
||||
# from ansible.module_utils import basic
|
||||
# @patch.object(builtins, 'bytes')
|
||||
# def test_module_utils_basic_bytes(self, mock_bytes):
|
||||
# mock_bytes.side_effect = NameError()
|
||||
# from ansible.module_utils import basic
|
||||
|
||||
@patch.object(builtins, '__import__')
|
||||
@unittest.skipIf(sys.version_info[0] >= 3, "literal_eval is available in every version of Python3")
|
||||
|
@ -118,12 +119,12 @@ class TestModuleUtilsBasic(ModuleTestCase):
|
|||
self.assertEqual(mod.module_utils.basic.literal_eval("'1'"), "1")
|
||||
self.assertEqual(mod.module_utils.basic.literal_eval("1"), 1)
|
||||
self.assertEqual(mod.module_utils.basic.literal_eval("-1"), -1)
|
||||
self.assertEqual(mod.module_utils.basic.literal_eval("(1,2,3)"), (1,2,3))
|
||||
self.assertEqual(mod.module_utils.basic.literal_eval("(1,2,3)"), (1, 2, 3))
|
||||
self.assertEqual(mod.module_utils.basic.literal_eval("[1]"), [1])
|
||||
self.assertEqual(mod.module_utils.basic.literal_eval("True"), True)
|
||||
self.assertEqual(mod.module_utils.basic.literal_eval("False"), False)
|
||||
self.assertEqual(mod.module_utils.basic.literal_eval("None"), None)
|
||||
#self.assertEqual(mod.module_utils.basic.literal_eval('{"a": 1}'), dict(a=1))
|
||||
# self.assertEqual(mod.module_utils.basic.literal_eval('{"a": 1}'), dict(a=1))
|
||||
self.assertRaises(ValueError, mod.module_utils.basic.literal_eval, "asdfasdfasdf")
|
||||
|
||||
@patch.object(builtins, '__import__')
|
||||
|
@ -162,13 +163,13 @@ class TestModuleUtilsBasic(ModuleTestCase):
|
|||
self.assertEqual(get_distribution(), "Foo")
|
||||
|
||||
with patch('os.path.isfile', return_value=True):
|
||||
with patch('platform.linux_distribution', side_effect=[("AmazonFooBar",)]):
|
||||
with patch('platform.linux_distribution', side_effect=[("AmazonFooBar", )]):
|
||||
self.assertEqual(get_distribution(), "Amazonfoobar")
|
||||
|
||||
with patch('platform.linux_distribution', side_effect=(("",), ("AmazonFooBam",))):
|
||||
with patch('platform.linux_distribution', side_effect=(("", ), ("AmazonFooBam",))):
|
||||
self.assertEqual(get_distribution(), "Amazon")
|
||||
|
||||
with patch('platform.linux_distribution', side_effect=[("",),("",)]):
|
||||
with patch('platform.linux_distribution', side_effect=[("", ), ("", )]):
|
||||
self.assertEqual(get_distribution(), "OtherLinux")
|
||||
|
||||
def _dist(distname='', version='', id='', supported_dists=(), full_distribution_name=1):
|
||||
|
@ -241,11 +242,11 @@ class TestModuleUtilsBasic(ModuleTestCase):
|
|||
from ansible.module_utils.basic import json_dict_unicode_to_bytes, json_dict_bytes_to_unicode
|
||||
|
||||
test_data = dict(
|
||||
item1 = u"Fóo",
|
||||
item2 = [u"Bár", u"Bam"],
|
||||
item3 = dict(sub1=u"Súb"),
|
||||
item4 = (u"föo", u"bär", u"©"),
|
||||
item5 = 42,
|
||||
item1=u"Fóo",
|
||||
item2=[u"Bár", u"Bam"],
|
||||
item3=dict(sub1=u"Súb"),
|
||||
item4=(u"föo", u"bär", u"©"),
|
||||
item5=42,
|
||||
)
|
||||
res = json_dict_unicode_to_bytes(test_data)
|
||||
res2 = json_dict_bytes_to_unicode(res)
|
||||
|
@ -265,10 +266,10 @@ class TestModuleUtilsBasic(ModuleTestCase):
|
|||
)
|
||||
|
||||
arg_spec = dict(
|
||||
foo = dict(required=True),
|
||||
bar = dict(),
|
||||
bam = dict(),
|
||||
baz = dict(),
|
||||
foo=dict(required=True),
|
||||
bar=dict(),
|
||||
bam=dict(),
|
||||
baz=dict(),
|
||||
)
|
||||
mut_ex = (('bar', 'bam'),)
|
||||
req_to = (('bam', 'baz'),)
|
||||
|
@ -279,9 +280,9 @@ class TestModuleUtilsBasic(ModuleTestCase):
|
|||
with swap_stdin_and_argv(stdin_data=args):
|
||||
basic._ANSIBLE_ARGS = None
|
||||
am = basic.AnsibleModule(
|
||||
argument_spec = arg_spec,
|
||||
mutually_exclusive = mut_ex,
|
||||
required_together = req_to,
|
||||
argument_spec=arg_spec,
|
||||
mutually_exclusive=mut_ex,
|
||||
required_together=req_to,
|
||||
no_log=True,
|
||||
check_invalid_arguments=False,
|
||||
add_file_common_args=True,
|
||||
|
@ -298,9 +299,9 @@ class TestModuleUtilsBasic(ModuleTestCase):
|
|||
self.assertRaises(
|
||||
SystemExit,
|
||||
basic.AnsibleModule,
|
||||
argument_spec = arg_spec,
|
||||
mutually_exclusive = mut_ex,
|
||||
required_together = req_to,
|
||||
argument_spec=arg_spec,
|
||||
mutually_exclusive=mut_ex,
|
||||
required_together=req_to,
|
||||
no_log=True,
|
||||
check_invalid_arguments=False,
|
||||
add_file_common_args=True,
|
||||
|
@ -308,16 +309,16 @@ class TestModuleUtilsBasic(ModuleTestCase):
|
|||
)
|
||||
|
||||
# fail because of mutually exclusive parameters
|
||||
args = json.dumps(dict(ANSIBLE_MODULE_ARGS={"foo":"hello", "bar": "bad", "bam": "bad"}))
|
||||
args = json.dumps(dict(ANSIBLE_MODULE_ARGS={"foo": "hello", "bar": "bad", "bam": "bad"}))
|
||||
|
||||
with swap_stdin_and_argv(stdin_data=args):
|
||||
basic._ANSIBLE_ARGS = None
|
||||
self.assertRaises(
|
||||
SystemExit,
|
||||
basic.AnsibleModule,
|
||||
argument_spec = arg_spec,
|
||||
mutually_exclusive = mut_ex,
|
||||
required_together = req_to,
|
||||
argument_spec=arg_spec,
|
||||
mutually_exclusive=mut_ex,
|
||||
required_together=req_to,
|
||||
no_log=True,
|
||||
check_invalid_arguments=False,
|
||||
add_file_common_args=True,
|
||||
|
@ -332,9 +333,9 @@ class TestModuleUtilsBasic(ModuleTestCase):
|
|||
self.assertRaises(
|
||||
SystemExit,
|
||||
basic.AnsibleModule,
|
||||
argument_spec = arg_spec,
|
||||
mutually_exclusive = mut_ex,
|
||||
required_together = req_to,
|
||||
argument_spec=arg_spec,
|
||||
mutually_exclusive=mut_ex,
|
||||
required_together=req_to,
|
||||
no_log=True,
|
||||
check_invalid_arguments=False,
|
||||
add_file_common_args=True,
|
||||
|
@ -345,26 +346,26 @@ class TestModuleUtilsBasic(ModuleTestCase):
|
|||
from ansible.module_utils import basic
|
||||
|
||||
arg_spec = dict(
|
||||
foo = dict(type='float'),
|
||||
foo2 = dict(type='float'),
|
||||
foo3 = dict(type='float'),
|
||||
bar = dict(type='int'),
|
||||
bar2 = dict(type='int'),
|
||||
foo=dict(type='float'),
|
||||
foo2=dict(type='float'),
|
||||
foo3=dict(type='float'),
|
||||
bar=dict(type='int'),
|
||||
bar2=dict(type='int'),
|
||||
)
|
||||
|
||||
# should test ok
|
||||
args = json.dumps(dict(ANSIBLE_MODULE_ARGS={
|
||||
"foo": 123.0, # float
|
||||
"foo2": 123, # int
|
||||
"foo3": "123", # string
|
||||
"bar": 123, # int
|
||||
"bar2": "123", # string
|
||||
"foo": 123.0, # float
|
||||
"foo2": 123, # int
|
||||
"foo3": "123", # string
|
||||
"bar": 123, # int
|
||||
"bar2": "123", # string
|
||||
}))
|
||||
|
||||
with swap_stdin_and_argv(stdin_data=args):
|
||||
basic._ANSIBLE_ARGS = None
|
||||
am = basic.AnsibleModule(
|
||||
argument_spec = arg_spec,
|
||||
argument_spec=arg_spec,
|
||||
no_log=True,
|
||||
check_invalid_arguments=False,
|
||||
add_file_common_args=True,
|
||||
|
@ -379,7 +380,7 @@ class TestModuleUtilsBasic(ModuleTestCase):
|
|||
self.assertRaises(
|
||||
SystemExit,
|
||||
basic.AnsibleModule,
|
||||
argument_spec = arg_spec,
|
||||
argument_spec=arg_spec,
|
||||
no_log=True,
|
||||
check_invalid_arguments=False,
|
||||
add_file_common_args=True,
|
||||
|
@ -391,7 +392,7 @@ class TestModuleUtilsBasic(ModuleTestCase):
|
|||
basic._ANSIBLE_ARGS = None
|
||||
|
||||
am = basic.AnsibleModule(
|
||||
argument_spec = dict(),
|
||||
argument_spec=dict(),
|
||||
)
|
||||
|
||||
am.selinux_mls_enabled = MagicMock()
|
||||
|
@ -404,25 +405,25 @@ class TestModuleUtilsBasic(ModuleTestCase):
|
|||
self.assertEqual(res, dict())
|
||||
|
||||
base_params = dict(
|
||||
path = '/path/to/file',
|
||||
mode = 0o600,
|
||||
owner = 'root',
|
||||
group = 'root',
|
||||
seuser = '_default',
|
||||
serole = '_default',
|
||||
setype = '_default',
|
||||
selevel = '_default',
|
||||
path='/path/to/file',
|
||||
mode=0o600,
|
||||
owner='root',
|
||||
group='root',
|
||||
seuser='_default',
|
||||
serole='_default',
|
||||
setype='_default',
|
||||
selevel='_default',
|
||||
)
|
||||
|
||||
extended_params = base_params.copy()
|
||||
extended_params.update(dict(
|
||||
follow = True,
|
||||
foo = 'bar',
|
||||
follow=True,
|
||||
foo='bar',
|
||||
))
|
||||
|
||||
final_params = base_params.copy()
|
||||
final_params.update(dict(
|
||||
path = '/path/to/real_file',
|
||||
path='/path/to/real_file',
|
||||
secontext=['unconfined_u', 'object_r', 'default_t', 's0'],
|
||||
attributes=None,
|
||||
))
|
||||
|
@ -441,7 +442,7 @@ class TestModuleUtilsBasic(ModuleTestCase):
|
|||
basic._ANSIBLE_ARGS = None
|
||||
|
||||
am = basic.AnsibleModule(
|
||||
argument_spec = dict(),
|
||||
argument_spec=dict(),
|
||||
)
|
||||
|
||||
basic.HAVE_SELINUX = False
|
||||
|
@ -461,7 +462,7 @@ class TestModuleUtilsBasic(ModuleTestCase):
|
|||
basic._ANSIBLE_ARGS = None
|
||||
|
||||
am = basic.AnsibleModule(
|
||||
argument_spec = dict(),
|
||||
argument_spec=dict(),
|
||||
)
|
||||
|
||||
am.selinux_mls_enabled = MagicMock()
|
||||
|
@ -475,7 +476,7 @@ class TestModuleUtilsBasic(ModuleTestCase):
|
|||
basic._ANSIBLE_ARGS = None
|
||||
|
||||
am = basic.AnsibleModule(
|
||||
argument_spec = dict(),
|
||||
argument_spec=dict(),
|
||||
)
|
||||
|
||||
# we first test the cases where the python selinux lib is
|
||||
|
@ -486,7 +487,7 @@ class TestModuleUtilsBasic(ModuleTestCase):
|
|||
am.get_bin_path = MagicMock()
|
||||
am.get_bin_path.return_value = '/path/to/selinuxenabled'
|
||||
am.run_command = MagicMock()
|
||||
am.run_command.return_value=(0, '', '')
|
||||
am.run_command.return_value = (0, '', '')
|
||||
self.assertRaises(SystemExit, am.selinux_enabled)
|
||||
am.get_bin_path.return_value = None
|
||||
self.assertEqual(am.selinux_enabled(), False)
|
||||
|
@ -507,7 +508,7 @@ class TestModuleUtilsBasic(ModuleTestCase):
|
|||
basic._ANSIBLE_ARGS = None
|
||||
|
||||
am = basic.AnsibleModule(
|
||||
argument_spec = dict(),
|
||||
argument_spec=dict(),
|
||||
)
|
||||
|
||||
am.selinux_initial_context = MagicMock(return_value=[None, None, None, None])
|
||||
|
@ -543,7 +544,7 @@ class TestModuleUtilsBasic(ModuleTestCase):
|
|||
basic._ANSIBLE_ARGS = None
|
||||
|
||||
am = basic.AnsibleModule(
|
||||
argument_spec = dict(),
|
||||
argument_spec=dict(),
|
||||
)
|
||||
|
||||
am.selinux_initial_context = MagicMock(return_value=[None, None, None, None])
|
||||
|
@ -588,7 +589,7 @@ class TestModuleUtilsBasic(ModuleTestCase):
|
|||
with swap_stdin_and_argv(stdin_data=args):
|
||||
basic._ANSIBLE_ARGS = None
|
||||
am = basic.AnsibleModule(
|
||||
argument_spec = dict(),
|
||||
argument_spec=dict(),
|
||||
)
|
||||
|
||||
def _mock_find_mount_point(path):
|
||||
|
@ -628,7 +629,7 @@ class TestModuleUtilsBasic(ModuleTestCase):
|
|||
basic._ANSIBLE_ARGS = None
|
||||
|
||||
am = basic.AnsibleModule(
|
||||
argument_spec = dict(),
|
||||
argument_spec=dict(),
|
||||
)
|
||||
|
||||
mock_stat = MagicMock()
|
||||
|
@ -643,7 +644,7 @@ class TestModuleUtilsBasic(ModuleTestCase):
|
|||
basic._ANSIBLE_ARGS = None
|
||||
|
||||
am = basic.AnsibleModule(
|
||||
argument_spec = dict(),
|
||||
argument_spec=dict(),
|
||||
)
|
||||
|
||||
def _mock_ismount(path):
|
||||
|
@ -669,7 +670,7 @@ class TestModuleUtilsBasic(ModuleTestCase):
|
|||
basic._ANSIBLE_ARGS = None
|
||||
|
||||
am = basic.AnsibleModule(
|
||||
argument_spec = dict(),
|
||||
argument_spec=dict(),
|
||||
)
|
||||
|
||||
basic.HAVE_SELINUX = False
|
||||
|
@ -714,7 +715,7 @@ class TestModuleUtilsBasic(ModuleTestCase):
|
|||
basic._ANSIBLE_ARGS = None
|
||||
|
||||
am = basic.AnsibleModule(
|
||||
argument_spec = dict(),
|
||||
argument_spec=dict(),
|
||||
)
|
||||
|
||||
self.assertEqual(am.set_owner_if_different('/path/to/file', None, True), True)
|
||||
|
@ -753,7 +754,7 @@ class TestModuleUtilsBasic(ModuleTestCase):
|
|||
basic._ANSIBLE_ARGS = None
|
||||
|
||||
am = basic.AnsibleModule(
|
||||
argument_spec = dict(),
|
||||
argument_spec=dict(),
|
||||
)
|
||||
|
||||
self.assertEqual(am.set_group_if_different('/path/to/file', None, True), True)
|
||||
|
@ -824,7 +825,7 @@ class TestModuleUtilsBasic(ModuleTestCase):
|
|||
basic._ANSIBLE_ARGS = None
|
||||
|
||||
am = basic.AnsibleModule(
|
||||
argument_spec = dict(),
|
||||
argument_spec=dict(),
|
||||
)
|
||||
|
||||
environ = dict()
|
||||
|
@ -885,7 +886,7 @@ class TestModuleUtilsBasic(ModuleTestCase):
|
|||
stat1.st_mode = 0o0644
|
||||
stat1.st_uid = 0
|
||||
stat1.st_gid = 0
|
||||
_os_stat.side_effect = [stat1,]
|
||||
_os_stat.side_effect = [stat1, ]
|
||||
am.selinux_enabled.return_value = False
|
||||
_os_chmod.reset_mock()
|
||||
_os_chown.reset_mock()
|
||||
|
@ -904,7 +905,7 @@ class TestModuleUtilsBasic(ModuleTestCase):
|
|||
stat1.st_mode = 0o0644
|
||||
stat1.st_uid = 0
|
||||
stat1.st_gid = 0
|
||||
_os_stat.side_effect = [stat1,]
|
||||
_os_stat.side_effect = [stat1, ]
|
||||
mock_context = MagicMock()
|
||||
am.selinux_context.return_value = mock_context
|
||||
am.selinux_enabled.return_value = True
|
||||
|
@ -1000,7 +1001,7 @@ class TestModuleUtilsBasic(ModuleTestCase):
|
|||
basic._ANSIBLE_ARGS = None
|
||||
|
||||
am = basic.AnsibleModule(
|
||||
argument_spec = dict(),
|
||||
argument_spec=dict(),
|
||||
)
|
||||
|
||||
mock_stat = MagicMock()
|
||||
|
|
|
@ -41,125 +41,134 @@ TESTSETS = [
|
|||
"centos",
|
||||
"7.2.1511",
|
||||
"Core"
|
||||
],
|
||||
],
|
||||
"input": {
|
||||
"/etc/redhat-release": "CentOS Linux release 7.2.1511 (Core) \n",
|
||||
"/etc/os-release": ("NAME=\"CentOS Linux\"\nVERSION=\"7 (Core)\"\nID=\"centos\"\nID_LIKE=\"rhel fedora\"\nVERSION_ID=\"7\"\n"
|
||||
"PRETTY_NAME=\"CentOS Linux 7 (Core)\"\nANSI_COLOR=\"0;31\"\nCPE_NAME=\"cpe:/o:centos:centos:7\"\n"
|
||||
"HOME_URL=\"https://www.centos.org/\"\nBUG_REPORT_URL=\"https://bugs.centos.org/\"\n\nCENTOS_MANTISBT_PROJECT=\"CentOS-7\"\n"
|
||||
"CENTOS_MANTISBT_PROJECT_VERSION=\"7\"\nREDHAT_SUPPORT_PRODUCT=\"centos\"\nREDHAT_SUPPORT_PRODUCT_VERSION=\"7\"\n\n"),
|
||||
"/etc/os-release": (
|
||||
"NAME=\"CentOS Linux\"\nVERSION=\"7 (Core)\"\nID=\"centos\"\nID_LIKE=\"rhel fedora\"\nVERSION_ID=\"7\"\n"
|
||||
"PRETTY_NAME=\"CentOS Linux 7 (Core)\"\nANSI_COLOR=\"0;31\"\nCPE_NAME=\"cpe:/o:centos:centos:7\"\n"
|
||||
"HOME_URL=\"https://www.centos.org/\"\nBUG_REPORT_URL=\"https://bugs.centos.org/\"\n\nCENTOS_MANTISBT_PROJECT=\"CentOS-7\"\n"
|
||||
"CENTOS_MANTISBT_PROJECT_VERSION=\"7\"\nREDHAT_SUPPORT_PRODUCT=\"centos\"\nREDHAT_SUPPORT_PRODUCT_VERSION=\"7\"\n\n"
|
||||
),
|
||||
"/etc/system-release": "CentOS Linux release 7.2.1511 (Core) \n"
|
||||
},
|
||||
},
|
||||
"name": "CentOS 7.2.1511",
|
||||
"result": {
|
||||
"distribution_release": "Core",
|
||||
"distribution": "CentOS",
|
||||
"distribution_major_version": "7",
|
||||
"os_family": "RedHat",
|
||||
"distribution_version": "7.2.1511"
|
||||
}
|
||||
},
|
||||
"distribution_version": "7.2.1511",
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "CentOS 6.7",
|
||||
"platform.dist": [
|
||||
"centos",
|
||||
"6.7",
|
||||
"Final"
|
||||
],
|
||||
],
|
||||
"input": {
|
||||
"/etc/redhat-release": "CentOS release 6.7 (Final)\n",
|
||||
"/etc/lsb-release": ("LSB_VERSION=base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:"
|
||||
"printing-4.0-amd64:printing-4.0-noarch\n"),
|
||||
"/etc/lsb-release": (
|
||||
"LSB_VERSION=base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:"
|
||||
"printing-4.0-amd64:printing-4.0-noarch\n"
|
||||
),
|
||||
"/etc/system-release": "CentOS release 6.7 (Final)\n"
|
||||
},
|
||||
},
|
||||
"result": {
|
||||
"distribution_release": "Final",
|
||||
"distribution": "CentOS",
|
||||
"distribution_major_version": "6",
|
||||
"os_family": "RedHat",
|
||||
"distribution_version": "6.7"
|
||||
}
|
||||
},
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "RedHat 7.2",
|
||||
"platform.dist": [
|
||||
"redhat",
|
||||
"7.2",
|
||||
"Maipo"
|
||||
],
|
||||
],
|
||||
"input": {
|
||||
"/etc/redhat-release": "Red Hat Enterprise Linux Server release 7.2 (Maipo)\n",
|
||||
"/etc/os-release": ("NAME=\"Red Hat Enterprise Linux Server\"\nVERSION=\"7.2 (Maipo)\"\nID=\"rhel\"\nID_LIKE=\"fedora\"\nVERSION_ID=\"7.2\"\n"
|
||||
"PRETTY_NAME=\"Red Hat Enterprise Linux Server 7.2 (Maipo)\"\nANSI_COLOR=\"0;31\"\n"
|
||||
"CPE_NAME=\"cpe:/o:redhat:enterprise_linux:7.2:GA:server\"\nHOME_URL=\"https://www.redhat.com/\"\n"
|
||||
"BUG_REPORT_URL=\"https://bugzilla.redhat.com/\"\n\nREDHAT_BUGZILLA_PRODUCT=\"Red Hat Enterprise Linux 7\"\n"
|
||||
"REDHAT_BUGZILLA_PRODUCT_VERSION=7.2\nREDHAT_SUPPORT_PRODUCT=\"Red Hat Enterprise Linux\"\n"
|
||||
"REDHAT_SUPPORT_PRODUCT_VERSION=\"7.2\"\n"),
|
||||
"/etc/os-release": (
|
||||
"NAME=\"Red Hat Enterprise Linux Server\"\nVERSION=\"7.2 (Maipo)\"\nID=\"rhel\"\nID_LIKE=\"fedora\"\nVERSION_ID=\"7.2\"\n"
|
||||
"PRETTY_NAME=\"Red Hat Enterprise Linux Server 7.2 (Maipo)\"\nANSI_COLOR=\"0;31\"\n"
|
||||
"CPE_NAME=\"cpe:/o:redhat:enterprise_linux:7.2:GA:server\"\nHOME_URL=\"https://www.redhat.com/\"\n"
|
||||
"BUG_REPORT_URL=\"https://bugzilla.redhat.com/\"\n\nREDHAT_BUGZILLA_PRODUCT=\"Red Hat Enterprise Linux 7\"\n"
|
||||
"REDHAT_BUGZILLA_PRODUCT_VERSION=7.2\nREDHAT_SUPPORT_PRODUCT=\"Red Hat Enterprise Linux\"\n"
|
||||
"REDHAT_SUPPORT_PRODUCT_VERSION=\"7.2\"\n"
|
||||
),
|
||||
"/etc/system-release": "Red Hat Enterprise Linux Server release 7.2 (Maipo)\n"
|
||||
},
|
||||
},
|
||||
"result": {
|
||||
"distribution_release": "Maipo",
|
||||
"distribution": "RedHat",
|
||||
"distribution_major_version": "7",
|
||||
"os_family": "RedHat",
|
||||
"distribution_version": "7.2"
|
||||
}
|
||||
},
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "RedHat 6.7",
|
||||
"platform.dist": [
|
||||
"redhat",
|
||||
"6.7",
|
||||
"Santiago"
|
||||
],
|
||||
],
|
||||
"input": {
|
||||
"/etc/redhat-release": "Red Hat Enterprise Linux Server release 6.7 (Santiago)\n",
|
||||
"/etc/lsb-release": ("LSB_VERSION=base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:"
|
||||
"printing-4.0-amd64:printing-4.0-noarch\n"),
|
||||
"/etc/lsb-release": (
|
||||
"LSB_VERSION=base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:"
|
||||
"printing-4.0-amd64:printing-4.0-noarch\n"
|
||||
),
|
||||
"/etc/system-release": "Red Hat Enterprise Linux Server release 6.7 (Santiago)\n"
|
||||
},
|
||||
},
|
||||
"result": {
|
||||
"distribution_release": "Santiago",
|
||||
"distribution": "RedHat",
|
||||
"distribution_major_version": "6",
|
||||
"os_family": "RedHat",
|
||||
"distribution_version": "6.7"
|
||||
}
|
||||
},
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Virtuozzo 7.3",
|
||||
"platform.dist": [
|
||||
"redhat",
|
||||
"7.3",
|
||||
""
|
||||
],
|
||||
],
|
||||
"input": {
|
||||
"/etc/redhat-release": "Virtuozzo Linux release 7.3\n",
|
||||
"/etc/os-release": ("NAME=\"Virtuozzo\"\n"
|
||||
"VERSION=\"7.0.3\"\n"
|
||||
"ID=\"virtuozzo\"\n"
|
||||
"ID_LIKE=\"rhel fedora\"\n"
|
||||
"VERSION_ID=\"7\"\n"
|
||||
"PRETTY_NAME=\"Virtuozzo release 7.0.3\"\n"
|
||||
"ANSI_COLOR=\"0;31\"\n"
|
||||
"CPE_NAME=\"cpe:/o:virtuozzoproject:vz:7\"\n"
|
||||
"HOME_URL=\"http://www.virtuozzo.com\"\n"
|
||||
"BUG_REPORT_URL=\"https://bugs.openvz.org/\"\n"),
|
||||
"/etc/os-release": (
|
||||
"NAME=\"Virtuozzo\"\n"
|
||||
"VERSION=\"7.0.3\"\n"
|
||||
"ID=\"virtuozzo\"\n"
|
||||
"ID_LIKE=\"rhel fedora\"\n"
|
||||
"VERSION_ID=\"7\"\n"
|
||||
"PRETTY_NAME=\"Virtuozzo release 7.0.3\"\n"
|
||||
"ANSI_COLOR=\"0;31\"\n"
|
||||
"CPE_NAME=\"cpe:/o:virtuozzoproject:vz:7\"\n"
|
||||
"HOME_URL=\"http://www.virtuozzo.com\"\n"
|
||||
"BUG_REPORT_URL=\"https://bugs.openvz.org/\"\n"
|
||||
),
|
||||
"/etc/system-release": "Virtuozzo release 7.0.3 (640)\n"
|
||||
},
|
||||
},
|
||||
"result": {
|
||||
"distribution_release": "NA",
|
||||
"distribution": "Virtuozzo",
|
||||
"distribution_major_version": "7",
|
||||
"os_family": "RedHat",
|
||||
"distribution_version": "7.3"
|
||||
}
|
||||
},
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "openSUSE Leap 42.1",
|
||||
"name": "openSUSE Leap 42.1",
|
||||
"input": {
|
||||
"/etc/os-release":
|
||||
"""
|
||||
"/etc/os-release": """
|
||||
NAME="openSUSE Leap"
|
||||
VERSION="42.1"
|
||||
VERSION_ID="42.1"
|
||||
|
@ -170,16 +179,16 @@ CPE_NAME="cpe:/o:opensuse:opensuse:42.1"
|
|||
BUG_REPORT_URL="https://bugs.opensuse.org"
|
||||
HOME_URL="https://opensuse.org/"
|
||||
ID_LIKE="suse"
|
||||
""",
|
||||
"/etc/SuSE-release":"""
|
||||
""",
|
||||
"/etc/SuSE-release": """
|
||||
openSUSE 42.1 (x86_64)
|
||||
VERSION = 42.1
|
||||
CODENAME = Malachite
|
||||
# /etc/SuSE-release is deprecated and will be removed in the future, use /etc/os-release instead
|
||||
"""
|
||||
"""
|
||||
},
|
||||
"platform.dist": ['SuSE', '42.1', 'x86_64'],
|
||||
"result":{
|
||||
"result": {
|
||||
"distribution": "openSUSE Leap",
|
||||
"distribution_major_version": "42",
|
||||
"distribution_release": "1",
|
||||
|
@ -189,12 +198,13 @@ CODENAME = Malachite
|
|||
},
|
||||
{
|
||||
'name': 'openSUSE 13.2',
|
||||
'input': {'/etc/SuSE-release': """openSUSE 13.2 (x86_64)
|
||||
'input': {
|
||||
'/etc/SuSE-release': """openSUSE 13.2 (x86_64)
|
||||
VERSION = 13.2
|
||||
CODENAME = Harlequin
|
||||
# /etc/SuSE-release is deprecated and will be removed in the future, use /etc/os-release instead
|
||||
""",
|
||||
'/etc/os-release': """NAME=openSUSE
|
||||
'/etc/os-release': """NAME=openSUSE
|
||||
VERSION="13.2 (Harlequin)"
|
||||
VERSION_ID="13.2"
|
||||
PRETTY_NAME="openSUSE 13.2 (Harlequin) (x86_64)"
|
||||
|
@ -204,13 +214,16 @@ CPE_NAME="cpe:/o:opensuse:opensuse:13.2"
|
|||
BUG_REPORT_URL="https://bugs.opensuse.org"
|
||||
HOME_URL="https://opensuse.org/"
|
||||
ID_LIKE="suse"
|
||||
"""},
|
||||
"""
|
||||
},
|
||||
'platform.dist': ('SuSE', '13.2', 'x86_64'),
|
||||
'result': {'distribution': u'openSUSE',
|
||||
'distribution_major_version': u'13',
|
||||
'distribution_release': u'2',
|
||||
'os_family': u'Suse',
|
||||
'distribution_version': u'13.2'}
|
||||
'result': {
|
||||
'distribution': u'openSUSE',
|
||||
'distribution_major_version': u'13',
|
||||
'distribution_release': u'2',
|
||||
'os_family': u'Suse',
|
||||
'distribution_version': u'13.2'
|
||||
}
|
||||
},
|
||||
{
|
||||
"platform.dist": [
|
||||
|
@ -219,9 +232,11 @@ ID_LIKE="suse"
|
|||
""
|
||||
],
|
||||
"input": {
|
||||
"/etc/os-release": ("NAME=\"openSUSE Tumbleweed\"\n# VERSION=\"20160917\"\nID=opensuse\nID_LIKE=\"suse\"\nVERSION_ID=\"20160917\"\n"
|
||||
"PRETTY_NAME=\"openSUSE Tumbleweed\"\nANSI_COLOR=\"0;32\"\nCPE_NAME=\"cpe:/o:opensuse:tumbleweed:20160917\"\n"
|
||||
"BUG_REPORT_URL=\"https://bugs.opensuse.org\"\nHOME_URL=\"https://www.opensuse.org/\"\n")
|
||||
"/etc/os-release": (
|
||||
"NAME=\"openSUSE Tumbleweed\"\n# VERSION=\"20160917\"\nID=opensuse\nID_LIKE=\"suse\"\nVERSION_ID=\"20160917\"\n"
|
||||
"PRETTY_NAME=\"openSUSE Tumbleweed\"\nANSI_COLOR=\"0;32\"\nCPE_NAME=\"cpe:/o:opensuse:tumbleweed:20160917\"\n"
|
||||
"BUG_REPORT_URL=\"https://bugs.opensuse.org\"\nHOME_URL=\"https://www.opensuse.org/\"\n"
|
||||
)
|
||||
},
|
||||
"name": "openSUSE Tumbleweed 20160917",
|
||||
"result": {
|
||||
|
@ -235,14 +250,14 @@ ID_LIKE="suse"
|
|||
{ # see https://github.com/ansible/ansible/issues/14837
|
||||
"name": "SLES 11.3",
|
||||
"input": {
|
||||
"/etc/SuSE-release":"""
|
||||
"/etc/SuSE-release": """
|
||||
SUSE Linux Enterprise Server 11 (x86_64)
|
||||
VERSION = 11
|
||||
PATCHLEVEL = 3
|
||||
"""
|
||||
"""
|
||||
},
|
||||
"platform.dist": ['SuSE', '11', 'x86_64'],
|
||||
"result":{
|
||||
"result": {
|
||||
"distribution": "SLES",
|
||||
"distribution_major_version": "11",
|
||||
"distribution_release": "3",
|
||||
|
@ -253,12 +268,12 @@ PATCHLEVEL = 3
|
|||
{ # see https://github.com/ansible/ansible/issues/14837
|
||||
"name": "SLES 11.4",
|
||||
"input": {
|
||||
"/etc/SuSE-release":"""
|
||||
"/etc/SuSE-release": """
|
||||
SUSE Linux Enterprise Server 11 (x86_64)
|
||||
VERSION = 11
|
||||
PATCHLEVEL = 4
|
||||
""",
|
||||
"/etc/os-release":"""
|
||||
""",
|
||||
"/etc/os-release": """
|
||||
NAME="SLES"
|
||||
VERSION="11.4"
|
||||
VERSION_ID="11.4"
|
||||
|
@ -266,7 +281,7 @@ PRETTY_NAME="SUSE Linux Enterprise Server 11 SP4"
|
|||
ID="sles"
|
||||
ANSI_COLOR="0;32"
|
||||
CPE_NAME="cpe:/o:suse:sles:11:4"
|
||||
""",
|
||||
""",
|
||||
},
|
||||
"platform.dist": ['SuSE', '11', 'x86_64'],
|
||||
"result":{
|
||||
|
@ -280,14 +295,14 @@ CPE_NAME="cpe:/o:suse:sles:11:4"
|
|||
{ # see https://github.com/ansible/ansible/issues/14837
|
||||
"name": "SLES 12 SP0",
|
||||
"input": {
|
||||
"/etc/SuSE-release":"""
|
||||
"/etc/SuSE-release": """
|
||||
SUSE Linux Enterprise Server 12 (x86_64)
|
||||
VERSION = 12
|
||||
PATCHLEVEL = 0
|
||||
# This file is deprecated and will be removed in a future service pack or release.
|
||||
# Please check /etc/os-release for details about this release.
|
||||
""",
|
||||
"/etc/os-release":"""
|
||||
""",
|
||||
"/etc/os-release": """
|
||||
NAME="SLES"
|
||||
VERSION="12"
|
||||
VERSION_ID="12"
|
||||
|
@ -295,10 +310,10 @@ PRETTY_NAME="SUSE Linux Enterprise Server 12"
|
|||
ID="sles"
|
||||
ANSI_COLOR="0;32"
|
||||
CPE_NAME="cpe:/o:suse:sles:12"
|
||||
""",
|
||||
""",
|
||||
},
|
||||
"platform.dist": ['SuSE', '12', 'x86_64'],
|
||||
"result":{
|
||||
"result": {
|
||||
"distribution": "SLES",
|
||||
"distribution_major_version": "12",
|
||||
"distribution_release": "0",
|
||||
|
@ -306,18 +321,17 @@ CPE_NAME="cpe:/o:suse:sles:12"
|
|||
"distribution_version": "12",
|
||||
}
|
||||
},
|
||||
|
||||
{ # see https://github.com/ansible/ansible/issues/14837
|
||||
"name": "SLES 12 SP1",
|
||||
"input": {
|
||||
"/etc/SuSE-release":"""
|
||||
"/etc/SuSE-release": """
|
||||
SUSE Linux Enterprise Server 12 (x86_64)
|
||||
VERSION = 12
|
||||
PATCHLEVEL = 0
|
||||
# This file is deprecated and will be removed in a future service pack or release.
|
||||
# Please check /etc/os-release for details about this release.
|
||||
""",
|
||||
"/etc/os-release":"""
|
||||
""",
|
||||
"/etc/os-release": """
|
||||
NAME="SLES"
|
||||
VERSION="12-SP1"
|
||||
VERSION_ID="12.1"
|
||||
|
@ -340,20 +354,20 @@ CPE_NAME="cpe:/o:suse:sles:12:sp1"
|
|||
{
|
||||
"name": "Debian stretch/sid",
|
||||
"input": {
|
||||
"/etc/os-release":"""
|
||||
"/etc/os-release": """
|
||||
PRETTY_NAME="Debian GNU/Linux stretch/sid"
|
||||
NAME="Debian GNU/Linux"
|
||||
ID=debian
|
||||
HOME_URL="https://www.debian.org/"
|
||||
SUPPORT_URL="https://www.debian.org/support"
|
||||
BUG_REPORT_URL="https://bugs.debian.org/"
|
||||
""",
|
||||
"/etc/debian_version":"""
|
||||
""",
|
||||
"/etc/debian_version": """
|
||||
stretch/sid
|
||||
""",
|
||||
},
|
||||
"platform.dist": ('debian', 'stretch/sid', ''),
|
||||
"result":{
|
||||
"result": {
|
||||
"distribution": "Debian",
|
||||
"distribution_major_version": "stretch/sid",
|
||||
"distribution_release": "NA",
|
||||
|
@ -363,7 +377,8 @@ BUG_REPORT_URL="https://bugs.debian.org/"
|
|||
},
|
||||
{
|
||||
'name': "Debian 7.9",
|
||||
'input': {'/etc/os-release': """PRETTY_NAME="Debian GNU/Linux 7 (wheezy)"
|
||||
'input': {
|
||||
'/etc/os-release': """PRETTY_NAME="Debian GNU/Linux 7 (wheezy)"
|
||||
NAME="Debian GNU/Linux"
|
||||
VERSION_ID="7"
|
||||
VERSION="7 (wheezy)"
|
||||
|
@ -372,13 +387,16 @@ ANSI_COLOR="1;31"
|
|||
HOME_URL="http://www.debian.org/"
|
||||
SUPPORT_URL="http://www.debian.org/support/"
|
||||
BUG_REPORT_URL="http://bugs.debian.org/"
|
||||
"""},
|
||||
"""
|
||||
},
|
||||
'platform.dist': ('debian', '7.9', ''),
|
||||
'result': {'distribution': u'Debian',
|
||||
'distribution_major_version': u'7',
|
||||
'distribution_release': u'wheezy',
|
||||
"os_family": "Debian",
|
||||
'distribution_version': u'7.9'}
|
||||
'result': {
|
||||
'distribution': u'Debian',
|
||||
'distribution_major_version': u'7',
|
||||
'distribution_release': u'wheezy',
|
||||
"os_family": "Debian",
|
||||
'distribution_version': u'7.9'
|
||||
}
|
||||
},
|
||||
{
|
||||
"platform.dist": [
|
||||
|
@ -387,9 +405,11 @@ BUG_REPORT_URL="http://bugs.debian.org/"
|
|||
"xenial"
|
||||
],
|
||||
"input": {
|
||||
"/etc/os-release": ("NAME=\"Ubuntu\"\nVERSION=\"16.04 LTS (Xenial Xerus)\"\nID=ubuntu\nID_LIKE=debian\nPRETTY_NAME=\"Ubuntu 16.04 LTS\"\n"
|
||||
"VERSION_ID=\"16.04\"\nHOME_URL=\"http://www.ubuntu.com/\"\nSUPPORT_URL=\"http://help.ubuntu.com/\"\n"
|
||||
"BUG_REPORT_URL=\"http://bugs.launchpad.net/ubuntu/\"\nUBUNTU_CODENAME=xenial\n"),
|
||||
"/etc/os-release": (
|
||||
"NAME=\"Ubuntu\"\nVERSION=\"16.04 LTS (Xenial Xerus)\"\nID=ubuntu\nID_LIKE=debian\nPRETTY_NAME=\"Ubuntu 16.04 LTS\"\n"
|
||||
"VERSION_ID=\"16.04\"\nHOME_URL=\"http://www.ubuntu.com/\"\nSUPPORT_URL=\"http://help.ubuntu.com/\"\n"
|
||||
"BUG_REPORT_URL=\"http://bugs.launchpad.net/ubuntu/\"\nUBUNTU_CODENAME=xenial\n"
|
||||
),
|
||||
"/etc/lsb-release": "DISTRIB_ID=Ubuntu\nDISTRIB_RELEASE=16.04\nDISTRIB_CODENAME=xenial\nDISTRIB_DESCRIPTION=\"Ubuntu 16.04 LTS\"\n"
|
||||
},
|
||||
"name": "Ubuntu 16.04",
|
||||
|
@ -403,12 +423,13 @@ BUG_REPORT_URL="http://bugs.debian.org/"
|
|||
},
|
||||
{
|
||||
'name': "Ubuntu 14.04",
|
||||
'input': {'/etc/lsb-release': """DISTRIB_ID=Ubuntu
|
||||
'input': {
|
||||
'/etc/lsb-release': """DISTRIB_ID=Ubuntu
|
||||
DISTRIB_RELEASE=14.04
|
||||
DISTRIB_CODENAME=trusty
|
||||
DISTRIB_DESCRIPTION="Ubuntu 14.04.4 LTS"
|
||||
""",
|
||||
'/etc/os-release': """NAME="Ubuntu"
|
||||
'/etc/os-release': """NAME="Ubuntu"
|
||||
VERSION="14.04.4 LTS, Trusty Tahr"
|
||||
ID=ubuntu
|
||||
ID_LIKE=debian
|
||||
|
@ -417,13 +438,16 @@ VERSION_ID="14.04"
|
|||
HOME_URL="http://www.ubuntu.com/"
|
||||
SUPPORT_URL="http://help.ubuntu.com/"
|
||||
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
|
||||
"""},
|
||||
"""
|
||||
},
|
||||
'platform.dist': ('Ubuntu', '14.04', 'trusty'),
|
||||
'result': {'distribution': u'Ubuntu',
|
||||
'distribution_major_version': u'14',
|
||||
'distribution_release': u'trusty',
|
||||
"os_family": "Debian",
|
||||
'distribution_version': u'14.04'}
|
||||
'result': {
|
||||
'distribution': u'Ubuntu',
|
||||
'distribution_major_version': u'14',
|
||||
'distribution_release': u'trusty',
|
||||
"os_family": "Debian",
|
||||
'distribution_version': u'14.04'
|
||||
}
|
||||
},
|
||||
{
|
||||
'name': "Ubuntu 12.04",
|
||||
|
@ -470,7 +494,7 @@ VERSION_ID="12.04"
|
|||
{
|
||||
'name': 'Core OS',
|
||||
'input': {
|
||||
'/etc/os-release':"""
|
||||
'/etc/os-release': """
|
||||
NAME=CoreOS
|
||||
ID=coreos
|
||||
VERSION=976.0.0
|
||||
|
@ -480,15 +504,15 @@ PRETTY_NAME="CoreOS 976.0.0 (Coeur Rouge)"
|
|||
ANSI_COLOR="1;32"
|
||||
HOME_URL="https://coreos.com/"
|
||||
BUG_REPORT_URL="https://github.com/coreos/bugs/issues"
|
||||
""",
|
||||
'/etc/lsb-release':"""DISTRIB_ID=CoreOS
|
||||
""",
|
||||
'/etc/lsb-release': """DISTRIB_ID=CoreOS
|
||||
DISTRIB_RELEASE=976.0.0
|
||||
DISTRIB_CODENAME="Coeur Rouge"
|
||||
DISTRIB_DESCRIPTION="CoreOS 976.0.0 (Coeur Rouge)"
|
||||
""",
|
||||
},
|
||||
'platform.dist': ('', '', ''),
|
||||
'result' : {
|
||||
'result': {
|
||||
"distribution": "CoreOS",
|
||||
"distribution_major_version": "NA",
|
||||
"distribution_release": "NA",
|
||||
|
@ -679,87 +703,90 @@ DISTRIB_DESCRIPTION="CoreOS 976.0.0 (Coeur Rouge)"
|
|||
},
|
||||
"platform.system": "SunOS"
|
||||
},
|
||||
|
||||
{
|
||||
"name": "Solaris 11.3",
|
||||
"platform.dist": [
|
||||
"",
|
||||
"",
|
||||
""
|
||||
],
|
||||
],
|
||||
"input": {
|
||||
"/etc/release": (" Oracle Solaris 11.3 X86\n Copyright (c) 1983, 2015, Oracle and/or its affiliates. "
|
||||
"All rights reserved.\n Assembled 06 October 2015\n")
|
||||
},
|
||||
"/etc/release": (
|
||||
" Oracle Solaris 11.3 X86\n Copyright (c) 1983, 2015, Oracle and/or its affiliates. "
|
||||
"All rights reserved.\n Assembled 06 October 2015\n"
|
||||
)
|
||||
},
|
||||
"platform.system": "SunOS",
|
||||
"result": {
|
||||
"distribution_release": "Oracle Solaris 11.3 X86",
|
||||
"distribution": "Solaris",
|
||||
"os_family": "Solaris",
|
||||
"distribution_version": "11.3"
|
||||
}
|
||||
},
|
||||
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Solaris 10",
|
||||
"platform.dist": [
|
||||
"",
|
||||
"",
|
||||
""
|
||||
],
|
||||
],
|
||||
"input": {
|
||||
"/etc/release": (" Oracle Solaris 10 1/13 s10x_u11wos_24a X86\n Copyright (c) 1983, 2013, Oracle and/or its affiliates. "
|
||||
"All rights reserved.\n Assembled 17 January 2013\n")
|
||||
},
|
||||
},
|
||||
"platform.system": "SunOS",
|
||||
"result": {
|
||||
"distribution_release": "Oracle Solaris 10 1/13 s10x_u11wos_24a X86",
|
||||
"distribution": "Solaris",
|
||||
"os_family": "Solaris",
|
||||
"distribution_version": "10"
|
||||
}
|
||||
},
|
||||
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Fedora 22",
|
||||
"platform.dist": [
|
||||
"fedora",
|
||||
"22",
|
||||
"Twenty Two"
|
||||
],
|
||||
],
|
||||
"input": {
|
||||
"/etc/redhat-release": "Fedora release 22 (Twenty Two)\n",
|
||||
"/etc/os-release": ("NAME=Fedora\nVERSION=\"22 (Twenty Two)\"\nID=fedora\nVERSION_ID=22\nPRETTY_NAME=\"Fedora 22 (Twenty Two)\"\n"
|
||||
"ANSI_COLOR=\"0;34\"\nCPE_NAME=\"cpe:/o:fedoraproject:fedora:22\"\nHOME_URL=\"https://fedoraproject.org/\"\n"
|
||||
"BUG_REPORT_URL=\"https://bugzilla.redhat.com/\"\nREDHAT_BUGZILLA_PRODUCT=\"Fedora\"\nREDHAT_BUGZILLA_PRODUCT_VERSION=22\n"
|
||||
"REDHAT_SUPPORT_PRODUCT=\"Fedora\"\nREDHAT_SUPPORT_PRODUCT_VERSION=22\n"
|
||||
"PRIVACY_POLICY_URL=https://fedoraproject.org/wiki/Legal:PrivacyPolicy\n"),
|
||||
"/etc/os-release": (
|
||||
"NAME=Fedora\nVERSION=\"22 (Twenty Two)\"\nID=fedora\nVERSION_ID=22\nPRETTY_NAME=\"Fedora 22 (Twenty Two)\"\n"
|
||||
"ANSI_COLOR=\"0;34\"\nCPE_NAME=\"cpe:/o:fedoraproject:fedora:22\"\nHOME_URL=\"https://fedoraproject.org/\"\n"
|
||||
"BUG_REPORT_URL=\"https://bugzilla.redhat.com/\"\nREDHAT_BUGZILLA_PRODUCT=\"Fedora\"\nREDHAT_BUGZILLA_PRODUCT_VERSION=22\n"
|
||||
"REDHAT_SUPPORT_PRODUCT=\"Fedora\"\nREDHAT_SUPPORT_PRODUCT_VERSION=22\n"
|
||||
"PRIVACY_POLICY_URL=https://fedoraproject.org/wiki/Legal:PrivacyPolicy\n"
|
||||
),
|
||||
"/etc/system-release": "Fedora release 22 (Twenty Two)\n"
|
||||
},
|
||||
},
|
||||
"result": {
|
||||
"distribution_release": "Twenty Two",
|
||||
"distribution": "Fedora",
|
||||
"distribution_major_version": "22",
|
||||
"os_family": "RedHat",
|
||||
"distribution_version": "22"
|
||||
}
|
||||
},
|
||||
}
|
||||
},
|
||||
{
|
||||
"platform.dist": [
|
||||
"fedora",
|
||||
"25",
|
||||
"Rawhide"
|
||||
],
|
||||
],
|
||||
"input": {
|
||||
"/etc/redhat-release": "Fedora release 25 (Rawhide)\n",
|
||||
"/etc/os-release": ("NAME=Fedora\nVERSION=\"25 (Workstation Edition)\"\nID=fedora\nVERSION_ID=25\n"
|
||||
"PRETTY_NAME=\"Fedora 25 (Workstation Edition)\"\nANSI_COLOR=\"0;34\"\nCPE_NAME=\"cpe:/o:fedoraproject:fedora:25\"\n"
|
||||
"HOME_URL=\"https://fedoraproject.org/\"\nBUG_REPORT_URL=\"https://bugzilla.redhat.com/\"\n"
|
||||
"REDHAT_BUGZILLA_PRODUCT=\"Fedora\"\nREDHAT_BUGZILLA_PRODUCT_VERSION=rawhide\nREDHAT_SUPPORT_PRODUCT=\"Fedora\"\n"
|
||||
"REDHAT_SUPPORT_PRODUCT_VERSION=rawhide\nPRIVACY_POLICY_URL=https://fedoraproject.org/wiki/Legal:PrivacyPolicy\n"
|
||||
"VARIANT=\"Workstation Edition\"\nVARIANT_ID=workstation\n"),
|
||||
"/etc/os-release": (
|
||||
"NAME=Fedora\nVERSION=\"25 (Workstation Edition)\"\nID=fedora\nVERSION_ID=25\n"
|
||||
"PRETTY_NAME=\"Fedora 25 (Workstation Edition)\"\nANSI_COLOR=\"0;34\"\nCPE_NAME=\"cpe:/o:fedoraproject:fedora:25\"\n"
|
||||
"HOME_URL=\"https://fedoraproject.org/\"\nBUG_REPORT_URL=\"https://bugzilla.redhat.com/\"\n"
|
||||
"REDHAT_BUGZILLA_PRODUCT=\"Fedora\"\nREDHAT_BUGZILLA_PRODUCT_VERSION=rawhide\nREDHAT_SUPPORT_PRODUCT=\"Fedora\"\n"
|
||||
"REDHAT_SUPPORT_PRODUCT_VERSION=rawhide\nPRIVACY_POLICY_URL=https://fedoraproject.org/wiki/Legal:PrivacyPolicy\n"
|
||||
"VARIANT=\"Workstation Edition\"\nVARIANT_ID=workstation\n"
|
||||
),
|
||||
"/etc/system-release": "Fedora release 25 (Rawhide)\n"
|
||||
},
|
||||
},
|
||||
"name": "Fedora 25",
|
||||
"result": {
|
||||
"distribution_release": "Rawhide",
|
||||
|
@ -767,9 +794,8 @@ DISTRIB_DESCRIPTION="CoreOS 976.0.0 (Coeur Rouge)"
|
|||
"distribution_major_version": "25",
|
||||
"os_family": "RedHat",
|
||||
"distribution_version": "25"
|
||||
}
|
||||
},
|
||||
|
||||
}
|
||||
},
|
||||
{
|
||||
"platform.dist": [
|
||||
"",
|
||||
|
@ -787,9 +813,8 @@ DISTRIB_DESCRIPTION="CoreOS 976.0.0 (Coeur Rouge)"
|
|||
"distribution_major_version": "NA",
|
||||
"os_family": "SMGL",
|
||||
"distribution_version": "NA"
|
||||
}
|
||||
},
|
||||
|
||||
}
|
||||
},
|
||||
]
|
||||
|
||||
|
||||
|
@ -815,6 +840,7 @@ def test_distribution_version(testcase):
|
|||
|
||||
_test_one_distribution(facts, module, testcase)
|
||||
|
||||
|
||||
def _test_one_distribution(facts, module, testcase):
|
||||
"""run the test on one distribution testcase
|
||||
|
||||
|
@ -828,7 +854,7 @@ def _test_one_distribution(facts, module, testcase):
|
|||
data = default
|
||||
if fname in testcase['input']:
|
||||
# for debugging
|
||||
print('faked '+fname+' for '+testcase['name'])
|
||||
print('faked %s for %s' % (fname, testcase['name']))
|
||||
data = testcase['input'][fname].strip()
|
||||
if strip and data is not None:
|
||||
data = data.strip()
|
||||
|
|
|
@ -189,7 +189,7 @@ LSBLK_OUTPUT = b"""
|
|||
/dev/mapper/docker-253:1-1050967-pool
|
||||
"""
|
||||
|
||||
LSBLK_OUTPUT_2 = b"""
|
||||
LSBLK_OUTPUT_2 = b"""
|
||||
/dev/sda
|
||||
/dev/sda1 32caaec3-ef40-4691-a3b6-438c3f9bc1c0
|
||||
/dev/sda2 66Ojcd-ULtu-1cZa-Tywo-mx0d-RF4O-ysA9jK
|
||||
|
@ -244,166 +244,213 @@ grimlock.g.a:path_with'single_quotes /home/adrian/sshfs-grimlock-single-quote-2
|
|||
grimlock.g.a:/mnt/data/foto's /home/adrian/fotos fuse.sshfs rw,nosuid,nodev,relatime,user_id=1000,group_id=1000 0 0
|
||||
"""
|
||||
|
||||
MTAB_ENTRIES = \
|
||||
MTAB_ENTRIES = [
|
||||
[
|
||||
['sysfs',
|
||||
'/sys',
|
||||
'sysfs',
|
||||
'rw,seclabel,nosuid,nodev,noexec,relatime',
|
||||
'0',
|
||||
'0'],
|
||||
['proc', '/proc', 'proc', 'rw,nosuid,nodev,noexec,relatime', '0', '0'],
|
||||
['devtmpfs',
|
||||
'/dev',
|
||||
'devtmpfs',
|
||||
'rw,seclabel,nosuid,size=8044400k,nr_inodes=2011100,mode=755',
|
||||
'0',
|
||||
'0'],
|
||||
['securityfs',
|
||||
'/sys/kernel/security',
|
||||
'securityfs',
|
||||
'rw,nosuid,nodev,noexec,relatime',
|
||||
'0',
|
||||
'0'],
|
||||
['tmpfs', '/dev/shm', 'tmpfs', 'rw,seclabel,nosuid,nodev', '0', '0'],
|
||||
['devpts',
|
||||
'/dev/pts',
|
||||
'devpts',
|
||||
'rw,seclabel,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000',
|
||||
'0',
|
||||
'0'],
|
||||
['tmpfs', '/run', 'tmpfs', 'rw,seclabel,nosuid,nodev,mode=755', '0', '0'],
|
||||
['tmpfs',
|
||||
'/sys/fs/cgroup',
|
||||
'tmpfs',
|
||||
'ro,seclabel,nosuid,nodev,noexec,mode=755',
|
||||
'0',
|
||||
'0'],
|
||||
['cgroup',
|
||||
'/sys/fs/cgroup/systemd',
|
||||
'cgroup',
|
||||
'rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd',
|
||||
'0',
|
||||
'0'],
|
||||
['pstore',
|
||||
'/sys/fs/pstore',
|
||||
'pstore',
|
||||
'rw,seclabel,nosuid,nodev,noexec,relatime',
|
||||
'0',
|
||||
'0'],
|
||||
['cgroup',
|
||||
'/sys/fs/cgroup/devices',
|
||||
'cgroup',
|
||||
'rw,nosuid,nodev,noexec,relatime,devices',
|
||||
'0',
|
||||
'0'],
|
||||
['cgroup',
|
||||
'sysfs',
|
||||
'/sys',
|
||||
'sysfs',
|
||||
'rw,seclabel,nosuid,nodev,noexec,relatime',
|
||||
'0',
|
||||
'0'
|
||||
],
|
||||
['proc', '/proc', 'proc', 'rw,nosuid,nodev,noexec,relatime', '0', '0'],
|
||||
[
|
||||
'devtmpfs',
|
||||
'/dev',
|
||||
'devtmpfs',
|
||||
'rw,seclabel,nosuid,size=8044400k,nr_inodes=2011100,mode=755',
|
||||
'0',
|
||||
'0'
|
||||
],
|
||||
[
|
||||
'securityfs',
|
||||
'/sys/kernel/security',
|
||||
'securityfs',
|
||||
'rw,nosuid,nodev,noexec,relatime',
|
||||
'0',
|
||||
'0'
|
||||
],
|
||||
['tmpfs', '/dev/shm', 'tmpfs', 'rw,seclabel,nosuid,nodev', '0', '0'],
|
||||
[
|
||||
'devpts',
|
||||
'/dev/pts',
|
||||
'devpts',
|
||||
'rw,seclabel,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000',
|
||||
'0',
|
||||
'0'
|
||||
],
|
||||
['tmpfs', '/run', 'tmpfs', 'rw,seclabel,nosuid,nodev,mode=755', '0', '0'],
|
||||
[
|
||||
'tmpfs',
|
||||
'/sys/fs/cgroup',
|
||||
'tmpfs',
|
||||
'ro,seclabel,nosuid,nodev,noexec,mode=755',
|
||||
'0',
|
||||
'0'
|
||||
],
|
||||
[
|
||||
'cgroup',
|
||||
'/sys/fs/cgroup/systemd',
|
||||
'cgroup',
|
||||
'rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd',
|
||||
'0',
|
||||
'0'
|
||||
],
|
||||
[
|
||||
'pstore',
|
||||
'/sys/fs/pstore',
|
||||
'pstore',
|
||||
'rw,seclabel,nosuid,nodev,noexec,relatime',
|
||||
'0',
|
||||
'0'
|
||||
],
|
||||
[
|
||||
'cgroup',
|
||||
'/sys/fs/cgroup/devices',
|
||||
'cgroup',
|
||||
'rw,nosuid,nodev,noexec,relatime,devices',
|
||||
'0',
|
||||
'0'
|
||||
],
|
||||
[
|
||||
'cgroup',
|
||||
'/sys/fs/cgroup/freezer',
|
||||
'cgroup',
|
||||
'rw,nosuid,nodev,noexec,relatime,freezer',
|
||||
'0',
|
||||
'0'],
|
||||
['cgroup',
|
||||
'0'
|
||||
],
|
||||
[
|
||||
'cgroup',
|
||||
'/sys/fs/cgroup/memory',
|
||||
'cgroup',
|
||||
'rw,nosuid,nodev,noexec,relatime,memory',
|
||||
'0',
|
||||
'0'],
|
||||
['cgroup',
|
||||
'0'
|
||||
],
|
||||
[
|
||||
'cgroup',
|
||||
'/sys/fs/cgroup/pids',
|
||||
'cgroup',
|
||||
'rw,nosuid,nodev,noexec,relatime,pids',
|
||||
'0',
|
||||
'0'],
|
||||
['cgroup',
|
||||
'0'
|
||||
],
|
||||
[
|
||||
'cgroup',
|
||||
'/sys/fs/cgroup/blkio',
|
||||
'cgroup',
|
||||
'rw,nosuid,nodev,noexec,relatime,blkio',
|
||||
'0',
|
||||
'0'],
|
||||
['cgroup',
|
||||
'0'
|
||||
],
|
||||
[
|
||||
'cgroup',
|
||||
'/sys/fs/cgroup/cpuset',
|
||||
'cgroup',
|
||||
'rw,nosuid,nodev,noexec,relatime,cpuset',
|
||||
'0',
|
||||
'0'],
|
||||
['cgroup',
|
||||
'0'
|
||||
],
|
||||
[
|
||||
'cgroup',
|
||||
'/sys/fs/cgroup/cpu,cpuacct',
|
||||
'cgroup',
|
||||
'rw,nosuid,nodev,noexec,relatime,cpu,cpuacct',
|
||||
'0',
|
||||
'0'],
|
||||
['cgroup',
|
||||
'0'
|
||||
],
|
||||
[
|
||||
'cgroup',
|
||||
'/sys/fs/cgroup/hugetlb',
|
||||
'cgroup',
|
||||
'rw,nosuid,nodev,noexec,relatime,hugetlb',
|
||||
'0',
|
||||
'0'],
|
||||
['cgroup',
|
||||
'0'
|
||||
],
|
||||
[
|
||||
'cgroup',
|
||||
'/sys/fs/cgroup/perf_event',
|
||||
'cgroup',
|
||||
'rw,nosuid,nodev,noexec,relatime,perf_event',
|
||||
'0',
|
||||
'0'],
|
||||
['cgroup',
|
||||
'0'
|
||||
],
|
||||
[
|
||||
'cgroup',
|
||||
'/sys/fs/cgroup/net_cls,net_prio',
|
||||
'cgroup',
|
||||
'rw,nosuid,nodev,noexec,relatime,net_cls,net_prio',
|
||||
'0',
|
||||
'0'],
|
||||
['configfs', '/sys/kernel/config', 'configfs', 'rw,relatime', '0', '0'],
|
||||
['/dev/mapper/fedora_dhcp129--186-root',
|
||||
'0'
|
||||
],
|
||||
['configfs', '/sys/kernel/config', 'configfs', 'rw,relatime', '0', '0'],
|
||||
[
|
||||
'/dev/mapper/fedora_dhcp129--186-root',
|
||||
'/',
|
||||
'ext4',
|
||||
'rw,seclabel,relatime,data=ordered',
|
||||
'0',
|
||||
'0'],
|
||||
['selinuxfs', '/sys/fs/selinux', 'selinuxfs', 'rw,relatime', '0', '0'],
|
||||
['systemd-1',
|
||||
'0'
|
||||
],
|
||||
['selinuxfs', '/sys/fs/selinux', 'selinuxfs', 'rw,relatime', '0', '0'],
|
||||
[
|
||||
'systemd-1',
|
||||
'/proc/sys/fs/binfmt_misc',
|
||||
'autofs',
|
||||
'rw,relatime,fd=24,pgrp=1,timeout=0,minproto=5,maxproto=5,direct',
|
||||
'0',
|
||||
'0'],
|
||||
['debugfs', '/sys/kernel/debug', 'debugfs', 'rw,seclabel,relatime', '0', '0'],
|
||||
['hugetlbfs',
|
||||
'0'
|
||||
],
|
||||
['debugfs', '/sys/kernel/debug', 'debugfs', 'rw,seclabel,relatime', '0', '0'],
|
||||
[
|
||||
'hugetlbfs',
|
||||
'/dev/hugepages',
|
||||
'hugetlbfs',
|
||||
'rw,seclabel,relatime',
|
||||
'0',
|
||||
'0'],
|
||||
['tmpfs', '/tmp', 'tmpfs', 'rw,seclabel', '0', '0'],
|
||||
['mqueue', '/dev/mqueue', 'mqueue', 'rw,seclabel,relatime', '0', '0'],
|
||||
['/dev/loop0',
|
||||
'0'
|
||||
],
|
||||
['tmpfs', '/tmp', 'tmpfs', 'rw,seclabel', '0', '0'],
|
||||
['mqueue', '/dev/mqueue', 'mqueue', 'rw,seclabel,relatime', '0', '0'],
|
||||
[
|
||||
'/dev/loop0',
|
||||
'/var/lib/machines',
|
||||
'btrfs',
|
||||
'rw,seclabel,relatime,space_cache,subvolid=5,subvol=/',
|
||||
'0',
|
||||
'0'],
|
||||
['/dev/sda1', '/boot', 'ext4', 'rw,seclabel,relatime,data=ordered', '0', '0'],
|
||||
# A 'none' fstype
|
||||
['/dev/sdz3', '/not/a/real/device', 'none', 'rw,seclabel,relatime,data=ordered', '0', '0'],
|
||||
# lets assume this is a bindmount
|
||||
['/dev/sdz4', '/not/a/real/bind_mount', 'ext4', 'rw,seclabel,relatime,data=ordered', '0', '0'],
|
||||
['/dev/mapper/fedora_dhcp129--186-home',
|
||||
'0'
|
||||
],
|
||||
['/dev/sda1', '/boot', 'ext4', 'rw,seclabel,relatime,data=ordered', '0', '0'],
|
||||
# A 'none' fstype
|
||||
['/dev/sdz3', '/not/a/real/device', 'none', 'rw,seclabel,relatime,data=ordered', '0', '0'],
|
||||
# lets assume this is a bindmount
|
||||
['/dev/sdz4', '/not/a/real/bind_mount', 'ext4', 'rw,seclabel,relatime,data=ordered', '0', '0'],
|
||||
[
|
||||
'/dev/mapper/fedora_dhcp129--186-home',
|
||||
'/home',
|
||||
'ext4',
|
||||
'rw,seclabel,relatime,data=ordered',
|
||||
'0',
|
||||
'0'],
|
||||
['tmpfs',
|
||||
'0'
|
||||
],
|
||||
[
|
||||
'tmpfs',
|
||||
'/run/user/1000',
|
||||
'tmpfs',
|
||||
'rw,seclabel,nosuid,nodev,relatime,size=1611044k,mode=700,uid=1000,gid=1000',
|
||||
'0',
|
||||
'0'],
|
||||
['gvfsd-fuse',
|
||||
'0'
|
||||
],
|
||||
[
|
||||
'gvfsd-fuse',
|
||||
'/run/user/1000/gvfs',
|
||||
'fuse.gvfsd-fuse',
|
||||
'rw,nosuid,nodev,relatime,user_id=1000,group_id=1000',
|
||||
'0',
|
||||
'0'],
|
||||
['fusectl', '/sys/fs/fuse/connections', 'fusectl', 'rw,relatime', '0', '0']]
|
||||
'0'
|
||||
],
|
||||
['fusectl', '/sys/fs/fuse/connections', 'fusectl', 'rw,relatime', '0', '0']]
|
||||
|
||||
BIND_MOUNTS = ['/not/a/real/bind_mount']
|
||||
|
||||
|
@ -481,7 +528,7 @@ class TestFactsLinuxHardwareGetMountFacts(unittest.TestCase):
|
|||
self.assertIsInstance(bind_mounts, set)
|
||||
self.assertEqual(len(bind_mounts), 0)
|
||||
|
||||
@patch('ansible.module_utils.facts.LinuxHardware._run_lsblk', return_value=(0, LSBLK_OUTPUT,''))
|
||||
@patch('ansible.module_utils.facts.LinuxHardware._run_lsblk', return_value=(0, LSBLK_OUTPUT, ''))
|
||||
def test_lsblk_uuid(self, mock_run_lsblk):
|
||||
module = Mock()
|
||||
lh = facts.LinuxHardware(module=module, load_on_init=False)
|
||||
|
@ -492,7 +539,7 @@ class TestFactsLinuxHardwareGetMountFacts(unittest.TestCase):
|
|||
self.assertIn(b'/dev/sda1', lsblk_uuids)
|
||||
self.assertEquals(lsblk_uuids[b'/dev/sda1'], b'32caaec3-ef40-4691-a3b6-438c3f9bc1c0')
|
||||
|
||||
@patch('ansible.module_utils.facts.LinuxHardware._run_lsblk', return_value=(37, LSBLK_OUTPUT,''))
|
||||
@patch('ansible.module_utils.facts.LinuxHardware._run_lsblk', return_value=(37, LSBLK_OUTPUT, ''))
|
||||
def test_lsblk_uuid_non_zero(self, mock_run_lsblk):
|
||||
module = Mock()
|
||||
lh = facts.LinuxHardware(module=module, load_on_init=False)
|
||||
|
@ -510,7 +557,7 @@ class TestFactsLinuxHardwareGetMountFacts(unittest.TestCase):
|
|||
self.assertIsInstance(lsblk_uuids, dict)
|
||||
self.assertEquals(len(lsblk_uuids), 0)
|
||||
|
||||
@patch('ansible.module_utils.facts.LinuxHardware._run_lsblk', return_value=(0, LSBLK_OUTPUT_2,''))
|
||||
@patch('ansible.module_utils.facts.LinuxHardware._run_lsblk', return_value=(0, LSBLK_OUTPUT_2, ''))
|
||||
def test_lsblk_uuid_dev_with_space_in_name(self, mock_run_lsblk):
|
||||
module = Mock()
|
||||
lh = facts.LinuxHardware(module=module, load_on_init=False)
|
||||
|
|
|
@ -28,50 +28,73 @@ from units.mock.procenv import swap_stdin_and_argv
|
|||
|
||||
class TestAnsibleModuleKnownHosts(unittest.TestCase):
|
||||
urls = {
|
||||
'ssh://one.example.org/example.git':
|
||||
{'is_ssh_url': True, 'get_fqdn': 'one.example.org',
|
||||
'add_host_key_cmd': " -t rsa one.example.org",
|
||||
'port': None},
|
||||
'ssh+git://two.example.org/example.git':
|
||||
{'is_ssh_url': True, 'get_fqdn': 'two.example.org',
|
||||
'add_host_key_cmd': " -t rsa two.example.org",
|
||||
'port': None},
|
||||
'rsync://three.example.org/user/example.git':
|
||||
{'is_ssh_url': False, 'get_fqdn': 'three.example.org',
|
||||
'add_host_key_cmd': None, # not called for non-ssh urls
|
||||
'port': None},
|
||||
'git@four.example.org:user/example.git':
|
||||
{'is_ssh_url': True, 'get_fqdn': 'four.example.org',
|
||||
'add_host_key_cmd': " -t rsa four.example.org",
|
||||
'port': None},
|
||||
'git+ssh://five.example.org/example.git':
|
||||
{'is_ssh_url': True, 'get_fqdn': 'five.example.org',
|
||||
'add_host_key_cmd': " -t rsa five.example.org",
|
||||
'port': None},
|
||||
'ssh://six.example.org:21/example.org': # ssh on FTP Port?
|
||||
{'is_ssh_url': True, 'get_fqdn': 'six.example.org',
|
||||
'add_host_key_cmd': " -t rsa -p 21 six.example.org",
|
||||
'port': '21'},
|
||||
'ssh://[2001:DB8::abcd:abcd]/example.git':
|
||||
{'is_ssh_url': True, 'get_fqdn': '[2001:DB8::abcd:abcd]',
|
||||
'add_host_key_cmd': " -t rsa [2001:DB8::abcd:abcd]",
|
||||
'port': None},
|
||||
'ssh://[2001:DB8::abcd:abcd]:22/example.git':
|
||||
{'is_ssh_url': True, 'get_fqdn': '[2001:DB8::abcd:abcd]',
|
||||
'add_host_key_cmd': " -t rsa -p 22 [2001:DB8::abcd:abcd]",
|
||||
'port': '22'},
|
||||
'username@[2001:DB8::abcd:abcd]/example.git':
|
||||
{'is_ssh_url': True, 'get_fqdn': '[2001:DB8::abcd:abcd]',
|
||||
'add_host_key_cmd': " -t rsa [2001:DB8::abcd:abcd]",
|
||||
'port': None},
|
||||
'username@[2001:DB8::abcd:abcd]:path/example.git':
|
||||
{'is_ssh_url': True, 'get_fqdn': '[2001:DB8::abcd:abcd]',
|
||||
'add_host_key_cmd': " -t rsa [2001:DB8::abcd:abcd]",
|
||||
'port': None},
|
||||
'ssh://internal.git.server:7999/repos/repo.git':
|
||||
{'is_ssh_url': True, 'get_fqdn': 'internal.git.server',
|
||||
'add_host_key_cmd': " -t rsa -p 7999 internal.git.server",
|
||||
'port': '7999'}
|
||||
'ssh://one.example.org/example.git': {
|
||||
'is_ssh_url': True,
|
||||
'get_fqdn': 'one.example.org',
|
||||
'add_host_key_cmd': " -t rsa one.example.org",
|
||||
'port': None,
|
||||
},
|
||||
'ssh+git://two.example.org/example.git': {
|
||||
'is_ssh_url': True,
|
||||
'get_fqdn': 'two.example.org',
|
||||
'add_host_key_cmd': " -t rsa two.example.org",
|
||||
'port': None,
|
||||
},
|
||||
'rsync://three.example.org/user/example.git': {
|
||||
'is_ssh_url': False,
|
||||
'get_fqdn': 'three.example.org',
|
||||
'add_host_key_cmd': None, # not called for non-ssh urls
|
||||
'port': None,
|
||||
},
|
||||
'git@four.example.org:user/example.git': {
|
||||
'is_ssh_url': True,
|
||||
'get_fqdn': 'four.example.org',
|
||||
'add_host_key_cmd': " -t rsa four.example.org",
|
||||
'port': None,
|
||||
},
|
||||
'git+ssh://five.example.org/example.git': {
|
||||
'is_ssh_url': True,
|
||||
'get_fqdn': 'five.example.org',
|
||||
'add_host_key_cmd': " -t rsa five.example.org",
|
||||
'port': None,
|
||||
},
|
||||
'ssh://six.example.org:21/example.org': {
|
||||
# ssh on FTP Port?
|
||||
'is_ssh_url': True,
|
||||
'get_fqdn': 'six.example.org',
|
||||
'add_host_key_cmd': " -t rsa -p 21 six.example.org",
|
||||
'port': '21',
|
||||
},
|
||||
'ssh://[2001:DB8::abcd:abcd]/example.git': {
|
||||
'is_ssh_url': True,
|
||||
'get_fqdn': '[2001:DB8::abcd:abcd]',
|
||||
'add_host_key_cmd': " -t rsa [2001:DB8::abcd:abcd]",
|
||||
'port': None,
|
||||
},
|
||||
'ssh://[2001:DB8::abcd:abcd]:22/example.git': {
|
||||
'is_ssh_url': True,
|
||||
'get_fqdn': '[2001:DB8::abcd:abcd]',
|
||||
'add_host_key_cmd': " -t rsa -p 22 [2001:DB8::abcd:abcd]",
|
||||
'port': '22',
|
||||
},
|
||||
'username@[2001:DB8::abcd:abcd]/example.git': {
|
||||
'is_ssh_url': True,
|
||||
'get_fqdn': '[2001:DB8::abcd:abcd]',
|
||||
'add_host_key_cmd': " -t rsa [2001:DB8::abcd:abcd]",
|
||||
'port': None,
|
||||
},
|
||||
'username@[2001:DB8::abcd:abcd]:path/example.git': {
|
||||
'is_ssh_url': True,
|
||||
'get_fqdn': '[2001:DB8::abcd:abcd]',
|
||||
'add_host_key_cmd': " -t rsa [2001:DB8::abcd:abcd]",
|
||||
'port': None,
|
||||
},
|
||||
'ssh://internal.git.server:7999/repos/repo.git': {
|
||||
'is_ssh_url': True,
|
||||
'get_fqdn': 'internal.git.server',
|
||||
'add_host_key_cmd': " -t rsa -p 7999 internal.git.server",
|
||||
'port': '7999',
|
||||
},
|
||||
}
|
||||
|
||||
def test_is_ssh_url(self):
|
||||
|
|
|
@ -14,6 +14,7 @@ import pprint
|
|||
|
||||
realimport = builtins.__import__
|
||||
|
||||
|
||||
class TestPostgres(unittest.TestCase):
|
||||
def clear_modules(self, mods):
|
||||
for mod in mods:
|
||||
|
@ -72,4 +73,3 @@ class TestPostgres(unittest.TestCase):
|
|||
with self.assertRaises(mod.module_utils.postgres.LibraryError) as context:
|
||||
mod.module_utils.postgres.ensure_libs(sslrootcert='yes')
|
||||
self.assertIn('psycopg2 must be at least 2.4.3 in order to use', to_native(context.exception))
|
||||
|
||||
|
|
|
@ -37,16 +37,19 @@ VALID_STRINGS = (
|
|||
# u'くらとみ'
|
||||
(b'\xe3\x81\x8f\xe3\x82\x89\xe3\x81\xa8\xe3\x81\xbf', u'\u304f\u3089\u3068\u307f', 'utf-8'),
|
||||
(b'\x82\xad\x82\xe7\x82\xc6\x82\xdd', u'\u304f\u3089\u3068\u307f', 'shift-jis'),
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
def _check_to_text(self, in_string, encoding, expected):
|
||||
"""test happy path of decoding to text"""
|
||||
self.assertEqual(to_text(in_string, encoding), expected)
|
||||
|
||||
|
||||
def _check_to_bytes(self, in_string, encoding, expected):
|
||||
"""test happy path of encoding to bytes"""
|
||||
self.assertEqual(to_bytes(in_string, encoding), expected)
|
||||
|
||||
|
||||
def _check_to_native(self, in_string, encoding, py2_expected, py3_expected):
|
||||
"""test happy path of encoding to native strings"""
|
||||
if PY3:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue