| #[cfg(test)] | |
| mod test { | |
| summary_test! { | |
| tokenize_recipe_interpolation_eol, | |
| "foo: # some comment | |
| {{hello}} | |
| ", | |
| "foo: \ | |
| {{hello}} \ | |
| {{ahah}}", | |
| "N:#$>^{N}$<.", | |
| } | |
| summary_test! { | |
| tokenize_strings, | |
| r#"a = "'a'" + '"b"' + "'c'" + '"d"'#echo hello"#, | |
| r#"N="+'+"+'#."#, | |
| } | |
| summary_test! { | |
| tokenize_recipe_interpolation_eol, | |
| "foo: # some comment | |
| {{hello}} | |
| ", | |
| "N:#$>^{N}$<.", | |
| } | |
| summary_test! { | |
| tokenize_recipe_interpolation_eof, | |
| "foo: # more comments | |
| {{hello}} | |
| # another comment | |
| ", | |
| "N:#$>^{N}$<#$.", | |
| } | |
| summary_test! { | |
| tokenize_recipe_complex_interpolation_expression, | |
| "foo: #lol\n {{a + b + \"z\" + blarg}}", | |
| "N:#$>^{N+N+\"+N}<.", | |
| } | |
| summary_test! { | |
| tokenize_recipe_multiple_interpolations, | |
| "foo:,#ok\n {{a}}0{{b}}1{{c}}", | |
| "N:,#$>^{N}_{N}_{N}<.", | |
| } | |
| summary_test! { | |
| tokenize_junk, | |
| "bob | |
| hello blah blah blah : a b c #whatever | |
| ", | |
| "N$$NNNN:NNN#$.", | |
| } | |
| summary_test! { | |
| tokenize_empty_lines, | |
| " | |
| # this does something | |
| hello: | |
| asdf | |
| bsdf | |
| csdf | |
| dsdf # whatever | |
| # yolo | |
| ", | |
| "$#$N:$>^_$^_$$^_$$^_$$<#$.", | |
| } | |
| summary_test! { | |
| tokenize_comment_before_variable, | |
| " | |
| # | |
| A='1' | |
| echo: | |
| echo {{A}} | |
| ", | |
| "$#$N='$N:$>^_{N}$<.", | |
| } | |
| summary_test! { | |
| tokenize_interpolation_backticks, | |
| "hello:\n echo {{`echo hello` + `echo goodbye`}}", | |
| "N:$>^_{`+`}<.", | |
| } | |
| summary_test! { | |
| tokenize_assignment_backticks, | |
| "a = `echo hello` + `echo goodbye`", | |
| "N=`+`.", | |
| } | |
| summary_test! { | |
| tokenize_multiple, | |
| " | |
| hello: | |
| a | |
| b | |
| c | |
| d | |
| # hello | |
| bob: | |
| frank | |
| ", | |
| "$N:$>^_$^_$$^_$$^_$$<#$N:$>^_$<.", | |
| } | |
| summary_test! { | |
| tokenize_comment, | |
| "a:=#", | |
| "N:=#." | |
| } | |
| summary_test! { | |
| tokenize_comment_with_bang, | |
| "a:=#foo!", | |
| "N:=#." | |
| } | |
| summary_test! { | |
| tokenize_order, | |
| r" | |
| b: a | |
| @mv a b | |
| a: | |
| @touch F | |
| @touch a | |
| d: c | |
| @rm c | |
| c: b | |
| @mv b c", | |
| "$N:N$>^_$$<N:$>^_$^_$$<N:N$>^_$$<N:N$>^_<.", | |
| } | |
| summary_test! { | |
| tokenize_parens, | |
| r"((())) )abc(+", | |
| "((())))N(+.", | |
| } | |
| summary_test! { | |
| crlf_newline, | |
| "#\r\n#asdf\r\n", | |
| "#$#$.", | |
| } | |
| } |