chake 0.19 → 0.20

Sign up to get free protection for your applications and to get access to all the features.
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>