salt/tests/unit/utils/format_call_test.py
2015-01-30 22:25:04 +00:00

64 lines
1.7 KiB
Python

# -*- coding: utf-8 -*-
'''
:codeauthor: :email:`Pedro Algarvio (pedro@algarvio.me)`
tests.unit.utils.format_call_test
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Test `salt.utils.format_call`
'''
# Import python libs
from __future__ import absolute_import
# Import Salt Testing libs
from salttesting import TestCase
from salttesting.helpers import ensure_in_syspath
ensure_in_syspath('../../')
# Import salt libs
from salt.utils import format_call
from salt.exceptions import SaltInvocationError
class TestFormatCall(TestCase):
def test_simple_args_passing(self):
def foo(one, two=2, three=3):
pass
self.assertEqual(
format_call(foo, dict(one=10, two=20, three=30)),
{'args': [10], 'kwargs': dict(two=20, three=30)}
)
self.assertEqual(
format_call(foo, dict(one=10, two=20)),
{'args': [10], 'kwargs': dict(two=20, three=3)}
)
self.assertEqual(
format_call(foo, dict(one=2)),
{'args': [2], 'kwargs': dict(two=2, three=3)}
)
def test_mimic_typeerror_exceptions(self):
def foo(one, two=2, three=3):
pass
def foo2(one, two, three=3):
pass
with self.assertRaisesRegexp(
SaltInvocationError,
r'foo takes at least 1 argument \(0 given\)'):
format_call(foo, dict(two=3))
with self.assertRaisesRegexp(
TypeError,
r'foo2 takes at least 2 arguments \(1 given\)'):
format_call(foo2, dict(one=1))
if __name__ == '__main__':
from integration import run_tests
run_tests(TestFormatCall, needs_daemon=False)