bashcov 3.1.3 → 3.2.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/gemset.nix ADDED
@@ -0,0 +1,531 @@
1
+ {
2
+ aruba = {
3
+ dependencies = ["contracts" "cucumber" "rspec-expectations" "thor"];
4
+ groups = ["development"];
5
+ platforms = [];
6
+ source = {
7
+ remotes = ["https://rubygems.org"];
8
+ sha256 = "1gdz1yqgs9dm14x1lg4spzc5mrg51s0jybj4g2wp46wlb2k70k5h";
9
+ type = "gem";
10
+ };
11
+ version = "2.3.1";
12
+ };
13
+ ast = {
14
+ groups = ["default" "development"];
15
+ platforms = [];
16
+ source = {
17
+ remotes = ["https://rubygems.org"];
18
+ sha256 = "10yknjyn0728gjn6b5syynvrvrwm66bhssbxq8mkhshxghaiailm";
19
+ type = "gem";
20
+ };
21
+ version = "2.4.3";
22
+ };
23
+ base64 = {
24
+ groups = ["default" "development"];
25
+ platforms = [];
26
+ source = {
27
+ remotes = ["https://rubygems.org"];
28
+ sha256 = "0yx9yn47a8lkfcjmigk79fykxvr80r4m1i35q82sxzynpbm7lcr7";
29
+ type = "gem";
30
+ };
31
+ version = "0.3.0";
32
+ };
33
+ bashcov = {
34
+ dependencies = ["simplecov"];
35
+ groups = ["default"];
36
+ platforms = [];
37
+ source = {
38
+ path = ./.;
39
+ type = "path";
40
+ };
41
+ version = "3.2.0";
42
+ };
43
+ bigdecimal = {
44
+ groups = ["default" "development"];
45
+ platforms = [];
46
+ source = {
47
+ remotes = ["https://rubygems.org"];
48
+ sha256 = "1p2szbr4jdvmwaaj2kxlbv1rp0m6ycbgfyp0kjkkkswmniv5y21r";
49
+ type = "gem";
50
+ };
51
+ version = "3.2.2";
52
+ };
53
+ builder = {
54
+ groups = ["default" "development"];
55
+ platforms = [];
56
+ source = {
57
+ remotes = ["https://rubygems.org"];
58
+ sha256 = "0pw3r2lyagsxkm71bf44v5b74f7l9r7di22brbyji9fwz791hya9";
59
+ type = "gem";
60
+ };
61
+ version = "3.3.0";
62
+ };
63
+ bundler-audit = {
64
+ dependencies = ["thor"];
65
+ groups = ["development"];
66
+ platforms = [];
67
+ source = {
68
+ remotes = ["https://rubygems.org"];
69
+ sha256 = "0j0h5cgnzk0ms17ssjkzfzwz65ggrs3lsp53a1j46p4616m1s1bk";
70
+ type = "gem";
71
+ };
72
+ version = "0.9.2";
73
+ };
74
+ contracts = {
75
+ groups = ["default" "development"];
76
+ platforms = [];
77
+ source = {
78
+ remotes = ["https://rubygems.org"];
79
+ sha256 = "1sclvlwnlxfaj1595xd0rn3x3w0ljic3vqgnx6476lr7x8xbpbiv";
80
+ type = "gem";
81
+ };
82
+ version = "0.17.2";
83
+ };
84
+ cucumber = {
85
+ dependencies = ["base64" "builder" "cucumber-ci-environment" "cucumber-core" "cucumber-cucumber-expressions" "cucumber-html-formatter" "diff-lcs" "logger" "mini_mime" "multi_test" "sys-uname"];
86
+ groups = ["development"];
87
+ platforms = [];
88
+ source = {
89
+ remotes = ["https://rubygems.org"];
90
+ sha256 = "1g9gk07vn3dmwfzg84hqn1kj1qz2q6sxd2pbyq9p93mxwxc0397c";
91
+ type = "gem";
92
+ };
93
+ version = "10.0.0";
94
+ };
95
+ cucumber-ci-environment = {
96
+ groups = ["default" "development"];
97
+ platforms = [];
98
+ source = {
99
+ remotes = ["https://rubygems.org"];
100
+ sha256 = "0cc6w7dqlmnp59ymi7pyspm3w4m7fn37x6b18pziv62wr373yvmv";
101
+ type = "gem";
102
+ };
103
+ version = "10.0.1";
104
+ };
105
+ cucumber-core = {
106
+ dependencies = ["cucumber-gherkin" "cucumber-messages" "cucumber-tag-expressions"];
107
+ groups = ["default" "development"];
108
+ platforms = [];
109
+ source = {
110
+ remotes = ["https://rubygems.org"];
111
+ sha256 = "1drl84y0nzwms4sgx2z1l5wgsmfmi299c4kycic3lrjzbm15cp1d";
112
+ type = "gem";
113
+ };
114
+ version = "15.1.0";
115
+ };
116
+ cucumber-cucumber-expressions = {
117
+ dependencies = ["bigdecimal"];
118
+ groups = ["default" "development"];
119
+ platforms = [];
120
+ source = {
121
+ remotes = ["https://rubygems.org"];
122
+ sha256 = "1rg3dcg2mapay1xbs8cybds05swmj8q9li8ynvrkzwvacfzs1643";
123
+ type = "gem";
124
+ };
125
+ version = "18.0.1";
126
+ };
127
+ cucumber-gherkin = {
128
+ dependencies = ["cucumber-messages"];
129
+ groups = ["default" "development"];
130
+ platforms = [];
131
+ source = {
132
+ remotes = ["https://rubygems.org"];
133
+ sha256 = "044ccaj3c3zv07g823dk4i1v2hbjkfwpp67k90bs8hlyy4pkyyzy";
134
+ type = "gem";
135
+ };
136
+ version = "30.0.4";
137
+ };
138
+ cucumber-html-formatter = {
139
+ dependencies = ["cucumber-messages"];
140
+ groups = ["default" "development"];
141
+ platforms = [];
142
+ source = {
143
+ remotes = ["https://rubygems.org"];
144
+ sha256 = "0kgfhzjylhzm6xqj5b3b12888wwnrcvwig0j84ldchl6vavj0bl8";
145
+ type = "gem";
146
+ };
147
+ version = "21.13.0";
148
+ };
149
+ cucumber-messages = {
150
+ groups = ["default" "development"];
151
+ platforms = [];
152
+ source = {
153
+ remotes = ["https://rubygems.org"];
154
+ sha256 = "1zwzjwr270j11fpg5m1abvdvyiydjsd0p6dd2443vnr08r2s3qj6";
155
+ type = "gem";
156
+ };
157
+ version = "27.2.0";
158
+ };
159
+ cucumber-tag-expressions = {
160
+ groups = ["default" "development"];
161
+ platforms = [];
162
+ source = {
163
+ remotes = ["https://rubygems.org"];
164
+ sha256 = "0vcifp1fiha6yqi36m26n1vr8sz3dpnn5966hcz4a3dq43lf947p";
165
+ type = "gem";
166
+ };
167
+ version = "6.1.2";
168
+ };
169
+ diff-lcs = {
170
+ groups = ["default" "development"];
171
+ platforms = [];
172
+ source = {
173
+ remotes = ["https://rubygems.org"];
174
+ sha256 = "0qlrj2qyysc9avzlr4zs1py3x684hqm61n4czrsk1pyllz5x5q4s";
175
+ type = "gem";
176
+ };
177
+ version = "1.6.2";
178
+ };
179
+ docile = {
180
+ groups = ["default"];
181
+ platforms = [];
182
+ source = {
183
+ remotes = ["https://rubygems.org"];
184
+ sha256 = "07pj4z3h8wk4fgdn6s62vw1lwvhj0ac0x10vfbdkr9xzk7krn5cn";
185
+ type = "gem";
186
+ };
187
+ version = "1.4.1";
188
+ };
189
+ ffi = {
190
+ groups = ["development"];
191
+ platforms = [];
192
+ source = {
193
+ remotes = ["https://rubygems.org"];
194
+ sha256 = "1yvii03hcgqj30maavddqamqy50h7y6xcn2wcyq72wn823zl4ckd";
195
+ type = "gem";
196
+ };
197
+ version = "1.16.3";
198
+ };
199
+ json = {
200
+ groups = ["default" "development"];
201
+ platforms = [];
202
+ source = {
203
+ remotes = ["https://rubygems.org"];
204
+ sha256 = "1z0gmgndcqrcp5hgmgfrf8qiq9c6g4ccfs98qrgsr2d78jxz8z4f";
205
+ type = "gem";
206
+ };
207
+ version = "2.13.1";
208
+ };
209
+ language_server-protocol = {
210
+ groups = ["default" "development"];
211
+ platforms = [];
212
+ source = {
213
+ remotes = ["https://rubygems.org"];
214
+ sha256 = "1k0311vah76kg5m6zr7wmkwyk5p2f9d9hyckjpn3xgr83ajkj7px";
215
+ type = "gem";
216
+ };
217
+ version = "3.17.0.5";
218
+ };
219
+ lint_roller = {
220
+ groups = ["default" "development"];
221
+ platforms = [];
222
+ source = {
223
+ remotes = ["https://rubygems.org"];
224
+ sha256 = "11yc0d84hsnlvx8cpk4cbj6a4dz9pk0r1k29p0n1fz9acddq831c";
225
+ type = "gem";
226
+ };
227
+ version = "1.1.0";
228
+ };
229
+ logger = {
230
+ groups = ["default" "development"];
231
+ platforms = [];
232
+ source = {
233
+ remotes = ["https://rubygems.org"];
234
+ sha256 = "00q2zznygpbls8asz5knjvvj2brr3ghmqxgr83xnrdj4rk3xwvhr";
235
+ type = "gem";
236
+ };
237
+ version = "1.7.0";
238
+ };
239
+ mini_mime = {
240
+ groups = ["default" "development"];
241
+ platforms = [];
242
+ source = {
243
+ remotes = ["https://rubygems.org"];
244
+ sha256 = "1vycif7pjzkr29mfk4dlqv3disc5dn0va04lkwajlpr1wkibg0c6";
245
+ type = "gem";
246
+ };
247
+ version = "1.1.5";
248
+ };
249
+ multi_test = {
250
+ groups = ["default" "development"];
251
+ platforms = [];
252
+ source = {
253
+ remotes = ["https://rubygems.org"];
254
+ sha256 = "042d6a1416h3di57z107ygmjdgacrpyswi73ryz75yv3v36m1rg9";
255
+ type = "gem";
256
+ };
257
+ version = "1.1.0";
258
+ };
259
+ parallel = {
260
+ groups = ["default" "development"];
261
+ platforms = [];
262
+ source = {
263
+ remotes = ["https://rubygems.org"];
264
+ sha256 = "0c719bfgcszqvk9z47w2p8j2wkz5y35k48ywwas5yxbbh3hm3haa";
265
+ type = "gem";
266
+ };
267
+ version = "1.27.0";
268
+ };
269
+ parser = {
270
+ dependencies = ["ast" "racc"];
271
+ groups = ["default" "development"];
272
+ platforms = [];
273
+ source = {
274
+ remotes = ["https://rubygems.org"];
275
+ sha256 = "1wl7frfk68q6gsf6q6j32jl5m3yc0b9x8ycxz3hy79miaj9r5mll";
276
+ type = "gem";
277
+ };
278
+ version = "3.3.9.0";
279
+ };
280
+ prism = {
281
+ groups = ["default" "development"];
282
+ platforms = [];
283
+ source = {
284
+ remotes = ["https://rubygems.org"];
285
+ sha256 = "0gkhpdjib9zi9i27vd9djrxiwjia03cijmd6q8yj2q1ix403w3nw";
286
+ type = "gem";
287
+ };
288
+ version = "1.4.0";
289
+ };
290
+ racc = {
291
+ groups = ["default" "development"];
292
+ platforms = [];
293
+ source = {
294
+ remotes = ["https://rubygems.org"];
295
+ sha256 = "0byn0c9nkahsl93y9ln5bysq4j31q8xkf2ws42swighxd4lnjzsa";
296
+ type = "gem";
297
+ };
298
+ version = "1.8.1";
299
+ };
300
+ rainbow = {
301
+ groups = ["default" "development"];
302
+ platforms = [];
303
+ source = {
304
+ remotes = ["https://rubygems.org"];
305
+ sha256 = "0smwg4mii0fm38pyb5fddbmrdpifwv22zv3d3px2xx497am93503";
306
+ type = "gem";
307
+ };
308
+ version = "3.1.1";
309
+ };
310
+ rake = {
311
+ groups = ["development"];
312
+ platforms = [];
313
+ source = {
314
+ remotes = ["https://rubygems.org"];
315
+ sha256 = "14s4jdcs1a4saam9qmzbsa2bsh85rj9zfxny5z315x3gg0nhkxcn";
316
+ type = "gem";
317
+ };
318
+ version = "13.3.0";
319
+ };
320
+ regexp_parser = {
321
+ groups = ["default" "development"];
322
+ platforms = [];
323
+ source = {
324
+ remotes = ["https://rubygems.org"];
325
+ sha256 = "0qccah61pjvzyyg6mrp27w27dlv6vxlbznzipxjcswl7x3fhsvyb";
326
+ type = "gem";
327
+ };
328
+ version = "2.10.0";
329
+ };
330
+ rspec = {
331
+ dependencies = ["rspec-core" "rspec-expectations" "rspec-mocks"];
332
+ groups = ["development"];
333
+ platforms = [];
334
+ source = {
335
+ remotes = ["https://rubygems.org"];
336
+ sha256 = "0h11wynaki22a40rfq3ahcs4r36jdpz9acbb3m5dkf0mm67sbydr";
337
+ type = "gem";
338
+ };
339
+ version = "3.13.1";
340
+ };
341
+ rspec-core = {
342
+ dependencies = ["rspec-support"];
343
+ groups = ["default" "development"];
344
+ platforms = [];
345
+ source = {
346
+ remotes = ["https://rubygems.org"];
347
+ sha256 = "18sgga9zjrd5579m9rpb78l7yn9a0bjzwz51z5kiq4y6jwl6hgxb";
348
+ type = "gem";
349
+ };
350
+ version = "3.13.5";
351
+ };
352
+ rspec-expectations = {
353
+ dependencies = ["diff-lcs" "rspec-support"];
354
+ groups = ["default" "development"];
355
+ platforms = [];
356
+ source = {
357
+ remotes = ["https://rubygems.org"];
358
+ sha256 = "0dl8npj0jfpy31bxi6syc7jymyd861q277sfr6jawq2hv6hx791k";
359
+ type = "gem";
360
+ };
361
+ version = "3.13.5";
362
+ };
363
+ rspec-mocks = {
364
+ dependencies = ["diff-lcs" "rspec-support"];
365
+ groups = ["default" "development"];
366
+ platforms = [];
367
+ source = {
368
+ remotes = ["https://rubygems.org"];
369
+ sha256 = "10gajm8iscl7gb8q926hyna83bw3fx2zb4sqdzjrznjs51pqlcz4";
370
+ type = "gem";
371
+ };
372
+ version = "3.13.5";
373
+ };
374
+ rspec-support = {
375
+ groups = ["default" "development"];
376
+ platforms = [];
377
+ source = {
378
+ remotes = ["https://rubygems.org"];
379
+ sha256 = "1xx3f4mgr84jz07fifd3r68hm6giqy91hqyzawmi0s59yqa1hjqq";
380
+ type = "gem";
381
+ };
382
+ version = "3.13.4";
383
+ };
384
+ rubocop = {
385
+ dependencies = ["json" "language_server-protocol" "lint_roller" "parallel" "parser" "rainbow" "regexp_parser" "rubocop-ast" "ruby-progressbar" "tsort" "unicode-display_width"];
386
+ groups = ["development"];
387
+ platforms = [];
388
+ source = {
389
+ remotes = ["https://rubygems.org"];
390
+ sha256 = "1gjvmxpvm6cv4mgviyfq3724dk5vlnir1lc3bllyvz7r2qxyh2f7";
391
+ type = "gem";
392
+ };
393
+ version = "1.79.0";
394
+ };
395
+ rubocop-ast = {
396
+ dependencies = ["parser" "prism"];
397
+ groups = ["default" "development"];
398
+ platforms = [];
399
+ source = {
400
+ remotes = ["https://rubygems.org"];
401
+ sha256 = "0ar3y8w36am483ynyzg0x8iwhn8h34y8f4agny4lyqcqbfnzd9qd";
402
+ type = "gem";
403
+ };
404
+ version = "1.46.0";
405
+ };
406
+ rubocop-rake = {
407
+ dependencies = ["lint_roller" "rubocop"];
408
+ groups = ["development"];
409
+ platforms = [];
410
+ source = {
411
+ remotes = ["https://rubygems.org"];
412
+ sha256 = "0kdfrckz1v32dy7c7bdiksjysx9l9zsda9kc6zvrsghch6vg55rp";
413
+ type = "gem";
414
+ };
415
+ version = "0.7.1";
416
+ };
417
+ rubocop-rspec = {
418
+ dependencies = ["lint_roller" "rubocop"];
419
+ groups = ["development"];
420
+ platforms = [];
421
+ source = {
422
+ remotes = ["https://rubygems.org"];
423
+ sha256 = "0ya4815sp8g13w7a86sm0605fx7xyldck77f9pjjfrvpf5c21r60";
424
+ type = "gem";
425
+ };
426
+ version = "3.6.0";
427
+ };
428
+ ruby-progressbar = {
429
+ groups = ["default" "development"];
430
+ platforms = [];
431
+ source = {
432
+ remotes = ["https://rubygems.org"];
433
+ sha256 = "0cwvyb7j47m7wihpfaq7rc47zwwx9k4v7iqd9s1xch5nm53rrz40";
434
+ type = "gem";
435
+ };
436
+ version = "1.13.0";
437
+ };
438
+ simplecov = {
439
+ dependencies = ["docile" "simplecov-html" "simplecov_json_formatter"];
440
+ groups = ["default"];
441
+ platforms = [];
442
+ source = {
443
+ remotes = ["https://rubygems.org"];
444
+ sha256 = "198kcbrjxhhzca19yrdcd6jjj9sb51aaic3b0sc3pwjghg3j49py";
445
+ type = "gem";
446
+ };
447
+ version = "0.22.0";
448
+ };
449
+ simplecov-html = {
450
+ groups = ["default"];
451
+ platforms = [];
452
+ source = {
453
+ remotes = ["https://rubygems.org"];
454
+ sha256 = "0ikjfwydgs08nm3xzc4cn4b6z6rmcrj2imp84xcnimy2wxa8w2xx";
455
+ type = "gem";
456
+ };
457
+ version = "0.13.2";
458
+ };
459
+ simplecov_json_formatter = {
460
+ groups = ["default"];
461
+ platforms = [];
462
+ source = {
463
+ remotes = ["https://rubygems.org"];
464
+ sha256 = "0a5l0733hj7sk51j81ykfmlk2vd5vaijlq9d5fn165yyx3xii52j";
465
+ type = "gem";
466
+ };
467
+ version = "0.1.4";
468
+ };
469
+ sys-uname = {
470
+ dependencies = ["ffi"];
471
+ groups = ["default" "development"];
472
+ platforms = [];
473
+ source = {
474
+ remotes = ["https://rubygems.org"];
475
+ sha256 = "177l8rrqnb4rxf657mw28sgvgc8a2m7nlqcbdbra5m4xga0ypcxp";
476
+ type = "gem";
477
+ };
478
+ version = "1.3.1";
479
+ };
480
+ thor = {
481
+ groups = ["default" "development"];
482
+ platforms = [];
483
+ source = {
484
+ remotes = ["https://rubygems.org"];
485
+ sha256 = "0gcarlmpfbmqnjvwfz44gdjhcmm634di7plcx2zdgwdhrhifhqw7";
486
+ type = "gem";
487
+ };
488
+ version = "1.4.0";
489
+ };
490
+ tsort = {
491
+ groups = ["default" "development"];
492
+ platforms = [];
493
+ source = {
494
+ remotes = ["https://rubygems.org"];
495
+ sha256 = "17q8h020dw73wjmql50lqw5ddsngg67jfw8ncjv476l5ys9sfl4n";
496
+ type = "gem";
497
+ };
498
+ version = "0.2.0";
499
+ };
500
+ unicode-display_width = {
501
+ dependencies = ["unicode-emoji"];
502
+ groups = ["default" "development"];
503
+ platforms = [];
504
+ source = {
505
+ remotes = ["https://rubygems.org"];
506
+ sha256 = "1has87asspm6m9wgqas8ghhhwyf2i1yqrqgrkv47xw7jq3qjmbwc";
507
+ type = "gem";
508
+ };
509
+ version = "3.1.4";
510
+ };
511
+ unicode-emoji = {
512
+ groups = ["default" "development"];
513
+ platforms = [];
514
+ source = {
515
+ remotes = ["https://rubygems.org"];
516
+ sha256 = "0ajk6rngypm3chvl6r0vwv36q1931fjqaqhjjya81rakygvlwb1c";
517
+ type = "gem";
518
+ };
519
+ version = "4.0.4";
520
+ };
521
+ yard = {
522
+ groups = ["development"];
523
+ platforms = [];
524
+ source = {
525
+ remotes = ["https://rubygems.org"];
526
+ sha256 = "14k9lb9a60r9z2zcqg08by9iljrrgjxdkbd91gw17rkqkqwi1sd6";
527
+ type = "gem";
528
+ };
529
+ version = "0.9.37";
530
+ };
531
+ }
@@ -43,7 +43,7 @@ module Bashcov
43
43
  # shebang
44
44
  # @note assumes that +filename+ is readable and refers to a regular file
45
45
  def shellscript_shebang?(filename)
46
- # Handle empty files that cause an immediate EOFError
46
+ # handle empty files that cause an immediate EOFError
47
47
  begin
48
48
  shebang = File.open(filename) { |f| f.readline.chomp }
49
49
  rescue EOFError
@@ -67,8 +67,8 @@ module Bashcov
67
67
 
68
68
  args = scanner.skip(/\s+/).nil? ? [] : scanner.rest.split(/\s+/)
69
69
  rescue ArgumentError
70
- # Handle "invalid byte sequence in UTF-8" from `StringScanner`. Can
71
- # happen when trying to read binary data (e.g. .pngs).
70
+ # handle "invalid byte sequence in UTF-8" from `StringScanner`, this can
71
+ # happen when trying to read binary data (e.g. .png)
72
72
  return false
73
73
  end
74
74
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Bashcov
4
- # Classes for streaming token-delimited fields
4
+ # Class for streaming token-delimited fields
5
5
  class FieldStream
6
6
  attr_accessor :read
7
7
 
@@ -43,7 +43,7 @@ module Bashcov
43
43
  (field_count - chunk.size).times { yield "" }
44
44
  end
45
45
 
46
- # Skip junk that might appear before the first start-of-fields match
46
+ # skip junk that might appear before the first start-of-fields match
47
47
  begin
48
48
  n, chunk = chunked.next
49
49
  yield_fields.call([n, chunk]) unless n.zero?
data/lib/bashcov/lexer.rb CHANGED
@@ -99,17 +99,15 @@ module Bashcov
99
99
  line.sub!(/\s#.*\Z/, "") # remove comments
100
100
  line.strip!
101
101
 
102
- relevant = true
102
+ return false if line.empty? ||
103
+ IGNORE_IS.include?(line) ||
104
+ line.start_with?(*IGNORE_START_WITH) ||
105
+ line.end_with?(*IGNORE_END_WITH)
103
106
 
104
- relevant &= false if line.empty? ||
105
- IGNORE_IS.include?(line) ||
106
- line.start_with?(*IGNORE_START_WITH) ||
107
- line.end_with?(*IGNORE_END_WITH)
107
+ return false if line =~ /\A[a-zA-Z_][a-zA-Z0-9_\-:\.]*\(\)/ # function declared without the `function` keyword
108
+ return false if line =~ /\A[^)]+\)\Z/ # case statement selector, e.g. `--help)`
108
109
 
109
- relevant &= false if line =~ /\A[a-zA-Z_][a-zA-Z0-9_:]*\(\)/ # function declared without the `function` keyword
110
- relevant &= false if line =~ /\A[^)]+\)\Z/ # case statement selector, e.g. `--help)`
111
-
112
- relevant
110
+ true
113
111
  end
114
112
  end
115
113
  end
data/lib/bashcov/line.rb CHANGED
@@ -4,11 +4,11 @@ module Bashcov
4
4
  # {Line} represents a line of code.
5
5
  module Line
6
6
  # Uncovered line
7
- # @see http://ruby-doc.org/stdlib-2.3.0/libdoc/coverage/rdoc/Coverage.html
7
+ # @see http://ruby-doc.org/stdlib-3.0.0/libdoc/coverage/rdoc/Coverage.html
8
8
  UNCOVERED = 0
9
9
 
10
10
  # Ignored line
11
- # @see http://ruby-doc.org/stdlib-2.3.0/libdoc/coverage/rdoc/Coverage.html
11
+ # @see http://ruby-doc.org/stdlib-3.0.0/libdoc/coverage/rdoc/Coverage.html
12
12
  IGNORED = nil
13
13
  end
14
14
  end
@@ -23,8 +23,7 @@ module Bashcov
23
23
  # @note Binds Bashcov +stdin+ to the program being executed.
24
24
  # @return [Process::Status] Status of the executed command
25
25
  def run
26
- # Clear out previous run
27
- @result = nil
26
+ @result = nil # clear out previous run
28
27
 
29
28
  field_stream = FieldStream.new
30
29
  @xtrace = Xtrace.new(field_stream)
@@ -34,8 +33,8 @@ module Bashcov
34
33
  options[fd] = fd # bind FDs to the child process
35
34
 
36
35
  if Bashcov.options.mute
37
- options[:out] = "/dev/null"
38
- options[:err] = "/dev/null"
36
+ options[:out] = File::NULL
37
+ options[:err] = File::NULL
39
38
  end
40
39
 
41
40
  env =
@@ -3,5 +3,5 @@
3
3
  # :nodoc:
4
4
  module Bashcov
5
5
  # Current Bashcov version
6
- VERSION = "3.1.3"
6
+ VERSION = "3.2.0"
7
7
  end
@@ -114,9 +114,9 @@ module Bashcov
114
114
  # @raise [XtraceError] when +lineno+ is not composed solely of digits,
115
115
  # indicating that something has gone wrong with parsing the +PS4+ fields
116
116
  def parse_hit!(lineno, *paths)
117
- # If +LINENO+ isn't a series of digits, something has gone wrong. Add
118
- # +@files+ to the exception in order to propagate the existing coverage
119
- # data back to the {Bashcov::Runner} instance.
117
+ # if +LINENO+ isn't a series of digits, add +@files+ to the exception in
118
+ # order to propagate the existing coverage data back to the
119
+ # {Bashcov::Runner} instance
120
120
  if /\A\d+\z/.match?(lineno)
121
121
  lineno = lineno.to_i
122
122
  elsif lineno == "${LINENO-}"
@@ -128,15 +128,14 @@ module Bashcov
128
128
  )
129
129
  end
130
130
 
131
- # The next three fields will be $BASH_SOURCE, $PWD, $OLDPWD, and $LINENO
132
131
  bash_source, pwd, oldpwd = paths.map { |p| Pathname.new(p) }
133
132
 
134
133
  update_wd_stacks!(pwd, oldpwd)
135
134
 
136
135
  script = find_script(bash_source)
137
136
 
138
- # For one-liners, +LINENO+ == 0. Do this to avoid an +IndexError+;
139
- # one-liners will be culled from the coverage results later on.
137
+ # for one-liners, +LINENO+ == 0, do this to avoid an +IndexError+
138
+ # one-liners will be culled from the coverage results later on
140
139
  index = (lineno > 1 ? lineno - 1 : 0)
141
140
 
142
141
  @files[script] ||= []
@@ -172,16 +171,16 @@ module Bashcov
172
171
  @pwd_stack[0] ||= pwd
173
172
  @oldpwd_stack[0] ||= oldpwd unless oldpwd.to_s.empty?
174
173
 
175
- # We haven't changed working directories; short-circuit.
174
+ # return if we haven't changed working directories
176
175
  return if pwd == @pwd_stack[-1]
177
176
 
178
- # If the current +pwd+ is identical to the top of the +@oldpwd_stack+ and
177
+ # if the current +pwd+ is identical to the top of the +@oldpwd_stack+ and
179
178
  # the current +oldpwd+ is identical to the second-to-top entry, then a
180
- # previous cd/pushd has been undone.
179
+ # previous cd/pushd has been undone
181
180
  if pwd == @oldpwd_stack[-1] && oldpwd == @oldpwd_stack[-2]
182
181
  @pwd_stack.pop
183
182
  @oldpwd_stack.pop
184
- else # New cd/pushd
183
+ else # new cd/pushd
185
184
  @pwd_stack << pwd
186
185
  @oldpwd_stack << oldpwd
187
186
  end