diff options
Diffstat (limited to 'test/units/parsing/test_splitter.py')
-rw-r--r-- | test/units/parsing/test_splitter.py | 75 |
1 files changed, 71 insertions, 4 deletions
diff --git a/test/units/parsing/test_splitter.py b/test/units/parsing/test_splitter.py index a37de0f9..893f0473 100644 --- a/test/units/parsing/test_splitter.py +++ b/test/units/parsing/test_splitter.py @@ -21,10 +21,17 @@ from __future__ import (absolute_import, division, print_function) __metaclass__ = type from ansible.parsing.splitter import split_args, parse_kv +from ansible.errors import AnsibleParserError import pytest SPLIT_DATA = ( + (None, + [], + {}), + (u'', + [], + {}), (u'a', [u'a'], {u'_raw_params': u'a'}), @@ -46,6 +53,18 @@ SPLIT_DATA = ( (u'a="echo \\"hello world\\"" b=bar', [u'a="echo \\"hello world\\""', u'b=bar'], {u'a': u'echo "hello world"', u'b': u'bar'}), + (u'a="nest\'ed"', + [u'a="nest\'ed"'], + {u'a': u'nest\'ed'}), + (u' ', + [u' '], + {u'_raw_params': u' '}), + (u'\\ ', + [u' '], + {u'_raw_params': u' '}), + (u'a\\=escaped', + [u'a\\=escaped'], + {u'_raw_params': u'a=escaped'}), (u'a="multi\nline"', [u'a="multi\nline"'], {u'a': u'multi\nline'}), @@ -61,12 +80,27 @@ SPLIT_DATA = ( (u'a="multiline\nmessage1\\\n" b="multiline\nmessage2\\\n"', [u'a="multiline\nmessage1\\\n"', u'b="multiline\nmessage2\\\n"'], {u'a': 'multiline\nmessage1\\\n', u'b': u'multiline\nmessage2\\\n'}), + (u'line \\\ncontinuation', + [u'line', u'continuation'], + {u'_raw_params': u'line continuation'}), + (u'not jinja}}', + [u'not', u'jinja}}'], + {u'_raw_params': u'not jinja}}'}), + (u'a={{multiline\njinja}}', + [u'a={{multiline\njinja}}'], + {u'a': u'{{multiline\njinja}}'}), (u'a={{jinja}}', [u'a={{jinja}}'], {u'a': u'{{jinja}}'}), (u'a={{ jinja }}', [u'a={{ jinja }}'], {u'a': u'{{ jinja }}'}), + (u'a={% jinja %}', + [u'a={% jinja %}'], + {u'a': u'{% jinja %}'}), + (u'a={# jinja #}', + [u'a={# jinja #}'], + {u'a': u'{# jinja #}'}), (u'a="{{jinja}}"', [u'a="{{jinja}}"'], {u'a': u'{{jinja}}'}), @@ -94,17 +128,50 @@ SPLIT_DATA = ( (u'One\n Two\n Three\n', [u'One\n ', u'Two\n ', u'Three\n'], {u'_raw_params': u'One\n Two\n Three\n'}), + (u'\nOne\n Two\n Three\n', + [u'\n', u'One\n ', u'Two\n ', u'Three\n'], + {u'_raw_params': u'\nOne\n Two\n Three\n'}), ) -SPLIT_ARGS = ((test[0], test[1]) for test in SPLIT_DATA) -PARSE_KV = ((test[0], test[2]) for test in SPLIT_DATA) +PARSE_KV_CHECK_RAW = ( + (u'raw=yes', {u'_raw_params': u'raw=yes'}), + (u'creates=something', {u'creates': u'something'}), +) + +PARSER_ERROR = ( + '"', + "'", + '{{', + '{%', + '{#', +) +SPLIT_ARGS = tuple((test[0], test[1]) for test in SPLIT_DATA) +PARSE_KV = tuple((test[0], test[2]) for test in SPLIT_DATA) -@pytest.mark.parametrize("args, expected", SPLIT_ARGS) + +@pytest.mark.parametrize("args, expected", SPLIT_ARGS, ids=[str(arg[0]) for arg in SPLIT_ARGS]) def test_split_args(args, expected): assert split_args(args) == expected -@pytest.mark.parametrize("args, expected", PARSE_KV) +@pytest.mark.parametrize("args, expected", PARSE_KV, ids=[str(arg[0]) for arg in PARSE_KV]) def test_parse_kv(args, expected): assert parse_kv(args) == expected + + +@pytest.mark.parametrize("args, expected", PARSE_KV_CHECK_RAW, ids=[str(arg[0]) for arg in PARSE_KV_CHECK_RAW]) +def test_parse_kv_check_raw(args, expected): + assert parse_kv(args, check_raw=True) == expected + + +@pytest.mark.parametrize("args", PARSER_ERROR) +def test_split_args_error(args): + with pytest.raises(AnsibleParserError): + split_args(args) + + +@pytest.mark.parametrize("args", PARSER_ERROR) +def test_parse_kv_error(args): + with pytest.raises(AnsibleParserError): + parse_kv(args) |