Created
October 12, 2014 07:27
-
-
Save abadger/cdcce06178980917ae31 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from ansible.parsing.mod_args import ModuleArgsParser | |
import unittest | |
class CompatTestCase(unittest.TestCase): | |
def _assertIsNone(self, obj, msg=None): | |
"""Same as self.assertTrue(obj is None), with a nicer default message.""" | |
if obj is not None: | |
standardMsg = '%s is not None' % (safe_repr(obj),) | |
self.fail(self._formatMessage(msg, standardMsg)) | |
def _assertIsNotNone(self, obj, msg=None): | |
"""Included for symmetry with assertIsNone.""" | |
if obj is None: | |
standardMsg = 'unexpectedly None' | |
self.fail(self._formatMessage(msg, standardMsg)) | |
def _assertIs(self, expr1, expr2, msg=None): | |
"""Just like self.assertTrue(a is b), but with a nicer default message.""" | |
if expr1 is not expr2: | |
standardMsg = '%s is not %s' % (safe_repr(expr1), | |
safe_repr(expr2)) | |
self.fail(self._formatMessage(msg, standardMsg)) | |
def _assertIsNot(self, expr1, expr2, msg=None): | |
"""Just like self.assertTrue(a is not b), but with a nicer default message.""" | |
if expr1 is expr2: | |
standardMsg = 'unexpectedly identical: %s' % (safe_repr(expr1),) | |
self.fail(self._formatMessage(msg, standardMsg)) | |
def _assertIn(self, member, container, msg=None): | |
"""Just like self.assertTrue(a in b), but with a nicer default message.""" | |
if member not in container: | |
standardMsg = '%s not found in %s' % (safe_repr(member), | |
safe_repr(container)) | |
self.fail(self._formatMessage(msg, standardMsg)) | |
def _assertNotIn(self, member, container, msg=None): | |
"""Just like self.assertTrue(a not in b), but with a nicer default message.""" | |
if member in container: | |
standardMsg = '%s unexpectedly found in %s' % (safe_repr(member), | |
safe_repr(container)) | |
self.fail(self._formatMessage(msg, standardMsg)) | |
def __init__(self, *args, **kwargs): | |
# Python 2.6 compat | |
if not hasattr(self, 'assertIsNone'): | |
self.assertIsNone = self._assertIsNone | |
if not hasattr(self, 'assertIsNotNone'): | |
self.assertIsNotNone = self._assertIsNotNone | |
if not hasattr(self, 'assertIs'): | |
self.assertIs = self._assertIs | |
if not hasattr(self, 'assertIsNot'): | |
self.assertIsNot = self._assertIsNot | |
if not hasattr(self, 'assertIn'): | |
self.assertIn = self._assertIn | |
if not hasattr(self, 'assertNotIn'): | |
self.assertNotIn = self._assertNotIn | |
super(CompatTestCase, self).__init__(*args, **kwargs) | |
class TestModArgsDwim(CompatTestCase): | |
# TODO: add tests that construct ModuleArgsParser with a task reference | |
# TODO: verify the AnsibleError raised on failure knows the task | |
# and the task knows the line numbers | |
def setUp(self): | |
self.m = ModuleArgsParser() | |
pass | |
def _debug(self, mod, args, to): | |
print "RETURNED module = %s" % mod | |
print " args = %s" % args | |
print " to = %s" % to | |
def tearDown(self): | |
pass | |
def test_basic_shell(self): | |
mod, args, to = self.m.parse(dict(shell='echo hi')) | |
self._debug(mod, args, to) | |
self.assertEqual(mod, 'command') | |
self.assertEqual(args, dict( | |
_raw_params = 'echo hi', | |
_uses_shell = True, | |
)) | |
self.assertIsNone(to) | |
def test_basic_command(self): | |
mod, args, to = self.m.parse(dict(command='echo hi')) | |
self._debug(mod, args, to) | |
self.assertEqual(mod, 'command') | |
self.assertEqual(args, dict( | |
_raw_params = 'echo hi', | |
)) | |
self.assertIsNone(to) | |
def test_shell_with_modifiers(self): | |
mod, args, to = self.m.parse(dict(shell='/bin/foo creates=/tmp/baz removes=/tmp/bleep')) | |
self._debug(mod, args, to) | |
self.assertEqual(mod, 'command') | |
self.assertEqual(args, dict( | |
creates = '/tmp/baz', | |
removes = '/tmp/bleep', | |
_raw_params = '/bin/foo', | |
_uses_shell = True, | |
)) | |
self.assertIsNone(to) | |
def test_normal_usage(self): | |
mod, args, to = self.m.parse(dict(copy='src=a dest=b')) | |
self._debug(mod, args, to) | |
self.assertEqual(mod, 'copy') | |
self.assertEqual(args, dict(src='a', dest='b')) | |
self.assertIsNone(to) | |
def test_complex_args(self): | |
mod, args, to = self.m.parse(dict(copy=dict(src='a', dest='b'))) | |
self._debug(mod, args, to) | |
self.assertEqual(mod, 'copy') | |
self.assertEqual(args, dict(src='a', dest='b')) | |
self.assertIsNone(to) | |
def test_action_with_complex(self): | |
mod, args, to = self.m.parse(dict(action=dict(module='copy', src='a', dest='b'))) | |
self._debug(mod, args, to) | |
self.assertEqual(mod, 'copy') | |
self.assertEqual(args, dict(src='a', dest='b')) | |
self.assertIsNone(to) | |
def test_action_with_complex_and_complex_args(self): | |
mod, args, to = self.m.parse(dict(action=dict(module='copy', args=dict(src='a', dest='b')))) | |
self._debug(mod, args, to) | |
self.assertEqual(mod, 'copy') | |
self.assertEqual(args, dict(src='a', dest='b')) | |
self.assertIsNone(to) | |
def test_local_action_string(self): | |
mod, args, to = self.m.parse(dict(local_action='copy src=a dest=b')) | |
self._debug(mod, args, to) | |
self.assertEqual(mod, 'copy') | |
self.assertEqual(args, dict(src='a', dest='b')) | |
self.assertIs(to, 'localhost') |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment