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