command_line_reporter 2.1 → 3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +29 -7
- data/examples/nested.rb +2 -2
- data/examples/progress.rb +10 -8
- data/examples/quiet.rb +1 -1
- data/examples/simple.rb +2 -1
- data/examples/table.rb +38 -16
- data/lib/column.rb +52 -35
- data/lib/command_line_reporter.rb +39 -25
- data/lib/nested_formatter.rb +20 -5
- data/lib/progress_formatter.rb +17 -2
- data/lib/row.rb +64 -46
- data/lib/table.rb +42 -28
- data/lib/version.rb +1 -1
- data/spec/column_spec.rb +342 -49
- data/spec/command_line_reporter_spec.rb +104 -3
- data/spec/nested_formatter_spec.rb +44 -3
- data/spec/progress_formatter_spec.rb +26 -0
- data/spec/row_spec.rb +47 -10
- data/spec/table_spec.rb +73 -19
- metadata +14 -3
data/spec/column_spec.rb
CHANGED
@@ -1,130 +1,423 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
require 'column'
|
3
3
|
|
4
|
-
describe Column do
|
5
|
-
|
4
|
+
describe CommandLineReporter::Column do
|
5
|
+
describe '#initialize' do
|
6
6
|
it 'rejects invalid options' do
|
7
7
|
expect {
|
8
|
-
Column.new('test', :asdf => '1234')
|
8
|
+
CommandLineReporter::Column.new('test', :asdf => '1234')
|
9
9
|
}.to raise_error ArgumentError
|
10
10
|
end
|
11
11
|
|
12
12
|
it 'defaults options hash' do
|
13
13
|
expect {
|
14
|
-
Column.new('test')
|
14
|
+
CommandLineReporter::Column.new('test')
|
15
15
|
}.to_not raise_error
|
16
16
|
end
|
17
17
|
|
18
18
|
it 'defaults the width' do
|
19
|
-
Column.new('test').width.should == 10
|
19
|
+
CommandLineReporter::Column.new('test').width.should == 10
|
20
20
|
end
|
21
21
|
|
22
22
|
it 'accepts the width' do
|
23
|
-
Column.new('test', :width => 50).width.should == 50
|
23
|
+
CommandLineReporter::Column.new('test', :width => 50).width.should == 50
|
24
24
|
end
|
25
25
|
|
26
26
|
it 'requires valid width' do
|
27
27
|
expect {
|
28
|
-
Column.new('test', :width => 'asdf')
|
28
|
+
CommandLineReporter::Column.new('test', :width => 'asdf')
|
29
29
|
}.to raise_error ArgumentError
|
30
30
|
end
|
31
31
|
|
32
32
|
it 'accepts text' do
|
33
|
-
Column.new('asdf').text.should == 'asdf'
|
33
|
+
CommandLineReporter::Column.new('asdf').text.should == 'asdf'
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'accepts color' do
|
37
|
+
CommandLineReporter::Column.new('asdf', :color => 'red').color.should == 'red'
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'accepts bold' do
|
41
|
+
CommandLineReporter::Column.new('asdf', :bold => true).bold.should be_true
|
34
42
|
end
|
35
43
|
|
36
44
|
it 'defaults the padding' do
|
37
|
-
Column.new('test').padding.should == 0
|
45
|
+
CommandLineReporter::Column.new('test').padding.should == 0
|
38
46
|
end
|
39
47
|
|
40
48
|
it 'accepts the padding' do
|
41
|
-
Column.new('test', :padding => 5).padding.should == 5
|
49
|
+
CommandLineReporter::Column.new('test', :padding => 5).padding.should == 5
|
42
50
|
end
|
43
51
|
|
44
52
|
it 'requires valid width' do
|
45
53
|
expect {
|
46
|
-
Column.new('test', :padding => 'asdf')
|
54
|
+
CommandLineReporter::Column.new('test', :padding => 'asdf')
|
47
55
|
}.to raise_error ArgumentError
|
48
56
|
end
|
49
57
|
end
|
50
58
|
|
51
59
|
describe '#screen_rows' do
|
60
|
+
before :all do
|
61
|
+
@controls = {
|
62
|
+
:clear => "\e[0m",
|
63
|
+
:bold => "\e[1m",
|
64
|
+
:red => "\e[31m",
|
65
|
+
}
|
66
|
+
end
|
67
|
+
|
52
68
|
context 'no wrapping' do
|
53
69
|
context 'no padding' do
|
54
70
|
it 'gives a single row' do
|
55
|
-
c = Column.new('x' * 5)
|
71
|
+
c = CommandLineReporter::Column.new('x' * 5)
|
56
72
|
c.screen_rows.size == 1
|
57
73
|
end
|
58
74
|
|
59
75
|
it 'handles empty text' do
|
60
|
-
c = Column.new
|
76
|
+
c = CommandLineReporter::Column.new
|
61
77
|
c.screen_rows[0].should == ' ' * 10
|
62
78
|
end
|
63
79
|
|
64
|
-
|
65
|
-
|
66
|
-
|
80
|
+
context 'left justifies' do
|
81
|
+
before :each do
|
82
|
+
@text = 'x' * 10
|
83
|
+
@filler = ' ' * 10
|
84
|
+
end
|
85
|
+
|
86
|
+
it 'plain text' do
|
87
|
+
c = CommandLineReporter::Column.new(@text, :width => 20)
|
88
|
+
c.screen_rows[0].should == @text + @filler
|
89
|
+
end
|
90
|
+
|
91
|
+
it 'outputs red' do
|
92
|
+
c = CommandLineReporter::Column.new(@text, :align => 'left', :width => 20, :color => 'red')
|
93
|
+
c.screen_rows[0].should == @controls[:red] + @text + @filler + @controls[:clear]
|
94
|
+
end
|
95
|
+
|
96
|
+
it 'outputs bold' do
|
97
|
+
c = CommandLineReporter::Column.new(@text, :align => 'left', :width => 20, :bold => true)
|
98
|
+
c.screen_rows[0].should == @controls[:bold] + @text + @filler + @controls[:clear]
|
99
|
+
end
|
67
100
|
end
|
68
101
|
|
69
|
-
|
70
|
-
|
71
|
-
|
102
|
+
context 'right justifies' do
|
103
|
+
before :each do
|
104
|
+
@text = 'x' * 10
|
105
|
+
@filler = ' ' * 10
|
106
|
+
end
|
107
|
+
|
108
|
+
it 'plain text' do
|
109
|
+
c = CommandLineReporter::Column.new(@text, :align => 'right', :width => 20)
|
110
|
+
c.screen_rows[0].should == @filler + @text
|
111
|
+
end
|
112
|
+
|
113
|
+
it 'outputs red' do
|
114
|
+
c = CommandLineReporter::Column.new(@text, :align => 'right', :width => 20, :color => 'red')
|
115
|
+
c.screen_rows[0].should == @controls[:red] + @filler + @text + @controls[:clear]
|
116
|
+
end
|
117
|
+
|
118
|
+
it 'outputs bold' do
|
119
|
+
c = CommandLineReporter::Column.new(@text, :align => 'right', :width => 20, :bold => true)
|
120
|
+
c.screen_rows[0].should == @controls[:bold] + @filler + @text + @controls[:clear]
|
121
|
+
end
|
72
122
|
end
|
73
123
|
|
74
|
-
|
75
|
-
|
76
|
-
|
124
|
+
context 'center justifies' do
|
125
|
+
before :each do
|
126
|
+
@text = 'x' * 10
|
127
|
+
@filler = ' ' * 5
|
128
|
+
end
|
129
|
+
|
130
|
+
it 'plain text' do
|
131
|
+
c = CommandLineReporter::Column.new(@text, :align => 'center', :width => 20)
|
132
|
+
c.screen_rows[0].should == @filler + @text + @filler
|
133
|
+
end
|
134
|
+
|
135
|
+
it 'outputs red' do
|
136
|
+
c = CommandLineReporter::Column.new(@text, :align => 'center', :width => 20, :color => 'red')
|
137
|
+
c.screen_rows[0].should == @controls[:red] + @filler + @text + @filler + @controls[:clear]
|
138
|
+
end
|
139
|
+
|
140
|
+
it 'outputs bold' do
|
141
|
+
c = CommandLineReporter::Column.new(@text, :align => 'center', :width => 20, :bold => true)
|
142
|
+
c.screen_rows[0].should == @controls[:bold] + @filler + @text + @filler + @controls[:clear]
|
143
|
+
end
|
77
144
|
end
|
78
145
|
end
|
79
146
|
|
80
147
|
context 'accounts for padding' do
|
81
|
-
|
82
|
-
|
83
|
-
|
148
|
+
context 'left justifies' do
|
149
|
+
before :each do
|
150
|
+
@text = 'x' * 10
|
151
|
+
@padding = ' ' * 5
|
152
|
+
@filler = ' ' * 10
|
153
|
+
end
|
154
|
+
|
155
|
+
it 'plain text' do
|
156
|
+
c = CommandLineReporter::Column.new(@text, :padding => 5, :width => 30)
|
157
|
+
c.screen_rows[0].should == @padding + @text + @filler + @padding
|
158
|
+
end
|
159
|
+
|
160
|
+
it 'outputs red' do
|
161
|
+
c = CommandLineReporter::Column.new(@text, :padding => 5, :width => 30, :color => 'red')
|
162
|
+
c.screen_rows[0].should == @padding + @controls[:red] + @text + @filler + @controls[:clear] + @padding
|
163
|
+
end
|
164
|
+
|
165
|
+
it 'outputs bold' do
|
166
|
+
c = CommandLineReporter::Column.new(@text, :padding => 5, :width => 30, :bold => true)
|
167
|
+
c.screen_rows[0].should == @padding + @controls[:bold] + @text + @filler + @controls[:clear] + @padding
|
168
|
+
end
|
84
169
|
end
|
85
|
-
|
86
|
-
|
87
|
-
|
170
|
+
|
171
|
+
context 'right justifies' do
|
172
|
+
before :each do
|
173
|
+
@text = 'x' * 10
|
174
|
+
@padding = ' ' * 5
|
175
|
+
@filler = ' ' * 10
|
176
|
+
end
|
177
|
+
|
178
|
+
it 'plain text' do
|
179
|
+
c = CommandLineReporter::Column.new(@text, :align => 'right', :padding => 5, :width => 30)
|
180
|
+
c.screen_rows[0].should == @padding + @filler + @text + @padding
|
181
|
+
end
|
182
|
+
|
183
|
+
it 'outputs red' do
|
184
|
+
c = CommandLineReporter::Column.new(@text, :align => 'right', :padding => 5, :width => 30, :color => 'red')
|
185
|
+
c.screen_rows[0].should == @padding + @controls[:red] + @filler + @text + @controls[:clear] + @padding
|
186
|
+
end
|
187
|
+
|
188
|
+
it 'outputs bold' do
|
189
|
+
c = CommandLineReporter::Column.new(@text, :align => 'right', :padding => 5, :width => 30, :bold => true)
|
190
|
+
c.screen_rows[0].should == @padding + @controls[:bold] + @filler + @text + @controls[:clear] + @padding
|
191
|
+
end
|
88
192
|
end
|
89
|
-
|
90
|
-
|
91
|
-
|
193
|
+
|
194
|
+
context 'right justifies' do
|
195
|
+
before :each do
|
196
|
+
@text = ' ' * 10
|
197
|
+
@padding = ' ' * 5
|
198
|
+
@filler = ' ' * 5
|
199
|
+
end
|
200
|
+
|
201
|
+
it 'plain text' do
|
202
|
+
c = CommandLineReporter::Column.new(@text, :align => 'center', :padding => 5, :width => 30)
|
203
|
+
c.screen_rows[0].should == @padding + @filler + @text + @filler + @padding
|
204
|
+
end
|
205
|
+
|
206
|
+
it 'outputs red' do
|
207
|
+
c = CommandLineReporter::Column.new(@text, :align => 'center', :padding => 5, :width => 30, :color => 'red')
|
208
|
+
c.screen_rows[0].should == @padding + @controls[:red] + @filler + @text + @filler + @controls[:clear] + @padding
|
209
|
+
end
|
210
|
+
|
211
|
+
it 'outputs bold' do
|
212
|
+
c = CommandLineReporter::Column.new(@text, :align => 'center', :padding => 5, :width => 30, :bold => true)
|
213
|
+
c.screen_rows[0].should == @padding + @controls[:bold] + @filler + @text + @filler + @controls[:clear] + @padding
|
214
|
+
end
|
92
215
|
end
|
93
216
|
end
|
94
217
|
end
|
95
218
|
|
96
219
|
context 'with wrapping' do
|
97
220
|
context 'no padding' do
|
98
|
-
|
99
|
-
|
100
|
-
|
221
|
+
context 'left justifies' do
|
222
|
+
before :each do
|
223
|
+
@text = 'x' * 25
|
224
|
+
@full_line = 'x' * 10
|
225
|
+
@remainder = 'x' * 5
|
226
|
+
@filler = ' ' * 5
|
227
|
+
end
|
228
|
+
|
229
|
+
it 'plain text' do
|
230
|
+
c = CommandLineReporter::Column.new(@text, :width => 10)
|
231
|
+
c.screen_rows.should == [@full_line, @full_line, @remainder + @filler]
|
232
|
+
end
|
233
|
+
|
234
|
+
it 'outputs red' do
|
235
|
+
c = CommandLineReporter::Column.new(@text, :width => 10, :color => 'red')
|
236
|
+
c.screen_rows.should == [
|
237
|
+
@controls[:red] + @full_line + @controls[:clear],
|
238
|
+
@controls[:red] + @full_line + @controls[:clear],
|
239
|
+
@controls[:red] + @remainder + @filler + @controls[:clear],
|
240
|
+
]
|
241
|
+
end
|
242
|
+
|
243
|
+
it 'outputs bold' do
|
244
|
+
c = CommandLineReporter::Column.new(@text, :width => 10, :bold => true)
|
245
|
+
c.screen_rows.should == [
|
246
|
+
@controls[:bold] + @full_line + @controls[:clear],
|
247
|
+
@controls[:bold] + @full_line + @controls[:clear],
|
248
|
+
@controls[:bold] + @remainder + @filler + @controls[:clear],
|
249
|
+
]
|
250
|
+
end
|
101
251
|
end
|
102
252
|
|
103
|
-
|
104
|
-
|
105
|
-
|
253
|
+
context 'right justifies' do
|
254
|
+
before :each do
|
255
|
+
@text = 'x' * 25
|
256
|
+
@full_line = 'x' * 10
|
257
|
+
@remainder = 'x' * 5
|
258
|
+
@filler = ' ' * 5
|
259
|
+
end
|
260
|
+
|
261
|
+
it 'plain text' do
|
262
|
+
c = CommandLineReporter::Column.new(@text, :align => 'right', :width => 10)
|
263
|
+
c.screen_rows.should == [@full_line, @full_line, @filler + @remainder]
|
264
|
+
end
|
265
|
+
|
266
|
+
it 'outputs red' do
|
267
|
+
c = CommandLineReporter::Column.new(@text, :align => 'right', :width => 10, :color => 'red')
|
268
|
+
c.screen_rows.should == [
|
269
|
+
@controls[:red] + @full_line + @controls[:clear],
|
270
|
+
@controls[:red] + @full_line + @controls[:clear],
|
271
|
+
@controls[:red] + @filler + @remainder + @controls[:clear],
|
272
|
+
]
|
273
|
+
end
|
274
|
+
|
275
|
+
it 'outputs bold' do
|
276
|
+
c = CommandLineReporter::Column.new(@text, :align => 'right', :width => 10, :bold => true)
|
277
|
+
c.screen_rows.should == [
|
278
|
+
@controls[:bold] + @full_line + @controls[:clear],
|
279
|
+
@controls[:bold] + @full_line + @controls[:clear],
|
280
|
+
@controls[:bold] + @filler + @remainder + @controls[:clear],
|
281
|
+
]
|
282
|
+
end
|
106
283
|
end
|
107
284
|
|
108
|
-
|
109
|
-
|
110
|
-
|
285
|
+
context 'center justifies' do
|
286
|
+
before :each do
|
287
|
+
@text = 'x' * 25
|
288
|
+
@full_line = 'x' * 10
|
289
|
+
@remainder = 'x' * 5
|
290
|
+
@left_filler = ' ' * 3
|
291
|
+
@right_filler = ' ' * 2
|
292
|
+
end
|
293
|
+
|
294
|
+
it 'plain text' do
|
295
|
+
c = CommandLineReporter::Column.new(@text, :align => 'center', :width => 10)
|
296
|
+
c.screen_rows.should == [@full_line, @full_line, ' ' * 3 + @remainder + @right_filler]
|
297
|
+
end
|
298
|
+
|
299
|
+
it 'outputs red' do
|
300
|
+
c = CommandLineReporter::Column.new(@text, :align => 'center', :width => 10, :color => 'red')
|
301
|
+
c.screen_rows.should == [
|
302
|
+
@controls[:red] + @full_line + @controls[:clear],
|
303
|
+
@controls[:red] + @full_line + @controls[:clear],
|
304
|
+
@controls[:red] + @left_filler + @remainder + @right_filler + @controls[:clear],
|
305
|
+
]
|
306
|
+
end
|
307
|
+
|
308
|
+
it 'outputs bold' do
|
309
|
+
c = CommandLineReporter::Column.new(@text, :align => 'center', :width => 10, :bold => true)
|
310
|
+
c.screen_rows.should == [
|
311
|
+
@controls[:bold] + @full_line + @controls[:clear],
|
312
|
+
@controls[:bold] + @full_line + @controls[:clear],
|
313
|
+
@controls[:bold] + @left_filler + @remainder + @right_filler + @controls[:clear],
|
314
|
+
]
|
315
|
+
end
|
111
316
|
end
|
112
317
|
end
|
113
318
|
|
114
319
|
context 'account for padding' do
|
115
|
-
|
116
|
-
|
117
|
-
|
320
|
+
context 'left justifies' do
|
321
|
+
before :each do
|
322
|
+
@text = 'x' * 25
|
323
|
+
@full_line = 'x' * 16
|
324
|
+
@remainder = 'x' * 9
|
325
|
+
@padding = ' ' * 2
|
326
|
+
@filler = ' ' * 7
|
327
|
+
end
|
328
|
+
|
329
|
+
it 'plain text' do
|
330
|
+
c = CommandLineReporter::Column.new(@text, :padding => 2, :width => 20)
|
331
|
+
c.screen_rows.should == [
|
332
|
+
@padding + @full_line + @padding,
|
333
|
+
@padding + @remainder + @filler + @padding,
|
334
|
+
]
|
335
|
+
end
|
336
|
+
|
337
|
+
it 'outputs red' do
|
338
|
+
c = CommandLineReporter::Column.new(@text, :padding => 2, :width => 20, :color => 'red')
|
339
|
+
c.screen_rows.should == [
|
340
|
+
@padding + @controls[:red] + @full_line + @controls[:clear] + @padding,
|
341
|
+
@padding + @controls[:red] + @remainder + @filler + @controls[:clear] + @padding,
|
342
|
+
]
|
343
|
+
end
|
344
|
+
|
345
|
+
it 'outputs bold' do
|
346
|
+
c = CommandLineReporter::Column.new(@text, :padding => 2, :width => 20, :bold => true)
|
347
|
+
c.screen_rows.should == [
|
348
|
+
@padding + @controls[:bold] + @full_line + @controls[:clear] + @padding,
|
349
|
+
@padding + @controls[:bold] + @remainder + @filler + @controls[:clear] + @padding,
|
350
|
+
]
|
351
|
+
end
|
118
352
|
end
|
119
353
|
|
120
|
-
|
121
|
-
|
122
|
-
|
354
|
+
context 'right justifies' do
|
355
|
+
before :each do
|
356
|
+
@text = 'x' * 25
|
357
|
+
@full_line = 'x' * 16
|
358
|
+
@remainder = 'x' * 9
|
359
|
+
@padding = ' ' * 2
|
360
|
+
@filler = ' ' * 7
|
361
|
+
end
|
362
|
+
|
363
|
+
it 'plain text' do
|
364
|
+
c = CommandLineReporter::Column.new(@text, :padding => 2, :align => 'right', :width => 20)
|
365
|
+
c.screen_rows.should == [
|
366
|
+
@padding + @full_line + @padding,
|
367
|
+
@padding + @filler + @remainder + @padding,
|
368
|
+
]
|
369
|
+
end
|
370
|
+
|
371
|
+
it 'outputs red' do
|
372
|
+
c = CommandLineReporter::Column.new(@text, :align => 'right', :padding => 2, :width => 20, :color => 'red')
|
373
|
+
c.screen_rows.should == [
|
374
|
+
@padding + @controls[:red] + @full_line + @controls[:clear] + @padding,
|
375
|
+
@padding + @controls[:red] + @filler + @remainder + @controls[:clear] + @padding,
|
376
|
+
]
|
377
|
+
end
|
378
|
+
|
379
|
+
it 'outputs bold' do
|
380
|
+
c = CommandLineReporter::Column.new(@text, :align => 'right', :padding => 2, :width => 20, :bold => true)
|
381
|
+
c.screen_rows.should == [
|
382
|
+
@padding + @controls[:bold] + @full_line + @controls[:clear] + @padding,
|
383
|
+
@padding + @controls[:bold] + @filler + @remainder + @controls[:clear] + @padding,
|
384
|
+
]
|
385
|
+
end
|
123
386
|
end
|
124
387
|
|
125
|
-
|
126
|
-
|
127
|
-
|
388
|
+
context 'center justifies' do
|
389
|
+
before :each do
|
390
|
+
@text = 'x' * 25
|
391
|
+
@full_line = 'x' * 16
|
392
|
+
@remainder = 'x' * 9
|
393
|
+
@padding = ' ' * 2
|
394
|
+
@left_filler = ' ' * 4
|
395
|
+
@right_filler = ' ' * 3
|
396
|
+
end
|
397
|
+
|
398
|
+
it 'plain text' do
|
399
|
+
c = CommandLineReporter::Column.new(@text, :padding => 2, :align => 'center', :width => 20)
|
400
|
+
c.screen_rows.should == [
|
401
|
+
@padding + @full_line + @padding,
|
402
|
+
@padding + @left_filler + @remainder + @right_filler + @padding,
|
403
|
+
]
|
404
|
+
end
|
405
|
+
|
406
|
+
it 'outputs red' do
|
407
|
+
c = CommandLineReporter::Column.new(@text, :padding => 2, :align => 'center', :width => 20, :color => 'red')
|
408
|
+
c.screen_rows.should == [
|
409
|
+
@padding + @controls[:red] + @full_line + @controls[:clear] + @padding,
|
410
|
+
@padding + @controls[:red] + @left_filler + @remainder + @right_filler + @controls[:clear] + @padding,
|
411
|
+
]
|
412
|
+
end
|
413
|
+
|
414
|
+
it 'outputs bold' do
|
415
|
+
c = CommandLineReporter::Column.new(@text, :padding => 2, :align => 'center', :width => 20, :bold => true)
|
416
|
+
c.screen_rows.should == [
|
417
|
+
@padding + @controls[:bold] + @full_line + @controls[:clear] + @padding,
|
418
|
+
@padding + @controls[:bold] + @left_filler + @remainder + @right_filler + @controls[:clear] + @padding,
|
419
|
+
]
|
420
|
+
end
|
128
421
|
end
|
129
422
|
end
|
130
423
|
end
|
@@ -14,6 +14,14 @@ describe CommandLineReporter do
|
|
14
14
|
@timestamp_regex = /\d{4}-\d{2}-\d{2} - (\d| )\d:\d{2}:\d{2}[AP]M/
|
15
15
|
end
|
16
16
|
|
17
|
+
before :all do
|
18
|
+
@controls = {
|
19
|
+
:clear => "\e[0m",
|
20
|
+
:bold => "\e[1m",
|
21
|
+
:red => "\e[31m",
|
22
|
+
}
|
23
|
+
end
|
24
|
+
|
17
25
|
describe '#formatter=' do
|
18
26
|
it 'only allows allowed formatters' do
|
19
27
|
expect {
|
@@ -120,6 +128,20 @@ describe CommandLineReporter do
|
|
120
128
|
subject.header(:timestamp => true)
|
121
129
|
}.to_not raise_error ArgumentError
|
122
130
|
end
|
131
|
+
|
132
|
+
it 'accepts color' do
|
133
|
+
expect {
|
134
|
+
subject.should_receive(:puts).any_number_of_times
|
135
|
+
subject.header(:color => 'red')
|
136
|
+
}.to_not raise_error ArgumentError
|
137
|
+
end
|
138
|
+
|
139
|
+
it 'accepts bold' do
|
140
|
+
expect {
|
141
|
+
subject.should_receive(:puts).any_number_of_times
|
142
|
+
subject.header(:bold => true)
|
143
|
+
}.to_not raise_error ArgumentError
|
144
|
+
end
|
123
145
|
end
|
124
146
|
|
125
147
|
context 'alignment' do
|
@@ -216,6 +238,36 @@ describe CommandLineReporter do
|
|
216
238
|
subject.header(:rule => '=')
|
217
239
|
end
|
218
240
|
end
|
241
|
+
|
242
|
+
context 'color' do
|
243
|
+
it 'single red line' do
|
244
|
+
subject.should_receive(:puts).with(@controls[:red] + 'Report' + @controls[:clear])
|
245
|
+
subject.should_receive(:puts)
|
246
|
+
subject.header(:color => 'red')
|
247
|
+
end
|
248
|
+
|
249
|
+
it 'multimple red lines' do
|
250
|
+
subject.should_receive(:puts).with(@controls[:red] + 'Report' + @controls[:clear])
|
251
|
+
subject.should_receive(:puts).with(@controls[:red] + '-' * 100 + @controls[:clear])
|
252
|
+
subject.should_receive(:puts)
|
253
|
+
subject.header(:color => 'red', :rule => true)
|
254
|
+
end
|
255
|
+
end
|
256
|
+
|
257
|
+
context 'bold' do
|
258
|
+
it 'single line' do
|
259
|
+
subject.should_receive(:puts).with(@controls[:bold] + 'Report' + @controls[:clear])
|
260
|
+
subject.should_receive(:puts)
|
261
|
+
subject.header(:bold => true)
|
262
|
+
end
|
263
|
+
|
264
|
+
it 'multimple lines' do
|
265
|
+
subject.should_receive(:puts).with(@controls[:bold] + 'Report' + @controls[:clear])
|
266
|
+
subject.should_receive(:puts).with(@controls[:bold] + '-' * 100 + @controls[:clear])
|
267
|
+
subject.should_receive(:puts)
|
268
|
+
subject.header(:bold => true, :rule => true)
|
269
|
+
end
|
270
|
+
end
|
219
271
|
end
|
220
272
|
|
221
273
|
describe '#horizontal_rule' do
|
@@ -257,6 +309,16 @@ describe CommandLineReporter do
|
|
257
309
|
subject.horizontal_rule(:char => '=', :width => 50)
|
258
310
|
end
|
259
311
|
end
|
312
|
+
|
313
|
+
it 'outputs color' do
|
314
|
+
subject.should_receive(:puts).with(@controls[:red] + '-' * 100 + @controls[:clear])
|
315
|
+
subject.horizontal_rule(:color => 'red')
|
316
|
+
end
|
317
|
+
|
318
|
+
it 'outputs bold' do
|
319
|
+
subject.should_receive(:puts).with(@controls[:bold] + '-' * 100 + @controls[:clear])
|
320
|
+
subject.horizontal_rule(:bold => true)
|
321
|
+
end
|
260
322
|
end
|
261
323
|
|
262
324
|
describe '#vertical_spacing' do
|
@@ -341,6 +403,16 @@ describe CommandLineReporter do
|
|
341
403
|
subject.datetime(:format => '%y/%m/%d')
|
342
404
|
end
|
343
405
|
end
|
406
|
+
|
407
|
+
it 'outputs color' do
|
408
|
+
subject.should_receive(:puts).with(/^\e\[31m#{@timestamp_regex}\e\[0m/)
|
409
|
+
subject.datetime(:color => 'red')
|
410
|
+
end
|
411
|
+
|
412
|
+
it 'outputs bold' do
|
413
|
+
subject.should_receive(:puts).with(/^\e\[1m#{@timestamp_regex}\e\[0m/)
|
414
|
+
subject.datetime(:bold => true)
|
415
|
+
end
|
344
416
|
end
|
345
417
|
|
346
418
|
describe '#aligned' do
|
@@ -371,6 +443,17 @@ describe CommandLineReporter do
|
|
371
443
|
}.to raise_error
|
372
444
|
end
|
373
445
|
end
|
446
|
+
|
447
|
+
it 'outputs color' do
|
448
|
+
subject.should_receive(:puts).with(@controls[:red] + 'x' * 10 + @controls[:clear])
|
449
|
+
subject.aligned('x' * 10, :color => 'red')
|
450
|
+
end
|
451
|
+
|
452
|
+
it 'outputs bold' do
|
453
|
+
subject.should_receive(:puts).with(@controls[:bold] + 'x' * 10 + @controls[:clear])
|
454
|
+
subject.aligned('x' * 10, :bold => true)
|
455
|
+
end
|
456
|
+
|
374
457
|
end
|
375
458
|
|
376
459
|
describe '#footer' do
|
@@ -490,14 +573,14 @@ describe CommandLineReporter do
|
|
490
573
|
subject.should_receive(:puts).with("\n")
|
491
574
|
subject.should_receive(:puts).with(/^ *title$/)
|
492
575
|
subject.should_receive(:puts).with(/^ *#{@timestamp_regex}$/)
|
493
|
-
subject.
|
576
|
+
subject.footer(:title => 'title', :align => 'right', :timestamp => true, :width => 80)
|
494
577
|
end
|
495
578
|
|
496
579
|
it 'added with center alignment' do
|
497
580
|
subject.should_receive(:puts).with("\n")
|
498
581
|
subject.should_receive(:puts).with(/^ *title *$/)
|
499
582
|
subject.should_receive(:puts).with(/^ *#{@timestamp_regex} *$/)
|
500
|
-
subject.
|
583
|
+
subject.footer(:title => 'title', :align => 'center', :timestamp => true, :width => 80)
|
501
584
|
end
|
502
585
|
end
|
503
586
|
|
@@ -516,6 +599,20 @@ describe CommandLineReporter do
|
|
516
599
|
subject.footer(:rule => '=')
|
517
600
|
end
|
518
601
|
end
|
602
|
+
|
603
|
+
it 'outputs red' do
|
604
|
+
subject.should_receive(:puts).with("\n")
|
605
|
+
subject.should_receive(:puts).with(@controls[:red] + 'title' + @controls[:clear])
|
606
|
+
subject.should_receive(:puts).with(/^\e\[31m#{@timestamp_regex}\e\[0m/)
|
607
|
+
subject.footer(:title => 'title', :timestamp => true, :color => 'red')
|
608
|
+
end
|
609
|
+
|
610
|
+
it 'outputs bold' do
|
611
|
+
subject.should_receive(:puts).with("\n")
|
612
|
+
subject.should_receive(:puts).with(@controls[:bold] + 'title' + @controls[:clear])
|
613
|
+
subject.should_receive(:puts).with(/^\e\[1m#{@timestamp_regex}\e\[0m/)
|
614
|
+
subject.footer(:title => 'title', :timestamp => true, :bold => true)
|
615
|
+
end
|
519
616
|
end
|
520
617
|
|
521
618
|
describe '#table' do
|
@@ -523,7 +620,6 @@ describe CommandLineReporter do
|
|
523
620
|
subject.should_receive(:puts).any_number_of_times
|
524
621
|
subject.should_receive(:table).once
|
525
622
|
subject.table { }
|
526
|
-
# subject.instance_variable_get(:@table).should_not be_nil
|
527
623
|
end
|
528
624
|
|
529
625
|
it 'requires a row to be defined' do
|
@@ -540,6 +636,7 @@ describe CommandLineReporter do
|
|
540
636
|
|
541
637
|
it 'rejects invalid options' do
|
542
638
|
expect {
|
639
|
+
subject.should_receive(:puts).any_number_of_times
|
543
640
|
subject.table(:asdf => '100') { }
|
544
641
|
}.to raise_error ArgumentError
|
545
642
|
end
|
@@ -572,6 +669,9 @@ describe CommandLineReporter do
|
|
572
669
|
end
|
573
670
|
|
574
671
|
it 'accepts valid options' do
|
672
|
+
subject.should_receive(:column).once
|
673
|
+
subject.should_receive(:puts).any_number_of_times
|
674
|
+
|
575
675
|
subject.table do
|
576
676
|
subject.row do
|
577
677
|
subject.column('asdf', :width => 30)
|
@@ -580,6 +680,7 @@ describe CommandLineReporter do
|
|
580
680
|
end
|
581
681
|
|
582
682
|
it 'rejects invalid options' do
|
683
|
+
subject.should_receive(:puts).any_number_of_times
|
583
684
|
expect {
|
584
685
|
subject.table do
|
585
686
|
subject.row do
|