@@ -296,7 +296,7 @@ def test_parse_redirect_append(parser):
296296 assert statement .output == '>>'
297297 assert statement .output_to == '/tmp/afile.txt'
298298
299- def test_parse_pipe_and_redirect (parser ):
299+ def test_parse_pipe_then_redirect (parser ):
300300 line = 'output into;sufx | pipethrume plz > afile.txt'
301301 statement = parser .parse (line )
302302 assert statement .command == 'output'
@@ -310,6 +310,104 @@ def test_parse_pipe_and_redirect(parser):
310310 assert statement .output == ''
311311 assert statement .output_to == ''
312312
313+ def test_parse_multiple_pipes (parser ):
314+ line = 'output into;sufx | pipethrume plz | grep blah'
315+ statement = parser .parse (line )
316+ assert statement .command == 'output'
317+ assert statement == 'into'
318+ assert statement .args == statement
319+ assert statement .argv == ['output' , 'into' ]
320+ assert statement .arg_list == statement .argv [1 :]
321+ assert statement .terminator == ';'
322+ assert statement .suffix == 'sufx'
323+ assert statement .pipe_to == 'pipethrume plz | grep blah'
324+ assert statement .output == ''
325+ assert statement .output_to == ''
326+
327+ def test_redirect_then_pipe (parser ):
328+ line = 'help alias > file.txt | grep blah'
329+ statement = parser .parse (line )
330+ assert statement .command == 'help'
331+ assert statement == 'alias'
332+ assert statement .args == statement
333+ assert statement .argv == ['help' , 'alias' ]
334+ assert statement .arg_list == statement .argv [1 :]
335+ assert statement .terminator == ''
336+ assert statement .suffix == ''
337+ assert statement .pipe_to == ''
338+ assert statement .output == '>'
339+ assert statement .output_to == 'file.txt'
340+
341+ def test_append_then_pipe (parser ):
342+ line = 'help alias >> file.txt | grep blah'
343+ statement = parser .parse (line )
344+ assert statement .command == 'help'
345+ assert statement == 'alias'
346+ assert statement .args == statement
347+ assert statement .argv == ['help' , 'alias' ]
348+ assert statement .arg_list == statement .argv [1 :]
349+ assert statement .terminator == ''
350+ assert statement .suffix == ''
351+ assert statement .pipe_to == ''
352+ assert statement .output == '>>'
353+ assert statement .output_to == 'file.txt'
354+
355+ def test_append_then_redirect (parser ):
356+ line = 'help alias >> file.txt > file2.txt'
357+ statement = parser .parse (line )
358+ assert statement .command == 'help'
359+ assert statement == 'alias'
360+ assert statement .args == statement
361+ assert statement .argv == ['help' , 'alias' ]
362+ assert statement .arg_list == statement .argv [1 :]
363+ assert statement .terminator == ''
364+ assert statement .suffix == ''
365+ assert statement .pipe_to == ''
366+ assert statement .output == '>>'
367+ assert statement .output_to == 'file.txt'
368+
369+ def test_redirect_then_append (parser ):
370+ line = 'help alias > file.txt >> file2.txt'
371+ statement = parser .parse (line )
372+ assert statement .command == 'help'
373+ assert statement == 'alias'
374+ assert statement .args == statement
375+ assert statement .argv == ['help' , 'alias' ]
376+ assert statement .arg_list == statement .argv [1 :]
377+ assert statement .terminator == ''
378+ assert statement .suffix == ''
379+ assert statement .pipe_to == ''
380+ assert statement .output == '>'
381+ assert statement .output_to == 'file.txt'
382+
383+ def test_redirect_to_quoted_string (parser ):
384+ line = 'help alias > "file.txt"'
385+ statement = parser .parse (line )
386+ assert statement .command == 'help'
387+ assert statement == 'alias'
388+ assert statement .args == statement
389+ assert statement .argv == ['help' , 'alias' ]
390+ assert statement .arg_list == statement .argv [1 :]
391+ assert statement .terminator == ''
392+ assert statement .suffix == ''
393+ assert statement .pipe_to == ''
394+ assert statement .output == '>'
395+ assert statement .output_to == '"file.txt"'
396+
397+ def test_redirect_to_empty_quoted_string (parser ):
398+ line = 'help alias > ""'
399+ statement = parser .parse (line )
400+ assert statement .command == 'help'
401+ assert statement == 'alias'
402+ assert statement .args == statement
403+ assert statement .argv == ['help' , 'alias' ]
404+ assert statement .arg_list == statement .argv [1 :]
405+ assert statement .terminator == ''
406+ assert statement .suffix == ''
407+ assert statement .pipe_to == ''
408+ assert statement .output == '>'
409+ assert statement .output_to == ''
410+
313411def test_parse_output_to_paste_buffer (parser ):
314412 line = 'output to paste buffer >> '
315413 statement = parser .parse (line )
0 commit comments