onceover 3.2.8 → 3.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitmodules +2 -2
- data/.rubocop.yml +73 -59
- data/Rakefile +3 -7
- data/features/init.feature +4 -5
- data/features/run.feature +13 -4
- data/features/show.feature +28 -0
- data/features/step_definitions/common.rb +7 -4
- data/features/step_definitions/init.rb +4 -0
- data/features/step_definitions/run.rb +9 -0
- data/features/support/command_helper.rb +1 -1
- data/features/support/controlrepo_helper.rb +17 -3
- data/lib/onceover/controlrepo.rb +8 -4
- data/lib/onceover/logger.rb +1 -1
- data/lib/onceover/testconfig.rb +18 -2
- data/onceover.gemspec +2 -1
- data/spec/fixtures/{controlrepo_basic → controlrepos/basic}/Puppetfile +3 -3
- data/spec/fixtures/{controlrepo_basic → controlrepos/basic}/environment.conf +0 -0
- data/spec/fixtures/{controlrepo_basic → controlrepos/basic}/hieradata/common.yaml +0 -0
- data/spec/fixtures/{controlrepo_basic → controlrepos/basic}/hieradata/nodes/example-node.yaml +0 -0
- data/spec/fixtures/{controlrepo_basic → controlrepos/basic}/manifests/site.pp +0 -0
- data/spec/fixtures/{controlrepo_basic → controlrepos/basic}/site/profile/manifests/base.pp +0 -0
- data/spec/fixtures/{controlrepo_basic → controlrepos/basic}/site/profile/manifests/example.pp +0 -0
- data/spec/fixtures/{controlrepo_basic → controlrepos/basic}/site/role/manifests/database_server.pp +0 -0
- data/spec/fixtures/{controlrepo_basic → controlrepos/basic}/site/role/manifests/example.pp +0 -0
- data/spec/fixtures/{controlrepo_basic → controlrepos/basic}/site/role/manifests/webserver.pp +0 -0
- data/spec/fixtures/controlrepos/control_branch/Puppetfile +18 -0
- data/spec/fixtures/{controlrepo_minimal → controlrepos/control_branch}/environment.conf +0 -0
- data/spec/fixtures/controlrepos/minimal/environment.conf +2 -0
- data/spec/onceover/controlrepo_spec.rb +1 -1
- data/templates/Gemfile.erb +0 -2
- metadata +17 -14
- data/spec/acceptance/controlrepo_spec.rb +0 -37
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 5e3d01548767f7131506d6a421d7c87d38fbd85b
|
|
4
|
+
data.tar.gz: 17bb3e2bf387bd4dbb7032f2dddb8f0ed23b0215
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e8c006df260af3879470b5a9593ef00b02ca76746fadf95cb3d923b52a254b12e652c51f2cec2f116db325c8dbe32af2f40d124044acbdfa627e1a17d9a53490
|
|
7
|
+
data.tar.gz: 6941572c2ab56aaec5c572f8fa786d3b4bd6437c6cb8bf4efd4c90e9350d3299df2c33e470cb241a8b5740aeddad87469674243c231d6dea4dc88cf828ed50d0
|
data/.gitmodules
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
[submodule "spec/fixtures/puppet_controlrepo"]
|
|
2
|
-
path = spec/fixtures/puppet_controlrepo
|
|
1
|
+
[submodule "spec/fixtures/controlrepos/puppet_controlrepo"]
|
|
2
|
+
path = spec/fixtures/controlrepos/puppet_controlrepo
|
|
3
3
|
url = https://github.com/dylanratcliffe/puppet_controlrepo.git
|
|
4
4
|
branch = production
|
data/.rubocop.yml
CHANGED
|
@@ -61,7 +61,7 @@ Lint/AssignmentInCondition:
|
|
|
61
61
|
Enabled: false
|
|
62
62
|
|
|
63
63
|
# DISABLED - not useful
|
|
64
|
-
|
|
64
|
+
Layout/SpaceBeforeComment:
|
|
65
65
|
Enabled: false
|
|
66
66
|
|
|
67
67
|
# DISABLED - not useful
|
|
@@ -81,6 +81,9 @@ Style/RedundantSelf:
|
|
|
81
81
|
Metrics/MethodLength:
|
|
82
82
|
Enabled: false
|
|
83
83
|
|
|
84
|
+
Metrics/BlockLength:
|
|
85
|
+
Enabled: false
|
|
86
|
+
|
|
84
87
|
# DISABLED - not useful
|
|
85
88
|
Style/WhileUntilModifier:
|
|
86
89
|
Enabled: false
|
|
@@ -90,8 +93,9 @@ Lint/AmbiguousRegexpLiteral:
|
|
|
90
93
|
Enabled: false
|
|
91
94
|
|
|
92
95
|
# DISABLED
|
|
93
|
-
|
|
96
|
+
Security/Eval:
|
|
94
97
|
Enabled: false
|
|
98
|
+
|
|
95
99
|
# DISABLED
|
|
96
100
|
Lint/BlockAlignment:
|
|
97
101
|
Enabled: false
|
|
@@ -140,7 +144,7 @@ Lint/UselessAssignment:
|
|
|
140
144
|
Lint/Void:
|
|
141
145
|
Enabled: false
|
|
142
146
|
|
|
143
|
-
|
|
147
|
+
Layout/AccessModifierIndentation:
|
|
144
148
|
Enabled: false
|
|
145
149
|
|
|
146
150
|
Style/AccessorMethodName:
|
|
@@ -149,13 +153,16 @@ Style/AccessorMethodName:
|
|
|
149
153
|
Style/Alias:
|
|
150
154
|
Enabled: false
|
|
151
155
|
|
|
152
|
-
|
|
156
|
+
Layout/AlignArray:
|
|
157
|
+
Enabled: false
|
|
158
|
+
|
|
159
|
+
Layout/AlignHash:
|
|
153
160
|
Enabled: false
|
|
154
161
|
|
|
155
|
-
|
|
162
|
+
Layout/AlignParameters:
|
|
156
163
|
Enabled: false
|
|
157
164
|
|
|
158
|
-
|
|
165
|
+
Layout/IndentHeredoc:
|
|
159
166
|
Enabled: false
|
|
160
167
|
|
|
161
168
|
Metrics/BlockNesting:
|
|
@@ -173,7 +180,16 @@ Style/BracesAroundHashParameters:
|
|
|
173
180
|
Style/CaseEquality:
|
|
174
181
|
Enabled: false
|
|
175
182
|
|
|
176
|
-
Style/
|
|
183
|
+
Style/SymbolArray:
|
|
184
|
+
Enabled: false
|
|
185
|
+
|
|
186
|
+
Style/EmptyCaseCondition:
|
|
187
|
+
Enabled: false
|
|
188
|
+
|
|
189
|
+
Layout/CaseIndentation:
|
|
190
|
+
Enabled: false
|
|
191
|
+
|
|
192
|
+
Layout/MultilineMethodCallBraceLayout:
|
|
177
193
|
Enabled: false
|
|
178
194
|
|
|
179
195
|
Style/CharacterLiteral:
|
|
@@ -208,65 +224,65 @@ Style/WordArray:
|
|
|
208
224
|
Style/UnneededPercentQ:
|
|
209
225
|
Enabled: false
|
|
210
226
|
|
|
211
|
-
|
|
227
|
+
Layout/Tab:
|
|
212
228
|
Enabled: false
|
|
213
229
|
|
|
214
|
-
|
|
230
|
+
Layout/SpaceBeforeSemicolon:
|
|
215
231
|
Enabled: false
|
|
216
232
|
|
|
217
|
-
|
|
233
|
+
Layout/TrailingBlankLines:
|
|
218
234
|
Enabled: false
|
|
219
235
|
|
|
220
|
-
|
|
236
|
+
Layout/SpaceInsideBlockBraces:
|
|
221
237
|
Enabled: false
|
|
222
238
|
|
|
223
|
-
|
|
239
|
+
Layout/SpaceInsideBrackets:
|
|
224
240
|
Enabled: false
|
|
225
241
|
|
|
226
|
-
|
|
242
|
+
Layout/SpaceInsideHashLiteralBraces:
|
|
227
243
|
Enabled: false
|
|
228
244
|
|
|
229
|
-
|
|
245
|
+
Layout/SpaceInsideParens:
|
|
230
246
|
Enabled: false
|
|
231
247
|
|
|
232
|
-
|
|
248
|
+
Layout/LeadingCommentSpace:
|
|
233
249
|
Enabled: false
|
|
234
250
|
|
|
235
|
-
|
|
251
|
+
Layout/SpaceAfterColon:
|
|
236
252
|
Enabled: false
|
|
237
253
|
|
|
238
|
-
|
|
254
|
+
Layout/SpaceAfterComma:
|
|
239
255
|
Enabled: false
|
|
240
256
|
|
|
241
|
-
|
|
257
|
+
Layout/SpaceAroundKeyword:
|
|
242
258
|
Enabled: false
|
|
243
259
|
|
|
244
|
-
|
|
260
|
+
Layout/SpaceAfterMethodName:
|
|
245
261
|
Enabled: false
|
|
246
262
|
|
|
247
|
-
|
|
263
|
+
Layout/SpaceAfterNot:
|
|
248
264
|
Enabled: false
|
|
249
265
|
|
|
250
|
-
|
|
266
|
+
Layout/SpaceAfterSemicolon:
|
|
251
267
|
Enabled: false
|
|
252
268
|
|
|
253
|
-
|
|
269
|
+
Layout/SpaceAroundEqualsInParameterDefault:
|
|
254
270
|
Enabled: false
|
|
255
271
|
|
|
256
|
-
|
|
272
|
+
Layout/SpaceAroundOperators:
|
|
257
273
|
Enabled: false
|
|
258
274
|
|
|
259
|
-
|
|
275
|
+
Layout/SpaceBeforeBlockBraces:
|
|
260
276
|
Enabled: false
|
|
261
277
|
|
|
262
|
-
|
|
278
|
+
Layout/SpaceBeforeComma:
|
|
263
279
|
Enabled: false
|
|
264
280
|
|
|
265
281
|
|
|
266
282
|
Style/CollectionMethods:
|
|
267
283
|
Enabled: false
|
|
268
284
|
|
|
269
|
-
|
|
285
|
+
Layout/CommentIndentation:
|
|
270
286
|
Enabled: false
|
|
271
287
|
|
|
272
288
|
Style/ColonMethodCall:
|
|
@@ -287,10 +303,10 @@ Style/Documentation:
|
|
|
287
303
|
Style/DefWithParentheses:
|
|
288
304
|
Enabled: false
|
|
289
305
|
|
|
290
|
-
Style/
|
|
306
|
+
Style/PreferredHashMethods:
|
|
291
307
|
Enabled: false
|
|
292
308
|
|
|
293
|
-
|
|
309
|
+
Layout/DotPosition:
|
|
294
310
|
Enabled: false
|
|
295
311
|
|
|
296
312
|
# DISABLED - used for converting to bool
|
|
@@ -300,25 +316,25 @@ Style/DoubleNegation:
|
|
|
300
316
|
Style/EachWithObject:
|
|
301
317
|
Enabled: false
|
|
302
318
|
|
|
303
|
-
|
|
319
|
+
Layout/EmptyLineBetweenDefs:
|
|
304
320
|
Enabled: false
|
|
305
321
|
|
|
306
|
-
|
|
322
|
+
Layout/IndentArray:
|
|
307
323
|
Enabled: false
|
|
308
324
|
|
|
309
|
-
|
|
325
|
+
Layout/IndentHash:
|
|
310
326
|
Enabled: false
|
|
311
327
|
|
|
312
|
-
|
|
328
|
+
Layout/IndentationConsistency:
|
|
313
329
|
Enabled: false
|
|
314
330
|
|
|
315
|
-
|
|
331
|
+
Layout/IndentationWidth:
|
|
316
332
|
Enabled: false
|
|
317
333
|
|
|
318
|
-
|
|
334
|
+
Layout/EmptyLines:
|
|
319
335
|
Enabled: false
|
|
320
336
|
|
|
321
|
-
|
|
337
|
+
Layout/EmptyLinesAroundAccessModifier:
|
|
322
338
|
Enabled: false
|
|
323
339
|
|
|
324
340
|
Style/EmptyLiteral:
|
|
@@ -327,7 +343,7 @@ Style/EmptyLiteral:
|
|
|
327
343
|
Metrics/LineLength:
|
|
328
344
|
Enabled: false
|
|
329
345
|
|
|
330
|
-
Style/
|
|
346
|
+
Style/MethodCallWithoutArgsParentheses:
|
|
331
347
|
Enabled: false
|
|
332
348
|
|
|
333
349
|
Style/MethodDefParentheses:
|
|
@@ -336,7 +352,7 @@ Style/MethodDefParentheses:
|
|
|
336
352
|
Style/LineEndConcatenation:
|
|
337
353
|
Enabled: false
|
|
338
354
|
|
|
339
|
-
|
|
355
|
+
Layout/TrailingWhitespace:
|
|
340
356
|
Enabled: false
|
|
341
357
|
|
|
342
358
|
Style/StringLiterals:
|
|
@@ -487,7 +503,7 @@ Metrics/ParameterLists:
|
|
|
487
503
|
Lint/RequireParentheses:
|
|
488
504
|
Enabled: false
|
|
489
505
|
|
|
490
|
-
|
|
506
|
+
Layout/SpaceBeforeFirstArg:
|
|
491
507
|
Enabled: false
|
|
492
508
|
|
|
493
509
|
Style/ModuleFunction:
|
|
@@ -508,7 +524,7 @@ Metrics/PerceivedComplexity:
|
|
|
508
524
|
Style/SymbolProc:
|
|
509
525
|
Enabled: false
|
|
510
526
|
|
|
511
|
-
|
|
527
|
+
Layout/SpaceInsideRangeLiteral:
|
|
512
528
|
Enabled: false
|
|
513
529
|
|
|
514
530
|
Style/InfiniteLoop:
|
|
@@ -520,7 +536,7 @@ Style/BarePercentLiterals:
|
|
|
520
536
|
Style/PercentQLiterals:
|
|
521
537
|
Enabled: false
|
|
522
538
|
|
|
523
|
-
|
|
539
|
+
Layout/MultilineBlockLayout:
|
|
524
540
|
Enabled: false
|
|
525
541
|
|
|
526
542
|
Metrics/AbcSize:
|
|
@@ -532,22 +548,22 @@ Style/MutableConstant:
|
|
|
532
548
|
Style/BlockDelimiters:
|
|
533
549
|
Enabled: false
|
|
534
550
|
|
|
535
|
-
|
|
551
|
+
Layout/EmptyLinesAroundClassBody:
|
|
536
552
|
Enabled: false
|
|
537
553
|
|
|
538
554
|
Style/ConditionalAssignment:
|
|
539
555
|
Enabled: false
|
|
540
556
|
|
|
541
|
-
|
|
557
|
+
Layout/ExtraSpacing:
|
|
542
558
|
Enabled: false
|
|
543
559
|
|
|
544
|
-
|
|
560
|
+
Layout/EmptyLinesAroundBlockBody:
|
|
545
561
|
Enabled: false
|
|
546
562
|
|
|
547
|
-
|
|
563
|
+
Layout/EmptyLinesAroundModuleBody:
|
|
548
564
|
Enabled: false
|
|
549
565
|
|
|
550
|
-
|
|
566
|
+
Layout/MultilineOperationIndentation:
|
|
551
567
|
Enabled: false
|
|
552
568
|
|
|
553
569
|
Style/EmptyElse:
|
|
@@ -556,13 +572,13 @@ Style/EmptyElse:
|
|
|
556
572
|
Style/StringLiteralsInInterpolation:
|
|
557
573
|
Enabled: false
|
|
558
574
|
|
|
559
|
-
|
|
575
|
+
Layout/MultilineMethodCallIndentation:
|
|
560
576
|
Enabled: false
|
|
561
577
|
|
|
562
578
|
Metrics/ModuleLength:
|
|
563
579
|
Enabled: false
|
|
564
580
|
|
|
565
|
-
|
|
581
|
+
Layout/EmptyLinesAroundMethodBody:
|
|
566
582
|
Enabled: false
|
|
567
583
|
|
|
568
584
|
Lint/IneffectiveAccessModifier:
|
|
@@ -571,28 +587,28 @@ Lint/IneffectiveAccessModifier:
|
|
|
571
587
|
Performance/StringReplacement:
|
|
572
588
|
Enabled: false
|
|
573
589
|
|
|
574
|
-
|
|
590
|
+
Layout/ClosingParenthesisIndentation:
|
|
575
591
|
Enabled: false
|
|
576
592
|
|
|
577
593
|
Style/UnneededInterpolation:
|
|
578
594
|
Enabled: false
|
|
579
595
|
|
|
580
|
-
|
|
596
|
+
Layout/ElseAlignment:
|
|
581
597
|
Enabled: false
|
|
582
598
|
|
|
583
599
|
Style/FrozenStringLiteralComment:
|
|
584
600
|
Enabled: false
|
|
585
601
|
|
|
586
|
-
|
|
602
|
+
Layout/FirstParameterIndentation:
|
|
587
603
|
Enabled: false
|
|
588
604
|
|
|
589
605
|
Style/IfInsideElse:
|
|
590
606
|
Enabled: false
|
|
591
607
|
|
|
592
|
-
|
|
608
|
+
Layout/IndentAssignment:
|
|
593
609
|
Enabled: false
|
|
594
610
|
|
|
595
|
-
|
|
611
|
+
Layout/SpaceAroundBlockParameters:
|
|
596
612
|
Enabled: false
|
|
597
613
|
|
|
598
614
|
Style/ParallelAssignment:
|
|
@@ -616,7 +632,7 @@ Performance/Casecmp:
|
|
|
616
632
|
Lint/NestedMethodDefinition:
|
|
617
633
|
Enabled: false
|
|
618
634
|
|
|
619
|
-
|
|
635
|
+
Layout/SpaceInsideStringInterpolation:
|
|
620
636
|
Enabled: false
|
|
621
637
|
|
|
622
638
|
Performance/RedundantMerge:
|
|
@@ -637,7 +653,7 @@ Performance/Count:
|
|
|
637
653
|
Style/NestedParenthesizedCalls:
|
|
638
654
|
Enabled: false
|
|
639
655
|
|
|
640
|
-
|
|
656
|
+
Layout/RescueEnsureAlignment:
|
|
641
657
|
Enabled: false
|
|
642
658
|
|
|
643
659
|
Lint/DuplicateMethods:
|
|
@@ -649,9 +665,6 @@ Performance/RangeInclude:
|
|
|
649
665
|
Style/TrailingUnderscoreVariable:
|
|
650
666
|
Enabled: false
|
|
651
667
|
|
|
652
|
-
Lint/LiteralInInterpolation:
|
|
653
|
-
Enabled: false
|
|
654
|
-
|
|
655
668
|
Performance/DoubleStartEndWith:
|
|
656
669
|
Enabled: false
|
|
657
670
|
|
|
@@ -661,7 +674,7 @@ Performance/RedundantSortBy:
|
|
|
661
674
|
Performance/TimesMap:
|
|
662
675
|
Enabled: false
|
|
663
676
|
|
|
664
|
-
|
|
677
|
+
Layout/InitialIndentation:
|
|
665
678
|
Enabled: false
|
|
666
679
|
|
|
667
680
|
Style/StructInheritance:
|
|
@@ -676,4 +689,5 @@ Style/IfUnlessModifierOfIfUnless:
|
|
|
676
689
|
Style/ZeroLengthPredicate:
|
|
677
690
|
Enabled: false
|
|
678
691
|
|
|
679
|
-
|
|
692
|
+
Bundler/OrderedGems:
|
|
693
|
+
Enabled: false
|
data/Rakefile
CHANGED
|
@@ -20,16 +20,13 @@ desc "Run unit tests"
|
|
|
20
20
|
task rspec_unit_tests: [:syntax, :rubocop, :spec]
|
|
21
21
|
|
|
22
22
|
desc "Run acceptance cucumber tests"
|
|
23
|
-
task cucumber_acceptance_tests: [:syntax, :rubocop, :cucumber]
|
|
24
|
-
|
|
25
|
-
desc "Run acceptance rspec tests"
|
|
26
|
-
task rspec_acceptance_tests: [:syntax, :rubocop, :fixtures, :acceptance]
|
|
23
|
+
task cucumber_acceptance_tests: [:syntax, :rubocop, :fixtures, :cucumber]
|
|
27
24
|
|
|
28
25
|
desc "Run full set of tests"
|
|
29
|
-
task full_tests: [:rspec_unit_tests, :
|
|
26
|
+
task full_tests: [:rspec_unit_tests, :cucumber_acceptance_tests]
|
|
30
27
|
|
|
31
28
|
task :syntax do
|
|
32
|
-
paths = ['lib', 'spec/onceover', '
|
|
29
|
+
paths = ['lib', 'spec/onceover', 'features']
|
|
33
30
|
require 'find'
|
|
34
31
|
Find.find(*paths) do |path|
|
|
35
32
|
next unless path =~ /\.rb$/
|
|
@@ -48,4 +45,3 @@ task :fixtures do
|
|
|
48
45
|
system 'git submodule init && git submodule update --recursive'
|
|
49
46
|
raise "Couldn't clone controlrepo to fixtures directory" unless $?.success?
|
|
50
47
|
end
|
|
51
|
-
|
data/features/init.feature
CHANGED
|
@@ -6,14 +6,13 @@ Feature: Initialize Onceover application
|
|
|
6
6
|
Background:
|
|
7
7
|
Given onceover executable
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
Given control repo "
|
|
9
|
+
Scenario: Initialize basic repo
|
|
10
|
+
Given control repo "basic"
|
|
11
11
|
When I run onceover command "init"
|
|
12
12
|
Then I should not see any errors
|
|
13
13
|
And I should see generated all necessary files and folders
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
Given control repo "
|
|
15
|
+
Scenario: Initialize repo with missing environment.conf file
|
|
16
|
+
Given control repo "basic" without "environment.conf"
|
|
17
17
|
When I run onceover command "init"
|
|
18
18
|
Then I should see error with message pattern "No such file or directory.*environment.conf"
|
|
19
|
-
|
data/features/run.feature
CHANGED
|
@@ -6,14 +6,23 @@ Feature: Run rspec and acceptance test suits
|
|
|
6
6
|
Background:
|
|
7
7
|
Given onceover executable
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
Given initialized control repo "
|
|
9
|
+
Scenario: Run correct spec tests
|
|
10
|
+
Given initialized control repo "basic"
|
|
11
11
|
When I run onceover command "run spec"
|
|
12
12
|
Then I should not see any errors
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
Given initialized control repo "
|
|
14
|
+
Scenario: Run spec tests with misspelled module in Puppetfile
|
|
15
|
+
Given initialized control repo "basic"
|
|
16
16
|
And in Puppetfile is misspelled module's name
|
|
17
17
|
When I run onceover command "run spec"
|
|
18
18
|
Then I should see error with message pattern "The module acme-not_exists does not exist"
|
|
19
19
|
|
|
20
|
+
Scenario: Run advanced spec tests
|
|
21
|
+
Given control repo "puppet_controlrepo"
|
|
22
|
+
When I run onceover command "run spec"
|
|
23
|
+
Then I should not see any errors
|
|
24
|
+
|
|
25
|
+
Scenario: Check that control_branch functionality works
|
|
26
|
+
Given initialized control repo "control_branch"
|
|
27
|
+
When I run onceover command "run spec"
|
|
28
|
+
Then the temporary Puppetfile should contain the git branch
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
Feature: Show the state of things
|
|
2
|
+
For a correct controlrepo I would like to see details of the Puppetfile and
|
|
3
|
+
the things that have been detedted by onceover in the controlrepo.
|
|
4
|
+
|
|
5
|
+
Background:
|
|
6
|
+
Given onceover executable
|
|
7
|
+
|
|
8
|
+
Scenario: Show info for basic repo
|
|
9
|
+
Given initialized control repo "basic"
|
|
10
|
+
When I run onceover command "show repo"
|
|
11
|
+
Then I should not see any errors
|
|
12
|
+
|
|
13
|
+
Scenario: Detect roles and profiles
|
|
14
|
+
Given initialized control repo "basic"
|
|
15
|
+
When I run onceover command "show repo"
|
|
16
|
+
Then I should not see any errors
|
|
17
|
+
And I should see message pattern "roles.*role::database_server"
|
|
18
|
+
And I should see message pattern "roles.*role::webserver"
|
|
19
|
+
And I should see message pattern "roles.*role::example"
|
|
20
|
+
And I should see message pattern "profiles.*profile::example"
|
|
21
|
+
And I should see message pattern "profiles.*profile::base"
|
|
22
|
+
|
|
23
|
+
Scenario: Detect modules
|
|
24
|
+
Given initialized control repo "basic"
|
|
25
|
+
When I run onceover command "show puppetfile"
|
|
26
|
+
Then I should not see any errors
|
|
27
|
+
And I should see message pattern "puppetlabs-stdlib\s+\|\s+4\.11\.0"
|
|
28
|
+
And I should see message pattern "apache\s+\|\s+N/A"
|
|
@@ -6,8 +6,8 @@ Given(/^control repo "([^"]*)"$/) do |controlrepo_name|
|
|
|
6
6
|
@repo = ControlRepo_Helper.new( controlrepo_name )
|
|
7
7
|
@cmd.controlrepo = @repo
|
|
8
8
|
FileUtils.rm_rf @repo.root_folder
|
|
9
|
-
FileUtils.mkdir_p
|
|
10
|
-
FileUtils.cp_r "spec/fixtures/#{controlrepo_name}",
|
|
9
|
+
FileUtils.mkdir_p @repo.tmp_folder
|
|
10
|
+
FileUtils.cp_r "spec/fixtures/controlrepos/#{controlrepo_name}", @repo.tmp_folder
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
Given(/^initialized control repo "([^"]*)"$/) do |controlrepo_name|
|
|
@@ -45,6 +45,9 @@ Then(/^I should see error with message pattern "([^"]*)"$/) do |err_msg_regexp|
|
|
|
45
45
|
expect(@cmd.output.match err_msg_regexp).to_not be nil
|
|
46
46
|
end
|
|
47
47
|
|
|
48
|
-
|
|
49
|
-
@
|
|
48
|
+
Then(/^I should see message pattern "([^"]*)"$/) do |err_msg_regexp|
|
|
49
|
+
expect(@cmd.success?).to be true
|
|
50
|
+
puts @cmd.output unless @cmd.success?
|
|
51
|
+
expect(@cmd.output).to match(err_msg_regexp)
|
|
52
|
+
puts @cmd.output.match(err_msg_regexp).to_s
|
|
50
53
|
end
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
Given(/^in Puppetfile is misspelled module's name$/) do
|
|
2
|
+
@repo.add_line_to_puppetfile %Q(mod "acme/not_exists", "7.7.7")
|
|
3
|
+
end
|
|
4
|
+
|
|
1
5
|
Then(/^I should see generated all necessary files and folders$/) do
|
|
2
6
|
files = [ 'spec/onceover.yaml', 'Rakefile', 'Gemfile' ].map { |x| @repo.root_folder + x }
|
|
3
7
|
folders = [ 'spec/factsets', 'spec/pre_conditions'].map! { |x| @repo.root_folder + x}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
Then(/^the temporary Puppetfile should contain \/(.*)\/$/) do |regex|
|
|
2
|
+
puppetfile = File.read(@repo.onceover_temp_puppetfile)
|
|
3
|
+
expect(puppetfile).to match(Regexp.new(regex))
|
|
4
|
+
end
|
|
5
|
+
|
|
6
|
+
Then(/^the temporary Puppetfile should contain the git branch/) do
|
|
7
|
+
git_branch = `git rev-parse --abbrev-ref HEAD`.chomp
|
|
8
|
+
step %Q(the temporary Puppetfile should contain /#{git_branch}/)
|
|
9
|
+
end
|
|
@@ -19,7 +19,7 @@ class Command_Helper
|
|
|
19
19
|
end
|
|
20
20
|
|
|
21
21
|
def generate_command
|
|
22
|
-
controlrepo_param = @controlrepo ? "--path #{@controlrepo.root_folder}" : ''
|
|
22
|
+
controlrepo_param = @controlrepo ? "--path #{File.expand_path(@controlrepo.root_folder)}" : ''
|
|
23
23
|
return "#{@executable} #{@command} #{controlrepo_param}"
|
|
24
24
|
end
|
|
25
25
|
|
|
@@ -1,16 +1,30 @@
|
|
|
1
1
|
class ControlRepo_Helper
|
|
2
2
|
|
|
3
|
+
attr_reader :tmp_folder
|
|
4
|
+
|
|
3
5
|
def initialize( name )
|
|
4
|
-
@name
|
|
5
|
-
@tmp_folder = 'tmp/'
|
|
6
|
+
@name = name
|
|
7
|
+
@tmp_folder = '.cucumber/tmp/'
|
|
6
8
|
end
|
|
7
9
|
|
|
8
10
|
def root_folder
|
|
9
11
|
return @tmp_folder + @name + '/'
|
|
10
12
|
end
|
|
11
13
|
|
|
14
|
+
def puppetfile
|
|
15
|
+
return root_folder + "Puppetfile"
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def onceover_temp_root_folder
|
|
19
|
+
return root_folder + '.onceover/etc/puppetlabs/code/environments/production/'
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def onceover_temp_puppetfile
|
|
23
|
+
return onceover_temp_root_folder + "Puppetfile"
|
|
24
|
+
end
|
|
25
|
+
|
|
12
26
|
def add_line_to_puppetfile( line )
|
|
13
|
-
open(
|
|
27
|
+
open(puppetfile, 'a') { |f| f.puts line }
|
|
14
28
|
end
|
|
15
29
|
|
|
16
30
|
end
|
data/lib/onceover/controlrepo.rb
CHANGED
|
@@ -439,16 +439,20 @@ class Onceover
|
|
|
439
439
|
#Onceover::Controlrepo.init_write_file(generate_nodesets(repo),repo.nodeset_file)
|
|
440
440
|
init_write_file(
|
|
441
441
|
evaluate_template('pre_conditions_README.md.erb', binding),
|
|
442
|
-
File.expand_path('./pre_conditions/README.md', repo.spec_dir)
|
|
442
|
+
File.expand_path('./pre_conditions/README.md', repo.spec_dir)
|
|
443
|
+
)
|
|
443
444
|
init_write_file(
|
|
444
445
|
evaluate_template('factsets_README.md.erb', binding),
|
|
445
|
-
File.expand_path('./factsets/README.md', repo.spec_dir)
|
|
446
|
+
File.expand_path('./factsets/README.md', repo.spec_dir)
|
|
447
|
+
)
|
|
446
448
|
init_write_file(
|
|
447
449
|
evaluate_template('Rakefile.erb', binding),
|
|
448
|
-
File.expand_path('./Rakefile', repo.root)
|
|
450
|
+
File.expand_path('./Rakefile', repo.root)
|
|
451
|
+
)
|
|
449
452
|
init_write_file(
|
|
450
453
|
evaluate_template('Gemfile.erb', binding),
|
|
451
|
-
File.expand_path('./Gemfile', repo.root)
|
|
454
|
+
File.expand_path('./Gemfile', repo.root)
|
|
455
|
+
)
|
|
452
456
|
|
|
453
457
|
# Add .onceover to Gitignore
|
|
454
458
|
gitignore_path = File.expand_path('.gitignore', repo.root)
|
data/lib/onceover/logger.rb
CHANGED
data/lib/onceover/testconfig.rb
CHANGED
|
@@ -28,7 +28,7 @@ class Onceover
|
|
|
28
28
|
|
|
29
29
|
def initialize(file, opts = {})
|
|
30
30
|
begin
|
|
31
|
-
config = YAML.
|
|
31
|
+
config = YAML.safe_load(File.read(file))
|
|
32
32
|
rescue Errno::ENOENT
|
|
33
33
|
raise "Could not find #{file}"
|
|
34
34
|
rescue Psych::SyntaxError
|
|
@@ -153,7 +153,7 @@ class Onceover
|
|
|
153
153
|
logger.debug "Reading pre_conditions from #{condition_file}"
|
|
154
154
|
puppetcode << File.read(condition_file)
|
|
155
155
|
end
|
|
156
|
-
return nil if puppetcode.count
|
|
156
|
+
return nil if puppetcode.count.zero?
|
|
157
157
|
puppetcode.join("\n")
|
|
158
158
|
end
|
|
159
159
|
|
|
@@ -203,6 +203,22 @@ class Onceover
|
|
|
203
203
|
files_to_copy.each do |file|
|
|
204
204
|
FileUtils.cp(file,"#{temp_controlrepo}/#{(Pathname(file).relative_path_from(Pathname(repo.root))).to_s}")
|
|
205
205
|
end
|
|
206
|
+
|
|
207
|
+
# When using puppetfile vs deploy with r10k, we want to respect the :control_branch
|
|
208
|
+
# located in the Puppetfile. To accomplish that, we use git and find the current
|
|
209
|
+
# branch name, then replace strings within the staged puppetfile, prior to copying.
|
|
210
|
+
|
|
211
|
+
logger.debug "Checking current working branch"
|
|
212
|
+
git_branch = `git rev-parse --abbrev-ref HEAD`.chomp
|
|
213
|
+
|
|
214
|
+
logger.debug "found #{git_branch} as current working branch"
|
|
215
|
+
puppetfile_contents = File.read("#{temp_controlrepo}/Puppetfile")
|
|
216
|
+
|
|
217
|
+
logger.debug "replacing :control_branch mentions in the Puppetfile with #{git_branch}"
|
|
218
|
+
new_puppetfile_contents = puppetfile_contents.gsub(/:control_branch/, "'#{git_branch}'")
|
|
219
|
+
File.write("#{temp_controlrepo}/Puppetfile", new_puppetfile_contents)
|
|
220
|
+
|
|
221
|
+
|
|
206
222
|
FileUtils.mkdir_p("#{repo.tempdir}/#{repo.environmentpath}/production")
|
|
207
223
|
|
|
208
224
|
logger.debug "Copying #{temp_controlrepo} to #{repo.tempdir}/#{repo.environmentpath}/production"
|
data/onceover.gemspec
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
|
2
|
+
|
|
2
3
|
$LOAD_PATH.unshift File.expand_path("../lib", __FILE__)
|
|
3
4
|
|
|
4
5
|
Gem::Specification.new do |s|
|
|
5
6
|
s.name = "onceover"
|
|
6
|
-
s.version = "3.
|
|
7
|
+
s.version = "3.3.0"
|
|
7
8
|
s.authors = ["Dylan Ratcliffe"]
|
|
8
9
|
s.email = ["dylan.ratcliffe@puppet.com"]
|
|
9
10
|
s.homepage = "https://github.com/dylanratcliffe/onceover"
|
|
@@ -8,9 +8,9 @@ mod "puppetlabs/stdlib", '4.11.0'
|
|
|
8
8
|
|
|
9
9
|
# Modules from Git
|
|
10
10
|
# Examples: https://github.com/puppetlabs/r10k/blob/master/doc/puppetfile.mkd#examples
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
mod 'apache',
|
|
12
|
+
:git => 'https://github.com/puppetlabs/puppetlabs-apache',
|
|
13
|
+
:commit => '83401079053dca11d61945bd9beef9ecf7576cbf'
|
|
14
14
|
|
|
15
15
|
#mod 'apache',
|
|
16
16
|
# :git => 'https://github.com/puppetlabs/puppetlabs-apache',
|
|
File without changes
|
|
File without changes
|
data/spec/fixtures/{controlrepo_basic → controlrepos/basic}/hieradata/nodes/example-node.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
data/spec/fixtures/{controlrepo_basic → controlrepos/basic}/site/profile/manifests/example.pp
RENAMED
|
File without changes
|
data/spec/fixtures/{controlrepo_basic → controlrepos/basic}/site/role/manifests/database_server.pp
RENAMED
|
File without changes
|
|
File without changes
|
data/spec/fixtures/{controlrepo_basic → controlrepos/basic}/site/role/manifests/webserver.pp
RENAMED
|
File without changes
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
forge "http://forge.puppetlabs.com"
|
|
2
|
+
#
|
|
3
|
+
# I want to download some modules to check if r10k feature in Onceover works correctly.
|
|
4
|
+
#
|
|
5
|
+
|
|
6
|
+
# Versions should be updated to be the latest at the time you start
|
|
7
|
+
mod "puppetlabs/stdlib", '4.11.0'
|
|
8
|
+
|
|
9
|
+
# Modules from Git
|
|
10
|
+
# Examples: https://github.com/puppetlabs/r10k/blob/master/doc/puppetfile.mkd#examples
|
|
11
|
+
#mod 'apache',
|
|
12
|
+
# :git => 'https://github.com/puppetlabs/puppetlabs-apache',
|
|
13
|
+
# :commit => '83401079053dca11d61945bd9beef9ecf7576cbf'
|
|
14
|
+
|
|
15
|
+
mod 'apache',
|
|
16
|
+
:git => 'https://github.com/puppetlabs/puppetlabs-apache',
|
|
17
|
+
:branch => :control_branch,
|
|
18
|
+
:default_branch => 'master'
|
|
File without changes
|
data/templates/Gemfile.erb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: onceover
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.
|
|
4
|
+
version: 3.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Dylan Ratcliffe
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2018-01-05 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rake
|
|
@@ -344,8 +344,10 @@ files:
|
|
|
344
344
|
- features/help.feature
|
|
345
345
|
- features/init.feature
|
|
346
346
|
- features/run.feature
|
|
347
|
+
- features/show.feature
|
|
347
348
|
- features/step_definitions/common.rb
|
|
348
349
|
- features/step_definitions/init.rb
|
|
350
|
+
- features/step_definitions/run.rb
|
|
349
351
|
- features/support/command_helper.rb
|
|
350
352
|
- features/support/controlrepo_helper.rb
|
|
351
353
|
- features/support/env.rb
|
|
@@ -367,18 +369,19 @@ files:
|
|
|
367
369
|
- lib/onceover/test.rb
|
|
368
370
|
- lib/onceover/testconfig.rb
|
|
369
371
|
- onceover.gemspec
|
|
370
|
-
- spec/
|
|
371
|
-
- spec/fixtures/
|
|
372
|
-
- spec/fixtures/
|
|
373
|
-
- spec/fixtures/
|
|
374
|
-
- spec/fixtures/
|
|
375
|
-
- spec/fixtures/
|
|
376
|
-
- spec/fixtures/
|
|
377
|
-
- spec/fixtures/
|
|
378
|
-
- spec/fixtures/
|
|
379
|
-
- spec/fixtures/
|
|
380
|
-
- spec/fixtures/
|
|
381
|
-
- spec/fixtures/
|
|
372
|
+
- spec/fixtures/controlrepos/basic/Puppetfile
|
|
373
|
+
- spec/fixtures/controlrepos/basic/environment.conf
|
|
374
|
+
- spec/fixtures/controlrepos/basic/hieradata/common.yaml
|
|
375
|
+
- spec/fixtures/controlrepos/basic/hieradata/nodes/example-node.yaml
|
|
376
|
+
- spec/fixtures/controlrepos/basic/manifests/site.pp
|
|
377
|
+
- spec/fixtures/controlrepos/basic/site/profile/manifests/base.pp
|
|
378
|
+
- spec/fixtures/controlrepos/basic/site/profile/manifests/example.pp
|
|
379
|
+
- spec/fixtures/controlrepos/basic/site/role/manifests/database_server.pp
|
|
380
|
+
- spec/fixtures/controlrepos/basic/site/role/manifests/example.pp
|
|
381
|
+
- spec/fixtures/controlrepos/basic/site/role/manifests/webserver.pp
|
|
382
|
+
- spec/fixtures/controlrepos/control_branch/Puppetfile
|
|
383
|
+
- spec/fixtures/controlrepos/control_branch/environment.conf
|
|
384
|
+
- spec/fixtures/controlrepos/minimal/environment.conf
|
|
382
385
|
- spec/onceover/controlrepo_spec.rb
|
|
383
386
|
- spec/spec_helper.rb
|
|
384
387
|
- templates/.fixtures.yml.erb
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
require 'onceover/controlrepo'
|
|
3
|
-
|
|
4
|
-
describe "Onceover::Controlrepo" do
|
|
5
|
-
context "in a complex repo" do
|
|
6
|
-
before do
|
|
7
|
-
@repo = Onceover::Controlrepo.new(
|
|
8
|
-
{
|
|
9
|
-
path:'spec/fixtures/puppet_controlrepo'
|
|
10
|
-
}
|
|
11
|
-
)
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
context "when initialising the object" do
|
|
15
|
-
it { expect(@repo).not_to be_nil }
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
context "when running the tests" do
|
|
19
|
-
it "doesn't die horribly" do
|
|
20
|
-
expect{
|
|
21
|
-
Dir.chdir('spec/fixtures/puppet_controlrepo') do
|
|
22
|
-
require 'onceover/controlrepo'
|
|
23
|
-
require 'onceover/cli'
|
|
24
|
-
require 'onceover/runner'
|
|
25
|
-
require 'onceover/testconfig'
|
|
26
|
-
require 'onceover/logger'
|
|
27
|
-
|
|
28
|
-
repo = Onceover::Controlrepo.new({})
|
|
29
|
-
runner = Onceover::Runner.new(repo,Onceover::TestConfig.new(repo.onceover_yaml, {}), :spec)
|
|
30
|
-
runner.prepare!
|
|
31
|
-
runner.run_spec!
|
|
32
|
-
end
|
|
33
|
-
}.not_to raise_error
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
end
|