mattock 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. data/doc/README +2 -0
  2. data/doc/Specifications +36 -0
  3. data/doc/coverage/assets/0.5.3/app.js +88 -0
  4. data/doc/coverage/assets/0.5.3/fancybox/blank.gif +0 -0
  5. data/doc/coverage/assets/0.5.3/fancybox/fancy_close.png +0 -0
  6. data/doc/coverage/assets/0.5.3/fancybox/fancy_loading.png +0 -0
  7. data/doc/coverage/assets/0.5.3/fancybox/fancy_nav_left.png +0 -0
  8. data/doc/coverage/assets/0.5.3/fancybox/fancy_nav_right.png +0 -0
  9. data/doc/coverage/assets/0.5.3/fancybox/fancy_shadow_e.png +0 -0
  10. data/doc/coverage/assets/0.5.3/fancybox/fancy_shadow_n.png +0 -0
  11. data/doc/coverage/assets/0.5.3/fancybox/fancy_shadow_ne.png +0 -0
  12. data/doc/coverage/assets/0.5.3/fancybox/fancy_shadow_nw.png +0 -0
  13. data/doc/coverage/assets/0.5.3/fancybox/fancy_shadow_s.png +0 -0
  14. data/doc/coverage/assets/0.5.3/fancybox/fancy_shadow_se.png +0 -0
  15. data/doc/coverage/assets/0.5.3/fancybox/fancy_shadow_sw.png +0 -0
  16. data/doc/coverage/assets/0.5.3/fancybox/fancy_shadow_w.png +0 -0
  17. data/doc/coverage/assets/0.5.3/fancybox/fancy_title_left.png +0 -0
  18. data/doc/coverage/assets/0.5.3/fancybox/fancy_title_main.png +0 -0
  19. data/doc/coverage/assets/0.5.3/fancybox/fancy_title_over.png +0 -0
  20. data/doc/coverage/assets/0.5.3/fancybox/fancy_title_right.png +0 -0
  21. data/doc/coverage/assets/0.5.3/fancybox/fancybox-x.png +0 -0
  22. data/doc/coverage/assets/0.5.3/fancybox/fancybox-y.png +0 -0
  23. data/doc/coverage/assets/0.5.3/fancybox/fancybox.png +0 -0
  24. data/doc/coverage/assets/0.5.3/fancybox/jquery.fancybox-1.3.1.css +363 -0
  25. data/doc/coverage/assets/0.5.3/fancybox/jquery.fancybox-1.3.1.pack.js +44 -0
  26. data/doc/coverage/assets/0.5.3/favicon_green.png +0 -0
  27. data/doc/coverage/assets/0.5.3/favicon_red.png +0 -0
  28. data/doc/coverage/assets/0.5.3/favicon_yellow.png +0 -0
  29. data/doc/coverage/assets/0.5.3/highlight.css +129 -0
  30. data/doc/coverage/assets/0.5.3/highlight.pack.js +1 -0
  31. data/doc/coverage/assets/0.5.3/jquery-1.6.2.min.js +18 -0
  32. data/doc/coverage/assets/0.5.3/jquery.dataTables.min.js +152 -0
  33. data/doc/coverage/assets/0.5.3/jquery.timeago.js +141 -0
  34. data/doc/coverage/assets/0.5.3/jquery.url.js +174 -0
  35. data/doc/coverage/assets/0.5.3/loading.gif +0 -0
  36. data/doc/coverage/assets/0.5.3/magnify.png +0 -0
  37. data/doc/coverage/assets/0.5.3/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  38. data/doc/coverage/assets/0.5.3/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  39. data/doc/coverage/assets/0.5.3/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  40. data/doc/coverage/assets/0.5.3/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  41. data/doc/coverage/assets/0.5.3/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  42. data/doc/coverage/assets/0.5.3/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  43. data/doc/coverage/assets/0.5.3/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  44. data/doc/coverage/assets/0.5.3/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  45. data/doc/coverage/assets/0.5.3/smoothness/images/ui-icons_222222_256x240.png +0 -0
  46. data/doc/coverage/assets/0.5.3/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  47. data/doc/coverage/assets/0.5.3/smoothness/images/ui-icons_454545_256x240.png +0 -0
  48. data/doc/coverage/assets/0.5.3/smoothness/images/ui-icons_888888_256x240.png +0 -0
  49. data/doc/coverage/assets/0.5.3/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  50. data/doc/coverage/assets/0.5.3/smoothness/jquery-ui-1.8.4.custom.css +295 -0
  51. data/doc/coverage/assets/0.5.3/stylesheet.css +383 -0
  52. data/doc/coverage/index.html +3969 -0
  53. data/lib/mattock.rb +4 -0
  54. data/lib/mattock/command-line.rb +157 -0
  55. data/lib/mattock/command-task.rb +51 -0
  56. data/lib/mattock/configurable.rb +129 -0
  57. data/lib/mattock/remote-command-task.rb +30 -0
  58. data/lib/mattock/tasklib.rb +76 -0
  59. data/lib/mattock/template-host.rb +54 -0
  60. data/lib/mattock/testing/mock-command-line.rb +26 -0
  61. data/lib/mattock/testing/rake-example-group.rb +79 -0
  62. data/spec/command-line.rb +59 -0
  63. data/spec/command-task.rb +39 -0
  64. data/spec/configurable.rb +45 -0
  65. data/spec/tasklib.rb +42 -0
  66. data/spec_help/gem_test_suite.rb +17 -0
  67. data/spec_help/spec_helper.rb +2 -0
  68. metadata +215 -0
@@ -0,0 +1,383 @@
1
+ /* -----------------------------------------------------------------------
2
+
3
+
4
+ Blueprint CSS Framework 0.9
5
+ http://blueprintcss.org
6
+
7
+ * Copyright (c) 2007-Present. See LICENSE for more info.
8
+ * See README for instructions on how to use Blueprint.
9
+ * For credits and origins, see AUTHORS.
10
+ * This is a compressed file. See the sources in the 'src' directory.
11
+
12
+ ----------------------------------------------------------------------- */
13
+
14
+ /* reset.css */
15
+ html, body, div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, code, del, dfn, em, img, q, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, dialog, figure, footer, header, hgroup, nav, section {margin:0;padding:0;border:0;font-weight:inherit;font-style:inherit;font-size:100%;font-family:inherit;vertical-align:baseline;}
16
+ article, aside, dialog, figure, footer, header, hgroup, nav, section {display:block;}
17
+ body {line-height:1.5;}
18
+ table {border-collapse:separate;border-spacing:0;}
19
+ caption, th, td {text-align:left;font-weight:normal;}
20
+ table, td, th {vertical-align:middle;}
21
+ blockquote:before, blockquote:after, q:before, q:after {content:"";}
22
+ blockquote, q {quotes:"" "";}
23
+ a img {border:none;}
24
+
25
+ /* typography.css */
26
+ html {font-size:100.01%;}
27
+ body {font-size:82%;color:#222;background:#fff;font-family:"Helvetica Neue", Arial, Helvetica, sans-serif;}
28
+ h1, h2, h3, h4, h5, h6 {font-weight:normal;color:#111;}
29
+ h1 {font-size:3em;line-height:1;margin-bottom:0.5em;}
30
+ h2 {font-size:2em;margin-bottom:0.75em;}
31
+ h3 {font-size:1.5em;line-height:1;margin-bottom:1em;}
32
+ h4 {font-size:1.2em;line-height:1.25;margin-bottom:1.25em;}
33
+ h5 {font-size:1em;font-weight:bold;margin-bottom:1.5em;}
34
+ h6 {font-size:1em;font-weight:bold;}
35
+ h1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin:0;}
36
+ p {margin:0 0 1.5em;}
37
+ p img.left {float:left;margin:1.5em 1.5em 1.5em 0;padding:0;}
38
+ p img.right {float:right;margin:1.5em 0 1.5em 1.5em;}
39
+ a:focus, a:hover {color:#000;}
40
+ a {color:#009;text-decoration:underline;}
41
+ blockquote {margin:1.5em;color:#666;font-style:italic;}
42
+ strong {font-weight:bold;}
43
+ em, dfn {font-style:italic;}
44
+ dfn {font-weight:bold;}
45
+ sup, sub {line-height:0;}
46
+ abbr, acronym {border-bottom:1px dotted #666;}
47
+ address {margin:0 0 1.5em;font-style:italic;}
48
+ del {color:#666;}
49
+ pre {margin:1.5em 0;white-space:pre;}
50
+ pre, code, tt {font:1em 'andale mono', 'lucida console', monospace;line-height:1.5;}
51
+ li ul, li ol {margin:0;}
52
+ ul, ol {margin:0 1.5em 1.5em 0;padding-left:3.333em;}
53
+ ul {list-style-type:disc;}
54
+ ol {list-style-type:decimal;}
55
+ dl {margin:0 0 1.5em 0;}
56
+ dl dt {font-weight:bold;}
57
+ dd {margin-left:1.5em;}
58
+ table {margin-bottom:1.4em;width:100%;}
59
+ th {font-weight:bold;}
60
+ thead th {background:#c3d9ff;}
61
+ th, td, caption {padding:4px 10px 4px 5px;}
62
+ tr.even td {background:#efefef;}
63
+ tfoot {font-style:italic;}
64
+ caption {background:#eee;}
65
+ .small {font-size:.8em;margin-bottom:1.875em;line-height:1.875em;}
66
+ .large {font-size:1.2em;line-height:2.5em;margin-bottom:1.25em;}
67
+ .hide {display:none;}
68
+ .quiet {color:#666;}
69
+ .loud {color:#000;}
70
+ .highlight {background:#ff0;}
71
+ .added {background:#060;color:#fff;}
72
+ .removed {background:#900;color:#fff;}
73
+ .first {margin-left:0;padding-left:0;}
74
+ .last {margin-right:0;padding-right:0;}
75
+ .top {margin-top:0;padding-top:0;}
76
+ .bottom {margin-bottom:0;padding-bottom:0;}
77
+
78
+ /* forms.css */
79
+ label {font-weight:bold;}
80
+ fieldset {padding:1.4em;margin:0 0 1.5em 0;border:1px solid #ccc;}
81
+ legend {font-weight:bold;font-size:1.2em;}
82
+ input[type=text], input[type=password], input.text, input.title, textarea, select {background-color:#fff;border:1px solid #bbb;}
83
+ input[type=text]:focus, input[type=password]:focus, input.text:focus, input.title:focus, textarea:focus, select:focus {border-color:#666;}
84
+ input[type=text], input[type=password], input.text, input.title, textarea, select {margin:0.5em 0;}
85
+ input.text, input.title {width:300px;padding:5px;}
86
+ input.title {font-size:1.5em;}
87
+ textarea {width:390px;height:250px;padding:5px;}
88
+ input[type=checkbox], input[type=radio], input.checkbox, input.radio {position:relative;top:.25em;}
89
+ form.inline {line-height:3;}
90
+ form.inline p {margin-bottom:0;}
91
+ .error, .notice, .success {padding:.8em;margin-bottom:1em;border:2px solid #ddd;}
92
+ .error {background:#FBE3E4;color:#8a1f11;border-color:#FBC2C4;}
93
+ .notice {background:#FFF6BF;color:#514721;border-color:#FFD324;}
94
+ .success {background:#E6EFC2;color:#264409;border-color:#C6D880;}
95
+ .error a {color:#8a1f11;}
96
+ .notice a {color:#514721;}
97
+ .success a {color:#264409;}
98
+ .box {padding:1.5em;margin-bottom:1.5em;background:#E5ECF9;}
99
+ hr {background:#ddd;color:#ddd;clear:both;float:none;width:100%;height:.1em;margin:0 0 1.45em;border:none;}
100
+ hr.space {background:#fff;color:#fff;visibility:hidden;}
101
+ .clearfix:after, .container:after {content:"\0020";display:block;height:0;clear:both;visibility:hidden;overflow:hidden;}
102
+ .clearfix, .container {display:block;}
103
+ .clear {clear:both;}
104
+
105
+ #loading {
106
+ position: fixed;
107
+ left: 40%;
108
+ top: 50%;
109
+ }
110
+
111
+ a {
112
+ color: #333;
113
+ text-decoration: none;
114
+ }
115
+
116
+ a:hover {
117
+ color: #000;
118
+ text-decoration: underline;
119
+ }
120
+
121
+ body {
122
+ font-family: "Lucida Grande", Helvetica, "Helvetica Neue", Arial, sans-serif;
123
+ padding: 12px;
124
+ background-color: #333;
125
+ }
126
+
127
+ h1, h2, h3, h4 {
128
+ color: #1C2324;
129
+ margin: 0;
130
+ padding: 0;
131
+ margin-bottom: 12px;
132
+ }
133
+
134
+ table {
135
+ width: 100%;
136
+ }
137
+
138
+ #content {
139
+ clear: left;
140
+ background-color: white;
141
+ border: 2px solid #ddd;
142
+ border-top: 8px solid #ddd;
143
+ padding: 18px;
144
+ -webkit-border-bottom-left-radius: 5px;
145
+ -webkit-border-bottom-right-radius: 5px;
146
+ -webkit-border-top-right-radius: 5px;
147
+ -moz-border-radius-bottomleft: 5px;
148
+ -moz-border-radius-bottomright: 5px;
149
+ -moz-border-radius-topright: 5px;
150
+ border-bottom-left-radius: 5px;
151
+ border-bottom-right-radius: 5px;
152
+ border-top-right-radius: 5px;
153
+ }
154
+
155
+ .dataTables_filter, .dataTables_info {
156
+ padding: 2px 6px;
157
+ }
158
+
159
+ abbr.timeago {
160
+ text-decoration: none;
161
+ border: none;
162
+ font-weight: bold;
163
+ }
164
+
165
+ .timestamp {
166
+ float: right;
167
+ color: #ddd;
168
+ }
169
+
170
+ .group_tabs {
171
+ list-style: none;
172
+ float: left;
173
+ margin: 0;
174
+ padding: 0;
175
+ }
176
+ .group_tabs li {
177
+ display: inline;
178
+ float: left;
179
+ }
180
+
181
+ .group_tabs li a {
182
+ font-family: Helvetica, Arial, sans-serif;
183
+ display: block;
184
+ float: left;
185
+ text-decoration: none;
186
+ padding: 4px 8px;
187
+ background-color: #aaa;
188
+ background: -webkit-gradient(linear, 0 0, 0 bottom, from(#DDD), to(#aaa));
189
+ background: -moz-linear-gradient(#DDD, #aaa);
190
+ background: linear-gradient(#DDD, #aaa);
191
+ text-shadow: #e5e5e5 1px 1px 0px;
192
+ border-bottom: none;
193
+ color: #333;
194
+ font-weight: bold;
195
+ margin-right: 8px;
196
+ border-top: 1px solid #efefef;
197
+ -webkit-border-top-left-radius: 2px;
198
+ -webkit-border-top-right-radius: 2px;
199
+ -moz-border-radius-topleft: 2px;
200
+ -moz-border-radius-topright: 2px;
201
+ border-top-left-radius: 2px;
202
+ border-top-right-radius: 2px;
203
+ }
204
+
205
+ .group_tabs li a:hover {
206
+ background-color: #ccc;
207
+ background: -webkit-gradient(linear, 0 0, 0 bottom, from(#eee), to(#aaa));
208
+ background: -moz-linear-gradient(#eee, #aaa);
209
+ background: linear-gradient(#eee, #aaa);
210
+ }
211
+
212
+ .group_tabs li a:active {
213
+ padding-top: 5px;
214
+ padding-bottom: 3px;
215
+ }
216
+
217
+ .group_tabs li.active a {
218
+ color: black;
219
+ text-shadow: #fff 1px 1px 0px;
220
+ background-color: #ddd;
221
+ background: -webkit-gradient(linear, 0 0, 0 bottom, from(#fff), to(#ddd));
222
+ background: -moz-linear-gradient(#fff, #ddd);
223
+ background: linear-gradient(#fff, #ddd);
224
+ }
225
+
226
+ .file_list {
227
+ margin-bottom: 18px;
228
+ }
229
+
230
+ a.src_link {
231
+ background: url('./magnify.png') no-repeat left 50%;
232
+ padding-left: 18px;
233
+ }
234
+
235
+ tr, td {
236
+ margin: 0;
237
+ padding: 0;
238
+ }
239
+
240
+ th {
241
+ white-space: nowrap;
242
+ }
243
+
244
+ th.ui-state-default {
245
+ cursor: pointer;
246
+ }
247
+
248
+ th span.ui-icon {
249
+ float: left;
250
+ }
251
+
252
+ td {
253
+ padding: 4px 8px;
254
+ }
255
+
256
+ td.strong {
257
+ font-weight: bold;
258
+ }
259
+
260
+ .source_table h3, .source_table h4 {
261
+ padding: 0;
262
+ margin: 0;
263
+ margin-bottom: 4px;
264
+ }
265
+
266
+ .source_table .header {
267
+ padding: 10px;
268
+ }
269
+
270
+ .source_table pre {
271
+ margin: 0;
272
+ padding: 0;
273
+ white-space: normal;
274
+ }
275
+
276
+ .source_table pre, .source_table code {
277
+ color: #000;
278
+ font-family: "Monaco", "Inconsolata", "Consolas", monospace;
279
+ }
280
+
281
+ .source_table pre {
282
+ background-color: #333;
283
+ }
284
+
285
+ .source_table pre ol {
286
+ margin: 0px;
287
+ padding: 0px;
288
+ margin-left: 45px;
289
+ font-size: 12px;
290
+ color: white;
291
+ }
292
+
293
+ .source_table pre li {
294
+ margin: 0px;
295
+ padding: 2px 6px;
296
+ border-left: 5px solid white;
297
+ }
298
+
299
+ .source_table pre li code {
300
+ white-space: pre;
301
+ white-space: pre-wrap;
302
+ }
303
+
304
+ .source_table pre .hits {
305
+ float: right;
306
+ margin-left: 10px;
307
+ padding: 2px 4px;
308
+
309
+ background-color: #444;
310
+ background: -webkit-gradient(linear, 0 0, 0 bottom, from(#222), to(#666));
311
+ background: -moz-linear-gradient(#222, #666);
312
+ background: linear-gradient(#222, #666);
313
+
314
+ color: white;
315
+ font-family: Helvetica, "Helvetica Neue", Arial, sans-serif;
316
+ font-size: 10px;
317
+ font-weight: bold;
318
+ text-align: center;
319
+ border-radius: 6px;
320
+ }
321
+
322
+ #footer {
323
+ color: #ddd;
324
+ font-size: 12px;
325
+ font-weight: bold;
326
+ margin-top: 12px;
327
+ text-align: right;
328
+ }
329
+ #footer a {
330
+ color: #eee;
331
+ text-decoration: underline;
332
+ }
333
+ #footer a:hover {
334
+ color: #fff;
335
+ text-decoration: none;
336
+ }
337
+
338
+ .green {
339
+ color: #090;
340
+ }
341
+ .red {
342
+ color: #900;
343
+ }
344
+ .yellow {
345
+ color: #da0;
346
+ }
347
+ .source_table .covered {
348
+ border-color: #090;
349
+ }
350
+ .source_table .missed {
351
+ border-color: #900;
352
+ }
353
+ .source_table .never {
354
+ border-color: black;
355
+ }
356
+ .source_table .skipped {
357
+ border-color: #fc0;
358
+ }
359
+
360
+ .source_table .covered:nth-child(odd) {
361
+ background-color: #CDF2CD;
362
+ }
363
+ .source_table .covered:nth-child(even) {
364
+ background-color: #DBF2DB;
365
+ }
366
+ .source_table .missed:nth-child(odd) {
367
+ background-color: #F7C0C0;
368
+ }
369
+ .source_table .missed:nth-child(even) {
370
+ background-color: #F7CFCF;
371
+ }
372
+ .source_table .never:nth-child(odd) {
373
+ background-color: #efefef;
374
+ }
375
+ .source_table .never:nth-child(even) {
376
+ background-color: #f4f4f4;
377
+ }
378
+ .source_table .skipped:nth-child(odd) {
379
+ background-color: #FBF0C0;
380
+ }
381
+ .source_table .skipped:nth-child(even) {
382
+ background-color: #FBFfCf;
383
+ }
@@ -0,0 +1,3969 @@
1
+ <!DOCTYPE html>
2
+ <html xmlns='http://www.w3.org/1999/xhtml'>
3
+ <head>
4
+ <title>Code coverage for Mattock</title>
5
+ <meta http-equiv="content-type" content="text/html; charset=utf-8" />
6
+ <script src='./assets/0.5.3/jquery-1.6.2.min.js' type='text/javascript'></script>
7
+ <script src='./assets/0.5.3/jquery.dataTables.min.js' type='text/javascript'></script>
8
+ <script src='./assets/0.5.3/fancybox/jquery.fancybox-1.3.1.pack.js' type='text/javascript'></script>
9
+ <script src='./assets/0.5.3/jquery.timeago.js' type='text/javascript'></script>
10
+ <script src='./assets/0.5.3/jquery.url.js' type='text/javascript'></script>
11
+ <script src='./assets/0.5.3/highlight.pack.js' type='text/javascript'></script>
12
+ <script src='./assets/0.5.3/app.js' type='text/javascript'></script>
13
+ <link href='./assets/0.5.3/stylesheet.css' media='screen, projection, print' rel='stylesheet' type='text/css'>
14
+ <link href='./assets/0.5.3/highlight.css' media='screen, projection, print' rel='stylesheet' type='text/css'>
15
+ <link href='./assets/0.5.3/fancybox/jquery.fancybox-1.3.1.css' media='screen, projection, print' rel='stylesheet' type='text/css'>
16
+ <link href='./assets/0.5.3/smoothness/jquery-ui-1.8.4.custom.css' media='screen, projection, print' rel='stylesheet' type='text/css'>
17
+ <link rel="shortcut icon" type="image/png" href="./assets/0.5.3/favicon_green.png" />
18
+ <link rel="icon" type="image/png" href="./assets/0.5.3/favicon.png" />
19
+ </head>
20
+
21
+ <body>
22
+ <div id="loading">
23
+ <img src="./assets/0.5.3/loading.gif" alt="loading"/>
24
+ </div>
25
+ <div id="wrapper" style="display:none;">
26
+ <div class="timestamp">Generated <abbr class="timeago" title="2012-01-21T01:32:01-08:00">2012-01-21T01:32:01-08:00</abbr></div>
27
+ <ul class="group_tabs"></ul>
28
+
29
+ <div id="content">
30
+ <div class="file_list_container" id="AllFiles">
31
+ <h2>
32
+ <span class="group_name">All Files</span>
33
+ (<span class="covered_percent"><span class="green">93.0%</span></span>
34
+ covered at
35
+ <span class="covered_strength">
36
+ <span class="green">
37
+ 2.98
38
+ </span>
39
+ </span> hits/line)
40
+ </h2>
41
+ <a name="AllFiles"></a>
42
+ <div>
43
+ <b>9</b> files in total.
44
+ <b>343</b> relevant lines.
45
+ <span class="green"><b>319</b> lines covered</span> and
46
+ <span class="red"><b>24</b> lines missed </span>
47
+ </div>
48
+ <table class="file_list">
49
+ <thead>
50
+ <tr>
51
+ <th>File</th>
52
+ <th>% covered</th>
53
+ <th>Lines</th>
54
+ <th>Relevant Lines</th>
55
+ <th>Lines covered</th>
56
+ <th>Lines missed</th>
57
+ <th>Avg. Hits / Line</th>
58
+ </tr>
59
+ </thead>
60
+ <tbody>
61
+
62
+ <tr>
63
+ <td class="strong"><a href="#ff1ec41bbd289dd44f158d42bb096896a51c94a4" class="src_link" title="lib/mattock.rb">lib/mattock.rb</a></td>
64
+ <td class="green strong">100.0 %</td>
65
+ <td>4</td>
66
+ <td>4</td>
67
+ <td>4</td>
68
+ <td>0</td>
69
+ <td>1.0</td>
70
+ </tr>
71
+
72
+ <tr>
73
+ <td class="strong"><a href="#19e9811ada5819ea8e2c6a644088d4ba8e773a5b" class="src_link" title="lib/mattock/command-line.rb">lib/mattock/command-line.rb</a></td>
74
+ <td class="green strong">93.1 %</td>
75
+ <td>157</td>
76
+ <td>87</td>
77
+ <td>81</td>
78
+ <td>6</td>
79
+ <td>2.9</td>
80
+ </tr>
81
+
82
+ <tr>
83
+ <td class="strong"><a href="#937bd4854d7605194eaf61c021175d6a0f31e6e8" class="src_link" title="lib/mattock/command-task.rb">lib/mattock/command-task.rb</a></td>
84
+ <td class="green strong">93.1 %</td>
85
+ <td>51</td>
86
+ <td>29</td>
87
+ <td>27</td>
88
+ <td>2</td>
89
+ <td>1.2</td>
90
+ </tr>
91
+
92
+ <tr>
93
+ <td class="strong"><a href="#151b5abc8f09f0fc2932ac98c07e3b516a518e3e" class="src_link" title="lib/mattock/configurable.rb">lib/mattock/configurable.rb</a></td>
94
+ <td class="green strong">98.7 %</td>
95
+ <td>129</td>
96
+ <td>77</td>
97
+ <td>76</td>
98
+ <td>1</td>
99
+ <td>8.8</td>
100
+ </tr>
101
+
102
+ <tr>
103
+ <td class="strong"><a href="#dbfbe3e96d32b3e7eea8b666117072d5da6e3e60" class="src_link" title="lib/mattock/remote-command-task.rb">lib/mattock/remote-command-task.rb</a></td>
104
+ <td class="yellow strong">88.89 %</td>
105
+ <td>30</td>
106
+ <td>18</td>
107
+ <td>16</td>
108
+ <td>2</td>
109
+ <td>1.4</td>
110
+ </tr>
111
+
112
+ <tr>
113
+ <td class="strong"><a href="#a2c73f0ba96e60116ee8696673802b6ebaddc38c" class="src_link" title="lib/mattock/tasklib.rb">lib/mattock/tasklib.rb</a></td>
114
+ <td class="green strong">97.5 %</td>
115
+ <td>76</td>
116
+ <td>40</td>
117
+ <td>39</td>
118
+ <td>1</td>
119
+ <td>3.8</td>
120
+ </tr>
121
+
122
+ <tr>
123
+ <td class="strong"><a href="#d473017bbd055a2863ae4f15284c3cc7d86dd38e" class="src_link" title="lib/mattock/template-host.rb">lib/mattock/template-host.rb</a></td>
124
+ <td class="red strong">63.33 %</td>
125
+ <td>54</td>
126
+ <td>30</td>
127
+ <td>19</td>
128
+ <td>11</td>
129
+ <td>0.6</td>
130
+ </tr>
131
+
132
+ <tr>
133
+ <td class="strong"><a href="#d05b479afa4321ddf827a6b5af14020183ee07b9" class="src_link" title="lib/mattock/testing/mock-command-line.rb">lib/mattock/testing/mock-command-line.rb</a></td>
134
+ <td class="green strong">92.86 %</td>
135
+ <td>26</td>
136
+ <td>14</td>
137
+ <td>13</td>
138
+ <td>1</td>
139
+ <td>1.4</td>
140
+ </tr>
141
+
142
+ <tr>
143
+ <td class="strong"><a href="#ba419266ded63c6767eeb8c594191949ebb1b061" class="src_link" title="lib/mattock/testing/rake-example-group.rb">lib/mattock/testing/rake-example-group.rb</a></td>
144
+ <td class="green strong">100.0 %</td>
145
+ <td>79</td>
146
+ <td>44</td>
147
+ <td>44</td>
148
+ <td>0</td>
149
+ <td>5.7</td>
150
+ </tr>
151
+
152
+ </tbody>
153
+ </table>
154
+ </div>
155
+
156
+
157
+
158
+ </div>
159
+
160
+ <div id="footer">
161
+ Generated by <a href="http://github.com/colszowka/simplecov">simplecov</a> v0.5.4
162
+ and simplecov-html v0.5.3<br/>
163
+ using RSpec
164
+ </div>
165
+
166
+ <div class="source_files">
167
+
168
+ <div class="source_table" id="ff1ec41bbd289dd44f158d42bb096896a51c94a4">
169
+ <div class="header">
170
+ <h3>lib/mattock.rb</h3>
171
+ <h4><span class="green">100.0 %</span> covered</h4>
172
+ <div>
173
+ <b>4</b> relevant lines.
174
+ <span class="green"><b>4</b> lines covered</span> and
175
+ <span class="red"><b>0</b> lines missed.</span>
176
+ </div>
177
+ </div>
178
+
179
+ <pre>
180
+ <ol>
181
+
182
+ <li class="covered" data-hits="1" data-linenumber="1">
183
+ <span class="hits">1</span>
184
+
185
+ <code class="ruby">require 'mattock/tasklib'</code>
186
+ </li>
187
+
188
+ <li class="covered" data-hits="1" data-linenumber="2">
189
+ <span class="hits">1</span>
190
+
191
+ <code class="ruby">require 'mattock/command-line'</code>
192
+ </li>
193
+
194
+ <li class="covered" data-hits="1" data-linenumber="3">
195
+ <span class="hits">1</span>
196
+
197
+ <code class="ruby">require 'mattock/remote-command-task'</code>
198
+ </li>
199
+
200
+ <li class="covered" data-hits="1" data-linenumber="4">
201
+ <span class="hits">1</span>
202
+
203
+ <code class="ruby">require 'mattock/template-host'</code>
204
+ </li>
205
+
206
+ </ol>
207
+ </pre>
208
+ </div>
209
+
210
+ <div class="source_table" id="19e9811ada5819ea8e2c6a644088d4ba8e773a5b">
211
+ <div class="header">
212
+ <h3>lib/mattock/command-line.rb</h3>
213
+ <h4><span class="green">93.1 %</span> covered</h4>
214
+ <div>
215
+ <b>87</b> relevant lines.
216
+ <span class="green"><b>81</b> lines covered</span> and
217
+ <span class="red"><b>6</b> lines missed.</span>
218
+ </div>
219
+ </div>
220
+
221
+ <pre>
222
+ <ol>
223
+
224
+ <li class="covered" data-hits="1" data-linenumber="1">
225
+ <span class="hits">1</span>
226
+
227
+ <code class="ruby">module Mattock</code>
228
+ </li>
229
+
230
+ <li class="covered" data-hits="1" data-linenumber="2">
231
+ <span class="hits">1</span>
232
+
233
+ <code class="ruby"> class CommandRunResult</code>
234
+ </li>
235
+
236
+ <li class="covered" data-hits="1" data-linenumber="3">
237
+ <span class="hits">1</span>
238
+
239
+ <code class="ruby"> def initialize(status, streams)</code>
240
+ </li>
241
+
242
+ <li class="covered" data-hits="5" data-linenumber="4">
243
+ <span class="hits">5</span>
244
+
245
+ <code class="ruby"> @process_status = status</code>
246
+ </li>
247
+
248
+ <li class="covered" data-hits="5" data-linenumber="5">
249
+ <span class="hits">5</span>
250
+
251
+ <code class="ruby"> @streams = streams</code>
252
+ </li>
253
+
254
+ <li class="never" data-hits="" data-linenumber="6">
255
+
256
+
257
+ <code class="ruby"> end</code>
258
+ </li>
259
+
260
+ <li class="covered" data-hits="1" data-linenumber="7">
261
+ <span class="hits">1</span>
262
+
263
+ <code class="ruby"> attr_reader :process_status, :streams</code>
264
+ </li>
265
+
266
+ <li class="never" data-hits="" data-linenumber="8">
267
+
268
+
269
+ <code class="ruby"></code>
270
+ </li>
271
+
272
+ <li class="covered" data-hits="1" data-linenumber="9">
273
+ <span class="hits">1</span>
274
+
275
+ <code class="ruby"> def stdout</code>
276
+ </li>
277
+
278
+ <li class="covered" data-hits="1" data-linenumber="10">
279
+ <span class="hits">1</span>
280
+
281
+ <code class="ruby"> @streams[1]</code>
282
+ </li>
283
+
284
+ <li class="never" data-hits="" data-linenumber="11">
285
+
286
+
287
+ <code class="ruby"> end</code>
288
+ </li>
289
+
290
+ <li class="never" data-hits="" data-linenumber="12">
291
+
292
+
293
+ <code class="ruby"></code>
294
+ </li>
295
+
296
+ <li class="covered" data-hits="1" data-linenumber="13">
297
+ <span class="hits">1</span>
298
+
299
+ <code class="ruby"> def stderr</code>
300
+ </li>
301
+
302
+ <li class="missed" data-hits="0" data-linenumber="14">
303
+
304
+
305
+ <code class="ruby"> @streams[2]</code>
306
+ </li>
307
+
308
+ <li class="never" data-hits="" data-linenumber="15">
309
+
310
+
311
+ <code class="ruby"> end</code>
312
+ </li>
313
+
314
+ <li class="never" data-hits="" data-linenumber="16">
315
+
316
+
317
+ <code class="ruby"></code>
318
+ </li>
319
+
320
+ <li class="covered" data-hits="1" data-linenumber="17">
321
+ <span class="hits">1</span>
322
+
323
+ <code class="ruby"> def exit_code</code>
324
+ </li>
325
+
326
+ <li class="covered" data-hits="6" data-linenumber="18">
327
+ <span class="hits">6</span>
328
+
329
+ <code class="ruby"> @process_status.exitstatus</code>
330
+ </li>
331
+
332
+ <li class="never" data-hits="" data-linenumber="19">
333
+
334
+
335
+ <code class="ruby"> end</code>
336
+ </li>
337
+
338
+ <li class="covered" data-hits="1" data-linenumber="20">
339
+ <span class="hits">1</span>
340
+
341
+ <code class="ruby"> alias exit_status exit_code</code>
342
+ </li>
343
+
344
+ <li class="never" data-hits="" data-linenumber="21">
345
+
346
+
347
+ <code class="ruby"></code>
348
+ </li>
349
+
350
+ <li class="covered" data-hits="1" data-linenumber="22">
351
+ <span class="hits">1</span>
352
+
353
+ <code class="ruby"> def succeeded?</code>
354
+ </li>
355
+
356
+ <li class="covered" data-hits="3" data-linenumber="23">
357
+ <span class="hits">3</span>
358
+
359
+ <code class="ruby"> must_succeed!</code>
360
+ </li>
361
+
362
+ <li class="covered" data-hits="1" data-linenumber="24">
363
+ <span class="hits">1</span>
364
+
365
+ <code class="ruby"> return true</code>
366
+ </li>
367
+
368
+ <li class="never" data-hits="" data-linenumber="25">
369
+
370
+
371
+ <code class="ruby"> rescue</code>
372
+ </li>
373
+
374
+ <li class="covered" data-hits="2" data-linenumber="26">
375
+ <span class="hits">2</span>
376
+
377
+ <code class="ruby"> return false</code>
378
+ </li>
379
+
380
+ <li class="never" data-hits="" data-linenumber="27">
381
+
382
+
383
+ <code class="ruby"> end</code>
384
+ </li>
385
+
386
+ <li class="never" data-hits="" data-linenumber="28">
387
+
388
+
389
+ <code class="ruby"></code>
390
+ </li>
391
+
392
+ <li class="covered" data-hits="1" data-linenumber="29">
393
+ <span class="hits">1</span>
394
+
395
+ <code class="ruby"> def must_succeed!</code>
396
+ </li>
397
+
398
+ <li class="covered" data-hits="5" data-linenumber="30">
399
+ <span class="hits">5</span>
400
+
401
+ <code class="ruby"> case exit_code</code>
402
+ </li>
403
+
404
+ <li class="never" data-hits="" data-linenumber="31">
405
+
406
+
407
+ <code class="ruby"> when 0</code>
408
+ </li>
409
+
410
+ <li class="covered" data-hits="3" data-linenumber="32">
411
+ <span class="hits">3</span>
412
+
413
+ <code class="ruby"> return exit_code</code>
414
+ </li>
415
+
416
+ <li class="never" data-hits="" data-linenumber="33">
417
+
418
+
419
+ <code class="ruby"> else</code>
420
+ </li>
421
+
422
+ <li class="covered" data-hits="2" data-linenumber="34">
423
+ <span class="hits">2</span>
424
+
425
+ <code class="ruby"> fail &quot;Command '#{name}' failed with exit status #{$?.exitstatus}: \n&quot;</code>
426
+ </li>
427
+
428
+ <li class="never" data-hits="" data-linenumber="35">
429
+
430
+
431
+ <code class="ruby"> end</code>
432
+ </li>
433
+
434
+ <li class="never" data-hits="" data-linenumber="36">
435
+
436
+
437
+ <code class="ruby"> end</code>
438
+ </li>
439
+
440
+ <li class="never" data-hits="" data-linenumber="37">
441
+
442
+
443
+ <code class="ruby"> end</code>
444
+ </li>
445
+
446
+ <li class="never" data-hits="" data-linenumber="38">
447
+
448
+
449
+ <code class="ruby"></code>
450
+ </li>
451
+
452
+ <li class="covered" data-hits="1" data-linenumber="39">
453
+ <span class="hits">1</span>
454
+
455
+ <code class="ruby"> class CommandLine</code>
456
+ </li>
457
+
458
+ <li class="covered" data-hits="1" data-linenumber="40">
459
+ <span class="hits">1</span>
460
+
461
+ <code class="ruby"> def initialize(executable, *options)</code>
462
+ </li>
463
+
464
+ <li class="covered" data-hits="14" data-linenumber="41">
465
+ <span class="hits">14</span>
466
+
467
+ <code class="ruby"> @executable = executable</code>
468
+ </li>
469
+
470
+ <li class="covered" data-hits="14" data-linenumber="42">
471
+ <span class="hits">14</span>
472
+
473
+ <code class="ruby"> @options = options</code>
474
+ </li>
475
+
476
+ <li class="covered" data-hits="14" data-linenumber="43">
477
+ <span class="hits">14</span>
478
+
479
+ <code class="ruby"> @redirections = []</code>
480
+ </li>
481
+
482
+ <li class="covered" data-hits="14" data-linenumber="44">
483
+ <span class="hits">14</span>
484
+
485
+ <code class="ruby"> yield self if block_given?</code>
486
+ </li>
487
+
488
+ <li class="never" data-hits="" data-linenumber="45">
489
+
490
+
491
+ <code class="ruby"> end</code>
492
+ </li>
493
+
494
+ <li class="never" data-hits="" data-linenumber="46">
495
+
496
+
497
+ <code class="ruby"></code>
498
+ </li>
499
+
500
+ <li class="covered" data-hits="1" data-linenumber="47">
501
+ <span class="hits">1</span>
502
+
503
+ <code class="ruby"> attr_accessor :name, :executable, :options</code>
504
+ </li>
505
+
506
+ <li class="never" data-hits="" data-linenumber="48">
507
+
508
+
509
+ <code class="ruby"></code>
510
+ </li>
511
+
512
+ <li class="covered" data-hits="1" data-linenumber="49">
513
+ <span class="hits">1</span>
514
+
515
+ <code class="ruby"> def name</code>
516
+ </li>
517
+
518
+ <li class="covered" data-hits="1" data-linenumber="50">
519
+ <span class="hits">1</span>
520
+
521
+ <code class="ruby"> @name || executable</code>
522
+ </li>
523
+
524
+ <li class="never" data-hits="" data-linenumber="51">
525
+
526
+
527
+ <code class="ruby"> end</code>
528
+ </li>
529
+
530
+ <li class="never" data-hits="" data-linenumber="52">
531
+
532
+
533
+ <code class="ruby"></code>
534
+ </li>
535
+
536
+ <li class="covered" data-hits="1" data-linenumber="53">
537
+ <span class="hits">1</span>
538
+
539
+ <code class="ruby"> def command</code>
540
+ </li>
541
+
542
+ <li class="covered" data-hits="12" data-linenumber="54">
543
+ <span class="hits">12</span>
544
+
545
+ <code class="ruby"> ([executable] + options + @redirections).join(&quot; &quot;)</code>
546
+ </li>
547
+
548
+ <li class="never" data-hits="" data-linenumber="55">
549
+
550
+
551
+ <code class="ruby"> end</code>
552
+ </li>
553
+
554
+ <li class="never" data-hits="" data-linenumber="56">
555
+
556
+
557
+ <code class="ruby"></code>
558
+ </li>
559
+
560
+ <li class="covered" data-hits="1" data-linenumber="57">
561
+ <span class="hits">1</span>
562
+
563
+ <code class="ruby"> def redirect_to(stream, path)</code>
564
+ </li>
565
+
566
+ <li class="covered" data-hits="2" data-linenumber="58">
567
+ <span class="hits">2</span>
568
+
569
+ <code class="ruby"> @redirections &lt;&lt; &quot;#{stream}&gt;#{path}&quot;</code>
570
+ </li>
571
+
572
+ <li class="never" data-hits="" data-linenumber="59">
573
+
574
+
575
+ <code class="ruby"> end</code>
576
+ </li>
577
+
578
+ <li class="never" data-hits="" data-linenumber="60">
579
+
580
+
581
+ <code class="ruby"></code>
582
+ </li>
583
+
584
+ <li class="covered" data-hits="1" data-linenumber="61">
585
+ <span class="hits">1</span>
586
+
587
+ <code class="ruby"> def redirect_from(path, stream)</code>
588
+ </li>
589
+
590
+ <li class="missed" data-hits="0" data-linenumber="62">
591
+
592
+
593
+ <code class="ruby"> @redirections &lt;&lt; &quot;#{stream}&lt;#{path}&quot;</code>
594
+ </li>
595
+
596
+ <li class="never" data-hits="" data-linenumber="63">
597
+
598
+
599
+ <code class="ruby"> end</code>
600
+ </li>
601
+
602
+ <li class="never" data-hits="" data-linenumber="64">
603
+
604
+
605
+ <code class="ruby"></code>
606
+ </li>
607
+
608
+ <li class="covered" data-hits="1" data-linenumber="65">
609
+ <span class="hits">1</span>
610
+
611
+ <code class="ruby"> def copy_stream_to(from, to)</code>
612
+ </li>
613
+
614
+ <li class="missed" data-hits="0" data-linenumber="66">
615
+
616
+
617
+ <code class="ruby"> @redirections &lt;&lt; &quot;#{from}&gt;&amp;#{to}&quot;</code>
618
+ </li>
619
+
620
+ <li class="never" data-hits="" data-linenumber="67">
621
+
622
+
623
+ <code class="ruby"> end</code>
624
+ </li>
625
+
626
+ <li class="never" data-hits="" data-linenumber="68">
627
+
628
+
629
+ <code class="ruby"></code>
630
+ </li>
631
+
632
+ <li class="covered" data-hits="1" data-linenumber="69">
633
+ <span class="hits">1</span>
634
+
635
+ <code class="ruby"> def redirect_stdout(path)</code>
636
+ </li>
637
+
638
+ <li class="covered" data-hits="1" data-linenumber="70">
639
+ <span class="hits">1</span>
640
+
641
+ <code class="ruby"> redirect_to(1, path)</code>
642
+ </li>
643
+
644
+ <li class="never" data-hits="" data-linenumber="71">
645
+
646
+
647
+ <code class="ruby"> end</code>
648
+ </li>
649
+
650
+ <li class="never" data-hits="" data-linenumber="72">
651
+
652
+
653
+ <code class="ruby"></code>
654
+ </li>
655
+
656
+ <li class="covered" data-hits="1" data-linenumber="73">
657
+ <span class="hits">1</span>
658
+
659
+ <code class="ruby"> def redirect_stderr(path)</code>
660
+ </li>
661
+
662
+ <li class="covered" data-hits="1" data-linenumber="74">
663
+ <span class="hits">1</span>
664
+
665
+ <code class="ruby"> redirect_to(2, path)</code>
666
+ </li>
667
+
668
+ <li class="never" data-hits="" data-linenumber="75">
669
+
670
+
671
+ <code class="ruby"> end</code>
672
+ </li>
673
+
674
+ <li class="never" data-hits="" data-linenumber="76">
675
+
676
+
677
+ <code class="ruby"></code>
678
+ </li>
679
+
680
+ <li class="covered" data-hits="1" data-linenumber="77">
681
+ <span class="hits">1</span>
682
+
683
+ <code class="ruby"> def redirect_stdin(path)</code>
684
+ </li>
685
+
686
+ <li class="missed" data-hits="0" data-linenumber="78">
687
+
688
+
689
+ <code class="ruby"> redirect_from(path, 0)</code>
690
+ </li>
691
+
692
+ <li class="never" data-hits="" data-linenumber="79">
693
+
694
+
695
+ <code class="ruby"> end</code>
696
+ </li>
697
+
698
+ <li class="never" data-hits="" data-linenumber="80">
699
+
700
+
701
+ <code class="ruby"></code>
702
+ </li>
703
+
704
+ <li class="covered" data-hits="1" data-linenumber="81">
705
+ <span class="hits">1</span>
706
+
707
+ <code class="ruby"> def self.execute(command)</code>
708
+ </li>
709
+
710
+ <li class="covered" data-hits="5" data-linenumber="82">
711
+ <span class="hits">5</span>
712
+
713
+ <code class="ruby"> pipe = IO.popen(command)</code>
714
+ </li>
715
+
716
+ <li class="covered" data-hits="5" data-linenumber="83">
717
+ <span class="hits">5</span>
718
+
719
+ <code class="ruby"> pid = pipe.pid</code>
720
+ </li>
721
+
722
+ <li class="covered" data-hits="5" data-linenumber="84">
723
+ <span class="hits">5</span>
724
+
725
+ <code class="ruby"> pid, status = Process.wait2(pid)</code>
726
+ </li>
727
+
728
+ <li class="covered" data-hits="5" data-linenumber="85">
729
+ <span class="hits">5</span>
730
+
731
+ <code class="ruby"> result = CommandRunResult.new(status, {1 =&gt; pipe.read})</code>
732
+ </li>
733
+
734
+ <li class="covered" data-hits="5" data-linenumber="86">
735
+ <span class="hits">5</span>
736
+
737
+ <code class="ruby"> pipe.close</code>
738
+ </li>
739
+
740
+ <li class="covered" data-hits="5" data-linenumber="87">
741
+ <span class="hits">5</span>
742
+
743
+ <code class="ruby"> return result</code>
744
+ </li>
745
+
746
+ <li class="never" data-hits="" data-linenumber="88">
747
+
748
+
749
+ <code class="ruby"> end</code>
750
+ </li>
751
+
752
+ <li class="never" data-hits="" data-linenumber="89">
753
+
754
+
755
+ <code class="ruby"></code>
756
+ </li>
757
+
758
+ <li class="covered" data-hits="1" data-linenumber="90">
759
+ <span class="hits">1</span>
760
+
761
+ <code class="ruby"> def run</code>
762
+ </li>
763
+
764
+ <li class="covered" data-hits="7" data-linenumber="91">
765
+ <span class="hits">7</span>
766
+
767
+ <code class="ruby"> print command + &quot; &quot; if $verbose</code>
768
+ </li>
769
+
770
+ <li class="covered" data-hits="7" data-linenumber="92">
771
+ <span class="hits">7</span>
772
+
773
+ <code class="ruby"> result = self.class.execute(command)</code>
774
+ </li>
775
+
776
+ <li class="covered" data-hits="7" data-linenumber="93">
777
+ <span class="hits">7</span>
778
+
779
+ <code class="ruby"> print &quot;=&gt; #{result.exit_code}&quot; if $verbose</code>
780
+ </li>
781
+
782
+ <li class="covered" data-hits="7" data-linenumber="94">
783
+ <span class="hits">7</span>
784
+
785
+ <code class="ruby"> return result</code>
786
+ </li>
787
+
788
+ <li class="never" data-hits="" data-linenumber="95">
789
+
790
+
791
+ <code class="ruby"> ensure</code>
792
+ </li>
793
+
794
+ <li class="covered" data-hits="7" data-linenumber="96">
795
+ <span class="hits">7</span>
796
+
797
+ <code class="ruby"> puts if $verbose</code>
798
+ </li>
799
+
800
+ <li class="never" data-hits="" data-linenumber="97">
801
+
802
+
803
+ <code class="ruby"> end</code>
804
+ </li>
805
+
806
+ <li class="never" data-hits="" data-linenumber="98">
807
+
808
+
809
+ <code class="ruby"></code>
810
+ </li>
811
+
812
+ <li class="covered" data-hits="1" data-linenumber="99">
813
+ <span class="hits">1</span>
814
+
815
+ <code class="ruby"> def succeeds?</code>
816
+ </li>
817
+
818
+ <li class="covered" data-hits="3" data-linenumber="100">
819
+ <span class="hits">3</span>
820
+
821
+ <code class="ruby"> run.succeeded?</code>
822
+ </li>
823
+
824
+ <li class="never" data-hits="" data-linenumber="101">
825
+
826
+
827
+ <code class="ruby"> end</code>
828
+ </li>
829
+
830
+ <li class="never" data-hits="" data-linenumber="102">
831
+
832
+
833
+ <code class="ruby"></code>
834
+ </li>
835
+
836
+ <li class="covered" data-hits="1" data-linenumber="103">
837
+ <span class="hits">1</span>
838
+
839
+ <code class="ruby"> def must_succeed!</code>
840
+ </li>
841
+
842
+ <li class="covered" data-hits="2" data-linenumber="104">
843
+ <span class="hits">2</span>
844
+
845
+ <code class="ruby"> run.must_succeed!</code>
846
+ </li>
847
+
848
+ <li class="never" data-hits="" data-linenumber="105">
849
+
850
+
851
+ <code class="ruby"> end</code>
852
+ </li>
853
+
854
+ <li class="never" data-hits="" data-linenumber="106">
855
+
856
+
857
+ <code class="ruby"> end</code>
858
+ </li>
859
+
860
+ <li class="never" data-hits="" data-linenumber="107">
861
+
862
+
863
+ <code class="ruby"></code>
864
+ </li>
865
+
866
+ <li class="covered" data-hits="1" data-linenumber="108">
867
+ <span class="hits">1</span>
868
+
869
+ <code class="ruby"> class ShellEscaped &lt; CommandLine</code>
870
+ </li>
871
+
872
+ <li class="covered" data-hits="1" data-linenumber="109">
873
+ <span class="hits">1</span>
874
+
875
+ <code class="ruby"> def initialize(cmd)</code>
876
+ </li>
877
+
878
+ <li class="covered" data-hits="2" data-linenumber="110">
879
+ <span class="hits">2</span>
880
+
881
+ <code class="ruby"> @escaped = cmd</code>
882
+ </li>
883
+
884
+ <li class="never" data-hits="" data-linenumber="111">
885
+
886
+
887
+ <code class="ruby"> end</code>
888
+ </li>
889
+
890
+ <li class="never" data-hits="" data-linenumber="112">
891
+
892
+
893
+ <code class="ruby"></code>
894
+ </li>
895
+
896
+ <li class="covered" data-hits="1" data-linenumber="113">
897
+ <span class="hits">1</span>
898
+
899
+ <code class="ruby"> def command</code>
900
+ </li>
901
+
902
+ <li class="covered" data-hits="2" data-linenumber="114">
903
+ <span class="hits">2</span>
904
+
905
+ <code class="ruby"> &quot;'&quot; + @escaped.command.gsub(/'/,&quot;\'&quot;) + &quot;'&quot;</code>
906
+ </li>
907
+
908
+ <li class="never" data-hits="" data-linenumber="115">
909
+
910
+
911
+ <code class="ruby"> end</code>
912
+ </li>
913
+
914
+ <li class="never" data-hits="" data-linenumber="116">
915
+
916
+
917
+ <code class="ruby"></code>
918
+ </li>
919
+
920
+ <li class="covered" data-hits="1" data-linenumber="117">
921
+ <span class="hits">1</span>
922
+
923
+ <code class="ruby"> def name</code>
924
+ </li>
925
+
926
+ <li class="missed" data-hits="0" data-linenumber="118">
927
+
928
+
929
+ <code class="ruby"> @name || @escaped.name</code>
930
+ </li>
931
+
932
+ <li class="never" data-hits="" data-linenumber="119">
933
+
934
+
935
+ <code class="ruby"> end</code>
936
+ </li>
937
+
938
+ <li class="never" data-hits="" data-linenumber="120">
939
+
940
+
941
+ <code class="ruby"> end</code>
942
+ </li>
943
+
944
+ <li class="never" data-hits="" data-linenumber="121">
945
+
946
+
947
+ <code class="ruby"></code>
948
+ </li>
949
+
950
+ <li class="covered" data-hits="1" data-linenumber="122">
951
+ <span class="hits">1</span>
952
+
953
+ <code class="ruby"> class CommandChain &lt; CommandLine</code>
954
+ </li>
955
+
956
+ <li class="covered" data-hits="1" data-linenumber="123">
957
+ <span class="hits">1</span>
958
+
959
+ <code class="ruby"> def initialize</code>
960
+ </li>
961
+
962
+ <li class="covered" data-hits="4" data-linenumber="124">
963
+ <span class="hits">4</span>
964
+
965
+ <code class="ruby"> @commands = []</code>
966
+ </li>
967
+
968
+ <li class="covered" data-hits="4" data-linenumber="125">
969
+ <span class="hits">4</span>
970
+
971
+ <code class="ruby"> yield self if block_given?</code>
972
+ </li>
973
+
974
+ <li class="never" data-hits="" data-linenumber="126">
975
+
976
+
977
+ <code class="ruby"> end</code>
978
+ </li>
979
+
980
+ <li class="never" data-hits="" data-linenumber="127">
981
+
982
+
983
+ <code class="ruby"></code>
984
+ </li>
985
+
986
+ <li class="covered" data-hits="1" data-linenumber="128">
987
+ <span class="hits">1</span>
988
+
989
+ <code class="ruby"> attr_reader :commands</code>
990
+ </li>
991
+
992
+ <li class="never" data-hits="" data-linenumber="129">
993
+
994
+
995
+ <code class="ruby"></code>
996
+ </li>
997
+
998
+ <li class="covered" data-hits="1" data-linenumber="130">
999
+ <span class="hits">1</span>
1000
+
1001
+ <code class="ruby"> def add(cmd)</code>
1002
+ </li>
1003
+
1004
+ <li class="covered" data-hits="8" data-linenumber="131">
1005
+ <span class="hits">8</span>
1006
+
1007
+ <code class="ruby"> yield cmd if block_given?</code>
1008
+ </li>
1009
+
1010
+ <li class="covered" data-hits="8" data-linenumber="132">
1011
+ <span class="hits">8</span>
1012
+
1013
+ <code class="ruby"> @commands &lt;&lt; cmd</code>
1014
+ </li>
1015
+
1016
+ <li class="never" data-hits="" data-linenumber="133">
1017
+
1018
+
1019
+ <code class="ruby"> end</code>
1020
+ </li>
1021
+
1022
+ <li class="never" data-hits="" data-linenumber="134">
1023
+
1024
+
1025
+ <code class="ruby"></code>
1026
+ </li>
1027
+
1028
+ <li class="covered" data-hits="1" data-linenumber="135">
1029
+ <span class="hits">1</span>
1030
+
1031
+ <code class="ruby"> def name</code>
1032
+ </li>
1033
+
1034
+ <li class="missed" data-hits="0" data-linenumber="136">
1035
+
1036
+
1037
+ <code class="ruby"> @name || @commands.last.name</code>
1038
+ </li>
1039
+
1040
+ <li class="never" data-hits="" data-linenumber="137">
1041
+
1042
+
1043
+ <code class="ruby"> end</code>
1044
+ </li>
1045
+
1046
+ <li class="never" data-hits="" data-linenumber="138">
1047
+
1048
+
1049
+ <code class="ruby"> end</code>
1050
+ </li>
1051
+
1052
+ <li class="never" data-hits="" data-linenumber="139">
1053
+
1054
+
1055
+ <code class="ruby"></code>
1056
+ </li>
1057
+
1058
+ <li class="covered" data-hits="1" data-linenumber="140">
1059
+ <span class="hits">1</span>
1060
+
1061
+ <code class="ruby"> class WrappingChain &lt; CommandChain</code>
1062
+ </li>
1063
+
1064
+ <li class="covered" data-hits="1" data-linenumber="141">
1065
+ <span class="hits">1</span>
1066
+
1067
+ <code class="ruby"> def command</code>
1068
+ </li>
1069
+
1070
+ <li class="covered" data-hits="6" data-linenumber="142">
1071
+ <span class="hits">6</span>
1072
+
1073
+ <code class="ruby"> @commands.map{|cmd| cmd.command}.join(&quot; -- &quot;)</code>
1074
+ </li>
1075
+
1076
+ <li class="never" data-hits="" data-linenumber="143">
1077
+
1078
+
1079
+ <code class="ruby"> end</code>
1080
+ </li>
1081
+
1082
+ <li class="never" data-hits="" data-linenumber="144">
1083
+
1084
+
1085
+ <code class="ruby"> end</code>
1086
+ </li>
1087
+
1088
+ <li class="never" data-hits="" data-linenumber="145">
1089
+
1090
+
1091
+ <code class="ruby"></code>
1092
+ </li>
1093
+
1094
+ <li class="covered" data-hits="1" data-linenumber="146">
1095
+ <span class="hits">1</span>
1096
+
1097
+ <code class="ruby"> class PrereqChain &lt; CommandChain</code>
1098
+ </li>
1099
+
1100
+ <li class="covered" data-hits="1" data-linenumber="147">
1101
+ <span class="hits">1</span>
1102
+
1103
+ <code class="ruby"> def command</code>
1104
+ </li>
1105
+
1106
+ <li class="covered" data-hits="3" data-linenumber="148">
1107
+ <span class="hits">3</span>
1108
+
1109
+ <code class="ruby"> @commands.map{|cmd| cmd.command}.join(&quot; &amp;&amp; &quot;)</code>
1110
+ </li>
1111
+
1112
+ <li class="never" data-hits="" data-linenumber="149">
1113
+
1114
+
1115
+ <code class="ruby"> end</code>
1116
+ </li>
1117
+
1118
+ <li class="never" data-hits="" data-linenumber="150">
1119
+
1120
+
1121
+ <code class="ruby"> end</code>
1122
+ </li>
1123
+
1124
+ <li class="never" data-hits="" data-linenumber="151">
1125
+
1126
+
1127
+ <code class="ruby"></code>
1128
+ </li>
1129
+
1130
+ <li class="covered" data-hits="1" data-linenumber="152">
1131
+ <span class="hits">1</span>
1132
+
1133
+ <code class="ruby"> class PipelineChain &lt; CommandChain</code>
1134
+ </li>
1135
+
1136
+ <li class="covered" data-hits="1" data-linenumber="153">
1137
+ <span class="hits">1</span>
1138
+
1139
+ <code class="ruby"> def command</code>
1140
+ </li>
1141
+
1142
+ <li class="covered" data-hits="3" data-linenumber="154">
1143
+ <span class="hits">3</span>
1144
+
1145
+ <code class="ruby"> @commands.map{|cmd| cmd.command}.join(&quot; | &quot;)</code>
1146
+ </li>
1147
+
1148
+ <li class="never" data-hits="" data-linenumber="155">
1149
+
1150
+
1151
+ <code class="ruby"> end</code>
1152
+ </li>
1153
+
1154
+ <li class="never" data-hits="" data-linenumber="156">
1155
+
1156
+
1157
+ <code class="ruby"> end</code>
1158
+ </li>
1159
+
1160
+ <li class="never" data-hits="" data-linenumber="157">
1161
+
1162
+
1163
+ <code class="ruby">end</code>
1164
+ </li>
1165
+
1166
+ </ol>
1167
+ </pre>
1168
+ </div>
1169
+
1170
+ <div class="source_table" id="937bd4854d7605194eaf61c021175d6a0f31e6e8">
1171
+ <div class="header">
1172
+ <h3>lib/mattock/command-task.rb</h3>
1173
+ <h4><span class="green">93.1 %</span> covered</h4>
1174
+ <div>
1175
+ <b>29</b> relevant lines.
1176
+ <span class="green"><b>27</b> lines covered</span> and
1177
+ <span class="red"><b>2</b> lines missed.</span>
1178
+ </div>
1179
+ </div>
1180
+
1181
+ <pre>
1182
+ <ol>
1183
+
1184
+ <li class="covered" data-hits="1" data-linenumber="1">
1185
+ <span class="hits">1</span>
1186
+
1187
+ <code class="ruby">require 'mattock/tasklib'</code>
1188
+ </li>
1189
+
1190
+ <li class="covered" data-hits="1" data-linenumber="2">
1191
+ <span class="hits">1</span>
1192
+
1193
+ <code class="ruby">require 'mattock/command-line'</code>
1194
+ </li>
1195
+
1196
+ <li class="never" data-hits="" data-linenumber="3">
1197
+
1198
+
1199
+ <code class="ruby"></code>
1200
+ </li>
1201
+
1202
+ <li class="covered" data-hits="1" data-linenumber="4">
1203
+ <span class="hits">1</span>
1204
+
1205
+ <code class="ruby">module Mattock</code>
1206
+ </li>
1207
+
1208
+ <li class="covered" data-hits="1" data-linenumber="5">
1209
+ <span class="hits">1</span>
1210
+
1211
+ <code class="ruby"> module NeededPredicate</code>
1212
+ </li>
1213
+
1214
+ <li class="covered" data-hits="1" data-linenumber="6">
1215
+ <span class="hits">1</span>
1216
+
1217
+ <code class="ruby"> def needed_predicate(&amp;block)</code>
1218
+ </li>
1219
+
1220
+ <li class="covered" data-hits="2" data-linenumber="7">
1221
+ <span class="hits">2</span>
1222
+
1223
+ <code class="ruby"> (class &lt;&lt; self; self; end).instance_eval do</code>
1224
+ </li>
1225
+
1226
+ <li class="covered" data-hits="1" data-linenumber="8">
1227
+ <span class="hits">1</span>
1228
+
1229
+ <code class="ruby"> define_method(:needed?, &amp;block)</code>
1230
+ </li>
1231
+
1232
+ <li class="never" data-hits="" data-linenumber="9">
1233
+
1234
+
1235
+ <code class="ruby"> end</code>
1236
+ </li>
1237
+
1238
+ <li class="never" data-hits="" data-linenumber="10">
1239
+
1240
+
1241
+ <code class="ruby"> end</code>
1242
+ </li>
1243
+
1244
+ <li class="never" data-hits="" data-linenumber="11">
1245
+
1246
+
1247
+ <code class="ruby"> end</code>
1248
+ </li>
1249
+
1250
+ <li class="never" data-hits="" data-linenumber="12">
1251
+
1252
+
1253
+ <code class="ruby"></code>
1254
+ </li>
1255
+
1256
+ <li class="covered" data-hits="1" data-linenumber="13">
1257
+ <span class="hits">1</span>
1258
+
1259
+ <code class="ruby"> class CommandTask &lt; TaskLib</code>
1260
+ </li>
1261
+
1262
+ <li class="covered" data-hits="1" data-linenumber="14">
1263
+ <span class="hits">1</span>
1264
+
1265
+ <code class="ruby"> setting(:task_name, :run)</code>
1266
+ </li>
1267
+
1268
+ <li class="covered" data-hits="1" data-linenumber="15">
1269
+ <span class="hits">1</span>
1270
+
1271
+ <code class="ruby"> setting(:command)</code>
1272
+ </li>
1273
+
1274
+ <li class="covered" data-hits="1" data-linenumber="16">
1275
+ <span class="hits">1</span>
1276
+
1277
+ <code class="ruby"> setting(:verify_command, nil)</code>
1278
+ </li>
1279
+
1280
+ <li class="never" data-hits="" data-linenumber="17">
1281
+
1282
+
1283
+ <code class="ruby"></code>
1284
+ </li>
1285
+
1286
+ <li class="covered" data-hits="1" data-linenumber="18">
1287
+ <span class="hits">1</span>
1288
+
1289
+ <code class="ruby"> def verify_command</code>
1290
+ </li>
1291
+
1292
+ <li class="covered" data-hits="3" data-linenumber="19">
1293
+ <span class="hits">3</span>
1294
+
1295
+ <code class="ruby"> if @verify_command.respond_to?(:call)</code>
1296
+ </li>
1297
+
1298
+ <li class="missed" data-hits="0" data-linenumber="20">
1299
+
1300
+
1301
+ <code class="ruby"> @verify_command = @verify_command.call</code>
1302
+ </li>
1303
+
1304
+ <li class="never" data-hits="" data-linenumber="21">
1305
+
1306
+
1307
+ <code class="ruby"> end</code>
1308
+ </li>
1309
+
1310
+ <li class="covered" data-hits="3" data-linenumber="22">
1311
+ <span class="hits">3</span>
1312
+
1313
+ <code class="ruby"> @verify_command</code>
1314
+ </li>
1315
+
1316
+ <li class="never" data-hits="" data-linenumber="23">
1317
+
1318
+
1319
+ <code class="ruby"> end</code>
1320
+ </li>
1321
+
1322
+ <li class="never" data-hits="" data-linenumber="24">
1323
+
1324
+
1325
+ <code class="ruby"></code>
1326
+ </li>
1327
+
1328
+ <li class="covered" data-hits="1" data-linenumber="25">
1329
+ <span class="hits">1</span>
1330
+
1331
+ <code class="ruby"> def decorated(cmd)</code>
1332
+ </li>
1333
+
1334
+ <li class="missed" data-hits="0" data-linenumber="26">
1335
+
1336
+
1337
+ <code class="ruby"> cmd</code>
1338
+ </li>
1339
+
1340
+ <li class="never" data-hits="" data-linenumber="27">
1341
+
1342
+
1343
+ <code class="ruby"> end</code>
1344
+ </li>
1345
+
1346
+ <li class="never" data-hits="" data-linenumber="28">
1347
+
1348
+
1349
+ <code class="ruby"></code>
1350
+ </li>
1351
+
1352
+ <li class="covered" data-hits="1" data-linenumber="29">
1353
+ <span class="hits">1</span>
1354
+
1355
+ <code class="ruby"> def command_task</code>
1356
+ </li>
1357
+
1358
+ <li class="never" data-hits="" data-linenumber="30">
1359
+
1360
+
1361
+ <code class="ruby"> @command_task ||=</code>
1362
+ </li>
1363
+
1364
+ <li class="never" data-hits="" data-linenumber="31">
1365
+
1366
+
1367
+ <code class="ruby"> begin</code>
1368
+ </li>
1369
+
1370
+ <li class="covered" data-hits="1" data-linenumber="32">
1371
+ <span class="hits">1</span>
1372
+
1373
+ <code class="ruby"> task task_name do</code>
1374
+ </li>
1375
+
1376
+ <li class="covered" data-hits="1" data-linenumber="33">
1377
+ <span class="hits">1</span>
1378
+
1379
+ <code class="ruby"> decorated(command).must_succeed!</code>
1380
+ </li>
1381
+
1382
+ <li class="never" data-hits="" data-linenumber="34">
1383
+
1384
+
1385
+ <code class="ruby"> end</code>
1386
+ </li>
1387
+
1388
+ <li class="covered" data-hits="3" data-linenumber="35">
1389
+ <span class="hits">3</span>
1390
+
1391
+ <code class="ruby"> end</code>
1392
+ </li>
1393
+
1394
+ <li class="never" data-hits="" data-linenumber="36">
1395
+
1396
+
1397
+ <code class="ruby"> end</code>
1398
+ </li>
1399
+
1400
+ <li class="never" data-hits="" data-linenumber="37">
1401
+
1402
+
1403
+ <code class="ruby"></code>
1404
+ </li>
1405
+
1406
+ <li class="covered" data-hits="1" data-linenumber="38">
1407
+ <span class="hits">1</span>
1408
+
1409
+ <code class="ruby"> def define</code>
1410
+ </li>
1411
+
1412
+ <li class="covered" data-hits="1" data-linenumber="39">
1413
+ <span class="hits">1</span>
1414
+
1415
+ <code class="ruby"> in_namespace do</code>
1416
+ </li>
1417
+
1418
+ <li class="covered" data-hits="1" data-linenumber="40">
1419
+ <span class="hits">1</span>
1420
+
1421
+ <code class="ruby"> command_task</code>
1422
+ </li>
1423
+
1424
+ <li class="covered" data-hits="1" data-linenumber="41">
1425
+ <span class="hits">1</span>
1426
+
1427
+ <code class="ruby"> unless verify_command.nil?</code>
1428
+ </li>
1429
+
1430
+ <li class="covered" data-hits="1" data-linenumber="42">
1431
+ <span class="hits">1</span>
1432
+
1433
+ <code class="ruby"> needed = decorated(verify_command)</code>
1434
+ </li>
1435
+
1436
+ <li class="covered" data-hits="1" data-linenumber="43">
1437
+ <span class="hits">1</span>
1438
+
1439
+ <code class="ruby"> command_task.extend NeededPredicate</code>
1440
+ </li>
1441
+
1442
+ <li class="covered" data-hits="1" data-linenumber="44">
1443
+ <span class="hits">1</span>
1444
+
1445
+ <code class="ruby"> command_task.needed_predicate do</code>
1446
+ </li>
1447
+
1448
+ <li class="covered" data-hits="1" data-linenumber="45">
1449
+ <span class="hits">1</span>
1450
+
1451
+ <code class="ruby"> !needed.succeeds?</code>
1452
+ </li>
1453
+
1454
+ <li class="never" data-hits="" data-linenumber="46">
1455
+
1456
+
1457
+ <code class="ruby"> end</code>
1458
+ </li>
1459
+
1460
+ <li class="never" data-hits="" data-linenumber="47">
1461
+
1462
+
1463
+ <code class="ruby"> end</code>
1464
+ </li>
1465
+
1466
+ <li class="never" data-hits="" data-linenumber="48">
1467
+
1468
+
1469
+ <code class="ruby"> end</code>
1470
+ </li>
1471
+
1472
+ <li class="never" data-hits="" data-linenumber="49">
1473
+
1474
+
1475
+ <code class="ruby"> end</code>
1476
+ </li>
1477
+
1478
+ <li class="never" data-hits="" data-linenumber="50">
1479
+
1480
+
1481
+ <code class="ruby"> end</code>
1482
+ </li>
1483
+
1484
+ <li class="never" data-hits="" data-linenumber="51">
1485
+
1486
+
1487
+ <code class="ruby">end</code>
1488
+ </li>
1489
+
1490
+ </ol>
1491
+ </pre>
1492
+ </div>
1493
+
1494
+ <div class="source_table" id="151b5abc8f09f0fc2932ac98c07e3b516a518e3e">
1495
+ <div class="header">
1496
+ <h3>lib/mattock/configurable.rb</h3>
1497
+ <h4><span class="green">98.7 %</span> covered</h4>
1498
+ <div>
1499
+ <b>77</b> relevant lines.
1500
+ <span class="green"><b>76</b> lines covered</span> and
1501
+ <span class="red"><b>1</b> lines missed.</span>
1502
+ </div>
1503
+ </div>
1504
+
1505
+ <pre>
1506
+ <ol>
1507
+
1508
+ <li class="covered" data-hits="1" data-linenumber="1">
1509
+ <span class="hits">1</span>
1510
+
1511
+ <code class="ruby">module Mattock</code>
1512
+ </li>
1513
+
1514
+ <li class="covered" data-hits="1" data-linenumber="2">
1515
+ <span class="hits">1</span>
1516
+
1517
+ <code class="ruby"> module Configurable</code>
1518
+ </li>
1519
+
1520
+ <li class="covered" data-hits="1" data-linenumber="3">
1521
+ <span class="hits">1</span>
1522
+
1523
+ <code class="ruby"> RequiredField = Object.new</code>
1524
+ </li>
1525
+
1526
+ <li class="covered" data-hits="1" data-linenumber="4">
1527
+ <span class="hits">1</span>
1528
+
1529
+ <code class="ruby"> class &lt;&lt; RequiredField</code>
1530
+ </li>
1531
+
1532
+ <li class="covered" data-hits="1" data-linenumber="5">
1533
+ <span class="hits">1</span>
1534
+
1535
+ <code class="ruby"> def to_s</code>
1536
+ </li>
1537
+
1538
+ <li class="covered" data-hits="3" data-linenumber="6">
1539
+ <span class="hits">3</span>
1540
+
1541
+ <code class="ruby"> &quot;&lt;unset&gt;&quot;</code>
1542
+ </li>
1543
+
1544
+ <li class="never" data-hits="" data-linenumber="7">
1545
+
1546
+
1547
+ <code class="ruby"> end</code>
1548
+ </li>
1549
+
1550
+ <li class="never" data-hits="" data-linenumber="8">
1551
+
1552
+
1553
+ <code class="ruby"></code>
1554
+ </li>
1555
+
1556
+ <li class="covered" data-hits="1" data-linenumber="9">
1557
+ <span class="hits">1</span>
1558
+
1559
+ <code class="ruby"> def inspect</code>
1560
+ </li>
1561
+
1562
+ <li class="covered" data-hits="3" data-linenumber="10">
1563
+ <span class="hits">3</span>
1564
+
1565
+ <code class="ruby"> to_s</code>
1566
+ </li>
1567
+
1568
+ <li class="never" data-hits="" data-linenumber="11">
1569
+
1570
+
1571
+ <code class="ruby"> end</code>
1572
+ </li>
1573
+
1574
+ <li class="never" data-hits="" data-linenumber="12">
1575
+
1576
+
1577
+ <code class="ruby"> end</code>
1578
+ </li>
1579
+
1580
+ <li class="covered" data-hits="1" data-linenumber="13">
1581
+ <span class="hits">1</span>
1582
+
1583
+ <code class="ruby"> RequiredField.freeze</code>
1584
+ </li>
1585
+
1586
+ <li class="never" data-hits="" data-linenumber="14">
1587
+
1588
+
1589
+ <code class="ruby"></code>
1590
+ </li>
1591
+
1592
+ <li class="covered" data-hits="1" data-linenumber="15">
1593
+ <span class="hits">1</span>
1594
+
1595
+ <code class="ruby"> module ClassMethods</code>
1596
+ </li>
1597
+
1598
+ <li class="never" data-hits="" data-linenumber="16">
1599
+
1600
+
1601
+ <code class="ruby"></code>
1602
+ </li>
1603
+
1604
+ <li class="covered" data-hits="1" data-linenumber="17">
1605
+ <span class="hits">1</span>
1606
+
1607
+ <code class="ruby"> def default_values</code>
1608
+ </li>
1609
+
1610
+ <li class="covered" data-hits="92" data-linenumber="18">
1611
+ <span class="hits">92</span>
1612
+
1613
+ <code class="ruby"> @default_values ||= {}</code>
1614
+ </li>
1615
+
1616
+ <li class="never" data-hits="" data-linenumber="19">
1617
+
1618
+
1619
+ <code class="ruby"> end</code>
1620
+ </li>
1621
+
1622
+ <li class="never" data-hits="" data-linenumber="20">
1623
+
1624
+
1625
+ <code class="ruby"></code>
1626
+ </li>
1627
+
1628
+ <li class="covered" data-hits="1" data-linenumber="21">
1629
+ <span class="hits">1</span>
1630
+
1631
+ <code class="ruby"> def set_defaults_on(instance)</code>
1632
+ </li>
1633
+
1634
+ <li class="covered" data-hits="31" data-linenumber="22">
1635
+ <span class="hits">31</span>
1636
+
1637
+ <code class="ruby"> if Configurable &gt; superclass</code>
1638
+ </li>
1639
+
1640
+ <li class="covered" data-hits="16" data-linenumber="23">
1641
+ <span class="hits">16</span>
1642
+
1643
+ <code class="ruby"> superclass.set_defaults_on(instance)</code>
1644
+ </li>
1645
+
1646
+ <li class="never" data-hits="" data-linenumber="24">
1647
+
1648
+
1649
+ <code class="ruby"> end</code>
1650
+ </li>
1651
+
1652
+ <li class="covered" data-hits="31" data-linenumber="25">
1653
+ <span class="hits">31</span>
1654
+
1655
+ <code class="ruby"> default_values.each_pair do |name,value|</code>
1656
+ </li>
1657
+
1658
+ <li class="covered" data-hits="42" data-linenumber="26">
1659
+ <span class="hits">42</span>
1660
+
1661
+ <code class="ruby"> instance.__send__(&quot;#{name}=&quot;, value)</code>
1662
+ </li>
1663
+
1664
+ <li class="covered" data-hits="42" data-linenumber="27">
1665
+ <span class="hits">42</span>
1666
+
1667
+ <code class="ruby"> if Configurable === value</code>
1668
+ </li>
1669
+
1670
+ <li class="covered" data-hits="5" data-linenumber="28">
1671
+ <span class="hits">5</span>
1672
+
1673
+ <code class="ruby"> value.class.set_defaults_on(value)</code>
1674
+ </li>
1675
+
1676
+ <li class="never" data-hits="" data-linenumber="29">
1677
+
1678
+
1679
+ <code class="ruby"> end</code>
1680
+ </li>
1681
+
1682
+ <li class="never" data-hits="" data-linenumber="30">
1683
+
1684
+
1685
+ <code class="ruby"> end</code>
1686
+ </li>
1687
+
1688
+ <li class="never" data-hits="" data-linenumber="31">
1689
+
1690
+
1691
+ <code class="ruby"> end</code>
1692
+ </li>
1693
+
1694
+ <li class="never" data-hits="" data-linenumber="32">
1695
+
1696
+
1697
+ <code class="ruby"></code>
1698
+ </li>
1699
+
1700
+ <li class="covered" data-hits="1" data-linenumber="33">
1701
+ <span class="hits">1</span>
1702
+
1703
+ <code class="ruby"> def missing_required_fields_on(instance)</code>
1704
+ </li>
1705
+
1706
+ <li class="covered" data-hits="27" data-linenumber="34">
1707
+ <span class="hits">27</span>
1708
+
1709
+ <code class="ruby"> missing = []</code>
1710
+ </li>
1711
+
1712
+ <li class="covered" data-hits="27" data-linenumber="35">
1713
+ <span class="hits">27</span>
1714
+
1715
+ <code class="ruby"> if Configurable &gt; superclass</code>
1716
+ </li>
1717
+
1718
+ <li class="covered" data-hits="14" data-linenumber="36">
1719
+ <span class="hits">14</span>
1720
+
1721
+ <code class="ruby"> missing = superclass.missing_required_fields_on(instance)</code>
1722
+ </li>
1723
+
1724
+ <li class="never" data-hits="" data-linenumber="37">
1725
+
1726
+
1727
+ <code class="ruby"> end</code>
1728
+ </li>
1729
+
1730
+ <li class="covered" data-hits="27" data-linenumber="38">
1731
+ <span class="hits">27</span>
1732
+
1733
+ <code class="ruby"> default_values.each_pair do |name,value|</code>
1734
+ </li>
1735
+
1736
+ <li class="covered" data-hits="35" data-linenumber="39">
1737
+ <span class="hits">35</span>
1738
+
1739
+ <code class="ruby"> set_value = instance.__send__(name)</code>
1740
+ </li>
1741
+
1742
+ <li class="covered" data-hits="35" data-linenumber="40">
1743
+ <span class="hits">35</span>
1744
+
1745
+ <code class="ruby"> if value == RequiredField and set_value == RequiredField</code>
1746
+ </li>
1747
+
1748
+ <li class="covered" data-hits="3" data-linenumber="41">
1749
+ <span class="hits">3</span>
1750
+
1751
+ <code class="ruby"> missing &lt;&lt; name</code>
1752
+ </li>
1753
+
1754
+ <li class="covered" data-hits="3" data-linenumber="42">
1755
+ <span class="hits">3</span>
1756
+
1757
+ <code class="ruby"> next</code>
1758
+ </li>
1759
+
1760
+ <li class="never" data-hits="" data-linenumber="43">
1761
+
1762
+
1763
+ <code class="ruby"> end</code>
1764
+ </li>
1765
+
1766
+ <li class="covered" data-hits="32" data-linenumber="44">
1767
+ <span class="hits">32</span>
1768
+
1769
+ <code class="ruby"> if Configurable === set_value</code>
1770
+ </li>
1771
+
1772
+ <li class="covered" data-hits="4" data-linenumber="45">
1773
+ <span class="hits">4</span>
1774
+
1775
+ <code class="ruby"> missing += set_value.class.missing_required_fields_on(set_value).map do |field|</code>
1776
+ </li>
1777
+
1778
+ <li class="covered" data-hits="2" data-linenumber="46">
1779
+ <span class="hits">2</span>
1780
+
1781
+ <code class="ruby"> [name, field].join(&quot;.&quot;)</code>
1782
+ </li>
1783
+
1784
+ <li class="never" data-hits="" data-linenumber="47">
1785
+
1786
+
1787
+ <code class="ruby"> end</code>
1788
+ </li>
1789
+
1790
+ <li class="never" data-hits="" data-linenumber="48">
1791
+
1792
+
1793
+ <code class="ruby"> end</code>
1794
+ </li>
1795
+
1796
+ <li class="never" data-hits="" data-linenumber="49">
1797
+
1798
+
1799
+ <code class="ruby"> end</code>
1800
+ </li>
1801
+
1802
+ <li class="covered" data-hits="27" data-linenumber="50">
1803
+ <span class="hits">27</span>
1804
+
1805
+ <code class="ruby"> return missing</code>
1806
+ </li>
1807
+
1808
+ <li class="never" data-hits="" data-linenumber="51">
1809
+
1810
+
1811
+ <code class="ruby"> end</code>
1812
+ </li>
1813
+
1814
+ <li class="never" data-hits="" data-linenumber="52">
1815
+
1816
+
1817
+ <code class="ruby"></code>
1818
+ </li>
1819
+
1820
+ <li class="covered" data-hits="1" data-linenumber="53">
1821
+ <span class="hits">1</span>
1822
+
1823
+ <code class="ruby"> def nested(hash=nil)</code>
1824
+ </li>
1825
+
1826
+ <li class="covered" data-hits="2" data-linenumber="54">
1827
+ <span class="hits">2</span>
1828
+
1829
+ <code class="ruby"> obj = Class.new(Struct).new</code>
1830
+ </li>
1831
+
1832
+ <li class="covered" data-hits="2" data-linenumber="55">
1833
+ <span class="hits">2</span>
1834
+
1835
+ <code class="ruby"> obj.settings(hash || {})</code>
1836
+ </li>
1837
+
1838
+ <li class="covered" data-hits="2" data-linenumber="56">
1839
+ <span class="hits">2</span>
1840
+
1841
+ <code class="ruby"> return obj</code>
1842
+ </li>
1843
+
1844
+ <li class="never" data-hits="" data-linenumber="57">
1845
+
1846
+
1847
+ <code class="ruby"> end</code>
1848
+ </li>
1849
+
1850
+ <li class="never" data-hits="" data-linenumber="58">
1851
+
1852
+
1853
+ <code class="ruby"></code>
1854
+ </li>
1855
+
1856
+ <li class="covered" data-hits="1" data-linenumber="59">
1857
+ <span class="hits">1</span>
1858
+
1859
+ <code class="ruby"> def nil_fields(*names)</code>
1860
+ </li>
1861
+
1862
+ <li class="covered" data-hits="2" data-linenumber="60">
1863
+ <span class="hits">2</span>
1864
+
1865
+ <code class="ruby"> names.each do |name|</code>
1866
+ </li>
1867
+
1868
+ <li class="covered" data-hits="3" data-linenumber="61">
1869
+ <span class="hits">3</span>
1870
+
1871
+ <code class="ruby"> setting(name, nil)</code>
1872
+ </li>
1873
+
1874
+ <li class="never" data-hits="" data-linenumber="62">
1875
+
1876
+
1877
+ <code class="ruby"> end</code>
1878
+ </li>
1879
+
1880
+ <li class="never" data-hits="" data-linenumber="63">
1881
+
1882
+
1883
+ <code class="ruby"> end</code>
1884
+ </li>
1885
+
1886
+ <li class="covered" data-hits="1" data-linenumber="64">
1887
+ <span class="hits">1</span>
1888
+
1889
+ <code class="ruby"> alias nil_field nil_fields</code>
1890
+ </li>
1891
+
1892
+ <li class="never" data-hits="" data-linenumber="65">
1893
+
1894
+
1895
+ <code class="ruby"></code>
1896
+ </li>
1897
+
1898
+ <li class="covered" data-hits="1" data-linenumber="66">
1899
+ <span class="hits">1</span>
1900
+
1901
+ <code class="ruby"> def required_fields(*names)</code>
1902
+ </li>
1903
+
1904
+ <li class="covered" data-hits="2" data-linenumber="67">
1905
+ <span class="hits">2</span>
1906
+
1907
+ <code class="ruby"> names.each do |name|</code>
1908
+ </li>
1909
+
1910
+ <li class="covered" data-hits="2" data-linenumber="68">
1911
+ <span class="hits">2</span>
1912
+
1913
+ <code class="ruby"> setting(name)</code>
1914
+ </li>
1915
+
1916
+ <li class="never" data-hits="" data-linenumber="69">
1917
+
1918
+
1919
+ <code class="ruby"> end</code>
1920
+ </li>
1921
+
1922
+ <li class="never" data-hits="" data-linenumber="70">
1923
+
1924
+
1925
+ <code class="ruby"> end</code>
1926
+ </li>
1927
+
1928
+ <li class="covered" data-hits="1" data-linenumber="71">
1929
+ <span class="hits">1</span>
1930
+
1931
+ <code class="ruby"> alias required_field required_fields</code>
1932
+ </li>
1933
+
1934
+ <li class="never" data-hits="" data-linenumber="72">
1935
+
1936
+
1937
+ <code class="ruby"></code>
1938
+ </li>
1939
+
1940
+ <li class="covered" data-hits="1" data-linenumber="73">
1941
+ <span class="hits">1</span>
1942
+
1943
+ <code class="ruby"> def setting(name, default_value = RequiredField)</code>
1944
+ </li>
1945
+
1946
+ <li class="covered" data-hits="17" data-linenumber="74">
1947
+ <span class="hits">17</span>
1948
+
1949
+ <code class="ruby"> name = name.to_sym</code>
1950
+ </li>
1951
+
1952
+ <li class="covered" data-hits="17" data-linenumber="75">
1953
+ <span class="hits">17</span>
1954
+
1955
+ <code class="ruby"> attr_accessor(name)</code>
1956
+ </li>
1957
+
1958
+ <li class="covered" data-hits="17" data-linenumber="76">
1959
+ <span class="hits">17</span>
1960
+
1961
+ <code class="ruby"> if default_values.has_key?(name) and default_values[name] != default_value</code>
1962
+ </li>
1963
+
1964
+ <li class="missed" data-hits="0" data-linenumber="77">
1965
+
1966
+
1967
+ <code class="ruby"> warn &quot;Changing default value of #{self.name}##{name} from #{default_values[name].inspect} to #{default_value.inspect}&quot;</code>
1968
+ </li>
1969
+
1970
+ <li class="never" data-hits="" data-linenumber="78">
1971
+
1972
+
1973
+ <code class="ruby"> end</code>
1974
+ </li>
1975
+
1976
+ <li class="covered" data-hits="17" data-linenumber="79">
1977
+ <span class="hits">17</span>
1978
+
1979
+ <code class="ruby"> default_values[name] = default_value</code>
1980
+ </li>
1981
+
1982
+ <li class="never" data-hits="" data-linenumber="80">
1983
+
1984
+
1985
+ <code class="ruby"> end</code>
1986
+ </li>
1987
+
1988
+ <li class="never" data-hits="" data-linenumber="81">
1989
+
1990
+
1991
+ <code class="ruby"></code>
1992
+ </li>
1993
+
1994
+ <li class="covered" data-hits="1" data-linenumber="82">
1995
+ <span class="hits">1</span>
1996
+
1997
+ <code class="ruby"> def settings(hash)</code>
1998
+ </li>
1999
+
2000
+ <li class="covered" data-hits="1" data-linenumber="83">
2001
+ <span class="hits">1</span>
2002
+
2003
+ <code class="ruby"> hash.each_pair do |name, value|</code>
2004
+ </li>
2005
+
2006
+ <li class="covered" data-hits="2" data-linenumber="84">
2007
+ <span class="hits">2</span>
2008
+
2009
+ <code class="ruby"> setting(name, value)</code>
2010
+ </li>
2011
+
2012
+ <li class="never" data-hits="" data-linenumber="85">
2013
+
2014
+
2015
+ <code class="ruby"> end</code>
2016
+ </li>
2017
+
2018
+ <li class="covered" data-hits="1" data-linenumber="86">
2019
+ <span class="hits">1</span>
2020
+
2021
+ <code class="ruby"> return self</code>
2022
+ </li>
2023
+
2024
+ <li class="never" data-hits="" data-linenumber="87">
2025
+
2026
+
2027
+ <code class="ruby"> end</code>
2028
+ </li>
2029
+
2030
+ <li class="never" data-hits="" data-linenumber="88">
2031
+
2032
+
2033
+ <code class="ruby"> end</code>
2034
+ </li>
2035
+
2036
+ <li class="never" data-hits="" data-linenumber="89">
2037
+
2038
+
2039
+ <code class="ruby"></code>
2040
+ </li>
2041
+
2042
+ <li class="covered" data-hits="1" data-linenumber="90">
2043
+ <span class="hits">1</span>
2044
+
2045
+ <code class="ruby"> def self.included(mod)</code>
2046
+ </li>
2047
+
2048
+ <li class="covered" data-hits="3" data-linenumber="91">
2049
+ <span class="hits">3</span>
2050
+
2051
+ <code class="ruby"> mod.extend ClassMethods</code>
2052
+ </li>
2053
+
2054
+ <li class="never" data-hits="" data-linenumber="92">
2055
+
2056
+
2057
+ <code class="ruby"> end</code>
2058
+ </li>
2059
+
2060
+ <li class="never" data-hits="" data-linenumber="93">
2061
+
2062
+
2063
+ <code class="ruby"></code>
2064
+ </li>
2065
+
2066
+ <li class="covered" data-hits="1" data-linenumber="94">
2067
+ <span class="hits">1</span>
2068
+
2069
+ <code class="ruby"> def setup_defaults</code>
2070
+ </li>
2071
+
2072
+ <li class="covered" data-hits="10" data-linenumber="95">
2073
+ <span class="hits">10</span>
2074
+
2075
+ <code class="ruby"> self.class.set_defaults_on(self)</code>
2076
+ </li>
2077
+
2078
+ <li class="covered" data-hits="10" data-linenumber="96">
2079
+ <span class="hits">10</span>
2080
+
2081
+ <code class="ruby"> self</code>
2082
+ </li>
2083
+
2084
+ <li class="never" data-hits="" data-linenumber="97">
2085
+
2086
+
2087
+ <code class="ruby"> end</code>
2088
+ </li>
2089
+
2090
+ <li class="never" data-hits="" data-linenumber="98">
2091
+
2092
+
2093
+ <code class="ruby"></code>
2094
+ </li>
2095
+
2096
+ <li class="covered" data-hits="1" data-linenumber="99">
2097
+ <span class="hits">1</span>
2098
+
2099
+ <code class="ruby"> def check_required</code>
2100
+ </li>
2101
+
2102
+ <li class="covered" data-hits="9" data-linenumber="100">
2103
+ <span class="hits">9</span>
2104
+
2105
+ <code class="ruby"> missing = self.class.missing_required_fields_on(self)</code>
2106
+ </li>
2107
+
2108
+ <li class="covered" data-hits="9" data-linenumber="101">
2109
+ <span class="hits">9</span>
2110
+
2111
+ <code class="ruby"> unless missing.empty?</code>
2112
+ </li>
2113
+
2114
+ <li class="covered" data-hits="2" data-linenumber="102">
2115
+ <span class="hits">2</span>
2116
+
2117
+ <code class="ruby"> raise &quot;Required field#{missing.length &gt; 1 ? &quot;s&quot; : &quot;&quot;} #{missing.join(&quot;, &quot;)} unset on #{self.inspect}&quot;</code>
2118
+ </li>
2119
+
2120
+ <li class="never" data-hits="" data-linenumber="103">
2121
+
2122
+
2123
+ <code class="ruby"> end</code>
2124
+ </li>
2125
+
2126
+ <li class="covered" data-hits="7" data-linenumber="104">
2127
+ <span class="hits">7</span>
2128
+
2129
+ <code class="ruby"> self</code>
2130
+ </li>
2131
+
2132
+ <li class="never" data-hits="" data-linenumber="105">
2133
+
2134
+
2135
+ <code class="ruby"> end</code>
2136
+ </li>
2137
+
2138
+ <li class="never" data-hits="" data-linenumber="106">
2139
+
2140
+
2141
+ <code class="ruby"></code>
2142
+ </li>
2143
+
2144
+ <li class="covered" data-hits="1" data-linenumber="107">
2145
+ <span class="hits">1</span>
2146
+
2147
+ <code class="ruby"> def setting(name, default_value = nil)</code>
2148
+ </li>
2149
+
2150
+ <li class="covered" data-hits="3" data-linenumber="108">
2151
+ <span class="hits">3</span>
2152
+
2153
+ <code class="ruby"> self.class.setting(name, default_value)</code>
2154
+ </li>
2155
+
2156
+ <li class="covered" data-hits="3" data-linenumber="109">
2157
+ <span class="hits">3</span>
2158
+
2159
+ <code class="ruby"> instance_variable_set(&quot;@#{name}&quot;, default_value)</code>
2160
+ </li>
2161
+
2162
+ <li class="never" data-hits="" data-linenumber="110">
2163
+
2164
+
2165
+ <code class="ruby"> end</code>
2166
+ </li>
2167
+
2168
+ <li class="never" data-hits="" data-linenumber="111">
2169
+
2170
+
2171
+ <code class="ruby"></code>
2172
+ </li>
2173
+
2174
+ <li class="covered" data-hits="1" data-linenumber="112">
2175
+ <span class="hits">1</span>
2176
+
2177
+ <code class="ruby"> def settings(hash)</code>
2178
+ </li>
2179
+
2180
+ <li class="covered" data-hits="2" data-linenumber="113">
2181
+ <span class="hits">2</span>
2182
+
2183
+ <code class="ruby"> hash.each_pair do |name, value|</code>
2184
+ </li>
2185
+
2186
+ <li class="covered" data-hits="3" data-linenumber="114">
2187
+ <span class="hits">3</span>
2188
+
2189
+ <code class="ruby"> setting(name, value)</code>
2190
+ </li>
2191
+
2192
+ <li class="never" data-hits="" data-linenumber="115">
2193
+
2194
+
2195
+ <code class="ruby"> end</code>
2196
+ </li>
2197
+
2198
+ <li class="covered" data-hits="2" data-linenumber="116">
2199
+ <span class="hits">2</span>
2200
+
2201
+ <code class="ruby"> return self</code>
2202
+ </li>
2203
+
2204
+ <li class="never" data-hits="" data-linenumber="117">
2205
+
2206
+
2207
+ <code class="ruby"> end</code>
2208
+ </li>
2209
+
2210
+ <li class="never" data-hits="" data-linenumber="118">
2211
+
2212
+
2213
+ <code class="ruby"></code>
2214
+ </li>
2215
+
2216
+ <li class="covered" data-hits="1" data-linenumber="119">
2217
+ <span class="hits">1</span>
2218
+
2219
+ <code class="ruby"> def required_fields(*names)</code>
2220
+ </li>
2221
+
2222
+ <li class="covered" data-hits="1" data-linenumber="120">
2223
+ <span class="hits">1</span>
2224
+
2225
+ <code class="ruby"> self.class.required_fields(*names)</code>
2226
+ </li>
2227
+
2228
+ <li class="covered" data-hits="1" data-linenumber="121">
2229
+ <span class="hits">1</span>
2230
+
2231
+ <code class="ruby"> self</code>
2232
+ </li>
2233
+
2234
+ <li class="never" data-hits="" data-linenumber="122">
2235
+
2236
+
2237
+ <code class="ruby"> end</code>
2238
+ </li>
2239
+
2240
+ <li class="covered" data-hits="1" data-linenumber="123">
2241
+ <span class="hits">1</span>
2242
+
2243
+ <code class="ruby"> alias required_field required_fields</code>
2244
+ </li>
2245
+
2246
+ <li class="never" data-hits="" data-linenumber="124">
2247
+
2248
+
2249
+ <code class="ruby"></code>
2250
+ </li>
2251
+
2252
+ <li class="covered" data-hits="1" data-linenumber="125">
2253
+ <span class="hits">1</span>
2254
+
2255
+ <code class="ruby"> class Struct</code>
2256
+ </li>
2257
+
2258
+ <li class="covered" data-hits="1" data-linenumber="126">
2259
+ <span class="hits">1</span>
2260
+
2261
+ <code class="ruby"> include Configurable</code>
2262
+ </li>
2263
+
2264
+ <li class="never" data-hits="" data-linenumber="127">
2265
+
2266
+
2267
+ <code class="ruby"> end</code>
2268
+ </li>
2269
+
2270
+ <li class="never" data-hits="" data-linenumber="128">
2271
+
2272
+
2273
+ <code class="ruby"> end</code>
2274
+ </li>
2275
+
2276
+ <li class="never" data-hits="" data-linenumber="129">
2277
+
2278
+
2279
+ <code class="ruby">end</code>
2280
+ </li>
2281
+
2282
+ </ol>
2283
+ </pre>
2284
+ </div>
2285
+
2286
+ <div class="source_table" id="dbfbe3e96d32b3e7eea8b666117072d5da6e3e60">
2287
+ <div class="header">
2288
+ <h3>lib/mattock/remote-command-task.rb</h3>
2289
+ <h4><span class="yellow">88.89 %</span> covered</h4>
2290
+ <div>
2291
+ <b>18</b> relevant lines.
2292
+ <span class="green"><b>16</b> lines covered</span> and
2293
+ <span class="red"><b>2</b> lines missed.</span>
2294
+ </div>
2295
+ </div>
2296
+
2297
+ <pre>
2298
+ <ol>
2299
+
2300
+ <li class="covered" data-hits="1" data-linenumber="1">
2301
+ <span class="hits">1</span>
2302
+
2303
+ <code class="ruby">require 'mattock/command-task'</code>
2304
+ </li>
2305
+
2306
+ <li class="covered" data-hits="1" data-linenumber="2">
2307
+ <span class="hits">1</span>
2308
+
2309
+ <code class="ruby">module Mattock</code>
2310
+ </li>
2311
+
2312
+ <li class="covered" data-hits="1" data-linenumber="3">
2313
+ <span class="hits">1</span>
2314
+
2315
+ <code class="ruby"> class RemoteCommandTask &lt; CommandTask</code>
2316
+ </li>
2317
+
2318
+ <li class="covered" data-hits="1" data-linenumber="4">
2319
+ <span class="hits">1</span>
2320
+
2321
+ <code class="ruby"> setting(:remote_server, nested(</code>
2322
+ </li>
2323
+
2324
+ <li class="never" data-hits="" data-linenumber="5">
2325
+
2326
+
2327
+ <code class="ruby"> :address =&gt; nil,</code>
2328
+ </li>
2329
+
2330
+ <li class="never" data-hits="" data-linenumber="6">
2331
+
2332
+
2333
+ <code class="ruby"> :user =&gt; nil</code>
2334
+ </li>
2335
+
2336
+ <li class="never" data-hits="" data-linenumber="7">
2337
+
2338
+
2339
+ <code class="ruby"> ))</code>
2340
+ </li>
2341
+
2342
+ <li class="covered" data-hits="1" data-linenumber="8">
2343
+ <span class="hits">1</span>
2344
+
2345
+ <code class="ruby"> setting(:ssh_options, [])</code>
2346
+ </li>
2347
+
2348
+ <li class="covered" data-hits="1" data-linenumber="9">
2349
+ <span class="hits">1</span>
2350
+
2351
+ <code class="ruby"> nil_fields(:id_file, :free_arguments)</code>
2352
+ </li>
2353
+
2354
+ <li class="never" data-hits="" data-linenumber="10">
2355
+
2356
+
2357
+ <code class="ruby"></code>
2358
+ </li>
2359
+
2360
+ <li class="covered" data-hits="1" data-linenumber="11">
2361
+ <span class="hits">1</span>
2362
+
2363
+ <code class="ruby"> def decorated(command_on_remote)</code>
2364
+ </li>
2365
+
2366
+ <li class="covered" data-hits="2" data-linenumber="12">
2367
+ <span class="hits">2</span>
2368
+
2369
+ <code class="ruby"> fail &quot;Need remote server for #{self.class.name}&quot; unless remote_server.address</code>
2370
+ </li>
2371
+
2372
+ <li class="never" data-hits="" data-linenumber="13">
2373
+
2374
+
2375
+ <code class="ruby"></code>
2376
+ </li>
2377
+
2378
+ <li class="covered" data-hits="2" data-linenumber="14">
2379
+ <span class="hits">2</span>
2380
+
2381
+ <code class="ruby"> raise &quot;Empty remote command&quot; if command_on_remote.nil?</code>
2382
+ </li>
2383
+
2384
+ <li class="covered" data-hits="2" data-linenumber="15">
2385
+ <span class="hits">2</span>
2386
+
2387
+ <code class="ruby"> Mattock::WrappingChain.new do |cmd|</code>
2388
+ </li>
2389
+
2390
+ <li class="covered" data-hits="2" data-linenumber="16">
2391
+ <span class="hits">2</span>
2392
+
2393
+ <code class="ruby"> cmd.add Mattock::CommandLine.new(&quot;ssh&quot;) do |cmd|</code>
2394
+ </li>
2395
+
2396
+ <li class="covered" data-hits="2" data-linenumber="17">
2397
+ <span class="hits">2</span>
2398
+
2399
+ <code class="ruby"> cmd.options &lt;&lt; &quot;-u #{remote_server.user}&quot; if remote_server.user</code>
2400
+ </li>
2401
+
2402
+ <li class="covered" data-hits="2" data-linenumber="18">
2403
+ <span class="hits">2</span>
2404
+
2405
+ <code class="ruby"> cmd.options &lt;&lt; &quot;-i #{id_file}&quot; if id_file</code>
2406
+ </li>
2407
+
2408
+ <li class="covered" data-hits="2" data-linenumber="19">
2409
+ <span class="hits">2</span>
2410
+
2411
+ <code class="ruby"> unless ssh_options.empty?</code>
2412
+ </li>
2413
+
2414
+ <li class="missed" data-hits="0" data-linenumber="20">
2415
+
2416
+
2417
+ <code class="ruby"> ssh_options.each do |opt|</code>
2418
+ </li>
2419
+
2420
+ <li class="missed" data-hits="0" data-linenumber="21">
2421
+
2422
+
2423
+ <code class="ruby"> cmd.options &quot;-o #{opt}&quot;</code>
2424
+ </li>
2425
+
2426
+ <li class="never" data-hits="" data-linenumber="22">
2427
+
2428
+
2429
+ <code class="ruby"> end</code>
2430
+ </li>
2431
+
2432
+ <li class="never" data-hits="" data-linenumber="23">
2433
+
2434
+
2435
+ <code class="ruby"> end</code>
2436
+ </li>
2437
+
2438
+ <li class="covered" data-hits="2" data-linenumber="24">
2439
+ <span class="hits">2</span>
2440
+
2441
+ <code class="ruby"> cmd.options &lt;&lt; remote_server.address</code>
2442
+ </li>
2443
+
2444
+ <li class="never" data-hits="" data-linenumber="25">
2445
+
2446
+
2447
+ <code class="ruby"> end</code>
2448
+ </li>
2449
+
2450
+ <li class="covered" data-hits="2" data-linenumber="26">
2451
+ <span class="hits">2</span>
2452
+
2453
+ <code class="ruby"> cmd.add Mattock::ShellEscaped.new(command_on_remote)</code>
2454
+ </li>
2455
+
2456
+ <li class="never" data-hits="" data-linenumber="27">
2457
+
2458
+
2459
+ <code class="ruby"> end</code>
2460
+ </li>
2461
+
2462
+ <li class="never" data-hits="" data-linenumber="28">
2463
+
2464
+
2465
+ <code class="ruby"> end</code>
2466
+ </li>
2467
+
2468
+ <li class="never" data-hits="" data-linenumber="29">
2469
+
2470
+
2471
+ <code class="ruby"> end</code>
2472
+ </li>
2473
+
2474
+ <li class="never" data-hits="" data-linenumber="30">
2475
+
2476
+
2477
+ <code class="ruby">end</code>
2478
+ </li>
2479
+
2480
+ </ol>
2481
+ </pre>
2482
+ </div>
2483
+
2484
+ <div class="source_table" id="a2c73f0ba96e60116ee8696673802b6ebaddc38c">
2485
+ <div class="header">
2486
+ <h3>lib/mattock/tasklib.rb</h3>
2487
+ <h4><span class="green">97.5 %</span> covered</h4>
2488
+ <div>
2489
+ <b>40</b> relevant lines.
2490
+ <span class="green"><b>39</b> lines covered</span> and
2491
+ <span class="red"><b>1</b> lines missed.</span>
2492
+ </div>
2493
+ </div>
2494
+
2495
+ <pre>
2496
+ <ol>
2497
+
2498
+ <li class="covered" data-hits="1" data-linenumber="1">
2499
+ <span class="hits">1</span>
2500
+
2501
+ <code class="ruby">require 'ostruct'</code>
2502
+ </li>
2503
+
2504
+ <li class="covered" data-hits="1" data-linenumber="2">
2505
+ <span class="hits">1</span>
2506
+
2507
+ <code class="ruby">require 'rake/tasklib'</code>
2508
+ </li>
2509
+
2510
+ <li class="covered" data-hits="1" data-linenumber="3">
2511
+ <span class="hits">1</span>
2512
+
2513
+ <code class="ruby">require 'mattock/configurable'</code>
2514
+ </li>
2515
+
2516
+ <li class="never" data-hits="" data-linenumber="4">
2517
+
2518
+
2519
+ <code class="ruby"></code>
2520
+ </li>
2521
+
2522
+ <li class="covered" data-hits="1" data-linenumber="5">
2523
+ <span class="hits">1</span>
2524
+
2525
+ <code class="ruby">module Mattock</code>
2526
+ </li>
2527
+
2528
+ <li class="covered" data-hits="1" data-linenumber="6">
2529
+ <span class="hits">1</span>
2530
+
2531
+ <code class="ruby"> class TaskLib &lt; Rake::TaskLib</code>
2532
+ </li>
2533
+
2534
+ <li class="covered" data-hits="1" data-linenumber="7">
2535
+ <span class="hits">1</span>
2536
+
2537
+ <code class="ruby"> include Configurable</code>
2538
+ </li>
2539
+
2540
+ <li class="never" data-hits="" data-linenumber="8">
2541
+
2542
+
2543
+ <code class="ruby"></code>
2544
+ </li>
2545
+
2546
+ <li class="covered" data-hits="1" data-linenumber="9">
2547
+ <span class="hits">1</span>
2548
+
2549
+ <code class="ruby"> attr_writer :namespace_name</code>
2550
+ </li>
2551
+
2552
+ <li class="covered" data-hits="1" data-linenumber="10">
2553
+ <span class="hits">1</span>
2554
+
2555
+ <code class="ruby"> def self.default_namespace(name)</code>
2556
+ </li>
2557
+
2558
+ <li class="covered" data-hits="1" data-linenumber="11">
2559
+ <span class="hits">1</span>
2560
+
2561
+ <code class="ruby"> setting(:namespace_name, name)</code>
2562
+ </li>
2563
+
2564
+ <li class="never" data-hits="" data-linenumber="12">
2565
+
2566
+
2567
+ <code class="ruby"> end</code>
2568
+ </li>
2569
+
2570
+ <li class="never" data-hits="" data-linenumber="13">
2571
+
2572
+
2573
+ <code class="ruby"></code>
2574
+ </li>
2575
+
2576
+ <li class="covered" data-hits="1" data-linenumber="14">
2577
+ <span class="hits">1</span>
2578
+
2579
+ <code class="ruby"> def initialize(*tasklibs)</code>
2580
+ </li>
2581
+
2582
+ <li class="covered" data-hits="6" data-linenumber="15">
2583
+ <span class="hits">6</span>
2584
+
2585
+ <code class="ruby"> @tasks = []</code>
2586
+ </li>
2587
+
2588
+ <li class="never" data-hits="" data-linenumber="16">
2589
+
2590
+
2591
+ <code class="ruby"></code>
2592
+ </li>
2593
+
2594
+ <li class="covered" data-hits="6" data-linenumber="17">
2595
+ <span class="hits">6</span>
2596
+
2597
+ <code class="ruby"> default_configuration(*tasklibs)</code>
2598
+ </li>
2599
+
2600
+ <li class="never" data-hits="" data-linenumber="18">
2601
+
2602
+
2603
+ <code class="ruby"></code>
2604
+ </li>
2605
+
2606
+ <li class="covered" data-hits="6" data-linenumber="19">
2607
+ <span class="hits">6</span>
2608
+
2609
+ <code class="ruby"> yield self if block_given?</code>
2610
+ </li>
2611
+
2612
+ <li class="never" data-hits="" data-linenumber="20">
2613
+
2614
+
2615
+ <code class="ruby"></code>
2616
+ </li>
2617
+
2618
+ <li class="covered" data-hits="6" data-linenumber="21">
2619
+ <span class="hits">6</span>
2620
+
2621
+ <code class="ruby"> resolve_configuration</code>
2622
+ </li>
2623
+
2624
+ <li class="never" data-hits="" data-linenumber="22">
2625
+
2626
+
2627
+ <code class="ruby"></code>
2628
+ </li>
2629
+
2630
+ <li class="covered" data-hits="6" data-linenumber="23">
2631
+ <span class="hits">6</span>
2632
+
2633
+ <code class="ruby"> define</code>
2634
+ </li>
2635
+
2636
+ <li class="never" data-hits="" data-linenumber="24">
2637
+
2638
+
2639
+ <code class="ruby"> end</code>
2640
+ </li>
2641
+
2642
+ <li class="never" data-hits="" data-linenumber="25">
2643
+
2644
+
2645
+ <code class="ruby"></code>
2646
+ </li>
2647
+
2648
+ <li class="covered" data-hits="1" data-linenumber="26">
2649
+ <span class="hits">1</span>
2650
+
2651
+ <code class="ruby"> attr_reader :tasks</code>
2652
+ </li>
2653
+
2654
+ <li class="never" data-hits="" data-linenumber="27">
2655
+
2656
+
2657
+ <code class="ruby"></code>
2658
+ </li>
2659
+
2660
+ <li class="covered" data-hits="1" data-linenumber="28">
2661
+ <span class="hits">1</span>
2662
+
2663
+ <code class="ruby"> def task(*args)</code>
2664
+ </li>
2665
+
2666
+ <li class="covered" data-hits="11" data-linenumber="29">
2667
+ <span class="hits">11</span>
2668
+
2669
+ <code class="ruby"> a_task = super</code>
2670
+ </li>
2671
+
2672
+ <li class="covered" data-hits="11" data-linenumber="30">
2673
+ <span class="hits">11</span>
2674
+
2675
+ <code class="ruby"> @tasks &lt;&lt; a_task</code>
2676
+ </li>
2677
+
2678
+ <li class="covered" data-hits="11" data-linenumber="31">
2679
+ <span class="hits">11</span>
2680
+
2681
+ <code class="ruby"> return a_task</code>
2682
+ </li>
2683
+
2684
+ <li class="never" data-hits="" data-linenumber="32">
2685
+
2686
+
2687
+ <code class="ruby"> end</code>
2688
+ </li>
2689
+
2690
+ <li class="never" data-hits="" data-linenumber="33">
2691
+
2692
+
2693
+ <code class="ruby"></code>
2694
+ </li>
2695
+
2696
+ <li class="covered" data-hits="1" data-linenumber="34">
2697
+ <span class="hits">1</span>
2698
+
2699
+ <code class="ruby"> def default_configuration(*tasklibs)</code>
2700
+ </li>
2701
+
2702
+ <li class="covered" data-hits="6" data-linenumber="35">
2703
+ <span class="hits">6</span>
2704
+
2705
+ <code class="ruby"> setup_defaults</code>
2706
+ </li>
2707
+
2708
+ <li class="never" data-hits="" data-linenumber="36">
2709
+
2710
+
2711
+ <code class="ruby"> end</code>
2712
+ </li>
2713
+
2714
+ <li class="never" data-hits="" data-linenumber="37">
2715
+
2716
+
2717
+ <code class="ruby"></code>
2718
+ </li>
2719
+
2720
+ <li class="covered" data-hits="1" data-linenumber="38">
2721
+ <span class="hits">1</span>
2722
+
2723
+ <code class="ruby"> def resolve_configuration</code>
2724
+ </li>
2725
+
2726
+ <li class="covered" data-hits="6" data-linenumber="39">
2727
+ <span class="hits">6</span>
2728
+
2729
+ <code class="ruby"> check_required</code>
2730
+ </li>
2731
+
2732
+ <li class="never" data-hits="" data-linenumber="40">
2733
+
2734
+
2735
+ <code class="ruby"> end</code>
2736
+ </li>
2737
+
2738
+ <li class="never" data-hits="" data-linenumber="41">
2739
+
2740
+
2741
+ <code class="ruby"></code>
2742
+ </li>
2743
+
2744
+ <li class="covered" data-hits="1" data-linenumber="42">
2745
+ <span class="hits">1</span>
2746
+
2747
+ <code class="ruby"> def define</code>
2748
+ </li>
2749
+
2750
+ <li class="never" data-hits="" data-linenumber="43">
2751
+
2752
+
2753
+ <code class="ruby"> end</code>
2754
+ </li>
2755
+
2756
+ <li class="never" data-hits="" data-linenumber="44">
2757
+
2758
+
2759
+ <code class="ruby"></code>
2760
+ </li>
2761
+
2762
+ <li class="covered" data-hits="1" data-linenumber="45">
2763
+ <span class="hits">1</span>
2764
+
2765
+ <code class="ruby"> def in_namespace(*tasknames)</code>
2766
+ </li>
2767
+
2768
+ <li class="covered" data-hits="11" data-linenumber="46">
2769
+ <span class="hits">11</span>
2770
+
2771
+ <code class="ruby"> if tasknames.empty?</code>
2772
+ </li>
2773
+
2774
+ <li class="covered" data-hits="6" data-linenumber="47">
2775
+ <span class="hits">6</span>
2776
+
2777
+ <code class="ruby"> if block_given?</code>
2778
+ </li>
2779
+
2780
+ <li class="covered" data-hits="6" data-linenumber="48">
2781
+ <span class="hits">6</span>
2782
+
2783
+ <code class="ruby"> if @namespace_name.nil?</code>
2784
+ </li>
2785
+
2786
+ <li class="missed" data-hits="0" data-linenumber="49">
2787
+
2788
+
2789
+ <code class="ruby"> yield</code>
2790
+ </li>
2791
+
2792
+ <li class="never" data-hits="" data-linenumber="50">
2793
+
2794
+
2795
+ <code class="ruby"> else</code>
2796
+ </li>
2797
+
2798
+ <li class="covered" data-hits="6" data-linenumber="51">
2799
+ <span class="hits">6</span>
2800
+
2801
+ <code class="ruby"> namespace @namespace_name do</code>
2802
+ </li>
2803
+
2804
+ <li class="covered" data-hits="6" data-linenumber="52">
2805
+ <span class="hits">6</span>
2806
+
2807
+ <code class="ruby"> yield</code>
2808
+ </li>
2809
+
2810
+ <li class="never" data-hits="" data-linenumber="53">
2811
+
2812
+
2813
+ <code class="ruby"> end</code>
2814
+ </li>
2815
+
2816
+ <li class="never" data-hits="" data-linenumber="54">
2817
+
2818
+
2819
+ <code class="ruby"> end</code>
2820
+ </li>
2821
+
2822
+ <li class="never" data-hits="" data-linenumber="55">
2823
+
2824
+
2825
+ <code class="ruby"> end</code>
2826
+ </li>
2827
+
2828
+ <li class="never" data-hits="" data-linenumber="56">
2829
+
2830
+
2831
+ <code class="ruby"> else</code>
2832
+ </li>
2833
+
2834
+ <li class="covered" data-hits="5" data-linenumber="57">
2835
+ <span class="hits">5</span>
2836
+
2837
+ <code class="ruby"> tasknames.map do |taskname|</code>
2838
+ </li>
2839
+
2840
+ <li class="covered" data-hits="5" data-linenumber="58">
2841
+ <span class="hits">5</span>
2842
+
2843
+ <code class="ruby"> [@namespace_name, taskname].compact.join(&quot;:&quot;)</code>
2844
+ </li>
2845
+
2846
+ <li class="never" data-hits="" data-linenumber="59">
2847
+
2848
+
2849
+ <code class="ruby"> end</code>
2850
+ </li>
2851
+
2852
+ <li class="never" data-hits="" data-linenumber="60">
2853
+
2854
+
2855
+ <code class="ruby"> end</code>
2856
+ </li>
2857
+
2858
+ <li class="never" data-hits="" data-linenumber="61">
2859
+
2860
+
2861
+ <code class="ruby"> end</code>
2862
+ </li>
2863
+
2864
+ <li class="never" data-hits="" data-linenumber="62">
2865
+
2866
+
2867
+ <code class="ruby"></code>
2868
+ </li>
2869
+
2870
+ <li class="covered" data-hits="1" data-linenumber="63">
2871
+ <span class="hits">1</span>
2872
+
2873
+ <code class="ruby"> def root_task</code>
2874
+ </li>
2875
+
2876
+ <li class="covered" data-hits="5" data-linenumber="64">
2877
+ <span class="hits">5</span>
2878
+
2879
+ <code class="ruby"> @namespace_name || :default</code>
2880
+ </li>
2881
+
2882
+ <li class="never" data-hits="" data-linenumber="65">
2883
+
2884
+
2885
+ <code class="ruby"> end</code>
2886
+ </li>
2887
+
2888
+ <li class="never" data-hits="" data-linenumber="66">
2889
+
2890
+
2891
+ <code class="ruby"></code>
2892
+ </li>
2893
+
2894
+ <li class="covered" data-hits="1" data-linenumber="67">
2895
+ <span class="hits">1</span>
2896
+
2897
+ <code class="ruby"> def default_namespace</code>
2898
+ </li>
2899
+
2900
+ <li class="never" data-hits="" data-linenumber="68">
2901
+
2902
+
2903
+ <code class="ruby"> nil</code>
2904
+ </li>
2905
+
2906
+ <li class="never" data-hits="" data-linenumber="69">
2907
+
2908
+
2909
+ <code class="ruby"> end</code>
2910
+ </li>
2911
+
2912
+ <li class="never" data-hits="" data-linenumber="70">
2913
+
2914
+
2915
+ <code class="ruby"></code>
2916
+ </li>
2917
+
2918
+ <li class="covered" data-hits="1" data-linenumber="71">
2919
+ <span class="hits">1</span>
2920
+
2921
+ <code class="ruby"> def [](taskname)</code>
2922
+ </li>
2923
+
2924
+ <li class="covered" data-hits="5" data-linenumber="72">
2925
+ <span class="hits">5</span>
2926
+
2927
+ <code class="ruby"> in_namespace(taskname).first</code>
2928
+ </li>
2929
+
2930
+ <li class="never" data-hits="" data-linenumber="73">
2931
+
2932
+
2933
+ <code class="ruby"> end</code>
2934
+ </li>
2935
+
2936
+ <li class="never" data-hits="" data-linenumber="74">
2937
+
2938
+
2939
+ <code class="ruby"> end</code>
2940
+ </li>
2941
+
2942
+ <li class="covered" data-hits="1" data-linenumber="75">
2943
+ <span class="hits">1</span>
2944
+
2945
+ <code class="ruby"> Tasklib = TaskLib #Because I can never remember</code>
2946
+ </li>
2947
+
2948
+ <li class="never" data-hits="" data-linenumber="76">
2949
+
2950
+
2951
+ <code class="ruby">end</code>
2952
+ </li>
2953
+
2954
+ </ol>
2955
+ </pre>
2956
+ </div>
2957
+
2958
+ <div class="source_table" id="d473017bbd055a2863ae4f15284c3cc7d86dd38e">
2959
+ <div class="header">
2960
+ <h3>lib/mattock/template-host.rb</h3>
2961
+ <h4><span class="red">63.33 %</span> covered</h4>
2962
+ <div>
2963
+ <b>30</b> relevant lines.
2964
+ <span class="green"><b>19</b> lines covered</span> and
2965
+ <span class="red"><b>11</b> lines missed.</span>
2966
+ </div>
2967
+ </div>
2968
+
2969
+ <pre>
2970
+ <ol>
2971
+
2972
+ <li class="covered" data-hits="1" data-linenumber="1">
2973
+ <span class="hits">1</span>
2974
+
2975
+ <code class="ruby">require 'tilt'</code>
2976
+ </li>
2977
+
2978
+ <li class="covered" data-hits="1" data-linenumber="2">
2979
+ <span class="hits">1</span>
2980
+
2981
+ <code class="ruby">require 'valise'</code>
2982
+ </li>
2983
+
2984
+ <li class="never" data-hits="" data-linenumber="3">
2985
+
2986
+
2987
+ <code class="ruby"></code>
2988
+ </li>
2989
+
2990
+ <li class="covered" data-hits="1" data-linenumber="4">
2991
+ <span class="hits">1</span>
2992
+
2993
+ <code class="ruby">module Mattock</code>
2994
+ </li>
2995
+
2996
+ <li class="covered" data-hits="1" data-linenumber="5">
2997
+ <span class="hits">1</span>
2998
+
2999
+ <code class="ruby"> module ValiseManager</code>
3000
+ </li>
3001
+
3002
+ <li class="covered" data-hits="1" data-linenumber="6">
3003
+ <span class="hits">1</span>
3004
+
3005
+ <code class="ruby"> def default_valise(*dirs)</code>
3006
+ </li>
3007
+
3008
+ <li class="covered" data-hits="1" data-linenumber="7">
3009
+ <span class="hits">1</span>
3010
+
3011
+ <code class="ruby"> Valise::Set.define do</code>
3012
+ </li>
3013
+
3014
+ <li class="covered" data-hits="1" data-linenumber="8">
3015
+ <span class="hits">1</span>
3016
+
3017
+ <code class="ruby"> dirs.each do |dir|</code>
3018
+ </li>
3019
+
3020
+ <li class="covered" data-hits="1" data-linenumber="9">
3021
+ <span class="hits">1</span>
3022
+
3023
+ <code class="ruby"> ro dir</code>
3024
+ </li>
3025
+
3026
+ <li class="never" data-hits="" data-linenumber="10">
3027
+
3028
+
3029
+ <code class="ruby"> end</code>
3030
+ </li>
3031
+
3032
+ <li class="never" data-hits="" data-linenumber="11">
3033
+
3034
+
3035
+ <code class="ruby"> end</code>
3036
+ </li>
3037
+
3038
+ <li class="never" data-hits="" data-linenumber="12">
3039
+
3040
+
3041
+ <code class="ruby"> end</code>
3042
+ </li>
3043
+
3044
+ <li class="never" data-hits="" data-linenumber="13">
3045
+
3046
+
3047
+ <code class="ruby"></code>
3048
+ </li>
3049
+
3050
+ <li class="covered" data-hits="1" data-linenumber="14">
3051
+ <span class="hits">1</span>
3052
+
3053
+ <code class="ruby"> def rel_dir(base_path = nil, up_to = nil)</code>
3054
+ </li>
3055
+
3056
+ <li class="missed" data-hits="0" data-linenumber="15">
3057
+
3058
+
3059
+ <code class="ruby"> base_path ||= /(.*):\d+/.match(caller[0])[1]</code>
3060
+ </li>
3061
+
3062
+ <li class="missed" data-hits="0" data-linenumber="16">
3063
+
3064
+
3065
+ <code class="ruby"> up_to ||= &quot;lib&quot;</code>
3066
+ </li>
3067
+
3068
+ <li class="never" data-hits="" data-linenumber="17">
3069
+
3070
+
3071
+ <code class="ruby"></code>
3072
+ </li>
3073
+
3074
+ <li class="missed" data-hits="0" data-linenumber="18">
3075
+
3076
+
3077
+ <code class="ruby"> abs_path = File::expand_path(base_path)</code>
3078
+ </li>
3079
+
3080
+ <li class="missed" data-hits="0" data-linenumber="19">
3081
+
3082
+
3083
+ <code class="ruby"> base_path = abs_path.split(File::Separator)</code>
3084
+ </li>
3085
+
3086
+ <li class="missed" data-hits="0" data-linenumber="20">
3087
+
3088
+
3089
+ <code class="ruby"> until base_path.empty?</code>
3090
+ </li>
3091
+
3092
+ <li class="missed" data-hits="0" data-linenumber="21">
3093
+
3094
+
3095
+ <code class="ruby"> unless base_path.last == up_to</code>
3096
+ </li>
3097
+
3098
+ <li class="missed" data-hits="0" data-linenumber="22">
3099
+
3100
+
3101
+ <code class="ruby"> base_path.pop</code>
3102
+ </li>
3103
+
3104
+ <li class="never" data-hits="" data-linenumber="23">
3105
+
3106
+
3107
+ <code class="ruby"> else</code>
3108
+ </li>
3109
+
3110
+ <li class="missed" data-hits="0" data-linenumber="24">
3111
+
3112
+
3113
+ <code class="ruby"> break</code>
3114
+ </li>
3115
+
3116
+ <li class="never" data-hits="" data-linenumber="25">
3117
+
3118
+
3119
+ <code class="ruby"> end</code>
3120
+ </li>
3121
+
3122
+ <li class="never" data-hits="" data-linenumber="26">
3123
+
3124
+
3125
+ <code class="ruby"> end</code>
3126
+ </li>
3127
+
3128
+ <li class="never" data-hits="" data-linenumber="27">
3129
+
3130
+
3131
+ <code class="ruby"></code>
3132
+ </li>
3133
+
3134
+ <li class="missed" data-hits="0" data-linenumber="28">
3135
+
3136
+
3137
+ <code class="ruby"> if base_path.empty?</code>
3138
+ </li>
3139
+
3140
+ <li class="missed" data-hits="0" data-linenumber="29">
3141
+
3142
+
3143
+ <code class="ruby"> raise &quot;Relative root #{up_to} not found in #{abs_path}&quot;</code>
3144
+ </li>
3145
+
3146
+ <li class="never" data-hits="" data-linenumber="30">
3147
+
3148
+
3149
+ <code class="ruby"> end</code>
3150
+ </li>
3151
+
3152
+ <li class="never" data-hits="" data-linenumber="31">
3153
+
3154
+
3155
+ <code class="ruby"></code>
3156
+ </li>
3157
+
3158
+ <li class="missed" data-hits="0" data-linenumber="32">
3159
+
3160
+
3161
+ <code class="ruby"> return base_path</code>
3162
+ </li>
3163
+
3164
+ <li class="never" data-hits="" data-linenumber="33">
3165
+
3166
+
3167
+ <code class="ruby"> end</code>
3168
+ </li>
3169
+
3170
+ <li class="covered" data-hits="1" data-linenumber="34">
3171
+ <span class="hits">1</span>
3172
+
3173
+ <code class="ruby"> module_function :rel_dir, :default_valise</code>
3174
+ </li>
3175
+
3176
+ <li class="never" data-hits="" data-linenumber="35">
3177
+
3178
+
3179
+ <code class="ruby"> end</code>
3180
+ </li>
3181
+
3182
+ <li class="never" data-hits="" data-linenumber="36">
3183
+
3184
+
3185
+ <code class="ruby"></code>
3186
+ </li>
3187
+
3188
+ <li class="covered" data-hits="1" data-linenumber="37">
3189
+ <span class="hits">1</span>
3190
+
3191
+ <code class="ruby"> module TemplateHost</code>
3192
+ </li>
3193
+
3194
+ <li class="covered" data-hits="1" data-linenumber="38">
3195
+ <span class="hits">1</span>
3196
+
3197
+ <code class="ruby"> def self.template_cache</code>
3198
+ </li>
3199
+
3200
+ <li class="covered" data-hits="1" data-linenumber="39">
3201
+ <span class="hits">1</span>
3202
+
3203
+ <code class="ruby"> @template_cache ||= Tilt::Cache.new</code>
3204
+ </li>
3205
+
3206
+ <li class="never" data-hits="" data-linenumber="40">
3207
+
3208
+
3209
+ <code class="ruby"> end</code>
3210
+ </li>
3211
+
3212
+ <li class="never" data-hits="" data-linenumber="41">
3213
+
3214
+
3215
+ <code class="ruby"></code>
3216
+ </li>
3217
+
3218
+ <li class="covered" data-hits="1" data-linenumber="42">
3219
+ <span class="hits">1</span>
3220
+
3221
+ <code class="ruby"> attr_accessor :valise</code>
3222
+ </li>
3223
+
3224
+ <li class="never" data-hits="" data-linenumber="43">
3225
+
3226
+
3227
+ <code class="ruby"></code>
3228
+ </li>
3229
+
3230
+ <li class="covered" data-hits="1" data-linenumber="44">
3231
+ <span class="hits">1</span>
3232
+
3233
+ <code class="ruby"> def render(path, locals=nil)</code>
3234
+ </li>
3235
+
3236
+ <li class="covered" data-hits="1" data-linenumber="45">
3237
+ <span class="hits">1</span>
3238
+
3239
+ <code class="ruby"> template = TemplateHost::template_cache.fetch(path) do</code>
3240
+ </li>
3241
+
3242
+ <li class="covered" data-hits="1" data-linenumber="46">
3243
+ <span class="hits">1</span>
3244
+
3245
+ <code class="ruby"> Tilt.new(path) do |tmpl|</code>
3246
+ </li>
3247
+
3248
+ <li class="covered" data-hits="1" data-linenumber="47">
3249
+ <span class="hits">1</span>
3250
+
3251
+ <code class="ruby"> valise.find([&quot;templates&quot;] + valise.unpath(tmpl.file)).contents</code>
3252
+ </li>
3253
+
3254
+ <li class="never" data-hits="" data-linenumber="48">
3255
+
3256
+
3257
+ <code class="ruby"> end</code>
3258
+ </li>
3259
+
3260
+ <li class="never" data-hits="" data-linenumber="49">
3261
+
3262
+
3263
+ <code class="ruby"> end</code>
3264
+ </li>
3265
+
3266
+ <li class="never" data-hits="" data-linenumber="50">
3267
+
3268
+
3269
+ <code class="ruby"></code>
3270
+ </li>
3271
+
3272
+ <li class="covered" data-hits="1" data-linenumber="51">
3273
+ <span class="hits">1</span>
3274
+
3275
+ <code class="ruby"> template.render(self, locals)</code>
3276
+ </li>
3277
+
3278
+ <li class="never" data-hits="" data-linenumber="52">
3279
+
3280
+
3281
+ <code class="ruby"> end</code>
3282
+ </li>
3283
+
3284
+ <li class="never" data-hits="" data-linenumber="53">
3285
+
3286
+
3287
+ <code class="ruby"> end</code>
3288
+ </li>
3289
+
3290
+ <li class="never" data-hits="" data-linenumber="54">
3291
+
3292
+
3293
+ <code class="ruby">end</code>
3294
+ </li>
3295
+
3296
+ </ol>
3297
+ </pre>
3298
+ </div>
3299
+
3300
+ <div class="source_table" id="d05b479afa4321ddf827a6b5af14020183ee07b9">
3301
+ <div class="header">
3302
+ <h3>lib/mattock/testing/mock-command-line.rb</h3>
3303
+ <h4><span class="green">92.86 %</span> covered</h4>
3304
+ <div>
3305
+ <b>14</b> relevant lines.
3306
+ <span class="green"><b>13</b> lines covered</span> and
3307
+ <span class="red"><b>1</b> lines missed.</span>
3308
+ </div>
3309
+ </div>
3310
+
3311
+ <pre>
3312
+ <ol>
3313
+
3314
+ <li class="covered" data-hits="1" data-linenumber="1">
3315
+ <span class="hits">1</span>
3316
+
3317
+ <code class="ruby">require 'mattock/command-line'</code>
3318
+ </li>
3319
+
3320
+ <li class="never" data-hits="" data-linenumber="2">
3321
+
3322
+
3323
+ <code class="ruby"></code>
3324
+ </li>
3325
+
3326
+ <li class="covered" data-hits="1" data-linenumber="3">
3327
+ <span class="hits">1</span>
3328
+
3329
+ <code class="ruby">module Mattock</code>
3330
+ </li>
3331
+
3332
+ <li class="covered" data-hits="1" data-linenumber="4">
3333
+ <span class="hits">1</span>
3334
+
3335
+ <code class="ruby"> class MockCommandResult &lt; CommandRunResult</code>
3336
+ </li>
3337
+
3338
+ <li class="covered" data-hits="1" data-linenumber="5">
3339
+ <span class="hits">1</span>
3340
+
3341
+ <code class="ruby"> def self.create(*args)</code>
3342
+ </li>
3343
+
3344
+ <li class="covered" data-hits="2" data-linenumber="6">
3345
+ <span class="hits">2</span>
3346
+
3347
+ <code class="ruby"> if args.length == 1</code>
3348
+ </li>
3349
+
3350
+ <li class="covered" data-hits="2" data-linenumber="7">
3351
+ <span class="hits">2</span>
3352
+
3353
+ <code class="ruby"> args = [args[0], {1 =&gt; &quot;&quot;}]</code>
3354
+ </li>
3355
+
3356
+ <li class="never" data-hits="" data-linenumber="8">
3357
+
3358
+
3359
+ <code class="ruby"> end</code>
3360
+ </li>
3361
+
3362
+ <li class="never" data-hits="" data-linenumber="9">
3363
+
3364
+
3365
+ <code class="ruby"></code>
3366
+ </li>
3367
+
3368
+ <li class="covered" data-hits="2" data-linenumber="10">
3369
+ <span class="hits">2</span>
3370
+
3371
+ <code class="ruby"> if String == args[1]</code>
3372
+ </li>
3373
+
3374
+ <li class="missed" data-hits="0" data-linenumber="11">
3375
+
3376
+
3377
+ <code class="ruby"> args[1] = {1 =&gt; args[1]}</code>
3378
+ </li>
3379
+
3380
+ <li class="never" data-hits="" data-linenumber="12">
3381
+
3382
+
3383
+ <code class="ruby"> end</code>
3384
+ </li>
3385
+
3386
+ <li class="never" data-hits="" data-linenumber="13">
3387
+
3388
+
3389
+ <code class="ruby"></code>
3390
+ </li>
3391
+
3392
+ <li class="covered" data-hits="2" data-linenumber="14">
3393
+ <span class="hits">2</span>
3394
+
3395
+ <code class="ruby"> return self.new(*args)</code>
3396
+ </li>
3397
+
3398
+ <li class="never" data-hits="" data-linenumber="15">
3399
+
3400
+
3401
+ <code class="ruby"> end</code>
3402
+ </li>
3403
+
3404
+ <li class="never" data-hits="" data-linenumber="16">
3405
+
3406
+
3407
+ <code class="ruby"></code>
3408
+ </li>
3409
+
3410
+ <li class="covered" data-hits="1" data-linenumber="17">
3411
+ <span class="hits">1</span>
3412
+
3413
+ <code class="ruby"> def initialize(code, streams)</code>
3414
+ </li>
3415
+
3416
+ <li class="covered" data-hits="2" data-linenumber="18">
3417
+ <span class="hits">2</span>
3418
+
3419
+ <code class="ruby"> @streams = streams</code>
3420
+ </li>
3421
+
3422
+ <li class="covered" data-hits="2" data-linenumber="19">
3423
+ <span class="hits">2</span>
3424
+
3425
+ <code class="ruby"> @exit_code = code</code>
3426
+ </li>
3427
+
3428
+ <li class="never" data-hits="" data-linenumber="20">
3429
+
3430
+
3431
+ <code class="ruby"> end</code>
3432
+ </li>
3433
+
3434
+ <li class="never" data-hits="" data-linenumber="21">
3435
+
3436
+
3437
+ <code class="ruby"></code>
3438
+ </li>
3439
+
3440
+ <li class="covered" data-hits="1" data-linenumber="22">
3441
+ <span class="hits">1</span>
3442
+
3443
+ <code class="ruby"> attr_reader :exit_code, :streams</code>
3444
+ </li>
3445
+
3446
+ <li class="never" data-hits="" data-linenumber="23">
3447
+
3448
+
3449
+ <code class="ruby"></code>
3450
+ </li>
3451
+
3452
+ <li class="covered" data-hits="1" data-linenumber="24">
3453
+ <span class="hits">1</span>
3454
+
3455
+ <code class="ruby"> alias exit_status exit_code</code>
3456
+ </li>
3457
+
3458
+ <li class="never" data-hits="" data-linenumber="25">
3459
+
3460
+
3461
+ <code class="ruby"> end</code>
3462
+ </li>
3463
+
3464
+ <li class="never" data-hits="" data-linenumber="26">
3465
+
3466
+
3467
+ <code class="ruby">end</code>
3468
+ </li>
3469
+
3470
+ </ol>
3471
+ </pre>
3472
+ </div>
3473
+
3474
+ <div class="source_table" id="ba419266ded63c6767eeb8c594191949ebb1b061">
3475
+ <div class="header">
3476
+ <h3>lib/mattock/testing/rake-example-group.rb</h3>
3477
+ <h4><span class="green">100.0 %</span> covered</h4>
3478
+ <div>
3479
+ <b>44</b> relevant lines.
3480
+ <span class="green"><b>44</b> lines covered</span> and
3481
+ <span class="red"><b>0</b> lines missed.</span>
3482
+ </div>
3483
+ </div>
3484
+
3485
+ <pre>
3486
+ <ol>
3487
+
3488
+ <li class="covered" data-hits="1" data-linenumber="1">
3489
+ <span class="hits">1</span>
3490
+
3491
+ <code class="ruby">require 'rake'</code>
3492
+ </li>
3493
+
3494
+ <li class="never" data-hits="" data-linenumber="2">
3495
+
3496
+
3497
+ <code class="ruby"></code>
3498
+ </li>
3499
+
3500
+ <li class="covered" data-hits="1" data-linenumber="3">
3501
+ <span class="hits">1</span>
3502
+
3503
+ <code class="ruby">module Mattock</code>
3504
+ </li>
3505
+
3506
+ <li class="covered" data-hits="1" data-linenumber="4">
3507
+ <span class="hits">1</span>
3508
+
3509
+ <code class="ruby"> module RakeExampleGroup</code>
3510
+ </li>
3511
+
3512
+ <li class="covered" data-hits="1" data-linenumber="5">
3513
+ <span class="hits">1</span>
3514
+
3515
+ <code class="ruby"> SavedEnvironmentVariables = %w{APPDATA HOME HOMEDRIVE HOMEPATH RAKE_COLUMNS RAKE_SYSTEM RAKEOPT USERPROFILE}</code>
3516
+ </li>
3517
+
3518
+ <li class="covered" data-hits="1" data-linenumber="6">
3519
+ <span class="hits">1</span>
3520
+
3521
+ <code class="ruby"> DeletedEnvironmentVariables = %w{RAKE_COLUMNS RAKE_SYSTEM RAKEOPT}</code>
3522
+ </li>
3523
+
3524
+ <li class="covered" data-hits="1" data-linenumber="7">
3525
+ <span class="hits">1</span>
3526
+
3527
+ <code class="ruby"> include Rake::DSL</code>
3528
+ </li>
3529
+
3530
+ <li class="never" data-hits="" data-linenumber="8">
3531
+
3532
+
3533
+ <code class="ruby"> #include FileUtils</code>
3534
+ </li>
3535
+
3536
+ <li class="never" data-hits="" data-linenumber="9">
3537
+
3538
+
3539
+ <code class="ruby"></code>
3540
+ </li>
3541
+
3542
+ <li class="covered" data-hits="1" data-linenumber="10">
3543
+ <span class="hits">1</span>
3544
+
3545
+ <code class="ruby"> class TaskManager</code>
3546
+ </li>
3547
+
3548
+ <li class="covered" data-hits="1" data-linenumber="11">
3549
+ <span class="hits">1</span>
3550
+
3551
+ <code class="ruby"> include Rake::TaskManager</code>
3552
+ </li>
3553
+
3554
+ <li class="never" data-hits="" data-linenumber="12">
3555
+
3556
+
3557
+ <code class="ruby"> end</code>
3558
+ </li>
3559
+
3560
+ <li class="never" data-hits="" data-linenumber="13">
3561
+
3562
+
3563
+ <code class="ruby"></code>
3564
+ </li>
3565
+
3566
+ <li class="covered" data-hits="1" data-linenumber="14">
3567
+ <span class="hits">1</span>
3568
+
3569
+ <code class="ruby"> def self.included(mod)</code>
3570
+ </li>
3571
+
3572
+ <li class="covered" data-hits="2" data-linenumber="15">
3573
+ <span class="hits">2</span>
3574
+
3575
+ <code class="ruby"> mod.class_eval do</code>
3576
+ </li>
3577
+
3578
+ <li class="covered" data-hits="2" data-linenumber="16">
3579
+ <span class="hits">2</span>
3580
+
3581
+ <code class="ruby"> let! :rake do</code>
3582
+ </li>
3583
+
3584
+ <li class="covered" data-hits="6" data-linenumber="17">
3585
+ <span class="hits">6</span>
3586
+
3587
+ <code class="ruby"> Rake.application = Rake::Application.new</code>
3588
+ </li>
3589
+
3590
+ <li class="covered" data-hits="6" data-linenumber="18">
3591
+ <span class="hits">6</span>
3592
+
3593
+ <code class="ruby"> Rake::TaskManager.record_task_metadata = true</code>
3594
+ </li>
3595
+
3596
+ <li class="covered" data-hits="6" data-linenumber="19">
3597
+ <span class="hits">6</span>
3598
+
3599
+ <code class="ruby"> RakeFileUtils.verbose_flag = false</code>
3600
+ </li>
3601
+
3602
+ <li class="covered" data-hits="6" data-linenumber="20">
3603
+ <span class="hits">6</span>
3604
+
3605
+ <code class="ruby"> Rake.application</code>
3606
+ </li>
3607
+
3608
+ <li class="never" data-hits="" data-linenumber="21">
3609
+
3610
+
3611
+ <code class="ruby"> end</code>
3612
+ </li>
3613
+
3614
+ <li class="never" data-hits="" data-linenumber="22">
3615
+
3616
+
3617
+ <code class="ruby"></code>
3618
+ </li>
3619
+
3620
+ <li class="covered" data-hits="2" data-linenumber="23">
3621
+ <span class="hits">2</span>
3622
+
3623
+ <code class="ruby"> before :each do</code>
3624
+ </li>
3625
+
3626
+ <li class="covered" data-hits="6" data-linenumber="24">
3627
+ <span class="hits">6</span>
3628
+
3629
+ <code class="ruby"> ARGV.clear</code>
3630
+ </li>
3631
+
3632
+ <li class="never" data-hits="" data-linenumber="25">
3633
+
3634
+
3635
+ <code class="ruby"></code>
3636
+ </li>
3637
+
3638
+ <li class="covered" data-hits="6" data-linenumber="26">
3639
+ <span class="hits">6</span>
3640
+
3641
+ <code class="ruby"> @original_ENV = {}</code>
3642
+ </li>
3643
+
3644
+ <li class="covered" data-hits="6" data-linenumber="27">
3645
+ <span class="hits">6</span>
3646
+
3647
+ <code class="ruby"> SavedEnvironmentVariables.each do |var|</code>
3648
+ </li>
3649
+
3650
+ <li class="covered" data-hits="48" data-linenumber="28">
3651
+ <span class="hits">48</span>
3652
+
3653
+ <code class="ruby"> @original_ENV[var] = ENV[var]</code>
3654
+ </li>
3655
+
3656
+ <li class="never" data-hits="" data-linenumber="29">
3657
+
3658
+
3659
+ <code class="ruby"> end</code>
3660
+ </li>
3661
+
3662
+ <li class="covered" data-hits="6" data-linenumber="30">
3663
+ <span class="hits">6</span>
3664
+
3665
+ <code class="ruby"> DeletedEnvironmentVariables.each do |var|</code>
3666
+ </li>
3667
+
3668
+ <li class="covered" data-hits="18" data-linenumber="31">
3669
+ <span class="hits">18</span>
3670
+
3671
+ <code class="ruby"> ENV.delete(var)</code>
3672
+ </li>
3673
+
3674
+ <li class="never" data-hits="" data-linenumber="32">
3675
+
3676
+
3677
+ <code class="ruby"> end</code>
3678
+ </li>
3679
+
3680
+ <li class="never" data-hits="" data-linenumber="33">
3681
+
3682
+
3683
+ <code class="ruby"></code>
3684
+ </li>
3685
+
3686
+ <li class="never" data-hits="" data-linenumber="34">
3687
+
3688
+
3689
+ <code class="ruby"> end</code>
3690
+ </li>
3691
+
3692
+ <li class="never" data-hits="" data-linenumber="35">
3693
+
3694
+
3695
+ <code class="ruby"></code>
3696
+ </li>
3697
+
3698
+ <li class="covered" data-hits="2" data-linenumber="36">
3699
+ <span class="hits">2</span>
3700
+
3701
+ <code class="ruby"> after :each do</code>
3702
+ </li>
3703
+
3704
+ <li class="covered" data-hits="6" data-linenumber="37">
3705
+ <span class="hits">6</span>
3706
+
3707
+ <code class="ruby"> SavedEnvironmentVariables.each do |var|</code>
3708
+ </li>
3709
+
3710
+ <li class="covered" data-hits="48" data-linenumber="38">
3711
+ <span class="hits">48</span>
3712
+
3713
+ <code class="ruby"> ENV[var] = @original_ENV[var]</code>
3714
+ </li>
3715
+
3716
+ <li class="never" data-hits="" data-linenumber="39">
3717
+
3718
+
3719
+ <code class="ruby"> end</code>
3720
+ </li>
3721
+
3722
+ <li class="never" data-hits="" data-linenumber="40">
3723
+
3724
+
3725
+ <code class="ruby"></code>
3726
+ </li>
3727
+
3728
+ <li class="covered" data-hits="6" data-linenumber="41">
3729
+ <span class="hits">6</span>
3730
+
3731
+ <code class="ruby"> if @original_ENV['APPDATA'].nil?</code>
3732
+ </li>
3733
+
3734
+ <li class="covered" data-hits="6" data-linenumber="42">
3735
+ <span class="hits">6</span>
3736
+
3737
+ <code class="ruby"> ENV.delete 'APPDATA'</code>
3738
+ </li>
3739
+
3740
+ <li class="never" data-hits="" data-linenumber="43">
3741
+
3742
+
3743
+ <code class="ruby"> end</code>
3744
+ </li>
3745
+
3746
+ <li class="never" data-hits="" data-linenumber="44">
3747
+
3748
+
3749
+ <code class="ruby"> end</code>
3750
+ </li>
3751
+
3752
+ <li class="never" data-hits="" data-linenumber="45">
3753
+
3754
+
3755
+ <code class="ruby"></code>
3756
+ </li>
3757
+
3758
+ <li class="covered" data-hits="2" data-linenumber="46">
3759
+ <span class="hits">2</span>
3760
+
3761
+ <code class="ruby"> before :each do</code>
3762
+ </li>
3763
+
3764
+ <li class="covered" data-hits="6" data-linenumber="47">
3765
+ <span class="hits">6</span>
3766
+
3767
+ <code class="ruby"> @tempdir = File.join &quot;/tmp&quot;, &quot;test_mattock_#{$$}&quot;</code>
3768
+ </li>
3769
+
3770
+ <li class="never" data-hits="" data-linenumber="48">
3771
+
3772
+
3773
+ <code class="ruby"></code>
3774
+ </li>
3775
+
3776
+ <li class="covered" data-hits="6" data-linenumber="49">
3777
+ <span class="hits">6</span>
3778
+
3779
+ <code class="ruby"> @original_PWD = Dir.pwd</code>
3780
+ </li>
3781
+
3782
+ <li class="covered" data-hits="6" data-linenumber="50">
3783
+ <span class="hits">6</span>
3784
+
3785
+ <code class="ruby"> FileUtils.mkdir_p @tempdir</code>
3786
+ </li>
3787
+
3788
+ <li class="covered" data-hits="6" data-linenumber="51">
3789
+ <span class="hits">6</span>
3790
+
3791
+ <code class="ruby"> Dir.chdir @tempdir</code>
3792
+ </li>
3793
+
3794
+ <li class="never" data-hits="" data-linenumber="52">
3795
+
3796
+
3797
+ <code class="ruby"> end</code>
3798
+ </li>
3799
+
3800
+ <li class="never" data-hits="" data-linenumber="53">
3801
+
3802
+
3803
+ <code class="ruby"></code>
3804
+ </li>
3805
+
3806
+ <li class="covered" data-hits="2" data-linenumber="54">
3807
+ <span class="hits">2</span>
3808
+
3809
+ <code class="ruby"> after :each do</code>
3810
+ </li>
3811
+
3812
+ <li class="covered" data-hits="6" data-linenumber="55">
3813
+ <span class="hits">6</span>
3814
+
3815
+ <code class="ruby"> Dir.chdir @original_PWD</code>
3816
+ </li>
3817
+
3818
+ <li class="covered" data-hits="6" data-linenumber="56">
3819
+ <span class="hits">6</span>
3820
+
3821
+ <code class="ruby"> FileUtils.rm_rf @tempdir</code>
3822
+ </li>
3823
+
3824
+ <li class="never" data-hits="" data-linenumber="57">
3825
+
3826
+
3827
+ <code class="ruby"> end</code>
3828
+ </li>
3829
+
3830
+ <li class="never" data-hits="" data-linenumber="58">
3831
+
3832
+
3833
+ <code class="ruby"> end</code>
3834
+ </li>
3835
+
3836
+ <li class="never" data-hits="" data-linenumber="59">
3837
+
3838
+
3839
+ <code class="ruby"> end</code>
3840
+ </li>
3841
+
3842
+ <li class="never" data-hits="" data-linenumber="60">
3843
+
3844
+
3845
+ <code class="ruby"></code>
3846
+ </li>
3847
+
3848
+ <li class="covered" data-hits="1" data-linenumber="61">
3849
+ <span class="hits">1</span>
3850
+
3851
+ <code class="ruby"> module Matchers</code>
3852
+ </li>
3853
+
3854
+ <li class="covered" data-hits="1" data-linenumber="62">
3855
+ <span class="hits">1</span>
3856
+
3857
+ <code class="ruby"> extend RSpec::Matchers::DSL</code>
3858
+ </li>
3859
+
3860
+ <li class="never" data-hits="" data-linenumber="63">
3861
+
3862
+
3863
+ <code class="ruby"></code>
3864
+ </li>
3865
+
3866
+ <li class="covered" data-hits="1" data-linenumber="64">
3867
+ <span class="hits">1</span>
3868
+
3869
+ <code class="ruby"> define :have_task do |name|</code>
3870
+ </li>
3871
+
3872
+ <li class="covered" data-hits="3" data-linenumber="65">
3873
+ <span class="hits">3</span>
3874
+
3875
+ <code class="ruby"> match do |rake|</code>
3876
+ </li>
3877
+
3878
+ <li class="covered" data-hits="3" data-linenumber="66">
3879
+ <span class="hits">3</span>
3880
+
3881
+ <code class="ruby"> !rake.lookup(&quot;rake:&quot; + name.to_s).nil?</code>
3882
+ </li>
3883
+
3884
+ <li class="never" data-hits="" data-linenumber="67">
3885
+
3886
+
3887
+ <code class="ruby"> end</code>
3888
+ </li>
3889
+
3890
+ <li class="never" data-hits="" data-linenumber="68">
3891
+
3892
+
3893
+ <code class="ruby"> end</code>
3894
+ </li>
3895
+
3896
+ <li class="never" data-hits="" data-linenumber="69">
3897
+
3898
+
3899
+ <code class="ruby"></code>
3900
+ </li>
3901
+
3902
+ <li class="covered" data-hits="1" data-linenumber="70">
3903
+ <span class="hits">1</span>
3904
+
3905
+ <code class="ruby"> define :depend_on do |name|</code>
3906
+ </li>
3907
+
3908
+ <li class="covered" data-hits="2" data-linenumber="71">
3909
+ <span class="hits">2</span>
3910
+
3911
+ <code class="ruby"> match do |task|</code>
3912
+ </li>
3913
+
3914
+ <li class="covered" data-hits="2" data-linenumber="72">
3915
+ <span class="hits">2</span>
3916
+
3917
+ <code class="ruby"> task.prerequisites.include?(name)</code>
3918
+ </li>
3919
+
3920
+ <li class="never" data-hits="" data-linenumber="73">
3921
+
3922
+
3923
+ <code class="ruby"> end</code>
3924
+ </li>
3925
+
3926
+ <li class="never" data-hits="" data-linenumber="74">
3927
+
3928
+
3929
+ <code class="ruby"> end</code>
3930
+ </li>
3931
+
3932
+ <li class="never" data-hits="" data-linenumber="75">
3933
+
3934
+
3935
+ <code class="ruby"> end</code>
3936
+ </li>
3937
+
3938
+ <li class="never" data-hits="" data-linenumber="76">
3939
+
3940
+
3941
+ <code class="ruby"></code>
3942
+ </li>
3943
+
3944
+ <li class="covered" data-hits="1" data-linenumber="77">
3945
+ <span class="hits">1</span>
3946
+
3947
+ <code class="ruby"> include Matchers</code>
3948
+ </li>
3949
+
3950
+ <li class="never" data-hits="" data-linenumber="78">
3951
+
3952
+
3953
+ <code class="ruby"> end</code>
3954
+ </li>
3955
+
3956
+ <li class="never" data-hits="" data-linenumber="79">
3957
+
3958
+
3959
+ <code class="ruby">end</code>
3960
+ </li>
3961
+
3962
+ </ol>
3963
+ </pre>
3964
+ </div>
3965
+
3966
+ </div>
3967
+ </div>
3968
+ </body>
3969
+ </html>