onceover 3.2.6 → 3.2.7

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
  SHA1:
3
- metadata.gz: 3017c18343feee112c67aa4d2eee9e96ed40c269
4
- data.tar.gz: d7e83b25247b59be7f5585ef0d0929888340270a
3
+ metadata.gz: 6258620982ccd165a8b28db772919db88228298f
4
+ data.tar.gz: a605dc65458a48fe892558a350d08f69c1478ac3
5
5
  SHA512:
6
- metadata.gz: 3537a0ed03929ef0bb538aa291be8a38906ee17f0ff06901743571ec0905c05816b4459cd5febb3dff60b5bc47d2afae94a1902586160fd26438c36854fb03e4
7
- data.tar.gz: a929a56a8431e7e853b671b23e39ed54c2a1bc40b8fea4f1a506e969a65a973b716ac8fcf49f60daa61d7990811468bac4b908b5c670731f1d0131afa57f993d
6
+ metadata.gz: 6de5b5c139e1b6a931dfa34f748967c69d54866d3ddce13b2a7e77f6ccc203cde527f8d6ed6bef4002eb83b9c458cda3b61f38e5f569ca5c319f1a7e0d9856ec
7
+ data.tar.gz: c4671a56297178b4d61c9f49984b86cc3a7ab3c2302e77528685d62fc9b19c482885c781e60f2e2e3cba01db5115f5e610e8c5090ee35da4440bdaeb1471875b
data/.gitignore CHANGED
@@ -8,6 +8,7 @@ Gemfile.lock
8
8
  /.ruby-version
9
9
  tmp
10
10
 
11
- #Vim
11
+ # Vim
12
12
  /.projections.json
13
+ /tags
13
14
 
data/Rakefile CHANGED
@@ -4,24 +4,32 @@ require 'cucumber/rake/task'
4
4
  Gem::Tasks.new
5
5
 
6
6
  RSpec::Core::RakeTask.new(:spec) do |t|
7
- t.rspec_opts = '--pattern spec/\*/\*_spec.rb'
7
+ t.rspec_opts = '--pattern spec/onceover/**/*_spec.rb'
8
+ end
9
+
10
+ RSpec::Core::RakeTask.new(:acceptance) do |t|
11
+ t.rspec_opts = '--pattern spec/acceptance/**/*_spec.rb'
8
12
  end
9
13
 
10
14
  Cucumber::Rake::Task.new
11
15
 
12
16
  task default: :full_tests
13
17
 
14
- desc "Run full set of tests"
15
- task full_tests: [:unit_tests, :acceptance_tests]
16
18
 
17
19
  desc "Run unit tests"
18
- task unit_tests: [:syntax, :rubocop, :spec]
20
+ task rspec_unit_tests: [:syntax, :rubocop, :spec]
19
21
 
20
- desc "Run acceptance tests"
21
- task acceptance_tests: [:syntax, :rubocop, :cucumber]
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]
27
+
28
+ desc "Run full set of tests"
29
+ task full_tests: [:rspec_unit_tests, :rspec_acceptance_tests, :cucumber_acceptance_tests]
22
30
 
23
31
  task :syntax do
24
- paths = ['lib',]
32
+ paths = ['lib', 'spec/onceover', 'spec/acceptance', 'features']
25
33
  require 'find'
26
34
  Find.find(*paths) do |path|
27
35
  next unless path =~ /\.rb$/
@@ -35,3 +43,9 @@ task :rubocop do
35
43
  exit_code = cli.run(%w(--display-cop-names --format simple))
36
44
  raise "RuboCop detected offenses" if exit_code != 0
37
45
  end
46
+
47
+ task :fixtures do
48
+ system 'git submodule init && git submodule update --recursive'
49
+ raise "Couldn't clone controlrepo to fixtures directory" unless $?.success?
50
+ end
51
+
@@ -0,0 +1,19 @@
1
+ Feature: Initialize Onceover application
2
+ For correct control repo I would like to generate all folders and files needed
3
+ by Onceover. For incorrect control repo I would like to get information why
4
+ I can not initialize application.
5
+
6
+ Background:
7
+ Given onceover executable
8
+
9
+ Scenario: Initialize basic repo
10
+ Given control repo "controlrepo_basic"
11
+ When I run onceover command "init"
12
+ Then I should not see any errors
13
+ And I should see generated all necessary files and folders
14
+
15
+ Scenario: Initialize repo with missing environment.conf file
16
+ Given control repo "controlrepo_basic" without "environment.conf"
17
+ When I run onceover command "init"
18
+ Then I should see error with message pattern "No such file or directory.*environment.conf"
19
+
@@ -0,0 +1,28 @@
1
+ require "open3"
2
+
3
+ class Command
4
+
5
+ attr_reader(:output, :result)
6
+
7
+ attr_writer(:command, :params, :controlrepo)
8
+
9
+ def initialize
10
+ @executable = ENV["BUNDLE_GEMFILE"] ? "bundle exec onceover" : "onceover"
11
+ end
12
+
13
+ def run
14
+ controlrepo_param = @controlrepo ? "--path tmp/tests/#{@controlrepo}" : ''
15
+ full_cmd = "#{@executable} #{@command} #{controlrepo_param}"
16
+ @output, @result = Open3.capture2e full_cmd
17
+ end
18
+
19
+ def success?
20
+ return @result.success?
21
+ end
22
+
23
+ def to_s
24
+ controlrepo_param = @controlrepo ? "--path tmp/tests/#{@controlrepo}" : ''
25
+ return "#{@executable} #{@command} #{controlrepo_param}"
26
+ end
27
+
28
+ end
@@ -1,18 +1,60 @@
1
- Given /^onceover executable$/ do
2
- @executable = ENV["BUNDLE_GEMFILE"] ? "bundle exec onceover " : "onceover "
1
+ Given /^onceover executable$/ do
2
+ @cmd = Command.new
3
3
  end
4
4
 
5
- When /^I run onceover command "([^"]*)"$/ do |arg1|
6
- command = @executable + arg1
7
- puts command
8
- @output = `#{command}`
9
- expect($?.success?).to be true
5
+ Given(/^control repo "([^"]*)"$/) do |controlrepo_name|
6
+ @cmd.controlrepo = controlrepo_name
7
+ FileUtils.rm_rf "tmp/tests/#{controlrepo_name}"
8
+ FileUtils.mkdir_p 'tmp/tests'
9
+ FileUtils.cp_r "spec/fixtures/#{controlrepo_name}", 'tmp/tests'
10
+ end
11
+
12
+ Given(/^control repo "([^"]*)" without "([^"]*)"$/) do |controlrepo_name, filename|
13
+ step %Q(control repo "#{controlrepo_name}")
14
+ controlrepo_path = "tmp/tests/#{controlrepo_name}"
15
+ FileUtils.rm_rf( controlrepo_path + "/#{filename}" )
16
+ end
17
+
18
+ Then(/^I should see all tests pass$/) do
19
+ pending # Write code here that turns the phrase above into concrete actions
20
+ end
21
+
22
+ When /^I run onceover command "([^"]*)"$/ do |command|
23
+ @cmd.command = command
24
+ puts @cmd
25
+ @cmd.run
10
26
  end
11
27
 
12
28
  Then /^I see help for commands: "([^"]*)"$/ do |commands|
13
- commands_help = @output[/COMMANDS(.*)OPTIONS/m, 1]
29
+ # Get chunk of output between COMMANDS and OPTION, there should be help section
30
+ commands_help = @cmd.output[/COMMANDS(.*)OPTIONS/m, 1]
14
31
  commands.split(',').each do |command|
15
32
  result = commands_help.match(/^\s+#{command.strip}.+\n/)
16
33
  puts result.to_s if expect(result).not_to be nil
17
34
  end
18
35
  end
36
+
37
+ Then(/^I should not see any errors$/) do
38
+ expect(@cmd.success?).to be true
39
+ end
40
+
41
+ Then(/^I should see error with message pattern "([^"]*)"$/) do |err_msg_regexp|
42
+ expect(@cmd.success?).to be false
43
+ puts @cmd.output
44
+ expect(@cmd.output.match err_msg_regexp).to_not be nil
45
+ end
46
+
47
+ Then(/^I should see generated all necessary files and folders$/) do
48
+ controlrepo_path = "tmp/tests/controlrepo_basic/"
49
+ files = [ 'spec/onceover.yaml', 'Rakefile', 'Gemfile' ].map { |x| controlrepo_path + x }
50
+ folders = [ 'spec/factsets', 'spec/pre_conditions'].map! { |x| controlrepo_path + x}
51
+
52
+ files.each do |file|
53
+ puts file
54
+ expect( File.exist? file ).to be true
55
+ end
56
+ folders.each do |folder|
57
+ puts folder
58
+ expect( Dir.exist? folder ).to be true
59
+ end
60
+ end
@@ -218,7 +218,7 @@ class Onceover
218
218
  # R10K::Action::Deploy::Environment
219
219
  prod_dir = "#{repo.tempdir}/#{repo.environmentpath}/production"
220
220
  Dir.chdir(prod_dir) do
221
- install_cmd = "r10k puppetfile install --verbose --color"
221
+ install_cmd = "r10k puppetfile install --verbose --color --puppetfile #{repo.puppetfile}"
222
222
  logger.debug "Running #{install_cmd} from #{prod_dir}"
223
223
  system(install_cmd)
224
224
  end
@@ -3,7 +3,7 @@ $LOAD_PATH.unshift File.expand_path("../lib", __FILE__)
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "onceover"
6
- s.version = "3.2.6"
6
+ s.version = "3.2.7"
7
7
  s.authors = ["Dylan Ratcliffe"]
8
8
  s.email = ["dylan.ratcliffe@puppet.com"]
9
9
  s.homepage = "https://github.com/dylanratcliffe/onceover"
@@ -0,0 +1,37 @@
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
@@ -0,0 +1,17 @@
1
+ forge "http://forge.puppetlabs.com"
2
+
3
+ # Modules from the Puppet Forge
4
+ # Versions should be updated to be the latest at the time you start
5
+ #mod "puppetlabs/inifile", '1.5.0'
6
+ #mod "puppetlabs/stdlib", '4.11.0'
7
+ #mod "puppetlabs/concat", '2.1.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 => 'docs_experiment'
@@ -1 +1,2 @@
1
- modulepath="."
1
+ modulepath = site:modules:$basemodulepath
2
+ config_version = 'scripts/config_version.sh $environmentpath $environment'
@@ -0,0 +1,2 @@
1
+ ---
2
+ message: "This node is using common data"
@@ -0,0 +1,32 @@
1
+ ## site.pp ##
2
+
3
+ # This file (/etc/puppetlabs/puppet/manifests/site.pp) is the main entry point
4
+ # used when an agent connects to a master and asks for an updated configuration.
5
+ #
6
+ # Global objects like filebuckets and resource defaults should go in this file,
7
+ # as should the default node definition. (The default node can be omitted
8
+ # if you use the console and don't define any other nodes in site.pp. See
9
+ # http://docs.puppetlabs.com/guides/language_guide.html#nodes for more on
10
+ # node definitions.)
11
+
12
+ ## Active Configurations ##
13
+
14
+ # Disable filebucket by default for all File resources:
15
+ #https://docs.puppet.com/pe/2015.3/release_notes.html#filebucket-resource-no-longer-created-by-default
16
+ File { backup => false }
17
+
18
+ # DEFAULT NODE
19
+ # Node definitions in this file are merged with node data from the console. See
20
+ # http://docs.puppetlabs.com/guides/language_guide.html#nodes for more on
21
+ # node definitions.
22
+
23
+ # The default node definition matches any node lacking a more specific node
24
+ # definition. If there are no other nodes in this file, classes declared here
25
+ # will be included in every node's catalog, *in addition* to any classes
26
+ # specified in the console for that node.
27
+
28
+ node default {
29
+ # This is where you can declare classes for all nodes.
30
+ # Example:
31
+ # class { 'my_class': }
32
+ }
@@ -0,0 +1,5 @@
1
+ class profile::base {
2
+
3
+ #the base profile should include component modules that will be on all nodes
4
+
5
+ }
@@ -0,0 +1,3 @@
1
+ class profile::example {
2
+
3
+ }
@@ -0,0 +1,7 @@
1
+ class role::database_server {
2
+
3
+ #This role would be made of all the profiles that need to be included to make a database server work
4
+ #All roles should include the base profile
5
+ include profile::base
6
+
7
+ }
@@ -0,0 +1,3 @@
1
+ class role::example {
2
+
3
+ }
@@ -0,0 +1,7 @@
1
+ class role::webserver {
2
+
3
+ #This role would be made of all the profiles that need to be included to make a webserver work
4
+ #All roles should include the base profile
5
+ include profile::base
6
+
7
+ }
@@ -0,0 +1,2 @@
1
+ modulepath = site:modules:$basemodulepath
2
+ config_version = 'scripts/config_version.sh $environmentpath $environment'
@@ -6,7 +6,7 @@ describe "Onceover::Controlrepo" do
6
6
  before do
7
7
  @repo = Onceover::Controlrepo.new(
8
8
  {
9
- path:'spec/fixtures/controlrepo_basic'
9
+ path:'spec/fixtures/controlrepo_minimal'
10
10
  }
11
11
  )
12
12
  end
@@ -15,37 +15,4 @@ describe "Onceover::Controlrepo" do
15
15
  it { expect(@repo.hiera_config_file_relative_path).to be_nil }
16
16
  end
17
17
  end
18
-
19
- context "in a complex repo" do
20
- before do
21
- @repo = Onceover::Controlrepo.new(
22
- {
23
- path:'spec/fixtures/puppet_controlrepo'
24
- }
25
- )
26
- end
27
-
28
- context "when initialising the object" do
29
- it { expect(@repo).not_to be_nil }
30
- end
31
-
32
- context "when running the tests" do
33
- it "doesn't die horribly" do
34
- expect{
35
- Dir.chdir('spec/fixtures/puppet_controlrepo') do
36
- require 'onceover/controlrepo'
37
- require 'onceover/cli'
38
- require 'onceover/runner'
39
- require 'onceover/testconfig'
40
- require 'onceover/logger'
41
-
42
- repo = Onceover::Controlrepo.new({})
43
- runner = Onceover::Runner.new(repo,Onceover::TestConfig.new(repo.onceover_yaml, {}), :spec)
44
- runner.prepare!
45
- runner.run_spec!
46
- end
47
- }.not_to raise_error
48
- end
49
- end
50
- end
51
18
  end
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.2.6
4
+ version: 3.2.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dylan Ratcliffe
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-09-12 00:00:00.000000000 Z
11
+ date: 2017-10-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -342,6 +342,8 @@ files:
342
342
  - factsets/solaris-10_u9-sparc-64.json
343
343
  - factsets/solaris-11.2-sparc-64.json
344
344
  - features/basic.feature
345
+ - features/init.feature
346
+ - features/step_definitions/command.rb
345
347
  - features/step_definitions/common.rb
346
348
  - features/support/env.rb
347
349
  - lib/onceover/beaker.rb
@@ -362,7 +364,18 @@ files:
362
364
  - lib/onceover/test.rb
363
365
  - lib/onceover/testconfig.rb
364
366
  - onceover.gemspec
367
+ - spec/acceptance/controlrepo_spec.rb
368
+ - spec/fixtures/controlrepo_basic/Puppetfile
365
369
  - spec/fixtures/controlrepo_basic/environment.conf
370
+ - spec/fixtures/controlrepo_basic/hieradata/common.yaml
371
+ - spec/fixtures/controlrepo_basic/hieradata/nodes/example-node.yaml
372
+ - spec/fixtures/controlrepo_basic/manifests/site.pp
373
+ - spec/fixtures/controlrepo_basic/site/profile/manifests/base.pp
374
+ - spec/fixtures/controlrepo_basic/site/profile/manifests/example.pp
375
+ - spec/fixtures/controlrepo_basic/site/role/manifests/database_server.pp
376
+ - spec/fixtures/controlrepo_basic/site/role/manifests/example.pp
377
+ - spec/fixtures/controlrepo_basic/site/role/manifests/webserver.pp
378
+ - spec/fixtures/controlrepo_minimal/environment.conf
366
379
  - spec/onceover/controlrepo_spec.rb
367
380
  - spec/spec_helper.rb
368
381
  - templates/.fixtures.yml.erb