...................... ---------------------------------------------------------------------- Ran 22 tests in 0.003s OK 7 --- echo \" \\ hi` --- (Token id:Id.Backtick_Other val:'echo ' span_id:0) (Token id:Id.Backtick_Quoted val:'\\"' span_id:1) (Token id:Id.Backtick_Other val:' ' span_id:2) (Token id:Id.Backtick_Quoted val:'\\\\' span_id:3) (Token id:Id.Backtick_Other val:' hi' span_id:4) (Token id:Id.Backtick_Right val:'`' span_id:5) (Token id:Id.Eof_Real val:'' span_id:6) --- ` --- (Token id:Id.Backtick_Right val:'`' span_id:0) (Token id:Id.Eof_Real val:'' span_id:1) --- --- (Token id:Id.Eof_Real val:'' span_id:0) (Token id:Id.Char_Literals val:'foo bar' span_id:0) (Token id:Id.Char_OneChar val:'\\n' span_id:1) --- @[ ] --- (Token id:Id.Left_AtBracket val:'@[' span_id:0) (Token id:Id.Ignored_Space val:' ' span_id:1) (Token id:Id.Op_RBracket val:']' span_id:2) (Token id:Id.Eof_Real val:'' span_id:3) --- hello %s\n --- (Token id:Id.Char_Literals val:'hello ' span_id:0) (Token id:Id.Format_Percent val:'%' span_id:1) (Token id:Id.Char_Literals val:s span_id:2) (Token id:Id.Char_OneChar val:'\\n' span_id:3) (Token id:Id.Eof_Real val:'' span_id:4) --- %% percent %%\377 --- (Token id:Id.Format_EscapedPercent val:'%%' span_id:0) (Token id:Id.Char_Literals val:' percent ' span_id:1) (Token id:Id.Format_EscapedPercent val:'%%' span_id:2) (Token id:Id.Char_Octal3 val:'\\377' span_id:3) (Token id:Id.Eof_Real val:'' span_id:4) --- -3.3f --- (Token id:Id.Format_Flag val:- span_id:0) (Token id:Id.Format_Num val:3 span_id:1) (Token id:Id.Format_Dot val:. span_id:2) (Token id:Id.Format_Num val:3 span_id:3) (Token id:Id.Format_Type val:f span_id:4) (Token id:Id.Eof_Real val:'' span_id:5) --- 03d --- (Token id:Id.Format_Flag val:0 span_id:0) (Token id:Id.Format_Num val:3 span_id:1) (Token id:Id.Format_Type val:d span_id:2) (Token id:Id.Eof_Real val:'' span_id:3) (Token id:Id.Left_SingleQuoteRaw val:"'" span_id:0) [(294, 'a'), (295, '..'), (294, 'z')] [(293, '100'), (295, '..'), (293, '300')] [(293, '-300'), (295, '..'), (293, '-100'), (295, '..'), (293, '1')] [(293, '1'), (296, '.'), (293, '3')] [(294, 'a'), (294, 'a')] [(146, 'newline '), (139, '\\n'), (146, ' NUL '), (139, '\\0'), (146, ' octal '), (143, '\\0377'), (146, ' hex '), (141, '\\x00')] [(146, 'unicode '), (144, '\\u0065'), (146, ' '), (145, '\\U00000065')] [(147, '\\'), (146, 'd '), (139, '\\e'), (146, ' '), (139, '\\f'), (146, ' '), (147, '\\'), (146, 'g')] [(86, '['), (86, '!'), (86, 'abc]')] [(86, '${'), (86, '!'), (86, 'indirect}')] [(86, '$'), (86, '!'), (86, 'x')] [(86, '!'), (86, '(foo|bar)')] [(86, 'echo hi')] [(86, 'echo '), (83, '!!'), (86, ' '), (83, '!*'), (86, ' '), (83, '!^'), (86, ' '), (83, '!$')] [(86, 'echo '), (86, '\\!'), (86, '!')] [(86, 'echo '), (84, '!3'), (86, '...')] [(86, 'echo '), (84, '!-5'), (86, '...')] [(86, 'echo '), (85, '!x/foo.py '), (86, 'bar')] --- [(86, 'echo '), (86, "'!!'"), (86, ' $'), (86, "'!!'"), (86, ' ')] [(86, 'echo '), (86, "'!! ")] [(86, 'echo '), (86, "\\'"), (86, ' '), (83, '!!'), (86, ' ')] [(291, 'foo')] [(287, '\\h'), (291, ' '), (287, '\\w'), (291, ' '), (287, '\\$')] P '[^\\\\\\0]+'