summaryrefslogtreecommitdiff
path: root/test/units/parsing/test_splitter.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/units/parsing/test_splitter.py')
-rw-r--r--test/units/parsing/test_splitter.py75
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)