|
|
@@ -719,39 +719,203 @@ output: [Text(text="{{foo|\nb\nar\n=ba\nz}}")] |
|
|
|
|
|
|
|
--- |
|
|
|
|
|
|
|
name: incomplete_tests |
|
|
|
|
|
|
|
"{{\nfoo\n|\nbar\n=\nb\naz\n|\nb\nuz\n}}" |
|
|
|
"{{\nfoo\n|\nb\nar\n|\nbaz\n=\nb\nuz\n}}" |
|
|
|
|
|
|
|
"{{\nfoo\n|\n{{\nbar\n|\nbaz\n=\nb\niz\n}}\n=\nb\nuzz\n}}" |
|
|
|
|
|
|
|
"{{foo{bar}}" |
|
|
|
"{{foo}bar}}" |
|
|
|
"{{{foobar}}" |
|
|
|
"{{foo{b{ar}}" |
|
|
|
"{{foo[bar}}" |
|
|
|
"{{foo]bar}}" |
|
|
|
"{{[foobar}}" |
|
|
|
"{{foobar]}}" |
|
|
|
|
|
|
|
"{{foo|ba{r}}" |
|
|
|
"{{foo|ba{r}}}" |
|
|
|
"{{foo|ba{r}=baz}}" |
|
|
|
"{{foo|ba[r]}}" |
|
|
|
|
|
|
|
"{{foobar" |
|
|
|
"{{foobar}" |
|
|
|
"{{foobar|" |
|
|
|
"{{foo|bar" |
|
|
|
"{{foo|bar|" |
|
|
|
"{{foo|bar=" |
|
|
|
"{{foo|bar=|" |
|
|
|
"{{foo|bar=baz" |
|
|
|
"{{foo|bar=baz|" |
|
|
|
"{{foo|bar|baz" |
|
|
|
"{{foo|bar|baz=" |
|
|
|
"{{foo|bar|baz=biz" |
|
|
|
"{{foo|bar=baz|biz" |
|
|
|
"{{foo|bar=baz|biz=" |
|
|
|
"{{foo|bar=baz|biz=buzz" |
|
|
|
name: newline_wildcard |
|
|
|
label: a random, complex assortment of templates and newlines |
|
|
|
input: "{{\nfoo\n|\nbar\n=\nb\naz\n|\nb\nuz\n}}" |
|
|
|
output: [TemplateOpen(), Text(text="\nfoo\n"), TemplateParamSeparator(), Text(text="\nbar\n"), TemplateParamEquals(), Text(text="\nb\naz\n"), TemplateParamSeparator(), Text(text="\nb\nuz\n"), TemplateClose()] |
|
|
|
|
|
|
|
--- |
|
|
|
|
|
|
|
name: newline_wildcard_redux |
|
|
|
label: an even more random and complex assortment of templates and newlines |
|
|
|
input: "{{\nfoo\n|\n{{\nbar\n|\nbaz\n=\nb\niz\n}}\n=\nb\nuzz\n}}" |
|
|
|
output: [TemplateOpen(), Text(text="\nfoo\n"), TemplateParamSeparator(), Text(text="\n"), TemplateOpen(), Text(text="\nbar\n"), TemplateParamSeparator(), Text(text="\nbaz\n"), TemplateParamEquals(), Text(text="\nb\niz\n"), TemplateClose(), Text(text="\n"), TemplateParamEquals(), Text(text="\nb\nuzz\n"), TemplateClose()] |
|
|
|
|
|
|
|
--- |
|
|
|
|
|
|
|
name: invalid_name_left_brace_middle |
|
|
|
label: invalid characters in template name: left brace in middle |
|
|
|
input: "{{foo{bar}}" |
|
|
|
output: [Text(text="{{foo{bar}}")] |
|
|
|
|
|
|
|
--- |
|
|
|
|
|
|
|
name: invalid_name_right_brace_middle |
|
|
|
label: invalid characters in template name: right brace in middle |
|
|
|
input: "{{foo}bar}}" |
|
|
|
output: [Text(text="{{foo}bar}}")] |
|
|
|
|
|
|
|
--- |
|
|
|
|
|
|
|
name: invalid_name_left_braces |
|
|
|
label: invalid characters in template name: two left braces in middle |
|
|
|
input: "{{foo{b{ar}}" |
|
|
|
output: [Text(text="{{foo{b{ar}}")] |
|
|
|
|
|
|
|
--- |
|
|
|
|
|
|
|
name: invalid_name_left_bracket_middle |
|
|
|
label: invalid characters in template name: left bracket in middle |
|
|
|
input: "{{foo[bar}}" |
|
|
|
output: [Text(text="{{foo[bar}}")] |
|
|
|
|
|
|
|
--- |
|
|
|
|
|
|
|
name: invalid_name_right_bracket_middle |
|
|
|
label: invalid characters in template name: right bracket in middle |
|
|
|
input: "{{foo]bar}}" |
|
|
|
output: [Text(text="{{foo]bar}}")] |
|
|
|
|
|
|
|
--- |
|
|
|
|
|
|
|
name: invalid_name_left_bracket_start |
|
|
|
label: invalid characters in template name: left bracket at start |
|
|
|
input: "{{[foobar}}" |
|
|
|
output: [Text(text="{{[foobar}}")] |
|
|
|
|
|
|
|
--- |
|
|
|
|
|
|
|
name: invalid_name_right_bracket_start |
|
|
|
label: invalid characters in template name: right bracket at end |
|
|
|
input: "{{foobar]}}" |
|
|
|
output: [Text(text="{{foobar]}}")] |
|
|
|
|
|
|
|
--- |
|
|
|
|
|
|
|
name: valid_name_left_brace_start |
|
|
|
label: valid characters in template name: left brace at start |
|
|
|
input: "{{{foobar}}" |
|
|
|
output: [Text(text="{"), TemplateOpen(), Text(text="foobar"), TemplateClose()] |
|
|
|
|
|
|
|
--- |
|
|
|
|
|
|
|
name: valid_unnamed_param_left_brace |
|
|
|
label: valid characters in unnamed template parameter: left brace |
|
|
|
input: "{{foo|ba{r}}" |
|
|
|
output: [TemplateOpen(), Text(text="foo"), TemplateParamSeparator(), Text(text="ba{r"), TemplateClose()] |
|
|
|
|
|
|
|
--- |
|
|
|
|
|
|
|
name: valid_unnamed_param_braces |
|
|
|
label: valid characters in unnamed template parameter: left and right braces |
|
|
|
input: "{{foo|ba{r}}}" |
|
|
|
output: [TemplateOpen(), Text(text="foo"), TemplateParamSeparator(), Text(text="ba{r"), TemplateClose(), Text(text="}")] |
|
|
|
|
|
|
|
--- |
|
|
|
|
|
|
|
name: valid_param_name_braces |
|
|
|
label: valid characters in template parameter name: left and right braces |
|
|
|
input: "{{foo|ba{r}=baz}}" |
|
|
|
output: [TemplateOpen(), Text(text="foo"), TemplateParamSeparator(), Text(text="ba{r}"), TemplateParamEquals(), Text(text="baz"), TemplateClose()] |
|
|
|
|
|
|
|
--- |
|
|
|
|
|
|
|
name: valid_param_name_brackets |
|
|
|
label: valid characters in unnamed template parameter: left and right brackets |
|
|
|
input: "{{foo|ba[r]}}" |
|
|
|
output: [TemplateOpen(), Text(text="foo"), TemplateParamSeparator(), Text(text="ba[r]"), TemplateClose()] |
|
|
|
|
|
|
|
--- |
|
|
|
|
|
|
|
name: incomplete_plain |
|
|
|
label: incomplete templates that should fail gracefully: no close whatsoever |
|
|
|
input: "{{stuff}} {{foobar" |
|
|
|
output: [TemplateOpen(), Text(text="stuff"), TemplateClose(), Text(text=" {{foobar")] |
|
|
|
|
|
|
|
--- |
|
|
|
|
|
|
|
name: incomplete_right_brace |
|
|
|
label: incomplete templates that should fail gracefully: only one right brace |
|
|
|
input: "{{stuff}} {{foobar}" |
|
|
|
output: [TemplateOpen(), Text(text="stuff"), TemplateClose(), Text(text=" {{foobar}")] |
|
|
|
|
|
|
|
--- |
|
|
|
|
|
|
|
name: incomplete_pipe |
|
|
|
label: incomplete templates that should fail gracefully: a pipe |
|
|
|
input: "{{stuff}} {{foobar|" |
|
|
|
output: [TemplateOpen(), Text(text="stuff"), TemplateClose(), Text(text=" {{foobar|")] |
|
|
|
|
|
|
|
--- |
|
|
|
|
|
|
|
name: incomplete_unnamed_param |
|
|
|
label: incomplete templates that should fail gracefully: an unnamed parameter |
|
|
|
input: "{{stuff}} {{foo|bar" |
|
|
|
output: [TemplateOpen(), Text(text="stuff"), TemplateClose(), Text(text=" {{foo|bar")] |
|
|
|
|
|
|
|
--- |
|
|
|
|
|
|
|
name: incomplete_unnamed_param_pipe |
|
|
|
label: incomplete templates that should fail gracefully: an unnamed parameter, then a pipe |
|
|
|
input: "{{stuff}} {{foo|bar|" |
|
|
|
output: [TemplateOpen(), Text(text="stuff"), TemplateClose(), Text(text=" {{foo|bar|")] |
|
|
|
|
|
|
|
--- |
|
|
|
|
|
|
|
name: incomplete_valueless_param |
|
|
|
label: incomplete templates that should fail gracefully: an a named parameter with no value |
|
|
|
input: "{{stuff}} {{foo|bar=" |
|
|
|
output: [TemplateOpen(), Text(text="stuff"), TemplateClose(), Text(text=" {{foo|bar=")] |
|
|
|
|
|
|
|
--- |
|
|
|
|
|
|
|
name: incomplete_valueless_param_pipe |
|
|
|
label: incomplete templates that should fail gracefully: a named parameter with no value, then a pipe |
|
|
|
input: "{{stuff}} {{foo|bar=|" |
|
|
|
output: [TemplateOpen(), Text(text="stuff"), TemplateClose(), Text(text=" {{foo|bar=|")] |
|
|
|
|
|
|
|
--- |
|
|
|
|
|
|
|
name: incomplete_named_param |
|
|
|
label: incomplete templates that should fail gracefully: a named parameter with a value |
|
|
|
input: "{{stuff}} {{foo|bar=baz" |
|
|
|
output: [TemplateOpen(), Text(text="stuff"), TemplateClose(), Text(text=" {{foo|bar=baz")] |
|
|
|
|
|
|
|
--- |
|
|
|
|
|
|
|
name: incomplete_named_param_pipe |
|
|
|
label: incomplete templates that should fail gracefully: a named parameter with a value, then a paipe |
|
|
|
input: "{{stuff}} {{foo|bar=baz|" |
|
|
|
output: [TemplateOpen(), Text(text="stuff"), TemplateClose(), Text(text=" {{foo|bar=baz|")] |
|
|
|
|
|
|
|
--- |
|
|
|
|
|
|
|
name: incomplete_two_unnamed_params |
|
|
|
label: incomplete templates that should fail gracefully: two unnamed parameters |
|
|
|
input: "{{stuff}} {{foo|bar|baz" |
|
|
|
output: [TemplateOpen(), Text(text="stuff"), TemplateClose(), Text(text=" {{foo|bar|baz")] |
|
|
|
|
|
|
|
--- |
|
|
|
|
|
|
|
name: incomplete_unnamed_param_valueless_param |
|
|
|
label: incomplete templates that should fail gracefully: an unnamed parameter, then a named parameter with no value |
|
|
|
input: "{{stuff}} {{foo|bar|baz=" |
|
|
|
output: [TemplateOpen(), Text(text="stuff"), TemplateClose(), Text(text=" {{foo|bar|baz=")] |
|
|
|
|
|
|
|
--- |
|
|
|
|
|
|
|
name: incomplete_unnamed_param_named_param |
|
|
|
label: incomplete templates that should fail gracefully: an unnamed parameter, then a named parameter with a value |
|
|
|
input: "{{stuff}} {{foo|bar|baz=biz" |
|
|
|
output: [TemplateOpen(), Text(text="stuff"), TemplateClose(), Text(text=" {{foo|bar|baz=biz")] |
|
|
|
|
|
|
|
--- |
|
|
|
|
|
|
|
name: incomplete_named_param_unnamed_param |
|
|
|
label: incomplete templates that should fail gracefully: a named parameter with a value, then an unnamed parameter |
|
|
|
input: "{{stuff}} {{foo|bar=baz|biz" |
|
|
|
output: [TemplateOpen(), Text(text="stuff"), TemplateClose(), Text(text=" {{foo|bar=baz|biz")] |
|
|
|
|
|
|
|
--- |
|
|
|
|
|
|
|
name: incomplete_named_param_valueless_param |
|
|
|
label: incomplete templates that should fail gracefully: a named parameter with a value, then a named parameter with no value |
|
|
|
input: "{{stuff}} {{foo|bar=baz|biz=" |
|
|
|
output: [TemplateOpen(), Text(text="stuff"), TemplateClose(), Text(text=" {{foo|bar=baz|biz=")] |
|
|
|
|
|
|
|
--- |
|
|
|
|
|
|
|
name: incomplete_two_named_params |
|
|
|
label: incomplete templates that should fail gracefully: two named parameters with values |
|
|
|
input: "{{stuff}} {{foo|bar=baz|biz=buzz" |
|
|
|
output: [TemplateOpen(), Text(text="stuff"), TemplateClose(), Text(text=" {{foo|bar=baz|biz=buzz")] |