chake 0.19 → 0.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/ChangeLog.md +8 -0
  3. data/README.md +14 -0
  4. data/Rakefile +7 -4
  5. data/bin/chake +11 -0
  6. data/chake.gemspec +1 -1
  7. data/coverage/assets/0.10.0/application.css +799 -0
  8. data/coverage/assets/0.10.0/application.js +34783 -0
  9. data/coverage/assets/0.10.0/colorbox/border.png +0 -0
  10. data/coverage/assets/0.10.0/colorbox/controls.png +0 -0
  11. data/coverage/assets/0.10.0/colorbox/loading.gif +0 -0
  12. data/coverage/assets/0.10.0/colorbox/loading_background.png +0 -0
  13. data/coverage/assets/0.10.0/favicon_green.png +0 -0
  14. data/coverage/assets/0.10.0/favicon_red.png +0 -0
  15. data/coverage/assets/0.10.0/favicon_yellow.png +0 -0
  16. data/coverage/assets/0.10.0/loading.gif +0 -0
  17. data/coverage/assets/0.10.0/magnify.png +0 -0
  18. data/coverage/assets/0.10.0/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  19. data/coverage/assets/0.10.0/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  20. data/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  21. data/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  22. data/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  23. data/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  24. data/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  25. data/coverage/assets/0.10.0/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  26. data/coverage/assets/0.10.0/smoothness/images/ui-icons_222222_256x240.png +0 -0
  27. data/coverage/assets/0.10.0/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  28. data/coverage/assets/0.10.0/smoothness/images/ui-icons_454545_256x240.png +0 -0
  29. data/coverage/assets/0.10.0/smoothness/images/ui-icons_888888_256x240.png +0 -0
  30. data/coverage/assets/0.10.0/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  31. data/coverage/index.html +2326 -0
  32. data/lib/chake.rb +17 -26
  33. data/lib/chake/backend.rb +5 -3
  34. data/lib/chake/config.rb +21 -0
  35. data/lib/chake/version.rb +1 -1
  36. data/spec/spec_helper.rb +3 -1
  37. metadata +28 -5
  38. data/.gitignore +0 -20
  39. data/.gitlab-ci.yml +0 -12
  40. data/man/.gitignore +0 -2
@@ -0,0 +1,2326 @@
1
+ <!DOCTYPE html>
2
+ <html xmlns='http://www.w3.org/1999/xhtml'>
3
+ <head>
4
+ <title>Code coverage for Chake</title>
5
+ <meta http-equiv="content-type" content="text/html; charset=utf-8" />
6
+ <script src='./assets/0.10.0/application.js' type='text/javascript'></script>
7
+ <link href='./assets/0.10.0/application.css' media='screen, projection, print' rel='stylesheet' type='text/css'>
8
+ <link rel="shortcut icon" type="image/png" href="./assets/0.10.0/favicon_green.png" />
9
+ <link rel="icon" type="image/png" href="./assets/0.10.0/favicon.png" />
10
+ </head>
11
+
12
+ <body>
13
+ <div id="loading">
14
+ <img src="./assets/0.10.0/loading.gif" alt="loading"/>
15
+ </div>
16
+ <div id="wrapper" style="display:none;">
17
+ <div class="timestamp">Generated <abbr class="timeago" title="2019-11-27T08:59:16-03:00">2019-11-27T08:59:16-03:00</abbr></div>
18
+ <ul class="group_tabs"></ul>
19
+
20
+ <div id="content">
21
+ <div class="file_list_container" id="AllFiles">
22
+ <h2>
23
+ <span class="group_name">All Files</span>
24
+ (<span class="covered_percent"><span class="green">92.47%</span></span>
25
+ covered at
26
+ <span class="covered_strength">
27
+ <span class="green">
28
+ 3.83
29
+ </span>
30
+ </span> hits/line)
31
+ </h2>
32
+ <a name="AllFiles"></a>
33
+ <div>
34
+ <b>7</b> files in total.
35
+ <b>186</b> relevant lines.
36
+ <span class="green"><b>172</b> lines covered</span> and
37
+ <span class="red"><b>14</b> lines missed </span>
38
+ </div>
39
+ <table class="file_list">
40
+ <thead>
41
+ <tr>
42
+ <th>File</th>
43
+ <th>% covered</th>
44
+ <th>Lines</th>
45
+ <th>Relevant Lines</th>
46
+ <th>Lines covered</th>
47
+ <th>Lines missed</th>
48
+ <th>Avg. Hits / Line</th>
49
+ </tr>
50
+ </thead>
51
+ <tbody>
52
+
53
+ <tr>
54
+ <td class="strong"><a href="#f946681c65762e86a5af4e3d4826ca838f8c3581" class="src_link" title="lib/chake/backend.rb">lib/chake/backend.rb</a></td>
55
+ <td class="yellow strong">81.4 %</td>
56
+ <td>80</td>
57
+ <td>43</td>
58
+ <td>35</td>
59
+ <td>8</td>
60
+ <td>1.9</td>
61
+ </tr>
62
+
63
+ <tr>
64
+ <td class="strong"><a href="#2e1a7647dbcdb46e1f25a425b26a95f3cd809f21" class="src_link" title="lib/chake/backend/local.rb">lib/chake/backend/local.rb</a></td>
65
+ <td class="yellow strong">90.0 %</td>
66
+ <td>25</td>
67
+ <td>10</td>
68
+ <td>9</td>
69
+ <td>1</td>
70
+ <td>1.1</td>
71
+ </tr>
72
+
73
+ <tr>
74
+ <td class="strong"><a href="#8faefdcb0614d86c951274137a1f0a7e4a38322c" class="src_link" title="lib/chake/backend/ssh.rb">lib/chake/backend/ssh.rb</a></td>
75
+ <td class="yellow strong">86.84 %</td>
76
+ <td>79</td>
77
+ <td>38</td>
78
+ <td>33</td>
79
+ <td>5</td>
80
+ <td>1.4</td>
81
+ </tr>
82
+
83
+ <tr>
84
+ <td class="strong"><a href="#6f4df1f307637e63f54548e20e1b07ab4bb7f41c" class="src_link" title="lib/chake/node.rb">lib/chake/node.rb</a></td>
85
+ <td class="green strong">100.0 %</td>
86
+ <td>59</td>
87
+ <td>35</td>
88
+ <td>35</td>
89
+ <td>0</td>
90
+ <td>12.1</td>
91
+ </tr>
92
+
93
+ <tr>
94
+ <td class="strong"><a href="#0b638ba835c7b1f7ced9cfc83771b9405879de96" class="src_link" title="spec/chake/backend/ssh_spec.rb">spec/chake/backend/ssh_spec.rb</a></td>
95
+ <td class="green strong">100.0 %</td>
96
+ <td>37</td>
97
+ <td>21</td>
98
+ <td>21</td>
99
+ <td>0</td>
100
+ <td>1.5</td>
101
+ </tr>
102
+
103
+ <tr>
104
+ <td class="strong"><a href="#ac8821762e582e387630f20ab79b98f4f5a7f7d3" class="src_link" title="spec/chake/backend_spec.rb">spec/chake/backend_spec.rb</a></td>
105
+ <td class="green strong">100.0 %</td>
106
+ <td>2</td>
107
+ <td>1</td>
108
+ <td>1</td>
109
+ <td>0</td>
110
+ <td>1.0</td>
111
+ </tr>
112
+
113
+ <tr>
114
+ <td class="strong"><a href="#a7d8a97d1649246ed1998a061b28bf4fd79b767a" class="src_link" title="spec/chake/node_spec.rb">spec/chake/node_spec.rb</a></td>
115
+ <td class="green strong">100.0 %</td>
116
+ <td>61</td>
117
+ <td>38</td>
118
+ <td>38</td>
119
+ <td>0</td>
120
+ <td>2.9</td>
121
+ </tr>
122
+
123
+ </tbody>
124
+ </table>
125
+ </div>
126
+
127
+
128
+
129
+ </div>
130
+
131
+ <div id="footer">
132
+ Generated by <a href="http://github.com/colszowka/simplecov">simplecov</a> v0.16.1
133
+ and simplecov-html v0.10.0<br/>
134
+ using RSpec
135
+ </div>
136
+
137
+ <div class="source_files">
138
+
139
+ <div class="source_table" id="f946681c65762e86a5af4e3d4826ca838f8c3581">
140
+ <div class="header">
141
+ <h3>lib/chake/backend.rb</h3>
142
+ <h4><span class="yellow">81.4 %</span> covered</h4>
143
+ <div>
144
+ <b>43</b> relevant lines.
145
+ <span class="green"><b>35</b> lines covered</span> and
146
+ <span class="red"><b>8</b> lines missed.</span>
147
+ </div>
148
+ </div>
149
+
150
+ <pre>
151
+ <ol>
152
+
153
+ <li class="covered" data-hits="1" data-linenumber="1">
154
+ <span class="hits">1</span>
155
+
156
+ <code class="ruby">module Chake</code>
157
+ </li>
158
+
159
+ <li class="never" data-hits="" data-linenumber="2">
160
+
161
+
162
+ <code class="ruby"></code>
163
+ </li>
164
+
165
+ <li class="covered" data-hits="1" data-linenumber="3">
166
+ <span class="hits">1</span>
167
+
168
+ <code class="ruby"> class Backend &lt; Struct.new(:node)</code>
169
+ </li>
170
+
171
+ <li class="never" data-hits="" data-linenumber="4">
172
+
173
+
174
+ <code class="ruby"></code>
175
+ </li>
176
+
177
+ <li class="covered" data-hits="1" data-linenumber="5">
178
+ <span class="hits">1</span>
179
+
180
+ <code class="ruby"> class CommandFailed &lt; Exception</code>
181
+ </li>
182
+
183
+ <li class="never" data-hits="" data-linenumber="6">
184
+
185
+
186
+ <code class="ruby"> end</code>
187
+ </li>
188
+
189
+ <li class="never" data-hits="" data-linenumber="7">
190
+
191
+
192
+ <code class="ruby"></code>
193
+ </li>
194
+
195
+ <li class="covered" data-hits="1" data-linenumber="8">
196
+ <span class="hits">1</span>
197
+
198
+ <code class="ruby"> def scp</code>
199
+ </li>
200
+
201
+ <li class="missed" data-hits="0" data-linenumber="9">
202
+
203
+
204
+ <code class="ruby"> [&#39;scp&#39;]</code>
205
+ </li>
206
+
207
+ <li class="never" data-hits="" data-linenumber="10">
208
+
209
+
210
+ <code class="ruby"> end</code>
211
+ </li>
212
+
213
+ <li class="never" data-hits="" data-linenumber="11">
214
+
215
+
216
+ <code class="ruby"></code>
217
+ </li>
218
+
219
+ <li class="covered" data-hits="1" data-linenumber="12">
220
+ <span class="hits">1</span>
221
+
222
+ <code class="ruby"> def scp_dest</code>
223
+ </li>
224
+
225
+ <li class="missed" data-hits="0" data-linenumber="13">
226
+
227
+
228
+ <code class="ruby"> &#39;&#39;</code>
229
+ </li>
230
+
231
+ <li class="never" data-hits="" data-linenumber="14">
232
+
233
+
234
+ <code class="ruby"> end</code>
235
+ </li>
236
+
237
+ <li class="never" data-hits="" data-linenumber="15">
238
+
239
+
240
+ <code class="ruby"></code>
241
+ </li>
242
+
243
+ <li class="covered" data-hits="1" data-linenumber="16">
244
+ <span class="hits">1</span>
245
+
246
+ <code class="ruby"> def rsync</code>
247
+ </li>
248
+
249
+ <li class="missed" data-hits="0" data-linenumber="17">
250
+
251
+
252
+ <code class="ruby"> [&#39;rsync&#39;]</code>
253
+ </li>
254
+
255
+ <li class="never" data-hits="" data-linenumber="18">
256
+
257
+
258
+ <code class="ruby"> end</code>
259
+ </li>
260
+
261
+ <li class="never" data-hits="" data-linenumber="19">
262
+
263
+
264
+ <code class="ruby"></code>
265
+ </li>
266
+
267
+ <li class="covered" data-hits="1" data-linenumber="20">
268
+ <span class="hits">1</span>
269
+
270
+ <code class="ruby"> def rsync_dest</code>
271
+ </li>
272
+
273
+ <li class="covered" data-hits="1" data-linenumber="21">
274
+ <span class="hits">1</span>
275
+
276
+ <code class="ruby"> node.path + &#39;/&#39;</code>
277
+ </li>
278
+
279
+ <li class="never" data-hits="" data-linenumber="22">
280
+
281
+
282
+ <code class="ruby"> end</code>
283
+ </li>
284
+
285
+ <li class="never" data-hits="" data-linenumber="23">
286
+
287
+
288
+ <code class="ruby"></code>
289
+ </li>
290
+
291
+ <li class="covered" data-hits="1" data-linenumber="24">
292
+ <span class="hits">1</span>
293
+
294
+ <code class="ruby"> def run(cmd)</code>
295
+ </li>
296
+
297
+ <li class="covered" data-hits="2" data-linenumber="25">
298
+ <span class="hits">2</span>
299
+
300
+ <code class="ruby"> printf &quot;%#{Node.max_node_name_length}s: $ %s\n&quot;, node.hostname, cmd</code>
301
+ </li>
302
+
303
+ <li class="covered" data-hits="2" data-linenumber="26">
304
+ <span class="hits">2</span>
305
+
306
+ <code class="ruby"> io = IO.popen(command_runner + [&#39;/bin/sh&#39;], mode=&#39;w+&#39;, eer: [:child, :out])</code>
307
+ </li>
308
+
309
+ <li class="covered" data-hits="2" data-linenumber="27">
310
+ <span class="hits">2</span>
311
+
312
+ <code class="ruby"> io.write(cmd)</code>
313
+ </li>
314
+
315
+ <li class="covered" data-hits="2" data-linenumber="28">
316
+ <span class="hits">2</span>
317
+
318
+ <code class="ruby"> io.close_write</code>
319
+ </li>
320
+
321
+ <li class="covered" data-hits="2" data-linenumber="29">
322
+ <span class="hits">2</span>
323
+
324
+ <code class="ruby"> io.each_line do |line|</code>
325
+ </li>
326
+
327
+ <li class="covered" data-hits="4" data-linenumber="30">
328
+ <span class="hits">4</span>
329
+
330
+ <code class="ruby"> printf &quot;%#{Node.max_node_name_length}s: %s\n&quot;, node.hostname, line.strip</code>
331
+ </li>
332
+
333
+ <li class="never" data-hits="" data-linenumber="31">
334
+
335
+
336
+ <code class="ruby"> end</code>
337
+ </li>
338
+
339
+ <li class="covered" data-hits="2" data-linenumber="32">
340
+ <span class="hits">2</span>
341
+
342
+ <code class="ruby"> io.close</code>
343
+ </li>
344
+
345
+ <li class="covered" data-hits="2" data-linenumber="33">
346
+ <span class="hits">2</span>
347
+
348
+ <code class="ruby"> if $?</code>
349
+ </li>
350
+
351
+ <li class="missed" data-hits="0" data-linenumber="34">
352
+
353
+
354
+ <code class="ruby"> status = $?.exitstatus</code>
355
+ </li>
356
+
357
+ <li class="missed" data-hits="0" data-linenumber="35">
358
+
359
+
360
+ <code class="ruby"> if status != 0</code>
361
+ </li>
362
+
363
+ <li class="missed" data-hits="0" data-linenumber="36">
364
+
365
+
366
+ <code class="ruby"> raise CommandFailed.new([node.hostname, &#39;FAILED with exit status %d&#39; % status].join(&#39;: &#39;))</code>
367
+ </li>
368
+
369
+ <li class="never" data-hits="" data-linenumber="37">
370
+
371
+
372
+ <code class="ruby"> end</code>
373
+ </li>
374
+
375
+ <li class="never" data-hits="" data-linenumber="38">
376
+
377
+
378
+ <code class="ruby"> end</code>
379
+ </li>
380
+
381
+ <li class="never" data-hits="" data-linenumber="39">
382
+
383
+
384
+ <code class="ruby"> end</code>
385
+ </li>
386
+
387
+ <li class="never" data-hits="" data-linenumber="40">
388
+
389
+
390
+ <code class="ruby"></code>
391
+ </li>
392
+
393
+ <li class="covered" data-hits="1" data-linenumber="41">
394
+ <span class="hits">1</span>
395
+
396
+ <code class="ruby"> def run_shell</code>
397
+ </li>
398
+
399
+ <li class="missed" data-hits="0" data-linenumber="42">
400
+
401
+
402
+ <code class="ruby"> system(*shell_command)</code>
403
+ </li>
404
+
405
+ <li class="never" data-hits="" data-linenumber="43">
406
+
407
+
408
+ <code class="ruby"> end</code>
409
+ </li>
410
+
411
+ <li class="never" data-hits="" data-linenumber="44">
412
+
413
+
414
+ <code class="ruby"></code>
415
+ </li>
416
+
417
+ <li class="covered" data-hits="1" data-linenumber="45">
418
+ <span class="hits">1</span>
419
+
420
+ <code class="ruby"> def run_as_root(cmd)</code>
421
+ </li>
422
+
423
+ <li class="covered" data-hits="4" data-linenumber="46">
424
+ <span class="hits">4</span>
425
+
426
+ <code class="ruby"> if node.remote_username == &#39;root&#39;</code>
427
+ </li>
428
+
429
+ <li class="covered" data-hits="2" data-linenumber="47">
430
+ <span class="hits">2</span>
431
+
432
+ <code class="ruby"> run(cmd)</code>
433
+ </li>
434
+
435
+ <li class="never" data-hits="" data-linenumber="48">
436
+
437
+
438
+ <code class="ruby"> else</code>
439
+ </li>
440
+
441
+ <li class="covered" data-hits="2" data-linenumber="49">
442
+ <span class="hits">2</span>
443
+
444
+ <code class="ruby"> run(&#39;sudo &#39; + cmd)</code>
445
+ </li>
446
+
447
+ <li class="never" data-hits="" data-linenumber="50">
448
+
449
+
450
+ <code class="ruby"> end</code>
451
+ </li>
452
+
453
+ <li class="never" data-hits="" data-linenumber="51">
454
+
455
+
456
+ <code class="ruby"> end</code>
457
+ </li>
458
+
459
+ <li class="never" data-hits="" data-linenumber="52">
460
+
461
+
462
+ <code class="ruby"></code>
463
+ </li>
464
+
465
+ <li class="covered" data-hits="1" data-linenumber="53">
466
+ <span class="hits">1</span>
467
+
468
+ <code class="ruby"> def to_s</code>
469
+ </li>
470
+
471
+ <li class="covered" data-hits="1" data-linenumber="54">
472
+ <span class="hits">1</span>
473
+
474
+ <code class="ruby"> self.class.backend_name</code>
475
+ </li>
476
+
477
+ <li class="never" data-hits="" data-linenumber="55">
478
+
479
+
480
+ <code class="ruby"> end</code>
481
+ </li>
482
+
483
+ <li class="never" data-hits="" data-linenumber="56">
484
+
485
+
486
+ <code class="ruby"></code>
487
+ </li>
488
+
489
+ <li class="covered" data-hits="1" data-linenumber="57">
490
+ <span class="hits">1</span>
491
+
492
+ <code class="ruby"> def skip?</code>
493
+ </li>
494
+
495
+ <li class="missed" data-hits="0" data-linenumber="58">
496
+
497
+
498
+ <code class="ruby"> false</code>
499
+ </li>
500
+
501
+ <li class="never" data-hits="" data-linenumber="59">
502
+
503
+
504
+ <code class="ruby"> end</code>
505
+ </li>
506
+
507
+ <li class="never" data-hits="" data-linenumber="60">
508
+
509
+
510
+ <code class="ruby"></code>
511
+ </li>
512
+
513
+ <li class="covered" data-hits="1" data-linenumber="61">
514
+ <span class="hits">1</span>
515
+
516
+ <code class="ruby"> def self.backend_name</code>
517
+ </li>
518
+
519
+ <li class="covered" data-hits="10" data-linenumber="62">
520
+ <span class="hits">10</span>
521
+
522
+ <code class="ruby"> name.split(&quot;::&quot;).last.downcase</code>
523
+ </li>
524
+
525
+ <li class="never" data-hits="" data-linenumber="63">
526
+
527
+
528
+ <code class="ruby"> end</code>
529
+ </li>
530
+
531
+ <li class="never" data-hits="" data-linenumber="64">
532
+
533
+
534
+ <code class="ruby"></code>
535
+ </li>
536
+
537
+ <li class="covered" data-hits="1" data-linenumber="65">
538
+ <span class="hits">1</span>
539
+
540
+ <code class="ruby"> def self.inherited(subclass)</code>
541
+ </li>
542
+
543
+ <li class="covered" data-hits="2" data-linenumber="66">
544
+ <span class="hits">2</span>
545
+
546
+ <code class="ruby"> @backends ||= []</code>
547
+ </li>
548
+
549
+ <li class="covered" data-hits="2" data-linenumber="67">
550
+ <span class="hits">2</span>
551
+
552
+ <code class="ruby"> @backends &lt;&lt; subclass</code>
553
+ </li>
554
+
555
+ <li class="never" data-hits="" data-linenumber="68">
556
+
557
+
558
+ <code class="ruby"> end</code>
559
+ </li>
560
+
561
+ <li class="never" data-hits="" data-linenumber="69">
562
+
563
+
564
+ <code class="ruby"></code>
565
+ </li>
566
+
567
+ <li class="covered" data-hits="1" data-linenumber="70">
568
+ <span class="hits">1</span>
569
+
570
+ <code class="ruby"> def self.get(name)</code>
571
+ </li>
572
+
573
+ <li class="covered" data-hits="15" data-linenumber="71">
574
+ <span class="hits">15</span>
575
+
576
+ <code class="ruby"> backend = @backends.find { |b| b.backend_name == name }</code>
577
+ </li>
578
+
579
+ <li class="covered" data-hits="6" data-linenumber="72">
580
+ <span class="hits">6</span>
581
+
582
+ <code class="ruby"> backend || raise(ArgumentError.new(&quot;Invalid backend name: #{name}&quot;))</code>
583
+ </li>
584
+
585
+ <li class="never" data-hits="" data-linenumber="73">
586
+
587
+
588
+ <code class="ruby"> end</code>
589
+ </li>
590
+
591
+ <li class="never" data-hits="" data-linenumber="74">
592
+
593
+
594
+ <code class="ruby"></code>
595
+ </li>
596
+
597
+ <li class="never" data-hits="" data-linenumber="75">
598
+
599
+
600
+ <code class="ruby"> end</code>
601
+ </li>
602
+
603
+ <li class="never" data-hits="" data-linenumber="76">
604
+
605
+
606
+ <code class="ruby"></code>
607
+ </li>
608
+
609
+ <li class="never" data-hits="" data-linenumber="77">
610
+
611
+
612
+ <code class="ruby">end</code>
613
+ </li>
614
+
615
+ <li class="never" data-hits="" data-linenumber="78">
616
+
617
+
618
+ <code class="ruby"></code>
619
+ </li>
620
+
621
+ <li class="covered" data-hits="1" data-linenumber="79">
622
+ <span class="hits">1</span>
623
+
624
+ <code class="ruby">require &#39;chake/backend/ssh&#39;</code>
625
+ </li>
626
+
627
+ <li class="covered" data-hits="1" data-linenumber="80">
628
+ <span class="hits">1</span>
629
+
630
+ <code class="ruby">require &#39;chake/backend/local&#39;</code>
631
+ </li>
632
+
633
+ </ol>
634
+ </pre>
635
+ </div>
636
+
637
+ <div class="source_table" id="2e1a7647dbcdb46e1f25a425b26a95f3cd809f21">
638
+ <div class="header">
639
+ <h3>lib/chake/backend/local.rb</h3>
640
+ <h4><span class="yellow">90.0 %</span> covered</h4>
641
+ <div>
642
+ <b>10</b> relevant lines.
643
+ <span class="green"><b>9</b> lines covered</span> and
644
+ <span class="red"><b>1</b> lines missed.</span>
645
+ </div>
646
+ </div>
647
+
648
+ <pre>
649
+ <ol>
650
+
651
+ <li class="covered" data-hits="1" data-linenumber="1">
652
+ <span class="hits">1</span>
653
+
654
+ <code class="ruby">require &#39;socket&#39;</code>
655
+ </li>
656
+
657
+ <li class="never" data-hits="" data-linenumber="2">
658
+
659
+
660
+ <code class="ruby"></code>
661
+ </li>
662
+
663
+ <li class="covered" data-hits="1" data-linenumber="3">
664
+ <span class="hits">1</span>
665
+
666
+ <code class="ruby">module Chake</code>
667
+ </li>
668
+
669
+ <li class="never" data-hits="" data-linenumber="4">
670
+
671
+
672
+ <code class="ruby"></code>
673
+ </li>
674
+
675
+ <li class="covered" data-hits="1" data-linenumber="5">
676
+ <span class="hits">1</span>
677
+
678
+ <code class="ruby"> class Backend</code>
679
+ </li>
680
+
681
+ <li class="never" data-hits="" data-linenumber="6">
682
+
683
+
684
+ <code class="ruby"></code>
685
+ </li>
686
+
687
+ <li class="covered" data-hits="1" data-linenumber="7">
688
+ <span class="hits">1</span>
689
+
690
+ <code class="ruby"> class Local &lt; Backend</code>
691
+ </li>
692
+
693
+ <li class="never" data-hits="" data-linenumber="8">
694
+
695
+
696
+ <code class="ruby"></code>
697
+ </li>
698
+
699
+ <li class="covered" data-hits="1" data-linenumber="9">
700
+ <span class="hits">1</span>
701
+
702
+ <code class="ruby"> def command_runner</code>
703
+ </li>
704
+
705
+ <li class="covered" data-hits="3" data-linenumber="10">
706
+ <span class="hits">3</span>
707
+
708
+ <code class="ruby"> [&#39;sh&#39;, &#39;-c&#39;]</code>
709
+ </li>
710
+
711
+ <li class="never" data-hits="" data-linenumber="11">
712
+
713
+
714
+ <code class="ruby"> end</code>
715
+ </li>
716
+
717
+ <li class="never" data-hits="" data-linenumber="12">
718
+
719
+
720
+ <code class="ruby"></code>
721
+ </li>
722
+
723
+ <li class="covered" data-hits="1" data-linenumber="13">
724
+ <span class="hits">1</span>
725
+
726
+ <code class="ruby"> def shell_command</code>
727
+ </li>
728
+
729
+ <li class="missed" data-hits="0" data-linenumber="14">
730
+
731
+
732
+ <code class="ruby"> ENV.fetch(&#39;SHELL&#39;, Etc.getpwuid.shell)</code>
733
+ </li>
734
+
735
+ <li class="never" data-hits="" data-linenumber="15">
736
+
737
+
738
+ <code class="ruby"> end</code>
739
+ </li>
740
+
741
+ <li class="never" data-hits="" data-linenumber="16">
742
+
743
+
744
+ <code class="ruby"></code>
745
+ </li>
746
+
747
+ <li class="covered" data-hits="1" data-linenumber="17">
748
+ <span class="hits">1</span>
749
+
750
+ <code class="ruby"> def skip?</code>
751
+ </li>
752
+
753
+ <li class="covered" data-hits="1" data-linenumber="18">
754
+ <span class="hits">1</span>
755
+
756
+ <code class="ruby"> node.hostname != Socket.gethostname</code>
757
+ </li>
758
+
759
+ <li class="never" data-hits="" data-linenumber="19">
760
+
761
+
762
+ <code class="ruby"> end</code>
763
+ </li>
764
+
765
+ <li class="never" data-hits="" data-linenumber="20">
766
+
767
+
768
+ <code class="ruby"></code>
769
+ </li>
770
+
771
+ <li class="never" data-hits="" data-linenumber="21">
772
+
773
+
774
+ <code class="ruby"> end</code>
775
+ </li>
776
+
777
+ <li class="never" data-hits="" data-linenumber="22">
778
+
779
+
780
+ <code class="ruby"></code>
781
+ </li>
782
+
783
+ <li class="never" data-hits="" data-linenumber="23">
784
+
785
+
786
+ <code class="ruby"> end</code>
787
+ </li>
788
+
789
+ <li class="never" data-hits="" data-linenumber="24">
790
+
791
+
792
+ <code class="ruby"></code>
793
+ </li>
794
+
795
+ <li class="never" data-hits="" data-linenumber="25">
796
+
797
+
798
+ <code class="ruby">end</code>
799
+ </li>
800
+
801
+ </ol>
802
+ </pre>
803
+ </div>
804
+
805
+ <div class="source_table" id="8faefdcb0614d86c951274137a1f0a7e4a38322c">
806
+ <div class="header">
807
+ <h3>lib/chake/backend/ssh.rb</h3>
808
+ <h4><span class="yellow">86.84 %</span> covered</h4>
809
+ <div>
810
+ <b>38</b> relevant lines.
811
+ <span class="green"><b>33</b> lines covered</span> and
812
+ <span class="red"><b>5</b> lines missed.</span>
813
+ </div>
814
+ </div>
815
+
816
+ <pre>
817
+ <ol>
818
+
819
+ <li class="covered" data-hits="1" data-linenumber="1">
820
+ <span class="hits">1</span>
821
+
822
+ <code class="ruby">module Chake</code>
823
+ </li>
824
+
825
+ <li class="never" data-hits="" data-linenumber="2">
826
+
827
+
828
+ <code class="ruby"></code>
829
+ </li>
830
+
831
+ <li class="covered" data-hits="1" data-linenumber="3">
832
+ <span class="hits">1</span>
833
+
834
+ <code class="ruby"> class Backend</code>
835
+ </li>
836
+
837
+ <li class="never" data-hits="" data-linenumber="4">
838
+
839
+
840
+ <code class="ruby"></code>
841
+ </li>
842
+
843
+ <li class="covered" data-hits="1" data-linenumber="5">
844
+ <span class="hits">1</span>
845
+
846
+ <code class="ruby"> class Ssh &lt; Backend</code>
847
+ </li>
848
+
849
+ <li class="never" data-hits="" data-linenumber="6">
850
+
851
+
852
+ <code class="ruby"></code>
853
+ </li>
854
+
855
+ <li class="covered" data-hits="1" data-linenumber="7">
856
+ <span class="hits">1</span>
857
+
858
+ <code class="ruby"> def scp</code>
859
+ </li>
860
+
861
+ <li class="covered" data-hits="1" data-linenumber="8">
862
+ <span class="hits">1</span>
863
+
864
+ <code class="ruby"> [&#39;scp&#39;, ssh_config, scp_options].flatten.compact</code>
865
+ </li>
866
+
867
+ <li class="never" data-hits="" data-linenumber="9">
868
+
869
+
870
+ <code class="ruby"> end</code>
871
+ </li>
872
+
873
+ <li class="never" data-hits="" data-linenumber="10">
874
+
875
+
876
+ <code class="ruby"></code>
877
+ </li>
878
+
879
+ <li class="covered" data-hits="1" data-linenumber="11">
880
+ <span class="hits">1</span>
881
+
882
+ <code class="ruby"> def scp_dest</code>
883
+ </li>
884
+
885
+ <li class="missed" data-hits="0" data-linenumber="12">
886
+
887
+
888
+ <code class="ruby"> ssh_target + &#39;:&#39;</code>
889
+ </li>
890
+
891
+ <li class="never" data-hits="" data-linenumber="13">
892
+
893
+
894
+ <code class="ruby"> end</code>
895
+ </li>
896
+
897
+ <li class="never" data-hits="" data-linenumber="14">
898
+
899
+
900
+ <code class="ruby"></code>
901
+ </li>
902
+
903
+ <li class="covered" data-hits="1" data-linenumber="15">
904
+ <span class="hits">1</span>
905
+
906
+ <code class="ruby"> def rsync</code>
907
+ </li>
908
+
909
+ <li class="missed" data-hits="0" data-linenumber="16">
910
+
911
+
912
+ <code class="ruby"> [ssh_prefix, &#39;rsync&#39;, rsync_ssh].flatten.compact</code>
913
+ </li>
914
+
915
+ <li class="never" data-hits="" data-linenumber="17">
916
+
917
+
918
+ <code class="ruby"> end</code>
919
+ </li>
920
+
921
+ <li class="never" data-hits="" data-linenumber="18">
922
+
923
+
924
+ <code class="ruby"></code>
925
+ </li>
926
+
927
+ <li class="covered" data-hits="1" data-linenumber="19">
928
+ <span class="hits">1</span>
929
+
930
+ <code class="ruby"> def rsync_dest</code>
931
+ </li>
932
+
933
+ <li class="covered" data-hits="1" data-linenumber="20">
934
+ <span class="hits">1</span>
935
+
936
+ <code class="ruby"> [ssh_target, node.path + &#39;/&#39;].join(&#39;:&#39;)</code>
937
+ </li>
938
+
939
+ <li class="never" data-hits="" data-linenumber="21">
940
+
941
+
942
+ <code class="ruby"> end</code>
943
+ </li>
944
+
945
+ <li class="never" data-hits="" data-linenumber="22">
946
+
947
+
948
+ <code class="ruby"></code>
949
+ </li>
950
+
951
+ <li class="covered" data-hits="1" data-linenumber="23">
952
+ <span class="hits">1</span>
953
+
954
+ <code class="ruby"> def command_runner</code>
955
+ </li>
956
+
957
+ <li class="covered" data-hits="4" data-linenumber="24">
958
+ <span class="hits">4</span>
959
+
960
+ <code class="ruby"> [ssh_prefix, &#39;ssh&#39;, ssh_config, ssh_options, ssh_target].flatten.compact</code>
961
+ </li>
962
+
963
+ <li class="never" data-hits="" data-linenumber="25">
964
+
965
+
966
+ <code class="ruby"> end</code>
967
+ </li>
968
+
969
+ <li class="never" data-hits="" data-linenumber="26">
970
+
971
+
972
+ <code class="ruby"></code>
973
+ </li>
974
+
975
+ <li class="covered" data-hits="1" data-linenumber="27">
976
+ <span class="hits">1</span>
977
+
978
+ <code class="ruby"> def shell_command</code>
979
+ </li>
980
+
981
+ <li class="missed" data-hits="0" data-linenumber="28">
982
+
983
+
984
+ <code class="ruby"> command_runner</code>
985
+ </li>
986
+
987
+ <li class="never" data-hits="" data-linenumber="29">
988
+
989
+
990
+ <code class="ruby"> end</code>
991
+ </li>
992
+
993
+ <li class="never" data-hits="" data-linenumber="30">
994
+
995
+
996
+ <code class="ruby"></code>
997
+ </li>
998
+
999
+ <li class="covered" data-hits="1" data-linenumber="31">
1000
+ <span class="hits">1</span>
1001
+
1002
+ <code class="ruby"> private</code>
1003
+ </li>
1004
+
1005
+ <li class="never" data-hits="" data-linenumber="32">
1006
+
1007
+
1008
+ <code class="ruby"></code>
1009
+ </li>
1010
+
1011
+ <li class="covered" data-hits="1" data-linenumber="33">
1012
+ <span class="hits">1</span>
1013
+
1014
+ <code class="ruby"> def rsync_ssh</code>
1015
+ </li>
1016
+
1017
+ <li class="covered" data-hits="1" data-linenumber="34">
1018
+ <span class="hits">1</span>
1019
+
1020
+ <code class="ruby"> @rsync_ssh ||=</code>
1021
+ </li>
1022
+
1023
+ <li class="never" data-hits="" data-linenumber="35">
1024
+
1025
+
1026
+ <code class="ruby"> begin</code>
1027
+ </li>
1028
+
1029
+ <li class="covered" data-hits="1" data-linenumber="36">
1030
+ <span class="hits">1</span>
1031
+
1032
+ <code class="ruby"> ssh_command = &#39;ssh&#39;</code>
1033
+ </li>
1034
+
1035
+ <li class="covered" data-hits="1" data-linenumber="37">
1036
+ <span class="hits">1</span>
1037
+
1038
+ <code class="ruby"> if File.exist?(ssh_config_file)</code>
1039
+ </li>
1040
+
1041
+ <li class="missed" data-hits="0" data-linenumber="38">
1042
+
1043
+
1044
+ <code class="ruby"> ssh_command += &#39; -F &#39; + ssh_config_file</code>
1045
+ </li>
1046
+
1047
+ <li class="never" data-hits="" data-linenumber="39">
1048
+
1049
+
1050
+ <code class="ruby"> end</code>
1051
+ </li>
1052
+
1053
+ <li class="covered" data-hits="1" data-linenumber="40">
1054
+ <span class="hits">1</span>
1055
+
1056
+ <code class="ruby"> if node.port</code>
1057
+ </li>
1058
+
1059
+ <li class="covered" data-hits="1" data-linenumber="41">
1060
+ <span class="hits">1</span>
1061
+
1062
+ <code class="ruby"> ssh_command += &#39; -p &#39; + node.port.to_s</code>
1063
+ </li>
1064
+
1065
+ <li class="never" data-hits="" data-linenumber="42">
1066
+
1067
+
1068
+ <code class="ruby"> end</code>
1069
+ </li>
1070
+
1071
+ <li class="covered" data-hits="1" data-linenumber="43">
1072
+ <span class="hits">1</span>
1073
+
1074
+ <code class="ruby"> if ssh_command == &#39;ssh&#39;</code>
1075
+ </li>
1076
+
1077
+ <li class="missed" data-hits="0" data-linenumber="44">
1078
+
1079
+
1080
+ <code class="ruby"> []</code>
1081
+ </li>
1082
+
1083
+ <li class="never" data-hits="" data-linenumber="45">
1084
+
1085
+
1086
+ <code class="ruby"> else</code>
1087
+ </li>
1088
+
1089
+ <li class="covered" data-hits="1" data-linenumber="46">
1090
+ <span class="hits">1</span>
1091
+
1092
+ <code class="ruby"> [&#39;-e&#39;, ssh_command]</code>
1093
+ </li>
1094
+
1095
+ <li class="never" data-hits="" data-linenumber="47">
1096
+
1097
+
1098
+ <code class="ruby"> end</code>
1099
+ </li>
1100
+
1101
+ <li class="never" data-hits="" data-linenumber="48">
1102
+
1103
+
1104
+ <code class="ruby"> end</code>
1105
+ </li>
1106
+
1107
+ <li class="never" data-hits="" data-linenumber="49">
1108
+
1109
+
1110
+ <code class="ruby"> end</code>
1111
+ </li>
1112
+
1113
+ <li class="never" data-hits="" data-linenumber="50">
1114
+
1115
+
1116
+ <code class="ruby"></code>
1117
+ </li>
1118
+
1119
+ <li class="covered" data-hits="1" data-linenumber="51">
1120
+ <span class="hits">1</span>
1121
+
1122
+ <code class="ruby"> def ssh_config</code>
1123
+ </li>
1124
+
1125
+ <li class="covered" data-hits="5" data-linenumber="52">
1126
+ <span class="hits">5</span>
1127
+
1128
+ <code class="ruby"> File.exist?(ssh_config_file) &amp;&amp; [&#39;-F&#39;, ssh_config_file] || []</code>
1129
+ </li>
1130
+
1131
+ <li class="never" data-hits="" data-linenumber="53">
1132
+
1133
+
1134
+ <code class="ruby"> end</code>
1135
+ </li>
1136
+
1137
+ <li class="never" data-hits="" data-linenumber="54">
1138
+
1139
+
1140
+ <code class="ruby"></code>
1141
+ </li>
1142
+
1143
+ <li class="covered" data-hits="1" data-linenumber="55">
1144
+ <span class="hits">1</span>
1145
+
1146
+ <code class="ruby"> def ssh_config_file</code>
1147
+ </li>
1148
+
1149
+ <li class="covered" data-hits="6" data-linenumber="56">
1150
+ <span class="hits">6</span>
1151
+
1152
+ <code class="ruby"> @ssh_config_file ||= ENV.fetch(&#39;CHAKE_SSH_CONFIG&#39;, &#39;.ssh_config&#39;)</code>
1153
+ </li>
1154
+
1155
+ <li class="never" data-hits="" data-linenumber="57">
1156
+
1157
+
1158
+ <code class="ruby"> end</code>
1159
+ </li>
1160
+
1161
+ <li class="never" data-hits="" data-linenumber="58">
1162
+
1163
+
1164
+ <code class="ruby"></code>
1165
+ </li>
1166
+
1167
+ <li class="covered" data-hits="1" data-linenumber="59">
1168
+ <span class="hits">1</span>
1169
+
1170
+ <code class="ruby"> def ssh_prefix</code>
1171
+ </li>
1172
+
1173
+ <li class="covered" data-hits="4" data-linenumber="60">
1174
+ <span class="hits">4</span>
1175
+
1176
+ <code class="ruby"> @ssh_prefix ||= ENV.fetch(&#39;CHAKE_SSH_PREFIX&#39;, &#39;&#39;).split</code>
1177
+ </li>
1178
+
1179
+ <li class="never" data-hits="" data-linenumber="61">
1180
+
1181
+
1182
+ <code class="ruby"> end</code>
1183
+ </li>
1184
+
1185
+ <li class="never" data-hits="" data-linenumber="62">
1186
+
1187
+
1188
+ <code class="ruby"></code>
1189
+ </li>
1190
+
1191
+ <li class="covered" data-hits="1" data-linenumber="63">
1192
+ <span class="hits">1</span>
1193
+
1194
+ <code class="ruby"> def ssh_target</code>
1195
+ </li>
1196
+
1197
+ <li class="covered" data-hits="5" data-linenumber="64">
1198
+ <span class="hits">5</span>
1199
+
1200
+ <code class="ruby"> [node.remote_username, node.hostname].compact.join(&#39;@&#39;)</code>
1201
+ </li>
1202
+
1203
+ <li class="never" data-hits="" data-linenumber="65">
1204
+
1205
+
1206
+ <code class="ruby"> end</code>
1207
+ </li>
1208
+
1209
+ <li class="never" data-hits="" data-linenumber="66">
1210
+
1211
+
1212
+ <code class="ruby"></code>
1213
+ </li>
1214
+
1215
+ <li class="covered" data-hits="1" data-linenumber="67">
1216
+ <span class="hits">1</span>
1217
+
1218
+ <code class="ruby"> def ssh_options</code>
1219
+ </li>
1220
+
1221
+ <li class="covered" data-hits="4" data-linenumber="68">
1222
+ <span class="hits">4</span>
1223
+
1224
+ <code class="ruby"> node.port &amp;&amp; [&#39;-p&#39;, node.port.to_s] || []</code>
1225
+ </li>
1226
+
1227
+ <li class="never" data-hits="" data-linenumber="69">
1228
+
1229
+
1230
+ <code class="ruby"> end</code>
1231
+ </li>
1232
+
1233
+ <li class="never" data-hits="" data-linenumber="70">
1234
+
1235
+
1236
+ <code class="ruby"></code>
1237
+ </li>
1238
+
1239
+ <li class="covered" data-hits="1" data-linenumber="71">
1240
+ <span class="hits">1</span>
1241
+
1242
+ <code class="ruby"> def scp_options</code>
1243
+ </li>
1244
+
1245
+ <li class="covered" data-hits="1" data-linenumber="72">
1246
+ <span class="hits">1</span>
1247
+
1248
+ <code class="ruby"> node.port &amp;&amp; [&#39;-P&#39;, node.port.to_s] || []</code>
1249
+ </li>
1250
+
1251
+ <li class="never" data-hits="" data-linenumber="73">
1252
+
1253
+
1254
+ <code class="ruby"> end</code>
1255
+ </li>
1256
+
1257
+ <li class="never" data-hits="" data-linenumber="74">
1258
+
1259
+
1260
+ <code class="ruby"></code>
1261
+ </li>
1262
+
1263
+ <li class="never" data-hits="" data-linenumber="75">
1264
+
1265
+
1266
+ <code class="ruby"> end</code>
1267
+ </li>
1268
+
1269
+ <li class="never" data-hits="" data-linenumber="76">
1270
+
1271
+
1272
+ <code class="ruby"></code>
1273
+ </li>
1274
+
1275
+ <li class="never" data-hits="" data-linenumber="77">
1276
+
1277
+
1278
+ <code class="ruby"> end</code>
1279
+ </li>
1280
+
1281
+ <li class="never" data-hits="" data-linenumber="78">
1282
+
1283
+
1284
+ <code class="ruby"></code>
1285
+ </li>
1286
+
1287
+ <li class="never" data-hits="" data-linenumber="79">
1288
+
1289
+
1290
+ <code class="ruby">end</code>
1291
+ </li>
1292
+
1293
+ </ol>
1294
+ </pre>
1295
+ </div>
1296
+
1297
+ <div class="source_table" id="6f4df1f307637e63f54548e20e1b07ab4bb7f41c">
1298
+ <div class="header">
1299
+ <h3>lib/chake/node.rb</h3>
1300
+ <h4><span class="green">100.0 %</span> covered</h4>
1301
+ <div>
1302
+ <b>35</b> relevant lines.
1303
+ <span class="green"><b>35</b> lines covered</span> and
1304
+ <span class="red"><b>0</b> lines missed.</span>
1305
+ </div>
1306
+ </div>
1307
+
1308
+ <pre>
1309
+ <ol>
1310
+
1311
+ <li class="covered" data-hits="1" data-linenumber="1">
1312
+ <span class="hits">1</span>
1313
+
1314
+ <code class="ruby">require &#39;uri&#39;</code>
1315
+ </li>
1316
+
1317
+ <li class="covered" data-hits="1" data-linenumber="2">
1318
+ <span class="hits">1</span>
1319
+
1320
+ <code class="ruby">require &#39;etc&#39;</code>
1321
+ </li>
1322
+
1323
+ <li class="covered" data-hits="1" data-linenumber="3">
1324
+ <span class="hits">1</span>
1325
+
1326
+ <code class="ruby">require &#39;forwardable&#39;</code>
1327
+ </li>
1328
+
1329
+ <li class="never" data-hits="" data-linenumber="4">
1330
+
1331
+
1332
+ <code class="ruby"></code>
1333
+ </li>
1334
+
1335
+ <li class="covered" data-hits="1" data-linenumber="5">
1336
+ <span class="hits">1</span>
1337
+
1338
+ <code class="ruby">require &#39;chake/backend&#39;</code>
1339
+ </li>
1340
+
1341
+ <li class="never" data-hits="" data-linenumber="6">
1342
+
1343
+
1344
+ <code class="ruby"></code>
1345
+ </li>
1346
+
1347
+ <li class="covered" data-hits="1" data-linenumber="7">
1348
+ <span class="hits">1</span>
1349
+
1350
+ <code class="ruby">module Chake</code>
1351
+ </li>
1352
+
1353
+ <li class="never" data-hits="" data-linenumber="8">
1354
+
1355
+
1356
+ <code class="ruby"></code>
1357
+ </li>
1358
+
1359
+ <li class="covered" data-hits="1" data-linenumber="9">
1360
+ <span class="hits">1</span>
1361
+
1362
+ <code class="ruby"> class Node</code>
1363
+ </li>
1364
+
1365
+ <li class="never" data-hits="" data-linenumber="10">
1366
+
1367
+
1368
+ <code class="ruby"></code>
1369
+ </li>
1370
+
1371
+ <li class="covered" data-hits="1" data-linenumber="11">
1372
+ <span class="hits">1</span>
1373
+
1374
+ <code class="ruby"> extend Forwardable</code>
1375
+ </li>
1376
+
1377
+ <li class="never" data-hits="" data-linenumber="12">
1378
+
1379
+
1380
+ <code class="ruby"></code>
1381
+ </li>
1382
+
1383
+ <li class="covered" data-hits="1" data-linenumber="13">
1384
+ <span class="hits">1</span>
1385
+
1386
+ <code class="ruby"> attr_reader :hostname</code>
1387
+ </li>
1388
+
1389
+ <li class="covered" data-hits="1" data-linenumber="14">
1390
+ <span class="hits">1</span>
1391
+
1392
+ <code class="ruby"> attr_reader :port</code>
1393
+ </li>
1394
+
1395
+ <li class="covered" data-hits="1" data-linenumber="15">
1396
+ <span class="hits">1</span>
1397
+
1398
+ <code class="ruby"> attr_reader :username</code>
1399
+ </li>
1400
+
1401
+ <li class="covered" data-hits="1" data-linenumber="16">
1402
+ <span class="hits">1</span>
1403
+
1404
+ <code class="ruby"> attr_reader :remote_username</code>
1405
+ </li>
1406
+
1407
+ <li class="covered" data-hits="1" data-linenumber="17">
1408
+ <span class="hits">1</span>
1409
+
1410
+ <code class="ruby"> attr_reader :path</code>
1411
+ </li>
1412
+
1413
+ <li class="covered" data-hits="1" data-linenumber="18">
1414
+ <span class="hits">1</span>
1415
+
1416
+ <code class="ruby"> attr_reader :data</code>
1417
+ </li>
1418
+
1419
+ <li class="never" data-hits="" data-linenumber="19">
1420
+
1421
+
1422
+ <code class="ruby"></code>
1423
+ </li>
1424
+
1425
+ <li class="covered" data-hits="1" data-linenumber="20">
1426
+ <span class="hits">1</span>
1427
+
1428
+ <code class="ruby"> def self.max_node_name_length</code>
1429
+ </li>
1430
+
1431
+ <li class="covered" data-hits="36" data-linenumber="21">
1432
+ <span class="hits">36</span>
1433
+
1434
+ <code class="ruby"> @max_node_name_length ||= 0</code>
1435
+ </li>
1436
+
1437
+ <li class="never" data-hits="" data-linenumber="22">
1438
+
1439
+
1440
+ <code class="ruby"> end</code>
1441
+ </li>
1442
+
1443
+ <li class="covered" data-hits="1" data-linenumber="23">
1444
+ <span class="hits">1</span>
1445
+
1446
+ <code class="ruby"> def self.max_node_name_length=(value)</code>
1447
+ </li>
1448
+
1449
+ <li class="covered" data-hits="3" data-linenumber="24">
1450
+ <span class="hits">3</span>
1451
+
1452
+ <code class="ruby"> @max_node_name_length = value</code>
1453
+ </li>
1454
+
1455
+ <li class="never" data-hits="" data-linenumber="25">
1456
+
1457
+
1458
+ <code class="ruby"> end</code>
1459
+ </li>
1460
+
1461
+ <li class="never" data-hits="" data-linenumber="26">
1462
+
1463
+
1464
+ <code class="ruby"></code>
1465
+ </li>
1466
+
1467
+ <li class="covered" data-hits="1" data-linenumber="27">
1468
+ <span class="hits">1</span>
1469
+
1470
+ <code class="ruby"> def initialize(hostname, data = {})</code>
1471
+ </li>
1472
+
1473
+ <li class="covered" data-hits="30" data-linenumber="28">
1474
+ <span class="hits">30</span>
1475
+
1476
+ <code class="ruby"> uri = URI.parse(hostname)</code>
1477
+ </li>
1478
+
1479
+ <li class="covered" data-hits="30" data-linenumber="29">
1480
+ <span class="hits">30</span>
1481
+
1482
+ <code class="ruby"> if !uri.host &amp;&amp; ((!uri.scheme &amp;&amp; uri.path) || (uri.scheme &amp;&amp; uri.opaque))</code>
1483
+ </li>
1484
+
1485
+ <li class="covered" data-hits="11" data-linenumber="30">
1486
+ <span class="hits">11</span>
1487
+
1488
+ <code class="ruby"> uri = URI.parse(&quot;ssh://#{hostname}&quot;)</code>
1489
+ </li>
1490
+
1491
+ <li class="never" data-hits="" data-linenumber="31">
1492
+
1493
+
1494
+ <code class="ruby"> end</code>
1495
+ </li>
1496
+
1497
+ <li class="covered" data-hits="30" data-linenumber="32">
1498
+ <span class="hits">30</span>
1499
+
1500
+ <code class="ruby"> if uri.path &amp;&amp; uri.path.empty?</code>
1501
+ </li>
1502
+
1503
+ <li class="covered" data-hits="18" data-linenumber="33">
1504
+ <span class="hits">18</span>
1505
+
1506
+ <code class="ruby"> uri.path = nil</code>
1507
+ </li>
1508
+
1509
+ <li class="never" data-hits="" data-linenumber="34">
1510
+
1511
+
1512
+ <code class="ruby"> end</code>
1513
+ </li>
1514
+
1515
+ <li class="never" data-hits="" data-linenumber="35">
1516
+
1517
+
1518
+ <code class="ruby"></code>
1519
+ </li>
1520
+
1521
+ <li class="covered" data-hits="30" data-linenumber="36">
1522
+ <span class="hits">30</span>
1523
+
1524
+ <code class="ruby"> @backend_name = uri.scheme</code>
1525
+ </li>
1526
+
1527
+ <li class="never" data-hits="" data-linenumber="37">
1528
+
1529
+
1530
+ <code class="ruby"></code>
1531
+ </li>
1532
+
1533
+ <li class="covered" data-hits="30" data-linenumber="38">
1534
+ <span class="hits">30</span>
1535
+
1536
+ <code class="ruby"> @hostname = uri.host</code>
1537
+ </li>
1538
+
1539
+ <li class="covered" data-hits="30" data-linenumber="39">
1540
+ <span class="hits">30</span>
1541
+
1542
+ <code class="ruby"> @port = uri.port</code>
1543
+ </li>
1544
+
1545
+ <li class="covered" data-hits="30" data-linenumber="40">
1546
+ <span class="hits">30</span>
1547
+
1548
+ <code class="ruby"> @username = uri.user || Etc.getpwuid.name</code>
1549
+ </li>
1550
+
1551
+ <li class="covered" data-hits="30" data-linenumber="41">
1552
+ <span class="hits">30</span>
1553
+
1554
+ <code class="ruby"> @remote_username = uri.user</code>
1555
+ </li>
1556
+
1557
+ <li class="covered" data-hits="30" data-linenumber="42">
1558
+ <span class="hits">30</span>
1559
+
1560
+ <code class="ruby"> @path = uri.path || &quot;/var/tmp/chef.#{username}&quot;</code>
1561
+ </li>
1562
+
1563
+ <li class="covered" data-hits="30" data-linenumber="43">
1564
+ <span class="hits">30</span>
1565
+
1566
+ <code class="ruby"> @data = data</code>
1567
+ </li>
1568
+
1569
+ <li class="never" data-hits="" data-linenumber="44">
1570
+
1571
+
1572
+ <code class="ruby"></code>
1573
+ </li>
1574
+
1575
+ <li class="covered" data-hits="30" data-linenumber="45">
1576
+ <span class="hits">30</span>
1577
+
1578
+ <code class="ruby"> if @hostname.length &gt; self.class.max_node_name_length</code>
1579
+ </li>
1580
+
1581
+ <li class="covered" data-hits="3" data-linenumber="46">
1582
+ <span class="hits">3</span>
1583
+
1584
+ <code class="ruby"> self.class.max_node_name_length = @hostname.length</code>
1585
+ </li>
1586
+
1587
+ <li class="never" data-hits="" data-linenumber="47">
1588
+
1589
+
1590
+ <code class="ruby"> end</code>
1591
+ </li>
1592
+
1593
+ <li class="never" data-hits="" data-linenumber="48">
1594
+
1595
+
1596
+ <code class="ruby"> end</code>
1597
+ </li>
1598
+
1599
+ <li class="never" data-hits="" data-linenumber="49">
1600
+
1601
+
1602
+ <code class="ruby"></code>
1603
+ </li>
1604
+
1605
+ <li class="covered" data-hits="1" data-linenumber="50">
1606
+ <span class="hits">1</span>
1607
+
1608
+ <code class="ruby"> def backend</code>
1609
+ </li>
1610
+
1611
+ <li class="covered" data-hits="6" data-linenumber="51">
1612
+ <span class="hits">6</span>
1613
+
1614
+ <code class="ruby"> @backend ||= Chake::Backend.get(@backend_name).new(self)</code>
1615
+ </li>
1616
+
1617
+ <li class="never" data-hits="" data-linenumber="52">
1618
+
1619
+
1620
+ <code class="ruby"> end</code>
1621
+ </li>
1622
+
1623
+ <li class="never" data-hits="" data-linenumber="53">
1624
+
1625
+
1626
+ <code class="ruby"></code>
1627
+ </li>
1628
+
1629
+ <li class="covered" data-hits="1" data-linenumber="54">
1630
+ <span class="hits">1</span>
1631
+
1632
+ <code class="ruby"> def_delegators :backend, :run, :run_as_root, :run_shell, :rsync, :rsync_dest, :scp, :scp_dest, :skip?</code>
1633
+ </li>
1634
+
1635
+ <li class="never" data-hits="" data-linenumber="55">
1636
+
1637
+
1638
+ <code class="ruby"></code>
1639
+ </li>
1640
+
1641
+ <li class="never" data-hits="" data-linenumber="56">
1642
+
1643
+
1644
+ <code class="ruby"> end</code>
1645
+ </li>
1646
+
1647
+ <li class="never" data-hits="" data-linenumber="57">
1648
+
1649
+
1650
+ <code class="ruby"></code>
1651
+ </li>
1652
+
1653
+ <li class="never" data-hits="" data-linenumber="58">
1654
+
1655
+
1656
+ <code class="ruby">end</code>
1657
+ </li>
1658
+
1659
+ <li class="never" data-hits="" data-linenumber="59">
1660
+
1661
+
1662
+ <code class="ruby"></code>
1663
+ </li>
1664
+
1665
+ </ol>
1666
+ </pre>
1667
+ </div>
1668
+
1669
+ <div class="source_table" id="0b638ba835c7b1f7ced9cfc83771b9405879de96">
1670
+ <div class="header">
1671
+ <h3>spec/chake/backend/ssh_spec.rb</h3>
1672
+ <h4><span class="green">100.0 %</span> covered</h4>
1673
+ <div>
1674
+ <b>21</b> relevant lines.
1675
+ <span class="green"><b>21</b> lines covered</span> and
1676
+ <span class="red"><b>0</b> lines missed.</span>
1677
+ </div>
1678
+ </div>
1679
+
1680
+ <pre>
1681
+ <ol>
1682
+
1683
+ <li class="covered" data-hits="1" data-linenumber="1">
1684
+ <span class="hits">1</span>
1685
+
1686
+ <code class="ruby">require &#39;spec_helper&#39;</code>
1687
+ </li>
1688
+
1689
+ <li class="never" data-hits="" data-linenumber="2">
1690
+
1691
+
1692
+ <code class="ruby"></code>
1693
+ </li>
1694
+
1695
+ <li class="covered" data-hits="1" data-linenumber="3">
1696
+ <span class="hits">1</span>
1697
+
1698
+ <code class="ruby">describe Chake::Backend::Ssh do</code>
1699
+ </li>
1700
+
1701
+ <li class="never" data-hits="" data-linenumber="4">
1702
+
1703
+
1704
+ <code class="ruby"></code>
1705
+ </li>
1706
+
1707
+ <li class="covered" data-hits="1" data-linenumber="5">
1708
+ <span class="hits">1</span>
1709
+
1710
+ <code class="ruby"> include_examples &quot;Chake::Backend&quot;, Chake::Backend::Ssh</code>
1711
+ </li>
1712
+
1713
+ <li class="never" data-hits="" data-linenumber="6">
1714
+
1715
+
1716
+ <code class="ruby"></code>
1717
+ </li>
1718
+
1719
+ <li class="covered" data-hits="7" data-linenumber="7">
1720
+ <span class="hits">7</span>
1721
+
1722
+ <code class="ruby"> let(:node) { Chake::Node.new(&#39;ssh://myuser@myhost/srv/chef&#39;) }</code>
1723
+ </li>
1724
+
1725
+ <li class="never" data-hits="" data-linenumber="8">
1726
+
1727
+
1728
+ <code class="ruby"></code>
1729
+ </li>
1730
+
1731
+ <li class="covered" data-hits="2" data-linenumber="9">
1732
+ <span class="hits">2</span>
1733
+
1734
+ <code class="ruby"> it(&#39;runs commands with ssh&#39;) { expect(backend.command_runner).to eq([&#39;ssh&#39;, &#39;myuser@myhost&#39;]) }</code>
1735
+ </li>
1736
+
1737
+ <li class="never" data-hits="" data-linenumber="10">
1738
+
1739
+
1740
+ <code class="ruby"></code>
1741
+ </li>
1742
+
1743
+ <li class="covered" data-hits="2" data-linenumber="11">
1744
+ <span class="hits">2</span>
1745
+
1746
+ <code class="ruby"> it(&#39;rsyncs over ssh&#39;) { expect(backend.rsync_dest).to eq(&#39;myuser@myhost:/srv/chef/&#39;) }</code>
1747
+ </li>
1748
+
1749
+ <li class="never" data-hits="" data-linenumber="12">
1750
+
1751
+
1752
+ <code class="ruby"></code>
1753
+ </li>
1754
+
1755
+ <li class="covered" data-hits="1" data-linenumber="13">
1756
+ <span class="hits">1</span>
1757
+
1758
+ <code class="ruby"> it &#39;uses no remote username if none was passed&#39; do</code>
1759
+ </li>
1760
+
1761
+ <li class="covered" data-hits="1" data-linenumber="14">
1762
+ <span class="hits">1</span>
1763
+
1764
+ <code class="ruby"> node = Chake::Node.new(&#39;theserver&#39;)</code>
1765
+ </li>
1766
+
1767
+ <li class="covered" data-hits="1" data-linenumber="15">
1768
+ <span class="hits">1</span>
1769
+
1770
+ <code class="ruby"> expect(node.username).to eq(Etc.getpwuid.name)</code>
1771
+ </li>
1772
+
1773
+ <li class="covered" data-hits="1" data-linenumber="16">
1774
+ <span class="hits">1</span>
1775
+
1776
+ <code class="ruby"> expect(node.remote_username).to be_nil</code>
1777
+ </li>
1778
+
1779
+ <li class="never" data-hits="" data-linenumber="17">
1780
+
1781
+
1782
+ <code class="ruby"> end</code>
1783
+ </li>
1784
+
1785
+ <li class="never" data-hits="" data-linenumber="18">
1786
+
1787
+
1788
+ <code class="ruby"></code>
1789
+ </li>
1790
+
1791
+ <li class="covered" data-hits="1" data-linenumber="19">
1792
+ <span class="hits">1</span>
1793
+
1794
+ <code class="ruby"> it &#39;uses username is passwd&#39; do</code>
1795
+ </li>
1796
+
1797
+ <li class="covered" data-hits="1" data-linenumber="20">
1798
+ <span class="hits">1</span>
1799
+
1800
+ <code class="ruby"> expect(node.username).to eq(&#39;myuser&#39;)</code>
1801
+ </li>
1802
+
1803
+ <li class="covered" data-hits="1" data-linenumber="21">
1804
+ <span class="hits">1</span>
1805
+
1806
+ <code class="ruby"> expect(node.remote_username).to eq(&#39;myuser&#39;)</code>
1807
+ </li>
1808
+
1809
+ <li class="never" data-hits="" data-linenumber="22">
1810
+
1811
+
1812
+ <code class="ruby"> end</code>
1813
+ </li>
1814
+
1815
+ <li class="never" data-hits="" data-linenumber="23">
1816
+
1817
+
1818
+ <code class="ruby"></code>
1819
+ </li>
1820
+
1821
+ <li class="covered" data-hits="1" data-linenumber="24">
1822
+ <span class="hits">1</span>
1823
+
1824
+ <code class="ruby"> context &#39;with a custom port&#39; do</code>
1825
+ </li>
1826
+
1827
+ <li class="covered" data-hits="4" data-linenumber="25">
1828
+ <span class="hits">4</span>
1829
+
1830
+ <code class="ruby"> let(:node) { Chake::Node.new(&#39;ssh://myhost:2222&#39;) }</code>
1831
+ </li>
1832
+
1833
+ <li class="covered" data-hits="1" data-linenumber="26">
1834
+ <span class="hits">1</span>
1835
+
1836
+ <code class="ruby"> it &#39;uses port with ssh&#39; do</code>
1837
+ </li>
1838
+
1839
+ <li class="covered" data-hits="1" data-linenumber="27">
1840
+ <span class="hits">1</span>
1841
+
1842
+ <code class="ruby"> expect(backend.command_runner).to eq([&#39;ssh&#39;, &#39;-p&#39;, &#39;2222&#39;, &#39;myhost&#39;])</code>
1843
+ </li>
1844
+
1845
+ <li class="never" data-hits="" data-linenumber="28">
1846
+
1847
+
1848
+ <code class="ruby"> end</code>
1849
+ </li>
1850
+
1851
+ <li class="covered" data-hits="1" data-linenumber="29">
1852
+ <span class="hits">1</span>
1853
+
1854
+ <code class="ruby"> it &#39;uses port with scp&#39; do</code>
1855
+ </li>
1856
+
1857
+ <li class="covered" data-hits="1" data-linenumber="30">
1858
+ <span class="hits">1</span>
1859
+
1860
+ <code class="ruby"> expect(backend.scp).to eq([&#39;scp&#39;, &#39;-P&#39;, &#39;2222&#39;])</code>
1861
+ </li>
1862
+
1863
+ <li class="never" data-hits="" data-linenumber="31">
1864
+
1865
+
1866
+ <code class="ruby"> end</code>
1867
+ </li>
1868
+
1869
+ <li class="covered" data-hits="1" data-linenumber="32">
1870
+ <span class="hits">1</span>
1871
+
1872
+ <code class="ruby"> it &#39;uses port with rsync&#39; do</code>
1873
+ </li>
1874
+
1875
+ <li class="covered" data-hits="1" data-linenumber="33">
1876
+ <span class="hits">1</span>
1877
+
1878
+ <code class="ruby"> expect(backend.send(:rsync_ssh)).to eq([&#39;-e&#39;, &#39;ssh -p 2222&#39;])</code>
1879
+ </li>
1880
+
1881
+ <li class="never" data-hits="" data-linenumber="34">
1882
+
1883
+
1884
+ <code class="ruby"> end</code>
1885
+ </li>
1886
+
1887
+ <li class="never" data-hits="" data-linenumber="35">
1888
+
1889
+
1890
+ <code class="ruby"> end</code>
1891
+ </li>
1892
+
1893
+ <li class="never" data-hits="" data-linenumber="36">
1894
+
1895
+
1896
+ <code class="ruby"></code>
1897
+ </li>
1898
+
1899
+ <li class="never" data-hits="" data-linenumber="37">
1900
+
1901
+
1902
+ <code class="ruby">end</code>
1903
+ </li>
1904
+
1905
+ </ol>
1906
+ </pre>
1907
+ </div>
1908
+
1909
+ <div class="source_table" id="ac8821762e582e387630f20ab79b98f4f5a7f7d3">
1910
+ <div class="header">
1911
+ <h3>spec/chake/backend_spec.rb</h3>
1912
+ <h4><span class="green">100.0 %</span> covered</h4>
1913
+ <div>
1914
+ <b>1</b> relevant lines.
1915
+ <span class="green"><b>1</b> lines covered</span> and
1916
+ <span class="red"><b>0</b> lines missed.</span>
1917
+ </div>
1918
+ </div>
1919
+
1920
+ <pre>
1921
+ <ol>
1922
+
1923
+ <li class="covered" data-hits="1" data-linenumber="1">
1924
+ <span class="hits">1</span>
1925
+
1926
+ <code class="ruby">require &#39;chake/backend&#39;</code>
1927
+ </li>
1928
+
1929
+ <li class="never" data-hits="" data-linenumber="2">
1930
+
1931
+
1932
+ <code class="ruby"></code>
1933
+ </li>
1934
+
1935
+ </ol>
1936
+ </pre>
1937
+ </div>
1938
+
1939
+ <div class="source_table" id="a7d8a97d1649246ed1998a061b28bf4fd79b767a">
1940
+ <div class="header">
1941
+ <h3>spec/chake/node_spec.rb</h3>
1942
+ <h4><span class="green">100.0 %</span> covered</h4>
1943
+ <div>
1944
+ <b>38</b> relevant lines.
1945
+ <span class="green"><b>38</b> lines covered</span> and
1946
+ <span class="red"><b>0</b> lines missed.</span>
1947
+ </div>
1948
+ </div>
1949
+
1950
+ <pre>
1951
+ <ol>
1952
+
1953
+ <li class="covered" data-hits="1" data-linenumber="1">
1954
+ <span class="hits">1</span>
1955
+
1956
+ <code class="ruby">require &#39;chake/node&#39;</code>
1957
+ </li>
1958
+
1959
+ <li class="never" data-hits="" data-linenumber="2">
1960
+
1961
+
1962
+ <code class="ruby"></code>
1963
+ </li>
1964
+
1965
+ <li class="covered" data-hits="1" data-linenumber="3">
1966
+ <span class="hits">1</span>
1967
+
1968
+ <code class="ruby">describe Chake::Node do</code>
1969
+ </li>
1970
+
1971
+ <li class="never" data-hits="" data-linenumber="4">
1972
+
1973
+
1974
+ <code class="ruby"></code>
1975
+ </li>
1976
+
1977
+ <li class="covered" data-hits="1" data-linenumber="5">
1978
+ <span class="hits">1</span>
1979
+
1980
+ <code class="ruby"> before do</code>
1981
+ </li>
1982
+
1983
+ <li class="covered" data-hits="14" data-linenumber="6">
1984
+ <span class="hits">14</span>
1985
+
1986
+ <code class="ruby"> ent = double</code>
1987
+ </li>
1988
+
1989
+ <li class="covered" data-hits="14" data-linenumber="7">
1990
+ <span class="hits">14</span>
1991
+
1992
+ <code class="ruby"> allow(ent).to receive(:name).and_return(&#39;jonhdoe&#39;)</code>
1993
+ </li>
1994
+
1995
+ <li class="covered" data-hits="14" data-linenumber="8">
1996
+ <span class="hits">14</span>
1997
+
1998
+ <code class="ruby"> allow(Etc).to receive(:getpwuid).and_return(ent)</code>
1999
+ </li>
2000
+
2001
+ <li class="never" data-hits="" data-linenumber="9">
2002
+
2003
+
2004
+ <code class="ruby"> end</code>
2005
+ </li>
2006
+
2007
+ <li class="never" data-hits="" data-linenumber="10">
2008
+
2009
+
2010
+ <code class="ruby"></code>
2011
+ </li>
2012
+
2013
+ <li class="covered" data-hits="8" data-linenumber="11">
2014
+ <span class="hits">8</span>
2015
+
2016
+ <code class="ruby"> let(:simple) { Chake::Node.new(&#39;hostname&#39;) }</code>
2017
+ </li>
2018
+
2019
+ <li class="covered" data-hits="2" data-linenumber="12">
2020
+ <span class="hits">2</span>
2021
+
2022
+ <code class="ruby"> it(&#39;has a name&#39;) { expect(simple.hostname).to eq(&#39;hostname&#39;) }</code>
2023
+ </li>
2024
+
2025
+ <li class="covered" data-hits="2" data-linenumber="13">
2026
+ <span class="hits">2</span>
2027
+
2028
+ <code class="ruby"> it(&#39;uses ssh by default&#39;) { expect(simple.backend).to be_an_instance_of(Chake::Backend::Ssh) }</code>
2029
+ </li>
2030
+
2031
+ <li class="covered" data-hits="1" data-linenumber="14">
2032
+ <span class="hits">1</span>
2033
+
2034
+ <code class="ruby"> it(&#39;user current username by default&#39;) {</code>
2035
+ </li>
2036
+
2037
+ <li class="covered" data-hits="1" data-linenumber="15">
2038
+ <span class="hits">1</span>
2039
+
2040
+ <code class="ruby"> expect(simple.username).to eq(&#39;jonhdoe&#39;)</code>
2041
+ </li>
2042
+
2043
+ <li class="never" data-hits="" data-linenumber="16">
2044
+
2045
+
2046
+ <code class="ruby"> }</code>
2047
+ </li>
2048
+
2049
+ <li class="covered" data-hits="1" data-linenumber="17">
2050
+ <span class="hits">1</span>
2051
+
2052
+ <code class="ruby"> it(&#39;writes to /var/tmp/chef.$username&#39;) {</code>
2053
+ </li>
2054
+
2055
+ <li class="covered" data-hits="1" data-linenumber="18">
2056
+ <span class="hits">1</span>
2057
+
2058
+ <code class="ruby"> expect(simple.path).to eq(&#39;/var/tmp/chef.jonhdoe&#39;)</code>
2059
+ </li>
2060
+
2061
+ <li class="never" data-hits="" data-linenumber="19">
2062
+
2063
+
2064
+ <code class="ruby"> }</code>
2065
+ </li>
2066
+
2067
+ <li class="never" data-hits="" data-linenumber="20">
2068
+
2069
+
2070
+ <code class="ruby"></code>
2071
+ </li>
2072
+
2073
+ <li class="covered" data-hits="3" data-linenumber="21">
2074
+ <span class="hits">3</span>
2075
+
2076
+ <code class="ruby"> let(:with_username) { Chake::Node.new(&#39;username@hostname&#39;) }</code>
2077
+ </li>
2078
+
2079
+ <li class="covered" data-hits="2" data-linenumber="22">
2080
+ <span class="hits">2</span>
2081
+
2082
+ <code class="ruby"> it(&#39;accepts username&#39;) { expect(with_username.username).to eq(&#39;username&#39;) }</code>
2083
+ </li>
2084
+
2085
+ <li class="covered" data-hits="2" data-linenumber="23">
2086
+ <span class="hits">2</span>
2087
+
2088
+ <code class="ruby"> it(&#39;uses ssh&#39;) { expect(with_username.backend).to be_an_instance_of(Chake::Backend::Ssh) }</code>
2089
+ </li>
2090
+
2091
+ <li class="never" data-hits="" data-linenumber="24">
2092
+
2093
+
2094
+ <code class="ruby"></code>
2095
+ </li>
2096
+
2097
+ <li class="covered" data-hits="2" data-linenumber="25">
2098
+ <span class="hits">2</span>
2099
+
2100
+ <code class="ruby"> let(:with_backend) { Chake::Node.new(&#39;local://hostname&#39;)}</code>
2101
+ </li>
2102
+
2103
+ <li class="covered" data-hits="2" data-linenumber="26">
2104
+ <span class="hits">2</span>
2105
+
2106
+ <code class="ruby"> it(&#39;accepts backend as URI scheme&#39;) { expect(with_backend.backend).to be_an_instance_of(Chake::Backend::Local) }</code>
2107
+ </li>
2108
+
2109
+ <li class="never" data-hits="" data-linenumber="27">
2110
+
2111
+
2112
+ <code class="ruby"></code>
2113
+ </li>
2114
+
2115
+ <li class="covered" data-hits="1" data-linenumber="28">
2116
+ <span class="hits">1</span>
2117
+
2118
+ <code class="ruby"> it(&#39;wont accept any backend&#39;) do</code>
2119
+ </li>
2120
+
2121
+ <li class="covered" data-hits="2" data-linenumber="29">
2122
+ <span class="hits">2</span>
2123
+
2124
+ <code class="ruby"> expect { Chake::Node.new(&#39;foobar://bazqux&#39;).backend }.to raise_error(ArgumentError)</code>
2125
+ </li>
2126
+
2127
+ <li class="never" data-hits="" data-linenumber="30">
2128
+
2129
+
2130
+ <code class="ruby"> end</code>
2131
+ </li>
2132
+
2133
+ <li class="never" data-hits="" data-linenumber="31">
2134
+
2135
+
2136
+ <code class="ruby"></code>
2137
+ </li>
2138
+
2139
+ <li class="covered" data-hits="2" data-linenumber="32">
2140
+ <span class="hits">2</span>
2141
+
2142
+ <code class="ruby"> let(:with_data) { Chake::Node.new(&#39;local://localhost&#39;, &#39;run_list&#39; =&gt; [&#39;recipe[common]&#39;]) }</code>
2143
+ </li>
2144
+
2145
+ <li class="covered" data-hits="1" data-linenumber="33">
2146
+ <span class="hits">1</span>
2147
+
2148
+ <code class="ruby"> it(&#39;takes data&#39;) do</code>
2149
+ </li>
2150
+
2151
+ <li class="covered" data-hits="1" data-linenumber="34">
2152
+ <span class="hits">1</span>
2153
+
2154
+ <code class="ruby"> expect(with_data.data).to be_a(Hash)</code>
2155
+ </li>
2156
+
2157
+ <li class="never" data-hits="" data-linenumber="35">
2158
+
2159
+
2160
+ <code class="ruby"> end</code>
2161
+ </li>
2162
+
2163
+ <li class="never" data-hits="" data-linenumber="36">
2164
+
2165
+
2166
+ <code class="ruby"></code>
2167
+ </li>
2168
+
2169
+ <li class="covered" data-hits="2" data-linenumber="37">
2170
+ <span class="hits">2</span>
2171
+
2172
+ <code class="ruby"> let(:with_port) { Chake::Node.new(&#39;ssh://foo.bar.com:2222&#39;) }</code>
2173
+ </li>
2174
+
2175
+ <li class="covered" data-hits="1" data-linenumber="38">
2176
+ <span class="hits">1</span>
2177
+
2178
+ <code class="ruby"> it(&#39;accepts a port specification&#39;) do</code>
2179
+ </li>
2180
+
2181
+ <li class="covered" data-hits="1" data-linenumber="39">
2182
+ <span class="hits">1</span>
2183
+
2184
+ <code class="ruby"> expect(with_port.port).to eq(2222)</code>
2185
+ </li>
2186
+
2187
+ <li class="never" data-hits="" data-linenumber="40">
2188
+
2189
+
2190
+ <code class="ruby"> end</code>
2191
+ </li>
2192
+
2193
+ <li class="never" data-hits="" data-linenumber="41">
2194
+
2195
+
2196
+ <code class="ruby"></code>
2197
+ </li>
2198
+
2199
+ <li class="covered" data-hits="2" data-linenumber="42">
2200
+ <span class="hits">2</span>
2201
+
2202
+ <code class="ruby"> let(:with_port_but_no_scheme) { Chake::Node.new(&#39;foo.bar.com:2222&#39;) }</code>
2203
+ </li>
2204
+
2205
+ <li class="covered" data-hits="1" data-linenumber="43">
2206
+ <span class="hits">1</span>
2207
+
2208
+ <code class="ruby"> it(&#39;accepts a port specification without a scheme&#39;) do</code>
2209
+ </li>
2210
+
2211
+ <li class="covered" data-hits="1" data-linenumber="44">
2212
+ <span class="hits">1</span>
2213
+
2214
+ <code class="ruby"> expect(with_port_but_no_scheme.port).to eq(2222)</code>
2215
+ </li>
2216
+
2217
+ <li class="covered" data-hits="1" data-linenumber="45">
2218
+ <span class="hits">1</span>
2219
+
2220
+ <code class="ruby"> expect(with_port_but_no_scheme.backend.to_s).to eq(&#39;ssh&#39;)</code>
2221
+ </li>
2222
+
2223
+ <li class="never" data-hits="" data-linenumber="46">
2224
+
2225
+
2226
+ <code class="ruby"> end</code>
2227
+ </li>
2228
+
2229
+ <li class="never" data-hits="" data-linenumber="47">
2230
+
2231
+
2232
+ <code class="ruby"></code>
2233
+ </li>
2234
+
2235
+ <li class="covered" data-hits="1" data-linenumber="48">
2236
+ <span class="hits">1</span>
2237
+
2238
+ <code class="ruby"> [:run, :run_as_root, :rsync_dest].each do |method|</code>
2239
+ </li>
2240
+
2241
+ <li class="covered" data-hits="3" data-linenumber="49">
2242
+ <span class="hits">3</span>
2243
+
2244
+ <code class="ruby"> it(&quot;delegates #{method} to backend&quot;) do</code>
2245
+ </li>
2246
+
2247
+ <li class="covered" data-hits="3" data-linenumber="50">
2248
+ <span class="hits">3</span>
2249
+
2250
+ <code class="ruby"> node = simple</code>
2251
+ </li>
2252
+
2253
+ <li class="never" data-hits="" data-linenumber="51">
2254
+
2255
+
2256
+ <code class="ruby"></code>
2257
+ </li>
2258
+
2259
+ <li class="covered" data-hits="3" data-linenumber="52">
2260
+ <span class="hits">3</span>
2261
+
2262
+ <code class="ruby"> backend = double</code>
2263
+ </li>
2264
+
2265
+ <li class="covered" data-hits="3" data-linenumber="53">
2266
+ <span class="hits">3</span>
2267
+
2268
+ <code class="ruby"> args = Object.new</code>
2269
+ </li>
2270
+
2271
+ <li class="covered" data-hits="3" data-linenumber="54">
2272
+ <span class="hits">3</span>
2273
+
2274
+ <code class="ruby"> allow(node).to receive(:backend).and_return(backend)</code>
2275
+ </li>
2276
+
2277
+ <li class="never" data-hits="" data-linenumber="55">
2278
+
2279
+
2280
+ <code class="ruby"></code>
2281
+ </li>
2282
+
2283
+ <li class="covered" data-hits="3" data-linenumber="56">
2284
+ <span class="hits">3</span>
2285
+
2286
+ <code class="ruby"> expect(backend).to receive(method).with(args)</code>
2287
+ </li>
2288
+
2289
+ <li class="covered" data-hits="3" data-linenumber="57">
2290
+ <span class="hits">3</span>
2291
+
2292
+ <code class="ruby"> node.send(method, args)</code>
2293
+ </li>
2294
+
2295
+ <li class="never" data-hits="" data-linenumber="58">
2296
+
2297
+
2298
+ <code class="ruby"> end</code>
2299
+ </li>
2300
+
2301
+ <li class="never" data-hits="" data-linenumber="59">
2302
+
2303
+
2304
+ <code class="ruby"> end</code>
2305
+ </li>
2306
+
2307
+ <li class="never" data-hits="" data-linenumber="60">
2308
+
2309
+
2310
+ <code class="ruby"></code>
2311
+ </li>
2312
+
2313
+ <li class="never" data-hits="" data-linenumber="61">
2314
+
2315
+
2316
+ <code class="ruby">end</code>
2317
+ </li>
2318
+
2319
+ </ol>
2320
+ </pre>
2321
+ </div>
2322
+
2323
+ </div>
2324
+ </div>
2325
+ </body>
2326
+ </html>