@@ -70,4 +70,54 @@ describe YouPlot2::Parser do
7070 File .delete(pass_path) if File .exists?(pass_path)
7171 end
7272 end
73+
74+ it " treats hyphen output targets as stdout" do
75+ argv = [" line" , " -o" , " -" , " -O" , " -" , " -w" , " 17" ]
76+
77+ params = YouPlot2 ::Parameters .new
78+ options = YouPlot2 ::Options .new
79+ parser = YouPlot2 ::Parser .new(argv, params, options)
80+
81+ parser.parse
82+
83+ options.output.object_id.should eq(STDOUT .object_id)
84+ options.output_path.should be_nil
85+ options.pass.try(& .object_id).should eq(STDOUT .object_id)
86+ options.pass_path.should be_nil
87+ params.width.should eq(17 )
88+ parser.input_files.should eq([] of String )
89+ end
90+
91+ it " treats long hyphen output targets as stdout" do
92+ argv = [" line" , " --output" , " -" , " --pass" , " -" , " -w" , " 17" ]
93+
94+ params = YouPlot2 ::Parameters .new
95+ options = YouPlot2 ::Options .new
96+ parser = YouPlot2 ::Parser .new(argv, params, options)
97+
98+ parser.parse
99+
100+ options.output.object_id.should eq(STDOUT .object_id)
101+ options.output_path.should be_nil
102+ options.pass.try(& .object_id).should eq(STDOUT .object_id)
103+ options.pass_path.should be_nil
104+ params.width.should eq(17 )
105+ parser.input_files.should eq([] of String )
106+ end
107+
108+ it " keeps file output targets as paths" do
109+ argv = [" line" , " -o" , " plot.txt" , " -O" , " data.tsv" , " input.csv" ]
110+
111+ params = YouPlot2 ::Parameters .new
112+ options = YouPlot2 ::Options .new
113+ parser = YouPlot2 ::Parser .new(argv, params, options)
114+
115+ parser.parse
116+
117+ options.output.object_id.should eq(STDERR .object_id)
118+ options.output_path.should eq(" plot.txt" )
119+ options.pass.should be_nil
120+ options.pass_path.should eq(" data.tsv" )
121+ parser.input_files.should eq([" input.csv" ])
122+ end
73123end
0 commit comments