command_line_reporter 3.3.6 → 4.0.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.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/lib/command_line_reporter.rb +101 -54
- data/lib/command_line_reporter/column.rb +37 -26
- data/lib/command_line_reporter/formatter/nested.rb +7 -11
- data/lib/command_line_reporter/formatter/progress.rb +5 -5
- data/lib/command_line_reporter/row.rb +15 -21
- data/lib/command_line_reporter/table.rb +37 -25
- data/lib/command_line_reporter/version.rb +1 -1
- data/spec/column_spec.rb +233 -138
- data/spec/command_line_reporter_spec.rb +172 -174
- data/spec/nested_formatter_spec.rb +66 -66
- data/spec/options_validator_spec.rb +10 -10
- data/spec/progress_formatter_spec.rb +10 -25
- data/spec/row_spec.rb +24 -22
- data/spec/spec_helper.rb +1 -1
- data/spec/support/matchers/argument.rb +0 -12
- data/spec/table_spec.rb +74 -48
- metadata +3 -3
@@ -11,9 +11,9 @@ describe CommandLineReporter do
|
|
11
11
|
|
12
12
|
let :controls do
|
13
13
|
{
|
14
|
-
:
|
15
|
-
:
|
16
|
-
:
|
14
|
+
clear: "\e[0m",
|
15
|
+
bold: "\e[1m",
|
16
|
+
red: "\e[31m"
|
17
17
|
}
|
18
18
|
end
|
19
19
|
|
@@ -23,9 +23,9 @@ describe CommandLineReporter do
|
|
23
23
|
|
24
24
|
describe '#formatter=' do
|
25
25
|
it 'only allows allowed formatters' do
|
26
|
-
expect
|
26
|
+
expect do
|
27
27
|
subject.formatter = 'asfd'
|
28
|
-
|
28
|
+
end.to raise_error ArgumentError
|
29
29
|
end
|
30
30
|
|
31
31
|
it 'specifies the progress formatter' do
|
@@ -41,105 +41,105 @@ describe CommandLineReporter do
|
|
41
41
|
|
42
42
|
describe '#report' do
|
43
43
|
it 'uses the nested formatter as default' do
|
44
|
-
capture_stdout
|
45
|
-
subject.report {
|
46
|
-
|
44
|
+
capture_stdout do
|
45
|
+
subject.report {}
|
46
|
+
end
|
47
47
|
|
48
48
|
expect(subject.formatter.class).to eq(CommandLineReporter::NestedFormatter)
|
49
49
|
end
|
50
50
|
|
51
51
|
it 'uses the progress formatter' do
|
52
|
-
capture_stdout
|
52
|
+
capture_stdout do
|
53
53
|
subject.formatter = 'progress'
|
54
|
-
subject.report {
|
55
|
-
|
54
|
+
subject.report {}
|
55
|
+
end
|
56
56
|
|
57
57
|
expect(subject.formatter.class).to eq(CommandLineReporter::ProgressFormatter)
|
58
58
|
end
|
59
59
|
|
60
60
|
it 'does not mask other application errors when a formatter is not set' do
|
61
|
-
capture_stdout
|
62
|
-
subject.report
|
63
|
-
|
64
|
-
|
65
|
-
|
61
|
+
capture_stdout do
|
62
|
+
subject.report do
|
63
|
+
# rubocop:disable Style/RedundantSelf
|
64
|
+
expect { self.some_method_that_does_not_exist }.to raise_error(NoMethodError)
|
65
|
+
end
|
66
|
+
end
|
66
67
|
end
|
67
68
|
end
|
68
69
|
|
69
70
|
describe '#header' do
|
70
71
|
context 'argument validation' do
|
71
|
-
|
72
72
|
it 'does not accept an invalid option' do
|
73
|
-
expect
|
74
|
-
subject.header(:
|
75
|
-
|
73
|
+
expect do
|
74
|
+
subject.header(asdf: 'tests')
|
75
|
+
end.to raise_error ArgumentError
|
76
76
|
end
|
77
77
|
|
78
78
|
it 'accepts a title' do
|
79
|
-
expect
|
79
|
+
expect do
|
80
80
|
allow(subject).to receive(:puts)
|
81
|
-
subject.header(:
|
82
|
-
|
81
|
+
subject.header(title: 'test')
|
82
|
+
end.to_not raise_error Exception
|
83
83
|
end
|
84
84
|
|
85
85
|
it 'does not allow a title > width' do
|
86
|
-
expect
|
87
|
-
subject.header(:
|
88
|
-
|
86
|
+
expect do
|
87
|
+
subject.header(title: 'xxxxxxxxxxx', width: 5)
|
88
|
+
end.to raise_error ArgumentError
|
89
89
|
end
|
90
90
|
|
91
91
|
it 'accepts width' do
|
92
|
-
expect
|
92
|
+
expect do
|
93
93
|
allow(subject).to receive(:puts)
|
94
|
-
subject.header(:
|
95
|
-
|
94
|
+
subject.header(width: 100)
|
95
|
+
end.to_not raise_error Exception
|
96
96
|
end
|
97
97
|
|
98
98
|
it 'ensure width is a number' do
|
99
|
-
expect
|
100
|
-
subject.header(:
|
101
|
-
|
99
|
+
expect do
|
100
|
+
subject.header(width: 'adf')
|
101
|
+
end.to raise_error ArgumentError
|
102
102
|
end
|
103
103
|
|
104
104
|
it 'accepts align' do
|
105
|
-
expect
|
105
|
+
expect do
|
106
106
|
allow(subject).to receive(:puts)
|
107
|
-
subject.header(:
|
108
|
-
|
107
|
+
subject.header(align: 'center')
|
108
|
+
end.to_not raise_error Exception
|
109
109
|
end
|
110
110
|
|
111
111
|
it 'ensure align is a valid value' do
|
112
|
-
expect
|
113
|
-
subject.header(:
|
114
|
-
|
112
|
+
expect do
|
113
|
+
subject.header(align: :asdf)
|
114
|
+
end.to raise_error ArgumentError
|
115
115
|
end
|
116
116
|
|
117
117
|
it 'accepts spacing' do
|
118
|
-
expect
|
118
|
+
expect do
|
119
119
|
allow(subject).to receive(:puts)
|
120
|
-
subject.header(:
|
121
|
-
|
120
|
+
subject.header(spacing: 2)
|
121
|
+
end.to_not raise_error Exception
|
122
122
|
end
|
123
123
|
|
124
124
|
it 'accepts timestamp' do
|
125
|
-
expect
|
125
|
+
expect do
|
126
126
|
allow(subject).to receive(:puts)
|
127
|
-
subject.header(:
|
128
|
-
|
127
|
+
subject.header(timestamp: true)
|
128
|
+
end.to_not raise_error Exception
|
129
129
|
end
|
130
130
|
|
131
131
|
it 'accepts color' do
|
132
|
-
expect
|
132
|
+
expect do
|
133
133
|
allow(subject).to receive(:puts)
|
134
|
-
subject.header(:
|
135
|
-
|
134
|
+
subject.header(color: 'red')
|
135
|
+
end.to_not raise_error Exception
|
136
136
|
end
|
137
137
|
|
138
138
|
it 'accepts bold' do
|
139
|
-
expect
|
139
|
+
expect do
|
140
140
|
allow(subject).to receive(:puts)
|
141
|
-
subject.header(:
|
142
|
-
|
141
|
+
subject.header(bold: true)
|
142
|
+
end.to_not raise_error Exception
|
143
143
|
end
|
144
144
|
end
|
145
145
|
|
@@ -151,37 +151,37 @@ describe CommandLineReporter do
|
|
151
151
|
it 'left aligns title by default' do
|
152
152
|
expect(subject).to receive(:puts).with(@title)
|
153
153
|
expect(subject).to receive(:puts).with("\n")
|
154
|
-
subject.header(:
|
154
|
+
subject.header(title: @title) {}
|
155
155
|
end
|
156
156
|
|
157
157
|
it 'left aligns title' do
|
158
158
|
expect(subject).to receive(:puts).with(@title)
|
159
159
|
expect(subject).to receive(:puts).with("\n")
|
160
|
-
subject.header(:
|
160
|
+
subject.header(title: @title, align: 'left') {}
|
161
161
|
end
|
162
162
|
|
163
163
|
it 'right aligns title using default width' do
|
164
164
|
expect(subject).to receive(:puts).with(' ' * 90 + @title)
|
165
165
|
expect(subject).to receive(:puts).with("\n")
|
166
|
-
subject.header(:
|
166
|
+
subject.header(title: @title, align: 'right')
|
167
167
|
end
|
168
168
|
|
169
169
|
it 'right aligns title using specified width' do
|
170
170
|
expect(subject).to receive(:puts).with(' ' * 40 + @title)
|
171
171
|
expect(subject).to receive(:puts).with("\n")
|
172
|
-
subject.header(:
|
172
|
+
subject.header(title: @title, align: 'right', width: 50)
|
173
173
|
end
|
174
174
|
|
175
175
|
it 'center aligns title using default width' do
|
176
176
|
expect(subject).to receive(:puts).with(' ' * 45 + @title)
|
177
177
|
expect(subject).to receive(:puts).with("\n")
|
178
|
-
subject.header(:
|
178
|
+
subject.header(title: @title, align: 'center')
|
179
179
|
end
|
180
180
|
|
181
181
|
it 'center aligns title using specified width' do
|
182
182
|
expect(subject).to receive(:puts).with(' ' * 35 + @title)
|
183
183
|
expect(subject).to receive(:puts).with("\n")
|
184
|
-
subject.header(:
|
184
|
+
subject.header(title: @title, align: 'center', width: 80)
|
185
185
|
end
|
186
186
|
end
|
187
187
|
|
@@ -189,13 +189,13 @@ describe CommandLineReporter do
|
|
189
189
|
it 'defaults to a single line of spacing between report' do
|
190
190
|
expect(subject).to receive(:puts).with('title')
|
191
191
|
expect(subject).to receive(:puts).with("\n")
|
192
|
-
subject.header(:
|
192
|
+
subject.header(title: 'title')
|
193
193
|
end
|
194
194
|
|
195
195
|
it 'uses the defined spacing between report' do
|
196
196
|
expect(subject).to receive(:puts).with('title')
|
197
197
|
expect(subject).to receive(:puts).with("\n" * 3)
|
198
|
-
subject.header(:
|
198
|
+
subject.header(title: 'title', spacing: 3)
|
199
199
|
end
|
200
200
|
end
|
201
201
|
|
@@ -204,21 +204,21 @@ describe CommandLineReporter do
|
|
204
204
|
expect(subject).to receive(:puts).with('title')
|
205
205
|
expect(subject).to receive(:puts).with(/^#{timestamp_regex}/)
|
206
206
|
expect(subject).to receive(:puts).with("\n")
|
207
|
-
subject.header(:
|
207
|
+
subject.header(title: 'title', timestamp: true)
|
208
208
|
end
|
209
209
|
|
210
210
|
it 'added with right alignment' do
|
211
211
|
expect(subject).to receive(:puts).with(/^ *title$/)
|
212
212
|
expect(subject).to receive(:puts).with(/^ *#{timestamp_regex}$/)
|
213
213
|
expect(subject).to receive(:puts).with("\n")
|
214
|
-
subject.header(:
|
214
|
+
subject.header(title: 'title', align: 'right', timestamp: true, width: 80)
|
215
215
|
end
|
216
216
|
|
217
217
|
it 'added with center alignment' do
|
218
218
|
expect(subject).to receive(:puts).with(/^ *title *$/)
|
219
219
|
expect(subject).to receive(:puts).with(/^ *#{timestamp_regex} *$/)
|
220
220
|
expect(subject).to receive(:puts).with("\n")
|
221
|
-
subject.header(:
|
221
|
+
subject.header(title: 'title', align: 'center', timestamp: true, width: 80)
|
222
222
|
end
|
223
223
|
end
|
224
224
|
|
@@ -227,14 +227,14 @@ describe CommandLineReporter do
|
|
227
227
|
expect(subject).to receive(:puts)
|
228
228
|
expect(subject).to receive(:puts).with(linechar * 100)
|
229
229
|
expect(subject).to receive(:puts)
|
230
|
-
subject.header(:
|
230
|
+
subject.header(rule: true)
|
231
231
|
end
|
232
232
|
|
233
233
|
it 'uses = as the rule character' do
|
234
234
|
expect(subject).to receive(:puts)
|
235
235
|
expect(subject).to receive(:puts).with('=' * 100)
|
236
236
|
expect(subject).to receive(:puts)
|
237
|
-
subject.header(:
|
237
|
+
subject.header(rule: '=')
|
238
238
|
end
|
239
239
|
end
|
240
240
|
|
@@ -242,14 +242,14 @@ describe CommandLineReporter do
|
|
242
242
|
it 'single red line' do
|
243
243
|
expect(subject).to receive(:puts).with(controls[:red] + 'Report' + controls[:clear])
|
244
244
|
expect(subject).to receive(:puts)
|
245
|
-
subject.header(:
|
245
|
+
subject.header(color: 'red')
|
246
246
|
end
|
247
247
|
|
248
248
|
it 'multimple red lines' do
|
249
249
|
expect(subject).to receive(:puts).with(controls[:red] + 'Report' + controls[:clear])
|
250
250
|
expect(subject).to receive(:puts).with(controls[:red] + linechar * 100 + controls[:clear])
|
251
251
|
expect(subject).to receive(:puts)
|
252
|
-
subject.header(:
|
252
|
+
subject.header(color: 'red', rule: true)
|
253
253
|
end
|
254
254
|
end
|
255
255
|
|
@@ -257,14 +257,14 @@ describe CommandLineReporter do
|
|
257
257
|
it 'single line' do
|
258
258
|
expect(subject).to receive(:puts).with(controls[:bold] + 'Report' + controls[:clear])
|
259
259
|
expect(subject).to receive(:puts)
|
260
|
-
subject.header(:
|
260
|
+
subject.header(bold: true)
|
261
261
|
end
|
262
262
|
|
263
263
|
it 'multimple lines' do
|
264
264
|
expect(subject).to receive(:puts).with(controls[:bold] + 'Report' + controls[:clear])
|
265
265
|
expect(subject).to receive(:puts).with(controls[:bold] + linechar * 100 + controls[:clear])
|
266
266
|
expect(subject).to receive(:puts)
|
267
|
-
subject.header(:
|
267
|
+
subject.header(bold: true, rule: true)
|
268
268
|
end
|
269
269
|
end
|
270
270
|
end
|
@@ -272,23 +272,23 @@ describe CommandLineReporter do
|
|
272
272
|
describe '#horizontal_rule' do
|
273
273
|
context 'argument validation' do
|
274
274
|
it 'does not allow invalid options' do
|
275
|
-
expect
|
276
|
-
subject.horizontal_rule(:
|
277
|
-
|
275
|
+
expect do
|
276
|
+
subject.horizontal_rule(asdf: true)
|
277
|
+
end.to raise_error ArgumentError
|
278
278
|
end
|
279
279
|
|
280
280
|
it 'accepts char' do
|
281
|
-
expect
|
281
|
+
expect do
|
282
282
|
expect(subject).to receive(:puts)
|
283
|
-
subject.horizontal_rule(:
|
284
|
-
|
283
|
+
subject.horizontal_rule(char: '*')
|
284
|
+
end.to_not raise_error Exception
|
285
285
|
end
|
286
286
|
|
287
287
|
it 'accepts width' do
|
288
|
-
expect
|
288
|
+
expect do
|
289
289
|
expect(subject).to receive(:puts)
|
290
|
-
subject.horizontal_rule(:
|
291
|
-
|
290
|
+
subject.horizontal_rule(width: 10)
|
291
|
+
end.to_not raise_error Exception
|
292
292
|
end
|
293
293
|
end
|
294
294
|
|
@@ -300,31 +300,31 @@ describe CommandLineReporter do
|
|
300
300
|
|
301
301
|
it 'writes a 100 yard asterisk' do
|
302
302
|
expect(subject).to receive(:puts).with('*' * 100)
|
303
|
-
subject.horizontal_rule(:
|
303
|
+
subject.horizontal_rule(char: '*')
|
304
304
|
end
|
305
305
|
|
306
306
|
it 'writes a 50 yard equals' do
|
307
307
|
expect(subject).to receive(:puts).with('=' * 50)
|
308
|
-
subject.horizontal_rule(:
|
308
|
+
subject.horizontal_rule(char: '=', width: 50)
|
309
309
|
end
|
310
310
|
end
|
311
311
|
|
312
312
|
it 'outputs color' do
|
313
313
|
expect(subject).to receive(:puts).with(controls[:red] + linechar * 100 + controls[:clear])
|
314
|
-
subject.horizontal_rule(:
|
314
|
+
subject.horizontal_rule(color: 'red')
|
315
315
|
end
|
316
316
|
|
317
317
|
it 'outputs bold' do
|
318
318
|
expect(subject).to receive(:puts).with(controls[:bold] + linechar * 100 + controls[:clear])
|
319
|
-
subject.horizontal_rule(:
|
319
|
+
subject.horizontal_rule(bold: true)
|
320
320
|
end
|
321
321
|
end
|
322
322
|
|
323
323
|
describe '#vertical_spacing' do
|
324
324
|
it 'accepts a fixnum as a valid argument' do
|
325
|
-
expect
|
325
|
+
expect do
|
326
326
|
subject.vertical_spacing('asdf')
|
327
|
-
|
327
|
+
end.to raise_error ArgumentError
|
328
328
|
end
|
329
329
|
|
330
330
|
it 'prints carriage returns for the number of lines' do
|
@@ -338,48 +338,48 @@ describe CommandLineReporter do
|
|
338
338
|
describe '#datetime' do
|
339
339
|
context 'argument validation' do
|
340
340
|
it 'does not allow invalid options' do
|
341
|
-
expect
|
342
|
-
subject.datetime(:
|
343
|
-
|
341
|
+
expect do
|
342
|
+
subject.datetime(asdf: true)
|
343
|
+
end.to raise_error ArgumentError
|
344
344
|
end
|
345
345
|
|
346
346
|
it 'accepts align' do
|
347
|
-
expect
|
347
|
+
expect do
|
348
348
|
expect(subject).to receive(:puts)
|
349
|
-
subject.datetime(:
|
350
|
-
|
349
|
+
subject.datetime(align: 'left')
|
350
|
+
end.to_not raise_error Exception
|
351
351
|
end
|
352
352
|
|
353
353
|
it 'accepts width' do
|
354
|
-
expect
|
354
|
+
expect do
|
355
355
|
expect(subject).to receive(:puts)
|
356
|
-
subject.datetime(:
|
357
|
-
|
356
|
+
subject.datetime(width: 70)
|
357
|
+
end.to_not raise_error Exception
|
358
358
|
end
|
359
359
|
|
360
360
|
it 'accepts format' do
|
361
|
-
expect
|
361
|
+
expect do
|
362
362
|
expect(subject).to receive(:puts)
|
363
|
-
subject.datetime(:
|
364
|
-
|
363
|
+
subject.datetime(format: '%m/%d/%Y')
|
364
|
+
end.to_not raise_error Exception
|
365
365
|
end
|
366
366
|
|
367
367
|
it 'does not allow invalid width' do
|
368
|
-
expect
|
369
|
-
subject.datetime(:
|
370
|
-
|
368
|
+
expect do
|
369
|
+
subject.datetime(align: 'right', width: 'asdf')
|
370
|
+
end.to raise_error Exception
|
371
371
|
end
|
372
372
|
|
373
373
|
it 'does not allow invalid align' do
|
374
|
-
expect
|
375
|
-
subject.datetime(:
|
376
|
-
|
374
|
+
expect do
|
375
|
+
subject.datetime(align: 1234)
|
376
|
+
end.to raise_error Exception
|
377
377
|
end
|
378
378
|
|
379
379
|
it 'does not allow a timestamp format larger than the width' do
|
380
|
-
expect
|
381
|
-
subject.datetime(:
|
382
|
-
|
380
|
+
expect do
|
381
|
+
subject.datetime(width: 8)
|
382
|
+
end.to raise_error Exception
|
383
383
|
end
|
384
384
|
end
|
385
385
|
|
@@ -391,118 +391,117 @@ describe CommandLineReporter do
|
|
391
391
|
|
392
392
|
it 'a default format - right aligned' do
|
393
393
|
expect(subject).to receive(:puts).with(/^ *#{timestamp_regex}$/)
|
394
|
-
subject.datetime(:
|
394
|
+
subject.datetime(align: 'right')
|
395
395
|
end
|
396
396
|
|
397
397
|
it 'a default format - center aligned' do
|
398
398
|
expect(subject).to receive(:puts).with(/^ *#{timestamp_regex} *$/)
|
399
|
-
subject.datetime(:
|
399
|
+
subject.datetime(align: 'center')
|
400
400
|
end
|
401
401
|
|
402
402
|
it 'a modified format' do
|
403
|
-
expect(subject).to receive(:puts).with(/^\d{2}\/\d{2}\/\d{2} *$/)
|
404
|
-
subject.datetime(:
|
403
|
+
expect(subject).to receive(:puts).with(%r/^\d{2}\/\d{2}\/\d{2} *$/)
|
404
|
+
subject.datetime(format: '%y/%m/%d')
|
405
405
|
end
|
406
406
|
end
|
407
407
|
|
408
408
|
it 'outputs color' do
|
409
409
|
expect(subject).to receive(:puts).with(/^\e\[31m#{timestamp_regex}\e\[0m/)
|
410
|
-
subject.datetime(:
|
410
|
+
subject.datetime(color: 'red')
|
411
411
|
end
|
412
412
|
|
413
413
|
it 'outputs bold' do
|
414
414
|
expect(subject).to receive(:puts).with(/^\e\[1m#{timestamp_regex}\e\[0m/)
|
415
|
-
subject.datetime(:
|
415
|
+
subject.datetime(bold: true)
|
416
416
|
end
|
417
417
|
end
|
418
418
|
|
419
419
|
describe '#aligned' do
|
420
420
|
context 'argument validation' do
|
421
421
|
it 'accepts align' do
|
422
|
-
expect
|
422
|
+
expect do
|
423
423
|
allow(subject).to receive(:puts)
|
424
|
-
subject.aligned('test', :
|
425
|
-
|
424
|
+
subject.aligned('test', align: 'left')
|
425
|
+
end.to_not raise_error Exception
|
426
426
|
end
|
427
427
|
|
428
428
|
it 'does not allow invalid align values' do
|
429
|
-
expect
|
430
|
-
subject.aligned('test', :
|
431
|
-
|
429
|
+
expect do
|
430
|
+
subject.aligned('test', align: 1234)
|
431
|
+
end.to raise_error NoMethodError
|
432
432
|
end
|
433
433
|
|
434
434
|
it 'accepts width' do
|
435
|
-
expect
|
435
|
+
expect do
|
436
436
|
allow(subject).to receive(:puts)
|
437
|
-
subject.aligned('test', :
|
438
|
-
|
437
|
+
subject.aligned('test', width: 40)
|
438
|
+
end.to_not raise_error Exception
|
439
439
|
end
|
440
440
|
|
441
441
|
it 'does not allow invalid width values' do
|
442
|
-
expect
|
443
|
-
subject.aligned('test', :
|
444
|
-
|
442
|
+
expect do
|
443
|
+
subject.aligned('test', align: 'right', width: 'asdf')
|
444
|
+
end.to raise_error Exception
|
445
445
|
end
|
446
446
|
end
|
447
447
|
|
448
448
|
it 'outputs color' do
|
449
449
|
expect(subject).to receive(:puts).with(controls[:red] + 'x' * 10 + controls[:clear])
|
450
|
-
subject.aligned('x' * 10, :
|
450
|
+
subject.aligned('x' * 10, color: 'red')
|
451
451
|
end
|
452
452
|
|
453
453
|
it 'outputs bold' do
|
454
454
|
expect(subject).to receive(:puts).with(controls[:bold] + 'x' * 10 + controls[:clear])
|
455
|
-
subject.aligned('x' * 10, :
|
455
|
+
subject.aligned('x' * 10, bold: true)
|
456
456
|
end
|
457
|
-
|
458
457
|
end
|
459
458
|
|
460
459
|
describe '#footer' do
|
461
460
|
context 'argument validation' do
|
462
461
|
it 'accepts title' do
|
463
|
-
expect
|
462
|
+
expect do
|
464
463
|
allow(subject).to receive(:puts)
|
465
|
-
subject.footer(:
|
466
|
-
|
464
|
+
subject.footer(title: 'test')
|
465
|
+
end.to_not raise_error Exception
|
467
466
|
end
|
468
467
|
|
469
468
|
it 'accepts align' do
|
470
|
-
expect
|
469
|
+
expect do
|
471
470
|
allow(subject).to receive(:puts)
|
472
|
-
subject.footer(:
|
473
|
-
|
471
|
+
subject.footer(align: 'right')
|
472
|
+
end.to_not raise_error Exception
|
474
473
|
end
|
475
474
|
|
476
475
|
it 'does not accept invalid align' do
|
477
|
-
expect
|
478
|
-
subject.header(:
|
479
|
-
|
476
|
+
expect do
|
477
|
+
subject.header(align: 1234)
|
478
|
+
end.to raise_error NoMethodError
|
480
479
|
end
|
481
480
|
|
482
481
|
it 'accepts width' do
|
483
|
-
expect
|
482
|
+
expect do
|
484
483
|
allow(subject).to receive(:puts)
|
485
|
-
subject.footer(:
|
486
|
-
|
484
|
+
subject.footer(width: 50)
|
485
|
+
end.to_not raise_error Exception
|
487
486
|
end
|
488
487
|
|
489
488
|
it 'does not accept invalid width' do
|
490
|
-
expect
|
491
|
-
subject.footer(:
|
492
|
-
|
489
|
+
expect do
|
490
|
+
subject.footer(width: 'asdf')
|
491
|
+
end.to raise_error ArgumentError
|
493
492
|
end
|
494
493
|
|
495
494
|
it 'does not allow title > width' do
|
496
|
-
expect
|
497
|
-
subject.footer(:
|
498
|
-
|
495
|
+
expect do
|
496
|
+
subject.footer(title: 'testtesttest', width: 6)
|
497
|
+
end.to raise_error ArgumentError
|
499
498
|
end
|
500
499
|
|
501
500
|
it 'accepts spacing' do
|
502
|
-
expect
|
501
|
+
expect do
|
503
502
|
allow(subject).to receive(:puts)
|
504
|
-
subject.footer(:
|
505
|
-
|
503
|
+
subject.footer(spacing: 3)
|
504
|
+
end.to_not raise_error Exception
|
506
505
|
end
|
507
506
|
end
|
508
507
|
|
@@ -514,37 +513,37 @@ describe CommandLineReporter do
|
|
514
513
|
it 'left aligns the title by default' do
|
515
514
|
expect(subject).to receive(:puts).with("\n")
|
516
515
|
expect(subject).to receive(:puts).with(@title)
|
517
|
-
subject.footer(:
|
516
|
+
subject.footer(title: @title)
|
518
517
|
end
|
519
518
|
|
520
519
|
it 'left aligns the title' do
|
521
520
|
expect(subject).to receive(:puts).with("\n")
|
522
521
|
expect(subject).to receive(:puts).with(@title)
|
523
|
-
subject.footer(:
|
522
|
+
subject.footer(title: @title, align: 'left')
|
524
523
|
end
|
525
524
|
|
526
525
|
it 'right aligns the title' do
|
527
526
|
expect(subject).to receive(:puts).with("\n")
|
528
527
|
expect(subject).to receive(:puts).with(' ' * 90 + @title)
|
529
|
-
subject.footer(:
|
528
|
+
subject.footer(title: @title, align: 'right')
|
530
529
|
end
|
531
530
|
|
532
531
|
it 'right aligns the title using width' do
|
533
532
|
expect(subject).to receive(:puts).with("\n")
|
534
533
|
expect(subject).to receive(:puts).with(' ' * 40 + @title)
|
535
|
-
subject.footer(:
|
534
|
+
subject.footer(title: @title, align: 'right', width: 50)
|
536
535
|
end
|
537
536
|
|
538
537
|
it 'center aligns the title' do
|
539
538
|
expect(subject).to receive(:puts).with("\n")
|
540
539
|
expect(subject).to receive(:puts).with(' ' * 45 + @title)
|
541
|
-
subject.footer(:
|
540
|
+
subject.footer(title: @title, align: 'center')
|
542
541
|
end
|
543
542
|
|
544
543
|
it 'center aligns the title using width' do
|
545
544
|
expect(subject).to receive(:puts).with("\n")
|
546
545
|
expect(subject).to receive(:puts).with(' ' * 35 + @title)
|
547
|
-
subject.footer(:
|
546
|
+
subject.footer(title: @title, align: 'center', width: 80)
|
548
547
|
end
|
549
548
|
end
|
550
549
|
|
@@ -552,13 +551,13 @@ describe CommandLineReporter do
|
|
552
551
|
it 'defaults to a single line of spacing between report' do
|
553
552
|
expect(subject).to receive(:puts).with("\n")
|
554
553
|
expect(subject).to receive(:puts).with('title')
|
555
|
-
subject.footer(:
|
554
|
+
subject.footer(title: 'title')
|
556
555
|
end
|
557
556
|
|
558
557
|
it 'uses the defined spacing between report' do
|
559
558
|
expect(subject).to receive(:puts).with("\n" * 3)
|
560
559
|
expect(subject).to receive(:puts).with('title')
|
561
|
-
subject.footer(:
|
560
|
+
subject.footer(title: 'title', spacing: 3)
|
562
561
|
end
|
563
562
|
end
|
564
563
|
|
@@ -567,21 +566,21 @@ describe CommandLineReporter do
|
|
567
566
|
expect(subject).to receive(:puts).with("\n")
|
568
567
|
expect(subject).to receive(:puts).with('title')
|
569
568
|
expect(subject).to receive(:puts).with(/^#{timestamp_regex}/)
|
570
|
-
subject.footer(:
|
569
|
+
subject.footer(title: 'title', timestamp: true)
|
571
570
|
end
|
572
571
|
|
573
572
|
it 'added with right alignment' do
|
574
573
|
expect(subject).to receive(:puts).with("\n")
|
575
574
|
expect(subject).to receive(:puts).with(/^ *title$/)
|
576
575
|
expect(subject).to receive(:puts).with(/^ *#{timestamp_regex}$/)
|
577
|
-
subject.footer(:
|
576
|
+
subject.footer(title: 'title', align: 'right', timestamp: true, width: 80)
|
578
577
|
end
|
579
578
|
|
580
579
|
it 'added with center alignment' do
|
581
580
|
expect(subject).to receive(:puts).with("\n")
|
582
581
|
expect(subject).to receive(:puts).with(/^ *title *$/)
|
583
582
|
expect(subject).to receive(:puts).with(/^ *#{timestamp_regex} *$/)
|
584
|
-
subject.footer(:
|
583
|
+
subject.footer(title: 'title', align: 'center', timestamp: true, width: 80)
|
585
584
|
end
|
586
585
|
end
|
587
586
|
|
@@ -590,14 +589,14 @@ describe CommandLineReporter do
|
|
590
589
|
expect(subject).to receive(:puts)
|
591
590
|
expect(subject).to receive(:puts).with(linechar * 100)
|
592
591
|
expect(subject).to receive(:puts)
|
593
|
-
subject.footer(:
|
592
|
+
subject.footer(rule: true)
|
594
593
|
end
|
595
594
|
|
596
595
|
it 'uses = as the rule character' do
|
597
596
|
expect(subject).to receive(:puts)
|
598
597
|
expect(subject).to receive(:puts).with('=' * 100)
|
599
598
|
expect(subject).to receive(:puts)
|
600
|
-
subject.footer(:
|
599
|
+
subject.footer(rule: '=')
|
601
600
|
end
|
602
601
|
end
|
603
602
|
|
@@ -605,14 +604,14 @@ describe CommandLineReporter do
|
|
605
604
|
expect(subject).to receive(:puts).with("\n")
|
606
605
|
expect(subject).to receive(:puts).with(controls[:red] + 'title' + controls[:clear])
|
607
606
|
expect(subject).to receive(:puts).with(/^\e\[31m#{timestamp_regex}\e\[0m/)
|
608
|
-
subject.footer(:
|
607
|
+
subject.footer(title: 'title', timestamp: true, color: 'red')
|
609
608
|
end
|
610
609
|
|
611
610
|
it 'outputs bold' do
|
612
611
|
expect(subject).to receive(:puts).with("\n")
|
613
612
|
expect(subject).to receive(:puts).with(controls[:bold] + 'title' + controls[:clear])
|
614
613
|
expect(subject).to receive(:puts).with(/^\e\[1m#{timestamp_regex}\e\[0m/)
|
615
|
-
subject.footer(:
|
614
|
+
subject.footer(title: 'title', timestamp: true, bold: true)
|
616
615
|
end
|
617
616
|
end
|
618
617
|
|
@@ -620,26 +619,26 @@ describe CommandLineReporter do
|
|
620
619
|
it 'instantiates the table class' do
|
621
620
|
allow(subject).to receive(:puts)
|
622
621
|
expect(subject).to receive(:table).once
|
623
|
-
subject.table {
|
622
|
+
subject.table {}
|
624
623
|
end
|
625
624
|
|
626
625
|
it 'requires a row to be defined' do
|
627
|
-
expect
|
626
|
+
expect do
|
628
627
|
subject.table
|
629
|
-
|
628
|
+
end.to raise_error LocalJumpError
|
630
629
|
end
|
631
630
|
|
632
631
|
it 'accepts valid options' do
|
633
|
-
expect
|
634
|
-
subject.table(:
|
635
|
-
|
632
|
+
expect do
|
633
|
+
subject.table(border: true) {}
|
634
|
+
end.to_not raise_error Exception
|
636
635
|
end
|
637
636
|
|
638
637
|
it 'rejects invalid options' do
|
639
|
-
expect
|
638
|
+
expect do
|
640
639
|
allow(subject).to receive(:puts)
|
641
|
-
subject.table(:
|
642
|
-
|
640
|
+
subject.table(asdf: '100') {}
|
641
|
+
end.to raise_error ArgumentError
|
643
642
|
end
|
644
643
|
end
|
645
644
|
|
@@ -675,21 +674,20 @@ describe CommandLineReporter do
|
|
675
674
|
|
676
675
|
subject.table do
|
677
676
|
subject.row do
|
678
|
-
subject.column('asdf', :
|
677
|
+
subject.column('asdf', width: 30)
|
679
678
|
end
|
680
679
|
end
|
681
680
|
end
|
682
681
|
|
683
682
|
it 'rejects invalid options' do
|
684
683
|
allow(subject).to receive(:puts)
|
685
|
-
expect
|
684
|
+
expect do
|
686
685
|
subject.table do
|
687
686
|
subject.row do
|
688
|
-
subject.column('asdf', :
|
687
|
+
subject.column('asdf', asdf: 30)
|
689
688
|
end
|
690
689
|
end
|
691
|
-
|
690
|
+
end.to raise_error ArgumentError
|
692
691
|
end
|
693
692
|
end
|
694
|
-
|
695
693
|
end
|