sshkit 1.18.2 → 1.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 886f5d73c7b9a9570763c9f0612130367e2eaf484056d937635661de55755c1b
4
- data.tar.gz: 2bb004e4b0df817573f5908269388abf0f8f016c3b25822db5df337eb857d0f3
3
+ metadata.gz: 8b4191d45c0d732071e82c9a8eeead452366f901fd483eb016dbd97761da10d1
4
+ data.tar.gz: 49209aa289eb35cc906bb88fa187aa43079d3c3a0e9ed42582cbc74bb967d54f
5
5
  SHA512:
6
- metadata.gz: d3d4bbf920f05e70bfa1c9333e5f39d91b43fe28a63d726236b521315b6a0cf9b4132e29a26383992bf072d5186b0abbd4203c4c3c13c7c126666fe1a3876ed7
7
- data.tar.gz: '082d51b64a6690cc09ed82f958c7bd9f3971c8ab6340075caf718fab56c72092a31f78fea493c5eb61e74b5e4994bbdec5eae6c6802cfe8b90766aa52789f60c'
6
+ metadata.gz: aa67fe84e2eda52dae94814f6c81d66a0f965e8fbffadc4238c9cc63b800ab3c24a424b0382d8d1a1431f5ecb095dda017fe076277fe165f8771d1e21d6f4d82
7
+ data.tar.gz: f404f7933c620ab7737c5062c45a7b536dd62f26034894588dffb132b9e027a32516c0bf5a43215d7bdf468c4ae3102d99957d7a1ef728bf2e3e7db9c1ee3dd0
@@ -0,0 +1,63 @@
1
+ inherit_from: .rubocop_todo.yml
2
+
3
+ AllCops:
4
+ DisplayCopNames: true
5
+ DisplayStyleGuide: true
6
+ TargetRubyVersion: 2.0
7
+
8
+ Lint/AmbiguousBlockAssociation:
9
+ Enabled:
10
+ false
11
+ Metrics/BlockLength:
12
+ Exclude:
13
+ - "spec/**/*"
14
+ - "lib/**/*.rake"
15
+ Style/BarePercentLiterals:
16
+ EnforcedStyle: percent_q
17
+ Style/ClassAndModuleChildren:
18
+ Enabled: false
19
+ Style/DoubleNegation:
20
+ Enabled: false
21
+ Style/FileName:
22
+ Exclude:
23
+ - "Dangerfile"
24
+ Style/IndentHeredoc:
25
+ Enabled: false
26
+ Style/SpaceAroundEqualsInParameterDefault:
27
+ EnforcedStyle: no_space
28
+ Style/StringLiterals:
29
+ EnforcedStyle: double_quotes
30
+ Style/TrivialAccessors:
31
+ AllowPredicates: true
32
+ Style/PercentLiteralDelimiters:
33
+ Enabled: false
34
+ Style/SingleLineBlockParams:
35
+ Enabled: false
36
+ Style/ModuleFunction:
37
+ Enabled: false
38
+
39
+ # Enable someday
40
+ Style/Documentation:
41
+ Enabled: false
42
+
43
+ # Needs refactors
44
+ Metrics/PerceivedComplexity:
45
+ Enabled: false
46
+ Metrics/CyclomaticComplexity:
47
+ Enabled: false
48
+ Metrics/MethodLength:
49
+ Enabled: false
50
+ Style/PredicateName:
51
+ Enabled: false
52
+ Metrics/LineLength:
53
+ Enabled: false
54
+ Metrics/AbcSize:
55
+ Enabled: false
56
+ Style/PerlBackrefs:
57
+ Enabled: false
58
+ Metrics/ClassLength:
59
+ Enabled: false
60
+ Metrics/ModuleLength:
61
+ Enabled: false
62
+ Style/AccessorMethodName:
63
+ Enabled: false
@@ -0,0 +1,637 @@
1
+ # This configuration was generated by
2
+ # `rubocop --auto-gen-config`
3
+ # on 2019-05-15 19:11:29 -0500 using RuboCop version 0.49.1.
4
+ # The point is for the user to remove these configuration records
5
+ # one by one as the offenses are removed from the code base.
6
+ # Note that changes in the inspected code, or installation of new
7
+ # versions of RuboCop, may require this file to be generated again.
8
+
9
+ # Offense count: 1
10
+ # Cop supports --auto-correct.
11
+ # Configuration parameters: Include, TreatCommentsAsGroupSeparators.
12
+ # Include: **/Gemfile, **/gems.rb
13
+ Bundler/OrderedGems:
14
+ Exclude:
15
+ - 'Gemfile'
16
+
17
+ # Offense count: 1
18
+ # Cop supports --auto-correct.
19
+ Layout/EmptyLineAfterMagicComment:
20
+ Exclude:
21
+ - 'sshkit.gemspec'
22
+
23
+ # Offense count: 11
24
+ # Cop supports --auto-correct.
25
+ # Configuration parameters: AllowAdjacentOneLineDefs, NumberOfEmptyLines.
26
+ Layout/EmptyLineBetweenDefs:
27
+ Exclude:
28
+ - 'lib/core_ext/hash.rb'
29
+ - 'lib/sshkit/backends/abstract.rb'
30
+ - 'lib/sshkit/host.rb'
31
+ - 'lib/sshkit/log_message.rb'
32
+ - 'test/unit/formatters/test_pretty.rb'
33
+ - 'test/unit/test_mapping_interaction_handler.rb'
34
+
35
+ # Offense count: 2
36
+ # Cop supports --auto-correct.
37
+ Layout/EmptyLines:
38
+ Exclude:
39
+ - 'test/unit/formatters/test_pretty.rb'
40
+ - 'test/unit/test_mapping_interaction_handler.rb'
41
+
42
+ # Offense count: 1
43
+ # Cop supports --auto-correct.
44
+ Layout/EmptyLinesAroundAccessModifier:
45
+ Exclude:
46
+ - 'lib/sshkit/runners/sequential.rb'
47
+
48
+ # Offense count: 4
49
+ # Cop supports --auto-correct.
50
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
51
+ # SupportedStyles: empty_lines, no_empty_lines
52
+ Layout/EmptyLinesAroundBlockBody:
53
+ Exclude:
54
+ - 'Rakefile'
55
+ - 'sshkit.gemspec'
56
+ - 'test/helper.rb'
57
+
58
+ # Offense count: 73
59
+ # Cop supports --auto-correct.
60
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
61
+ # SupportedStyles: empty_lines, empty_lines_except_namespace, empty_lines_special, no_empty_lines
62
+ Layout/EmptyLinesAroundClassBody:
63
+ Enabled: false
64
+
65
+ # Offense count: 2
66
+ # Cop supports --auto-correct.
67
+ Layout/EmptyLinesAroundMethodBody:
68
+ Exclude:
69
+ - 'lib/sshkit/host.rb'
70
+
71
+ # Offense count: 100
72
+ # Cop supports --auto-correct.
73
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
74
+ # SupportedStyles: empty_lines, empty_lines_except_namespace, empty_lines_special, no_empty_lines
75
+ Layout/EmptyLinesAroundModuleBody:
76
+ Enabled: false
77
+
78
+ # Offense count: 3
79
+ # Cop supports --auto-correct.
80
+ # Configuration parameters: AllowForAlignment, ForceEqualSignAlignment.
81
+ Layout/ExtraSpacing:
82
+ Exclude:
83
+ - 'test/unit/backends/test_abstract.rb'
84
+ - 'test/unit/backends/test_netssh.rb'
85
+ - 'test/unit/test_host.rb'
86
+
87
+ # Offense count: 6
88
+ # Cop supports --auto-correct.
89
+ # Configuration parameters: EnforcedStyle, SupportedStyles, IndentationWidth.
90
+ # SupportedStyles: special_inside_parentheses, consistent, align_brackets
91
+ Layout/IndentArray:
92
+ Exclude:
93
+ - 'test/functional/backends/test_netssh.rb'
94
+ - 'test/unit/backends/test_netssh.rb'
95
+ - 'test/unit/formatters/test_pretty.rb'
96
+
97
+ # Offense count: 11
98
+ # Cop supports --auto-correct.
99
+ # Configuration parameters: EnforcedStyle, SupportedStyles, IndentationWidth.
100
+ # SupportedStyles: special_inside_parentheses, consistent, align_braces
101
+ Layout/IndentHash:
102
+ Exclude:
103
+ - 'test/functional/backends/test_local.rb'
104
+ - 'test/functional/backends/test_netssh.rb'
105
+ - 'test/support/vagrant_wrapper.rb'
106
+ - 'test/unit/formatters/test_custom.rb'
107
+ - 'test/unit/formatters/test_pretty.rb'
108
+ - 'test/unit/test_mapping_interaction_handler.rb'
109
+
110
+ # Offense count: 5
111
+ # Cop supports --auto-correct.
112
+ # Configuration parameters: Width, IgnoredPatterns.
113
+ Layout/IndentationWidth:
114
+ Exclude:
115
+ - 'lib/sshkit/exception.rb'
116
+ - 'test/functional/backends/test_netssh.rb'
117
+
118
+ # Offense count: 5
119
+ # Cop supports --auto-correct.
120
+ Layout/LeadingCommentSpace:
121
+ Exclude:
122
+ - 'lib/sshkit/backends/netssh.rb'
123
+ - 'lib/sshkit/command.rb'
124
+ - 'test/helper.rb'
125
+
126
+ # Offense count: 4
127
+ # Cop supports --auto-correct.
128
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
129
+ # SupportedStyles: symmetrical, new_line, same_line
130
+ Layout/MultilineMethodCallBraceLayout:
131
+ Exclude:
132
+ - 'test/unit/test_command.rb'
133
+
134
+ # Offense count: 1
135
+ # Cop supports --auto-correct.
136
+ # Configuration parameters: EnforcedStyle, SupportedStyles, IndentationWidth.
137
+ # SupportedStyles: aligned, indented, indented_relative_to_receiver
138
+ Layout/MultilineMethodCallIndentation:
139
+ Exclude:
140
+ - 'lib/sshkit/host.rb'
141
+
142
+ # Offense count: 1
143
+ # Cop supports --auto-correct.
144
+ # Configuration parameters: EnforcedStyle, SupportedStyles, IndentationWidth.
145
+ # SupportedStyles: aligned, indented
146
+ Layout/MultilineOperationIndentation:
147
+ Exclude:
148
+ - 'lib/sshkit/backends/netssh.rb'
149
+
150
+ # Offense count: 10
151
+ # Cop supports --auto-correct.
152
+ Layout/SpaceAfterComma:
153
+ Exclude:
154
+ - 'lib/sshkit/command.rb'
155
+ - 'test/functional/backends/test_netssh.rb'
156
+ - 'test/unit/backends/test_netssh.rb'
157
+ - 'test/unit/test_configuration.rb'
158
+
159
+ # Offense count: 16
160
+ # Cop supports --auto-correct.
161
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
162
+ # SupportedStyles: space, no_space
163
+ Layout/SpaceAroundEqualsInParameterDefault:
164
+ Exclude:
165
+ - 'lib/sshkit/backends/abstract.rb'
166
+ - 'lib/sshkit/backends/local.rb'
167
+ - 'lib/sshkit/backends/netssh.rb'
168
+ - 'lib/sshkit/backends/netssh/known_hosts.rb'
169
+ - 'lib/sshkit/command_map.rb'
170
+ - 'lib/sshkit/runners/abstract.rb'
171
+ - 'lib/sshkit/runners/group.rb'
172
+ - 'lib/sshkit/runners/sequential.rb'
173
+ - 'test/helper.rb'
174
+ - 'test/unit/backends/test_netssh.rb'
175
+
176
+ # Offense count: 12
177
+ # Cop supports --auto-correct.
178
+ # Configuration parameters: AllowForAlignment.
179
+ Layout/SpaceAroundOperators:
180
+ Exclude:
181
+ - 'test/functional/backends/test_netssh.rb'
182
+ - 'test/unit/backends/test_abstract.rb'
183
+ - 'test/unit/test_command.rb'
184
+ - 'test/unit/test_deprecation_logger.rb'
185
+
186
+ # Offense count: 4
187
+ # Cop supports --auto-correct.
188
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
189
+ # SupportedStyles: space, no_space
190
+ Layout/SpaceBeforeBlockBraces:
191
+ Exclude:
192
+ - 'lib/sshkit/command.rb'
193
+ - 'lib/sshkit/host.rb'
194
+ - 'sshkit.gemspec'
195
+ - 'test/unit/test_command_map.rb'
196
+
197
+ # Offense count: 1
198
+ # Cop supports --auto-correct.
199
+ # Configuration parameters: AllowForAlignment.
200
+ Layout/SpaceBeforeFirstArg:
201
+ Exclude:
202
+ - 'test/unit/backends/test_netssh.rb'
203
+
204
+ # Offense count: 4
205
+ # Cop supports --auto-correct.
206
+ # Configuration parameters: EnforcedStyle, SupportedStyles, EnforcedStyleForEmptyBraces, SupportedStylesForEmptyBraces, SpaceBeforeBlockParameters.
207
+ # SupportedStyles: space, no_space
208
+ # SupportedStylesForEmptyBraces: space, no_space
209
+ Layout/SpaceInsideBlockBraces:
210
+ Exclude:
211
+ - 'lib/sshkit/command.rb'
212
+ - 'lib/sshkit/host.rb'
213
+ - 'test/functional/backends/test_netssh.rb'
214
+ - 'test/unit/test_configuration.rb'
215
+
216
+ # Offense count: 39
217
+ # Cop supports --auto-correct.
218
+ # Configuration parameters: EnforcedStyle, SupportedStyles, EnforcedStyleForEmptyBraces, SupportedStylesForEmptyBraces.
219
+ # SupportedStyles: space, no_space, compact
220
+ # SupportedStylesForEmptyBraces: space, no_space
221
+ Layout/SpaceInsideHashLiteralBraces:
222
+ Exclude:
223
+ - 'lib/sshkit/backends/abstract.rb'
224
+ - 'lib/sshkit/backends/netssh.rb'
225
+ - 'test/functional/backends/test_netssh.rb'
226
+ - 'test/unit/backends/test_abstract.rb'
227
+ - 'test/unit/formatters/test_dot.rb'
228
+ - 'test/unit/test_color.rb'
229
+ - 'test/unit/test_command.rb'
230
+ - 'test/unit/test_host.rb'
231
+ - 'test/unit/test_mapping_interaction_handler.rb'
232
+
233
+ # Offense count: 2
234
+ # Cop supports --auto-correct.
235
+ Layout/SpaceInsidePercentLiteralDelimiters:
236
+ Exclude:
237
+ - 'lib/sshkit/formatters/pretty.rb'
238
+
239
+ # Offense count: 1
240
+ # Cop supports --auto-correct.
241
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
242
+ # SupportedStyles: final_newline, final_blank_line
243
+ Layout/TrailingBlankLines:
244
+ Exclude:
245
+ - 'lib/sshkit/backends/netssh/known_hosts.rb'
246
+
247
+ # Offense count: 16
248
+ # Cop supports --auto-correct.
249
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
250
+ # SupportedStyles: prefer_alias, prefer_alias_method
251
+ Style/Alias:
252
+ Exclude:
253
+ - 'lib/sshkit/backends/printer.rb'
254
+ - 'lib/sshkit/backends/skipper.rb'
255
+ - 'lib/sshkit/command.rb'
256
+ - 'lib/sshkit/formatters/abstract.rb'
257
+ - 'lib/sshkit/host.rb'
258
+ - 'test/unit/formatters/test_custom.rb'
259
+
260
+ # Offense count: 2
261
+ Style/AsciiComments:
262
+ Exclude:
263
+ - 'lib/sshkit/command.rb'
264
+ - 'test/helper.rb'
265
+
266
+ # Offense count: 11
267
+ # Cop supports --auto-correct.
268
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
269
+ # SupportedStyles: percent_q, bare_percent
270
+ Style/BarePercentLiterals:
271
+ Exclude:
272
+ - 'lib/sshkit/command.rb'
273
+ - 'test/unit/test_command.rb'
274
+
275
+ # Offense count: 10
276
+ # Cop supports --auto-correct.
277
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
278
+ # SupportedStyles: braces, no_braces, context_dependent
279
+ Style/BracesAroundHashParameters:
280
+ Exclude:
281
+ - 'lib/sshkit/backends/abstract.rb'
282
+ - 'test/functional/backends/test_netssh.rb'
283
+ - 'test/unit/backends/test_abstract.rb'
284
+ - 'test/unit/formatters/test_dot.rb'
285
+ - 'test/unit/test_color.rb'
286
+ - 'test/unit/test_host.rb'
287
+ - 'test/unit/test_mapping_interaction_handler.rb'
288
+
289
+ # Offense count: 1
290
+ Style/CaseEquality:
291
+ Exclude:
292
+ - 'lib/sshkit/mapping_interaction_handler.rb'
293
+
294
+ # Offense count: 2
295
+ # Cop supports --auto-correct.
296
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
297
+ # SupportedStyles: is_a?, kind_of?
298
+ Style/ClassCheck:
299
+ Exclude:
300
+ - 'lib/sshkit/command.rb'
301
+ - 'lib/sshkit/formatters/pretty.rb'
302
+
303
+ # Offense count: 1
304
+ # Cop supports --auto-correct.
305
+ Style/ClassMethods:
306
+ Exclude:
307
+ - 'test/unit/backends/test_abstract.rb'
308
+
309
+ # Offense count: 3
310
+ Style/ClassVars:
311
+ Exclude:
312
+ - 'lib/sshkit.rb'
313
+
314
+ # Offense count: 1
315
+ # Cop supports --auto-correct.
316
+ # Configuration parameters: EnforcedStyle, SupportedStyles, SingleLineConditionsOnly, IncludeTernaryExpressions.
317
+ # SupportedStyles: assign_to_condition, assign_inside_condition
318
+ Style/ConditionalAssignment:
319
+ Exclude:
320
+ - 'lib/sshkit/command_map.rb'
321
+
322
+ # Offense count: 1
323
+ # Cop supports --auto-correct.
324
+ Style/EachWithObject:
325
+ Exclude:
326
+ - 'lib/core_ext/hash.rb'
327
+
328
+ # Offense count: 12
329
+ # Cop supports --auto-correct.
330
+ Style/EmptyLiteral:
331
+ Exclude:
332
+ - 'lib/sshkit/command.rb'
333
+ - 'test/functional/backends/test_netssh.rb'
334
+ - 'test/unit/backends/test_printer.rb'
335
+ - 'test/unit/formatters/test_custom.rb'
336
+ - 'test/unit/formatters/test_dot.rb'
337
+ - 'test/unit/formatters/test_pretty.rb'
338
+ - 'test/unit/formatters/test_simple_text.rb'
339
+ - 'test/unit/test_coordinator.rb'
340
+ - 'test/unit/test_deprecation_logger.rb'
341
+
342
+ # Offense count: 3
343
+ # Cop supports --auto-correct.
344
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
345
+ # SupportedStyles: compact, expanded
346
+ Style/EmptyMethod:
347
+ Exclude:
348
+ - 'lib/sshkit/formatters/dot.rb'
349
+ - 'lib/sshkit/host.rb'
350
+
351
+ # Offense count: 1
352
+ # Cop supports --auto-correct.
353
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
354
+ # SupportedStyles: format, sprintf, percent
355
+ Style/FormatString:
356
+ Exclude:
357
+ - 'lib/sshkit/formatters/pretty.rb'
358
+
359
+ # Offense count: 6
360
+ # Configuration parameters: AllowedVariables.
361
+ Style/GlobalVars:
362
+ Exclude:
363
+ - 'test/unit/test_coordinator.rb'
364
+
365
+ # Offense count: 7
366
+ # Configuration parameters: MinBodyLength.
367
+ Style/GuardClause:
368
+ Exclude:
369
+ - 'lib/sshkit/backends/connection_pool.rb'
370
+ - 'lib/sshkit/backends/netssh.rb'
371
+ - 'lib/sshkit/command.rb'
372
+ - 'lib/sshkit/formatters/pretty.rb'
373
+ - 'lib/sshkit/host.rb'
374
+ - 'lib/sshkit/runners/sequential.rb'
375
+ - 'test/helper.rb'
376
+
377
+ # Offense count: 33
378
+ # Cop supports --auto-correct.
379
+ # Configuration parameters: EnforcedStyle, SupportedStyles, UseHashRocketsWithSymbolValues, PreferHashRocketsForNonAlnumEndingSymbols.
380
+ # SupportedStyles: ruby19, hash_rockets, no_mixed_keys, ruby19_no_mixed_keys
381
+ Style/HashSyntax:
382
+ Exclude:
383
+ - 'Rakefile'
384
+ - 'lib/sshkit/color.rb'
385
+ - 'test/functional/backends/test_netssh.rb'
386
+ - 'test/unit/backends/test_abstract.rb'
387
+ - 'test/unit/backends/test_connection_pool.rb'
388
+ - 'test/unit/formatters/test_custom.rb'
389
+ - 'test/unit/test_configuration.rb'
390
+
391
+ # Offense count: 4
392
+ # Cop supports --auto-correct.
393
+ # Configuration parameters: MaxLineLength.
394
+ Style/IfUnlessModifier:
395
+ Exclude:
396
+ - 'lib/sshkit/backends/connection_pool.rb'
397
+ - 'lib/sshkit/backends/netssh/known_hosts.rb'
398
+ - 'lib/sshkit/configuration.rb'
399
+ - 'lib/sshkit/runners/sequential.rb'
400
+
401
+ # Offense count: 1
402
+ # Cop supports --auto-correct.
403
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
404
+ # SupportedStyles: line_count_dependent, lambda, literal
405
+ Style/Lambda:
406
+ Exclude:
407
+ - 'test/unit/backends/test_abstract.rb'
408
+
409
+ # Offense count: 1
410
+ # Cop supports --auto-correct.
411
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
412
+ # SupportedStyles: call, braces
413
+ Style/LambdaCall:
414
+ Exclude:
415
+ - 'lib/sshkit/command_map.rb'
416
+
417
+ # Offense count: 5
418
+ # Cop supports --auto-correct.
419
+ Style/LineEndConcatenation:
420
+ Exclude:
421
+ - 'lib/sshkit/backends/netssh.rb'
422
+ - 'test/unit/test_command.rb'
423
+
424
+ # Offense count: 3
425
+ # Cop supports --auto-correct.
426
+ Style/MethodCallWithoutArgsParentheses:
427
+ Exclude:
428
+ - 'test/unit/test_color.rb'
429
+ - 'test/unit/test_coordinator.rb'
430
+ - 'test/unit/test_mapping_interaction_handler.rb'
431
+
432
+ # Offense count: 1
433
+ # Cop supports --auto-correct.
434
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
435
+ # SupportedStyles: require_parentheses, require_no_parentheses, require_no_parentheses_except_multiline
436
+ Style/MethodDefParentheses:
437
+ Exclude:
438
+ - 'lib/sshkit/exception.rb'
439
+
440
+ # Offense count: 3
441
+ # Configuration parameters: SupportedStyles.
442
+ # SupportedStyles: snake_case, camelCase
443
+ Style/MethodName:
444
+ EnforcedStyle: snake_case
445
+ Exclude:
446
+ - 'test/unit/test_color.rb'
447
+
448
+ # Offense count: 1
449
+ # Cop supports --auto-correct.
450
+ Style/MutableConstant:
451
+ Exclude:
452
+ - 'Vagrantfile'
453
+
454
+ # Offense count: 1
455
+ # Cop supports --auto-correct.
456
+ # Configuration parameters: Strict.
457
+ Style/NumericLiterals:
458
+ MinDigits: 6
459
+
460
+ # Offense count: 1
461
+ # Cop supports --auto-correct.
462
+ # Configuration parameters: AutoCorrect, EnforcedStyle, SupportedStyles.
463
+ # SupportedStyles: predicate, comparison
464
+ Style/NumericPredicate:
465
+ Exclude:
466
+ - 'spec/**/*'
467
+ - 'lib/sshkit/command.rb'
468
+
469
+ # Offense count: 1
470
+ Style/OpMethod:
471
+ Exclude:
472
+ - 'lib/sshkit/host.rb'
473
+
474
+ # Offense count: 6
475
+ # Cop supports --auto-correct.
476
+ Style/ParallelAssignment:
477
+ Exclude:
478
+ - 'lib/sshkit/backends/netssh/known_hosts.rb'
479
+ - 'lib/sshkit/color.rb'
480
+ - 'lib/sshkit/command.rb'
481
+ - 'lib/sshkit/log_message.rb'
482
+ - 'test/helper.rb'
483
+
484
+ # Offense count: 1
485
+ # Cop supports --auto-correct.
486
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
487
+ # SupportedStyles: lower_case_q, upper_case_q
488
+ Style/PercentQLiterals:
489
+ Exclude:
490
+ - 'test/unit/test_command.rb'
491
+
492
+ # Offense count: 4
493
+ # Cop supports --auto-correct.
494
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
495
+ # SupportedStyles: short, verbose
496
+ Style/PreferredHashMethods:
497
+ Exclude:
498
+ - 'test/unit/test_host.rb'
499
+
500
+ # Offense count: 2
501
+ # Cop supports --auto-correct.
502
+ Style/RedundantBegin:
503
+ Exclude:
504
+ - 'test/unit/test_coordinator.rb'
505
+
506
+ # Offense count: 1
507
+ # Cop supports --auto-correct.
508
+ Style/RedundantParentheses:
509
+ Exclude:
510
+ - 'test/functional/backends/test_netssh.rb'
511
+
512
+ # Offense count: 2
513
+ # Cop supports --auto-correct.
514
+ # Configuration parameters: AllowMultipleReturnValues.
515
+ Style/RedundantReturn:
516
+ Exclude:
517
+ - 'lib/sshkit/command.rb'
518
+
519
+ # Offense count: 4
520
+ # Cop supports --auto-correct.
521
+ Style/RedundantSelf:
522
+ Exclude:
523
+ - 'lib/core_ext/hash.rb'
524
+ - 'lib/sshkit/command.rb'
525
+ - 'lib/sshkit/host.rb'
526
+
527
+ # Offense count: 1
528
+ # Cop supports --auto-correct.
529
+ Style/RescueModifier:
530
+ Exclude:
531
+ - 'lib/core_ext/hash.rb'
532
+
533
+ # Offense count: 2
534
+ # Cop supports --auto-correct.
535
+ # Configuration parameters: AllowAsExpressionSeparator.
536
+ Style/Semicolon:
537
+ Exclude:
538
+ - 'test/unit/backends/test_connection_pool.rb'
539
+ - 'test/unit/test_command_map.rb'
540
+
541
+ # Offense count: 2
542
+ # Cop supports --auto-correct.
543
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
544
+ # SupportedStyles: only_raise, only_fail, semantic
545
+ Style/SignalException:
546
+ Exclude:
547
+ - 'lib/sshkit/configuration.rb'
548
+ - 'lib/sshkit/host.rb'
549
+
550
+ # Offense count: 3
551
+ # Cop supports --auto-correct.
552
+ # Configuration parameters: AllowIfMethodIsEmpty.
553
+ Style/SingleLineMethods:
554
+ Exclude:
555
+ - 'lib/sshkit/backends/abstract.rb'
556
+
557
+ # Offense count: 476
558
+ # Cop supports --auto-correct.
559
+ # Configuration parameters: EnforcedStyle, SupportedStyles, ConsistentQuotesInMultiline.
560
+ # SupportedStyles: single_quotes, double_quotes
561
+ Style/StringLiterals:
562
+ Enabled: false
563
+
564
+ # Offense count: 3
565
+ # Cop supports --auto-correct.
566
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
567
+ # SupportedStyles: single_quotes, double_quotes
568
+ Style/StringLiteralsInInterpolation:
569
+ Exclude:
570
+ - 'lib/sshkit/command.rb'
571
+ - 'lib/sshkit/runners/parallel.rb'
572
+ - 'lib/sshkit/runners/sequential.rb'
573
+
574
+ # Offense count: 5
575
+ # Cop supports --auto-correct.
576
+ # Configuration parameters: MinSize, SupportedStyles.
577
+ # SupportedStyles: percent, brackets
578
+ Style/SymbolArray:
579
+ EnforcedStyle: brackets
580
+
581
+ # Offense count: 3
582
+ # Cop supports --auto-correct.
583
+ # Configuration parameters: EnforcedStyleForMultiline, SupportedStylesForMultiline.
584
+ # SupportedStylesForMultiline: comma, consistent_comma, no_comma
585
+ Style/TrailingCommaInLiteral:
586
+ Exclude:
587
+ - 'lib/sshkit/host.rb'
588
+ - 'test/unit/backends/test_netssh.rb'
589
+ - 'test/unit/test_configuration.rb'
590
+
591
+ # Offense count: 1
592
+ # Cop supports --auto-correct.
593
+ # Configuration parameters: ExactNameMatch, AllowPredicates, AllowDSLWriters, IgnoreClassMethods, Whitelist.
594
+ # Whitelist: to_ary, to_a, to_c, to_enum, to_h, to_hash, to_i, to_int, to_io, to_open, to_path, to_proc, to_r, to_regexp, to_str, to_s, to_sym
595
+ Style/TrivialAccessors:
596
+ Exclude:
597
+ - 'lib/sshkit/host.rb'
598
+
599
+ # Offense count: 1
600
+ # Cop supports --auto-correct.
601
+ Style/UnlessElse:
602
+ Exclude:
603
+ - 'lib/sshkit/backends/netssh.rb'
604
+
605
+ # Offense count: 1
606
+ # Cop supports --auto-correct.
607
+ Style/UnneededCapitalW:
608
+ Exclude:
609
+ - 'test/functional/backends/test_netssh.rb'
610
+
611
+ # Offense count: 3
612
+ # Cop supports --auto-correct.
613
+ Style/UnneededPercentQ:
614
+ Exclude:
615
+ - 'sshkit.gemspec'
616
+ - 'test/unit/test_command.rb'
617
+
618
+ # Offense count: 1
619
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
620
+ # SupportedStyles: snake_case, normalcase, non_integer
621
+ Style/VariableNumber:
622
+ Exclude:
623
+ - 'test/unit/backends/test_connection_pool.rb'
624
+
625
+ # Offense count: 2
626
+ # Cop supports --auto-correct.
627
+ Style/WhileUntilDo:
628
+ Exclude:
629
+ - 'lib/sshkit/backends/local.rb'
630
+
631
+ # Offense count: 1
632
+ # Cop supports --auto-correct.
633
+ # Configuration parameters: SupportedStyles, WordRegex.
634
+ # SupportedStyles: percent, brackets
635
+ Style/WordArray:
636
+ EnforcedStyle: percent
637
+ MinSize: 3
@@ -6,6 +6,9 @@ rvm:
6
6
  - 2.2
7
7
  - 2.1
8
8
  - 2.0
9
+ branches:
10
+ only:
11
+ - master
9
12
  matrix:
10
13
  include:
11
14
  # Run Danger only once, on 2.5
@@ -7,6 +7,12 @@ appear at the top.
7
7
 
8
8
  * Your contribution here!
9
9
 
10
+ ## [1.19.0][] (2019-06-30)
11
+
12
+ * [#455](https://github.com/capistrano/sshkit/pull/455): Ensure UUID of commands are stable in logging - [@lazyatom](https://github.com/lazyatom)
13
+ * [#453](https://github.com/capistrano/sshkit/pull/453): `as` and `within` now properly escape their user/group/path arguments, and the command nested within an `as` block is now properly escaped before passing to `sh -c`. In the unlikely case that you were manually escaping commands passed to SSHKit as a workaround, you will no longer need to do this. See [#458](https://github.com/capistrano/sshkit/issues/458) for examples of what has been fixed. - [@grosser](https://github.com/grosser)
14
+ * [#460](https://github.com/capistrano/sshkit/pull/460): Handle IPv6 addresses without port - [@will-in-wi](https://github.com/will-in-wi)
15
+
10
16
  ## [1.18.2][] (2019-02-03)
11
17
 
12
18
  * [#448](https://github.com/capistrano/sshkit/pull/448): Fix misbehaving connection eviction loop when disabling connection pooling - [Sebastian Cohnen](https://github.com/tisba)
@@ -758,7 +764,8 @@ version `0.0.5`.
758
764
 
759
765
  First release.
760
766
 
761
- [Unreleased]: https://github.com/capistrano/sshkit/compare/v1.18.2...HEAD
767
+ [Unreleased]: https://github.com/capistrano/sshkit/compare/v1.19.0...HEAD
768
+ [1.19.0]: https://github.com/capistrano/sshkit/compare/v1.18.2...v1.19.0
762
769
  [1.18.2]: https://github.com/capistrano/sshkit/compare/v1.18.1...v1.18.2
763
770
  [1.18.1]: https://github.com/capistrano/sshkit/compare/v1.18.0...v1.18.1
764
771
  [1.18.0]: https://github.com/capistrano/sshkit/compare/v1.17.0...v1.18.0
@@ -1,3 +1,5 @@
1
+ require 'shellwords'
2
+
1
3
  module SSHKit
2
4
 
3
5
  module Backend
@@ -81,12 +83,12 @@ module SSHKit
81
83
  def within(directory, &_block)
82
84
  (@pwd ||= []).push directory.to_s
83
85
  execute <<-EOTEST, verbosity: Logger::DEBUG
84
- if test ! -d #{File.join(@pwd)}
85
- then echo "Directory does not exist '#{File.join(@pwd)}'" 1>&2
86
+ if test ! -d #{File.join(@pwd).shellescape}
87
+ then echo "Directory does not exist '#{File.join(@pwd).shellescape}'" 1>&2
86
88
  false
87
89
  fi
88
- EOTEST
89
- yield
90
+ EOTEST
91
+ yield
90
92
  ensure
91
93
  @pwd.pop
92
94
  end
@@ -108,8 +110,8 @@ module SSHKit
108
110
  @group = nil
109
111
  end
110
112
  execute <<-EOTEST, verbosity: Logger::DEBUG
111
- if ! sudo -u #{@user} whoami > /dev/null
112
- then echo "You cannot switch to user '#{@user}' using sudo, please check the sudoers file" 1>&2
113
+ if ! sudo -u #{@user.to_s.shellescape} whoami > /dev/null
114
+ then echo "You cannot switch to user '#{@user.to_s.shellescape}' using sudo, please check the sudoers file" 1>&2
113
115
  false
114
116
  fi
115
117
  EOTEST
@@ -1,5 +1,6 @@
1
1
  require 'digest/sha1'
2
2
  require 'securerandom'
3
+ require 'shellwords'
3
4
 
4
5
  # @author Lee Hambley
5
6
  module SSHKit
@@ -9,7 +10,7 @@ module SSHKit
9
10
 
10
11
  Failed = Class.new(SSHKit::StandardError)
11
12
 
12
- attr_reader :command, :args, :options, :started_at, :started, :exit_status, :full_stdout, :full_stderr
13
+ attr_reader :command, :args, :options, :started_at, :started, :exit_status, :full_stdout, :full_stderr, :uuid
13
14
 
14
15
  # Initialize a new Command object
15
16
  #
@@ -25,6 +26,7 @@ module SSHKit
25
26
  @args = args
26
27
  @options.symbolize_keys!
27
28
  @stdout, @stderr, @full_stdout, @full_stderr = String.new, String.new, String.new, String.new
29
+ @uuid = Digest::SHA1.hexdigest(SecureRandom.random_bytes(10))[0..7]
28
30
  end
29
31
 
30
32
  def complete?
@@ -41,10 +43,6 @@ module SSHKit
41
43
  @started = new_started
42
44
  end
43
45
 
44
- def uuid
45
- @uuid ||= Digest::SHA1.hexdigest(SecureRandom.random_bytes(10))[0..7]
46
- end
47
-
48
46
  def success?
49
47
  exit_status.nil? ? false : exit_status.to_i == 0
50
48
  end
@@ -145,7 +143,7 @@ module SSHKit
145
143
 
146
144
  def within(&_block)
147
145
  return yield unless options[:in]
148
- sprintf("cd #{options[:in]} && %s", yield)
146
+ "cd #{options[:in].shellescape} && #{yield}"
149
147
  end
150
148
 
151
149
  def environment_hash
@@ -161,28 +159,30 @@ module SSHKit
161
159
  end
162
160
 
163
161
  def with(&_block)
164
- return yield unless environment_hash.any?
165
- "( export #{environment_string} ; #{yield} )"
162
+ env_string = environment_string
163
+ return yield if env_string.empty?
164
+ "( export #{env_string} ; #{yield} )"
166
165
  end
167
166
 
168
167
  def user(&_block)
169
168
  return yield unless options[:user]
170
- "sudo -u #{options[:user]} #{environment_string + " " unless environment_string.empty?}-- sh -c '#{yield}'"
169
+ env_string = environment_string
170
+ "sudo -u #{options[:user].to_s.shellescape} #{env_string + " " unless env_string.empty?}-- sh -c #{yield.shellescape}"
171
171
  end
172
172
 
173
173
  def in_background(&_block)
174
174
  return yield unless options[:run_in_background]
175
- sprintf("( nohup %s > /dev/null & )", yield)
175
+ "( nohup #{yield} > /dev/null & )"
176
176
  end
177
177
 
178
178
  def umask(&_block)
179
179
  return yield unless SSHKit.config.umask
180
- sprintf("umask #{SSHKit.config.umask} && %s", yield)
180
+ "umask #{SSHKit.config.umask} && #{yield}"
181
181
  end
182
182
 
183
183
  def group(&_block)
184
184
  return yield unless options[:group]
185
- %Q(sg #{options[:group]} -c "#{yield}")
185
+ "sg #{options[:group].to_s.shellescape} -c #{yield.shellescape}"
186
186
  # We could also use the so-called heredoc format perhaps:
187
187
  #"newgrp #{options[:group]} <<EOC \\\"%s\\\" EOC" % %Q{#{yield}}
188
188
  end
@@ -151,18 +151,20 @@ module SSHKit
151
151
  # @private
152
152
  # :nodoc:
153
153
  class IPv6HostWithPortParser < SimpleHostParser
154
+ IPV6_REGEX = /\[([a-fA-F0-9:]+)\](?:\:(\d+))?/
154
155
 
155
156
  def self.suitable?(host_string)
156
- host_string.match(/[a-fA-F0-9:]+:\d+/)
157
+ host_string.match(IPV6_REGEX)
157
158
  end
158
159
 
159
160
  def port
160
- @host_string.split(':').last.to_i
161
+ prt = @host_string.match(IPV6_REGEX)[2]
162
+ prt = prt.to_i unless prt.nil?
163
+ prt
161
164
  end
162
165
 
163
166
  def hostname
164
- @host_string.gsub!(/\[|\]/, '')
165
- @host_string.split(':')[0..-2].join(':')
167
+ @host_string.match(IPV6_REGEX)[1]
166
168
  end
167
169
 
168
170
  end
@@ -1,3 +1,3 @@
1
1
  module SSHKit
2
- VERSION = "1.18.2".freeze
2
+ VERSION = "1.19.0".freeze
3
3
  end
@@ -38,7 +38,7 @@ module SSHKit
38
38
  "Command: /usr/bin/env ls -l\n",
39
39
  "Command: if test ! -d /tmp; then echo \"Directory does not exist '/tmp'\" 1>&2; false; fi\n",
40
40
  "Command: if ! sudo -u root whoami > /dev/null; then echo \"You cannot switch to user 'root' using sudo, please check the sudoers file\" 1>&2; false; fi\n",
41
- "Command: cd /tmp && ( export RAILS_ENV=\"production\" ; sudo -u root RAILS_ENV=\"production\" -- sh -c '/usr/bin/env touch restart.txt' )\n"
41
+ "Command: cd /tmp && ( export RAILS_ENV=\"production\" ; sudo -u root RAILS_ENV=\"production\" -- sh -c /usr/bin/env\\ touch\\ restart.txt )\n"
42
42
  ], command_lines
43
43
  end
44
44
 
@@ -82,7 +82,7 @@ module SSHKit
82
82
  command_lines = @output.lines.select { |line| line.start_with?('Command:') }
83
83
  assert_equal [
84
84
  "Command: if ! sudo -u root whoami > /dev/null; then echo \"You cannot switch to user 'root' using sudo, please check the sudoers file\" 1>&2; false; fi\n",
85
- "Command: sudo -u root -- sh -c 'sg admin -c \"/usr/bin/env touch restart.txt\"'\n"
85
+ "Command: sudo -u root -- sh -c sg\\ admin\\ -c\\ /usr/bin/env\\\\\\ touch\\\\\\ restart.txt\n"
86
86
  ], command_lines
87
87
  end
88
88
 
@@ -96,21 +96,18 @@ module SSHKit
96
96
  end
97
97
 
98
98
  def test_ssh_option_merge
99
- verify_host_opt = if Net::SSH::Version::MAJOR >= 5
100
- { verify_host_key: :always }
101
- else
102
- { paranoid: true }
103
- end
104
- a_host.ssh_options = verify_host_opt
99
+ keepalive_opt = { keepalive: true }
100
+ test_host = a_host.dup
101
+ test_host.ssh_options = keepalive_opt
105
102
  host_ssh_options = {}
106
103
  SSHKit::Backend::Netssh.config.ssh_options = { forward_agent: false }
107
- Netssh.new(a_host) do |host|
104
+ Netssh.new(test_host) do |host|
108
105
  capture(:uname)
109
106
  host_ssh_options = host.ssh_options
110
107
  end.run
111
- assert_equal [:forward_agent, *verify_host_opt.keys, :known_hosts, :logger, :password_prompt].sort, host_ssh_options.keys.sort
108
+ assert_equal [:forward_agent, *keepalive_opt.keys, :known_hosts, :logger, :password_prompt].sort, host_ssh_options.keys.sort
112
109
  assert_equal false, host_ssh_options[:forward_agent]
113
- assert_equal verify_host_opt.values.first, host_ssh_options[verify_host_opt.keys.first]
110
+ assert_equal keepalive_opt.values.first, host_ssh_options[keepalive_opt.keys.first]
114
111
  assert_instance_of SSHKit::Backend::Netssh::KnownHosts, host_ssh_options[:known_hosts]
115
112
  end
116
113
 
@@ -46,10 +46,19 @@ class VagrantWrapper
46
46
  user: vm['user'] || 'vagrant',
47
47
  hostname: vm['hostname'] || 'localhost',
48
48
  port: vm['port'] || '22',
49
- password: vm['password'] || 'vagrant'
49
+ password: vm['password'] || 'vagrant',
50
+ ssh_options: host_verify_options
50
51
  }
51
52
 
52
53
  SSHKit::Host.new(host_options)
53
54
  end
55
+
56
+ def host_verify_options
57
+ if Net::SSH::Version::MAJOR >= 5
58
+ { verify_host_key: :never }
59
+ else
60
+ { paranoid: false }
61
+ end
62
+ end
54
63
  end
55
64
  end
@@ -51,13 +51,13 @@ module SSHKit
51
51
  def test_double_quotes_are_escaped_in_env
52
52
  SSHKit.config = nil
53
53
  c = Command.new(:rails, 'server', env: {foo: 'asdf"hjkl'})
54
- assert_equal %{( export FOO="asdf\\\"hjkl" ; /usr/bin/env rails server )}, c.to_command
54
+ assert_equal %{( export FOO="asdf\\"hjkl" ; /usr/bin/env rails server )}, c.to_command
55
55
  end
56
56
 
57
57
  def test_percentage_symbol_handled_in_env
58
58
  SSHKit.config = nil
59
59
  c = Command.new(:rails, 'server', env: {foo: 'asdf%hjkl'}, user: "anotheruser")
60
- assert_equal %{( export FOO="asdf%hjkl" ; sudo -u anotheruser FOO=\"asdf%hjkl\" -- sh -c '/usr/bin/env rails server' )}, c.to_command
60
+ assert_equal %{( export FOO="asdf%hjkl" ; sudo -u anotheruser FOO=\"asdf%hjkl\" -- sh -c /usr/bin/env\\ rails\\ server )}, c.to_command
61
61
  end
62
62
 
63
63
  def test_including_the_env_doesnt_addressively_escape
@@ -84,6 +84,11 @@ module SSHKit
84
84
  assert_equal "cd /opt/sites && /usr/bin/env ls -l", c.to_command
85
85
  end
86
86
 
87
+ def test_working_in_a_given_weird_directory
88
+ c = Command.new(:ls, '-l', in: "/opt/sites and stuff")
89
+ assert_equal "cd /opt/sites\\ and\\ stuff && /usr/bin/env ls -l", c.to_command
90
+ end
91
+
87
92
  def test_working_in_a_given_directory_with_env
88
93
  c = Command.new(:ls, '-l', in: "/opt/sites", env: {a: :b})
89
94
  assert_equal %{cd /opt/sites && ( export A="b" ; /usr/bin/env ls -l )}, c.to_command
@@ -97,17 +102,27 @@ module SSHKit
97
102
 
98
103
  def test_working_as_a_given_user
99
104
  c = Command.new(:whoami, user: :anotheruser)
100
- assert_equal "sudo -u anotheruser -- sh -c '/usr/bin/env whoami'", c.to_command
105
+ assert_equal "sudo -u anotheruser -- sh -c /usr/bin/env\\ whoami", c.to_command
106
+ end
107
+
108
+ def test_working_as_a_given_weird_user
109
+ c = Command.new(:whoami, user: "mr space |")
110
+ assert_equal "sudo -u mr\\ space\\ \\| -- sh -c /usr/bin/env\\ whoami", c.to_command
101
111
  end
102
112
 
103
113
  def test_working_as_a_given_group
104
114
  c = Command.new(:whoami, group: :devvers)
105
- assert_equal 'sg devvers -c "/usr/bin/env whoami"', c.to_command
115
+ assert_equal 'sg devvers -c /usr/bin/env\\ whoami', c.to_command
116
+ end
117
+
118
+ def test_working_as_a_given_weird_group
119
+ c = Command.new(:whoami, group: "space | group")
120
+ assert_equal "sg space\\ \\|\\ group -c /usr/bin/env\\ whoami", c.to_command
106
121
  end
107
122
 
108
123
  def test_working_as_a_given_user_and_group
109
124
  c = Command.new(:whoami, user: :anotheruser, group: :devvers)
110
- assert_equal %Q(sudo -u anotheruser -- sh -c 'sg devvers -c "/usr/bin/env whoami"'), c.to_command
125
+ assert_equal %Q(sudo -u anotheruser -- sh -c sg\\ devvers\\ -c\\ /usr/bin/env\\\\\\ whoami), c.to_command
111
126
  end
112
127
 
113
128
  def test_umask
@@ -125,13 +140,13 @@ module SSHKit
125
140
  def test_umask_with_working_directory_and_user
126
141
  SSHKit.config.umask = '007'
127
142
  c = Command.new(:touch, 'somefile', in: '/var', user: 'alice')
128
- assert_equal "cd /var && umask 007 && sudo -u alice -- sh -c '/usr/bin/env touch somefile'", c.to_command
143
+ assert_equal "cd /var && umask 007 && sudo -u alice -- sh -c /usr/bin/env\\ touch\\ somefile", c.to_command
129
144
  end
130
145
 
131
146
  def test_umask_with_env_and_working_directory_and_user
132
147
  SSHKit.config.umask = '007'
133
148
  c = Command.new(:touch, 'somefile', user: 'bob', env: {a: 'b'}, in: '/var')
134
- assert_equal %{cd /var && umask 007 && ( export A="b" ; sudo -u bob A="b" -- sh -c '/usr/bin/env touch somefile' )}, c.to_command
149
+ assert_equal %{cd /var && umask 007 && ( export A="b" ; sudo -u bob A="b" -- sh -c /usr/bin/env\\ touch\\ somefile )}, c.to_command
135
150
  end
136
151
 
137
152
  def test_verbosity_defaults_to_logger_info
@@ -245,5 +260,10 @@ module SSHKit
245
260
  assert_equal "whoami exit status: 1\nwhoami stdout: Nothing written\nwhoami stderr: Nothing written\n", error.message
246
261
  end
247
262
 
263
+ def test_shares_same_uuid_before_and_after_redaction
264
+ command = Command.new(:whoami)
265
+ command_with_redaction = command.with_redaction
266
+ assert_equal command.uuid, command_with_redaction.uuid, "UUID should be stable before and after redaction"
267
+ end
248
268
  end
249
269
  end
@@ -56,6 +56,11 @@ module SSHKit
56
56
  assert_equal '1fff:0:a88:85a3::ac1f', h.hostname
57
57
  end
58
58
 
59
+ def test_does_not_confuse_ipv6_hosts_without_port_specification
60
+ h = Host.new '[2001:db8:85a3:8d3:1319:8a2e:370:7348]'
61
+ assert_equal '2001:db8:85a3:8d3:1319:8a2e:370:7348', h.hostname
62
+ end
63
+
59
64
  def testing_host_casting_to_a_string
60
65
  assert_equal "example.com", Host.new('user@example.com:1234').to_s
61
66
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sshkit
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.18.2
4
+ version: 1.19.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lee Hambley
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2019-02-03 00:00:00.000000000 Z
12
+ date: 2019-07-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: net-ssh
@@ -181,6 +181,8 @@ extensions: []
181
181
  extra_rdoc_files: []
182
182
  files:
183
183
  - ".gitignore"
184
+ - ".rubocop.yml"
185
+ - ".rubocop_todo.yml"
184
186
  - ".travis.yml"
185
187
  - ".yardopts"
186
188
  - BREAKING_API_WISHLIST.md
@@ -284,7 +286,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
284
286
  - !ruby/object:Gem::Version
285
287
  version: '0'
286
288
  requirements: []
287
- rubygems_version: 3.0.1
289
+ rubygems_version: 3.0.4
288
290
  signing_key:
289
291
  specification_version: 4
290
292
  summary: SSHKit makes it easy to write structured, testable SSH commands in Ruby