bashcov 3.1.2 → 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.
- checksums.yaml +4 -4
- data/.rubocop.yml +21 -1
- data/CHANGELOG.md +16 -3
- data/Gemfile.nix.lock +144 -0
- data/HACKING.md +166 -0
- data/INSTALL.md +115 -0
- data/LICENSE.txt +1 -1
- data/README.md +6 -2
- data/bin/bashcov +2 -0
- data/compat.nix +26 -0
- data/default.nix +1 -0
- data/flake.lock +139 -0
- data/flake.nix +225 -0
- data/gemset.nix +531 -0
- data/lib/bashcov/detective.rb +3 -3
- data/lib/bashcov/field_stream.rb +2 -2
- data/lib/bashcov/lexer.rb +7 -9
- data/lib/bashcov/line.rb +2 -2
- data/lib/bashcov/runner.rb +3 -4
- data/lib/bashcov/version.rb +1 -1
- data/lib/bashcov/xtrace.rb +9 -10
- data/lib/bashcov.rb +12 -9
- data/shell.nix +1 -0
- data/test.sh +1 -1
- metadata +28 -8
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
|
+
}
|
data/lib/bashcov/detective.rb
CHANGED
@@ -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
|
-
#
|
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
|
-
#
|
71
|
-
# happen when trying to read binary data (e.g. .
|
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
|
|
data/lib/bashcov/field_stream.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Bashcov
|
4
|
-
#
|
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
|
-
#
|
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
|
-
|
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
|
-
|
105
|
-
|
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
|
-
|
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-
|
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-
|
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
|
data/lib/bashcov/runner.rb
CHANGED
@@ -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
|
-
#
|
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] =
|
38
|
-
options[:err] =
|
36
|
+
options[:out] = File::NULL
|
37
|
+
options[:err] = File::NULL
|
39
38
|
end
|
40
39
|
|
41
40
|
env =
|
data/lib/bashcov/version.rb
CHANGED
data/lib/bashcov/xtrace.rb
CHANGED
@@ -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
|
-
#
|
118
|
-
#
|
119
|
-
#
|
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
|
-
#
|
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
|
-
#
|
174
|
+
# return if we haven't changed working directories
|
176
175
|
return if pwd == @pwd_stack[-1]
|
177
176
|
|
178
|
-
#
|
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 #
|
183
|
+
else # new cd/pushd
|
185
184
|
@pwd_stack << pwd
|
186
185
|
@oldpwd_stack << oldpwd
|
187
186
|
end
|