control_spec_helper 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +5 -1
- data/.rspec +3 -0
- data/.rubocop.yml +13 -0
- data/.ruby-version +1 -0
- data/Gemfile.lock +109 -0
- data/Rakefile +87 -8
- data/control_spec_helper.gemspec +22 -15
- data/ext/spec_helper_control.rb +8 -5
- data/lib/control_spec_helper/control_spec_helper.rb +49 -32
- data/lib/control_spec_helper/rake_tasks.rb +1 -157
- data/lib/control_spec_helper/version.rb +1 -1
- data/lib/rake_tasks.rb +4 -0
- data/lib/slalom.rb +60 -0
- data/lib/tasks/acceptance.rake +26 -0
- data/lib/tasks/apply.rake +7 -0
- data/lib/tasks/apply_debug.rake +7 -0
- data/lib/tasks/apply_dev.rake +7 -0
- data/lib/tasks/apply_noop.rake +6 -0
- data/lib/tasks/apply_standalone.rake +7 -0
- data/lib/tasks/default.rake +3 -0
- data/lib/tasks/git.rake +9 -0
- data/lib/tasks/help.rake +6 -0
- data/lib/tasks/hooks.rake +11 -0
- data/lib/tasks/lint.rake +26 -0
- data/lib/tasks/puppet_cmd.rake +6 -0
- data/lib/tasks/r10k.rake +6 -0
- data/lib/tasks/serverspec.rake +10 -0
- data/lib/tasks/spec.rake +10 -0
- data/lib/tasks/spec_clean.rake +6 -0
- data/lib/tasks/spec_prep.rake +10 -0
- data/lib/tasks/vplugins.rake +9 -0
- data/spec/spec_helper.rb +11 -0
- data/spec/support/shared_contexts/rake.rb +26 -0
- data/spec/tasks/vplugins_spec.rb +71 -0
- data/spec/unit/class_from_path_spec.rb +62 -0
- data/spec/unit/control_spec_helper_spec.rb +62 -1
- data/spec/unit/debug_spec.rb +30 -0
- data/spec/unit/diff_from_base_spec.rb +34 -0
- data/spec/unit/diff_profile_spec.rb +38 -0
- data/spec/unit/diff_roles_spec.rb +38 -0
- data/spec/unit/profile_fixtures_spec.rb +185 -0
- data/spec/unit/project_root_spec.rb +45 -0
- data/spec/unit/r10k_spec.rb +58 -0
- data/spec/unit/spec_clean_spec.rb +137 -0
- data/spec/unit/spec_from_class_spec.rb +65 -0
- metadata +148 -30
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 18bbd384c54c74eb7500a318c068b5d43b60a85f
|
4
|
+
data.tar.gz: d44d869e7c98330024040ee22388f61e9ded4138
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ae8ce1c9f36c360f110b9dfc358d5510e96a096904a5533810c2fc8f6eb5715e168e1b86c7187a7c0647bc194d14d361ecde8aad959caa58ca0376ae3efe4f85
|
7
|
+
data.tar.gz: 3a19bee071a8bf631ec03279da5848819cd0768858cf81b8cf654c32f6ffbf25b24cfe98a3274dcb47c4a71a704344ed2c1357fe291dc47e3315805485ea6dc7
|
data/.gitignore
CHANGED
data/.rspec
ADDED
data/.rubocop.yml
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
AllCops:
|
2
|
+
Exclude:
|
3
|
+
- 'fixtures/**/*'
|
4
|
+
Metrics/AbcSize:
|
5
|
+
Severity: warning
|
6
|
+
Metrics/CyclomaticComplexity:
|
7
|
+
Severity: warning
|
8
|
+
Metrics/LineLength:
|
9
|
+
Severity: warning
|
10
|
+
Metrics/ModuleLength:
|
11
|
+
Severity: warning
|
12
|
+
Metrics/PerceivedComplexity:
|
13
|
+
Severity: warning
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.2.2
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,109 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
control_spec_helper (0.0.2)
|
5
|
+
mocha (~> 1.1)
|
6
|
+
puppet (~> 4.0)
|
7
|
+
puppet-lint (~> 1.1)
|
8
|
+
puppet-syntax (~> 2.1)
|
9
|
+
rake (~> 11.0)
|
10
|
+
rspec-puppet (~> 2.4)
|
11
|
+
|
12
|
+
GEM
|
13
|
+
remote: https://rubygems.org/
|
14
|
+
specs:
|
15
|
+
CFPropertyList (2.2.8)
|
16
|
+
ast (2.2.0)
|
17
|
+
coderay (1.1.1)
|
18
|
+
colored (1.2)
|
19
|
+
cri (2.6.1)
|
20
|
+
colored (~> 1.2)
|
21
|
+
diff-lcs (1.2.5)
|
22
|
+
facter (2.4.6)
|
23
|
+
CFPropertyList (~> 2.2.6)
|
24
|
+
faraday (0.9.2)
|
25
|
+
multipart-post (>= 1.2, < 3)
|
26
|
+
faraday_middleware (0.10.0)
|
27
|
+
faraday (>= 0.7.4, < 0.10)
|
28
|
+
git (1.3.0)
|
29
|
+
hiera (3.1.2)
|
30
|
+
json_pure
|
31
|
+
json_pure (1.8.3)
|
32
|
+
log4r (1.1.10)
|
33
|
+
metaclass (0.0.4)
|
34
|
+
method_source (0.8.2)
|
35
|
+
minitar (0.5.4)
|
36
|
+
mocha (1.1.0)
|
37
|
+
metaclass (~> 0.0.1)
|
38
|
+
multi_json (1.11.3)
|
39
|
+
multipart-post (2.0.0)
|
40
|
+
net-ssh (3.1.1)
|
41
|
+
parser (2.3.1.0)
|
42
|
+
ast (~> 2.2)
|
43
|
+
powerpack (0.1.1)
|
44
|
+
pry (0.10.3)
|
45
|
+
coderay (~> 1.1.0)
|
46
|
+
method_source (~> 0.8.1)
|
47
|
+
slop (~> 3.4)
|
48
|
+
puppet (4.4.2)
|
49
|
+
CFPropertyList (~> 2.2.6)
|
50
|
+
facter (> 2.0, < 4)
|
51
|
+
hiera (>= 2.0, < 4)
|
52
|
+
json_pure
|
53
|
+
puppet-lint (1.1.0)
|
54
|
+
puppet-syntax (2.1.0)
|
55
|
+
rake
|
56
|
+
puppet_forge (2.1.5)
|
57
|
+
faraday (~> 0.9.0)
|
58
|
+
faraday_middleware (>= 0.9.0, < 0.11.0)
|
59
|
+
minitar
|
60
|
+
semantic_puppet (~> 0.1.0)
|
61
|
+
r10k (2.2.2)
|
62
|
+
colored (= 1.2)
|
63
|
+
cri (~> 2.6.1)
|
64
|
+
log4r (= 1.1.10)
|
65
|
+
minitar
|
66
|
+
multi_json (~> 1.10)
|
67
|
+
puppet_forge (~> 2.1.5)
|
68
|
+
semantic_puppet (~> 0.1.0)
|
69
|
+
rainbow (2.1.0)
|
70
|
+
rake (11.1.2)
|
71
|
+
rspec (3.4.0)
|
72
|
+
rspec-core (~> 3.4.0)
|
73
|
+
rspec-expectations (~> 3.4.0)
|
74
|
+
rspec-mocks (~> 3.4.0)
|
75
|
+
rspec-core (3.4.4)
|
76
|
+
rspec-support (~> 3.4.0)
|
77
|
+
rspec-expectations (3.4.0)
|
78
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
79
|
+
rspec-support (~> 3.4.0)
|
80
|
+
rspec-mocks (3.4.1)
|
81
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
82
|
+
rspec-support (~> 3.4.0)
|
83
|
+
rspec-puppet (2.4.0)
|
84
|
+
rspec
|
85
|
+
rspec-support (3.4.1)
|
86
|
+
rubocop (0.39.0)
|
87
|
+
parser (>= 2.3.0.7, < 3.0)
|
88
|
+
powerpack (~> 0.1)
|
89
|
+
rainbow (>= 1.99.1, < 3.0)
|
90
|
+
ruby-progressbar (~> 1.7)
|
91
|
+
unicode-display_width (~> 1.0, >= 1.0.1)
|
92
|
+
ruby-progressbar (1.8.0)
|
93
|
+
semantic_puppet (0.1.1)
|
94
|
+
slop (3.6.0)
|
95
|
+
unicode-display_width (1.0.3)
|
96
|
+
|
97
|
+
PLATFORMS
|
98
|
+
ruby
|
99
|
+
|
100
|
+
DEPENDENCIES
|
101
|
+
control_spec_helper!
|
102
|
+
git (~> 1.3)
|
103
|
+
net-ssh (~> 3.1)
|
104
|
+
pry (~> 0.10)
|
105
|
+
r10k (~> 2.2)
|
106
|
+
rubocop (~> 0.39)
|
107
|
+
|
108
|
+
BUNDLED WITH
|
109
|
+
1.11.2
|
data/Rakefile
CHANGED
@@ -2,14 +2,18 @@ require 'rake'
|
|
2
2
|
require 'rake/packagetask'
|
3
3
|
require 'rubygems/package_task'
|
4
4
|
require 'rspec/core/rake_task'
|
5
|
+
require 'git'
|
6
|
+
require 'net/ssh'
|
7
|
+
require './lib/slalom'
|
5
8
|
|
6
9
|
task :default do
|
7
|
-
|
10
|
+
sh %(rake -T)
|
8
11
|
end
|
9
12
|
|
10
13
|
require 'fileutils'
|
11
14
|
|
12
15
|
RSpec::Core::RakeTask.new(:spec)
|
16
|
+
Rake::Task[:spec].enhance ['fixtures:prep']
|
13
17
|
|
14
18
|
def version
|
15
19
|
require 'control_spec_helper/version'
|
@@ -17,20 +21,95 @@ def version
|
|
17
21
|
end
|
18
22
|
|
19
23
|
namespace :package do
|
20
|
-
desc
|
24
|
+
desc 'Create the gem'
|
21
25
|
task :gem do
|
22
|
-
spec = Gem::Specification.load(
|
23
|
-
|
24
|
-
|
26
|
+
spec = Gem::Specification.load('control_spec_helper.gemspec')
|
27
|
+
begin
|
28
|
+
Dir.mkdir('pkg')
|
29
|
+
rescue => e
|
30
|
+
puts e
|
31
|
+
end
|
32
|
+
if Gem::Version.new(`gem -v`) >= Gem::Version.new('2.0.0.a')
|
25
33
|
Gem::Package.build(spec)
|
26
34
|
else
|
27
35
|
Gem::Builder.new(spec).build
|
28
36
|
end
|
29
|
-
FileUtils.move("control_spec_helper-#{version}.gem",
|
37
|
+
FileUtils.move("control_spec_helper-#{version}.gem", 'pkg')
|
30
38
|
end
|
31
39
|
end
|
32
40
|
|
33
|
-
desc
|
41
|
+
desc 'Run rubocop against tree'
|
42
|
+
task :rubocop do
|
43
|
+
puts `rubocop`
|
44
|
+
end
|
45
|
+
|
46
|
+
desc 'Cleanup pkg directory'
|
34
47
|
task :clean do
|
35
|
-
FileUtils.rm_rf(
|
48
|
+
FileUtils.rm_rf('pkg')
|
49
|
+
end
|
50
|
+
|
51
|
+
namespace :fixtures do
|
52
|
+
desc 'Prepare fixtures directory'
|
53
|
+
task :create do
|
54
|
+
FileUtils.mkdir('fixtures') unless File.directory?('fixtures')
|
55
|
+
end
|
56
|
+
|
57
|
+
desc 'Remove fixtures directory'
|
58
|
+
task :clean do
|
59
|
+
FileUtils.rm_rf('fixtures')
|
60
|
+
end
|
61
|
+
|
62
|
+
desc 'Prepare fixtures repository'
|
63
|
+
task prep: [:create, 'package:gem'] do
|
64
|
+
begin
|
65
|
+
unless File.exist?('fixtures/puppet-control')
|
66
|
+
puts 'Cloning puppet_control repository...'
|
67
|
+
Git.clone('https://github.com/slalompdx/puppet-control.git',
|
68
|
+
'puppet-control',
|
69
|
+
path: 'fixtures',
|
70
|
+
branch: 'fixture')
|
71
|
+
end
|
72
|
+
Bundler.with_clean_env do
|
73
|
+
Dir.chdir("#{File.dirname(__FILE__)}/fixtures/puppet-control") do
|
74
|
+
puts 'Copying control_spec_helper into fixtures'
|
75
|
+
FileUtils.mkdir(
|
76
|
+
"#{File.dirname(__FILE__)}/fixtures/puppet-control/csh"
|
77
|
+
) unless File.exist?(
|
78
|
+
"#{File.dirname(__FILE__)}/fixtures/puppet-control/csh"
|
79
|
+
)
|
80
|
+
FileUtils.cp(
|
81
|
+
"#{File.dirname(__FILE__)}/pkg/control_spec_helper-#{version}.gem",
|
82
|
+
"#{File.dirname(__FILE__)}/fixtures/puppet-control/csh"
|
83
|
+
)
|
84
|
+
FileUtils.mkdir_p("#{File.dirname(__FILE__)}/fixtures/"\
|
85
|
+
'puppet-control/vendor/gems')
|
86
|
+
`gem unpack \
|
87
|
+
#{File.dirname(__FILE__)}/fixtures/puppet-control/csh/*.gem \
|
88
|
+
--target=./fixtures/puppet-control/vendor/gems/`
|
89
|
+
puts 'Bringing up test VM...'
|
90
|
+
IO.popen('unset RUBYLIB ; vagrant up') do |io|
|
91
|
+
io.each { |s| print s }
|
92
|
+
end
|
93
|
+
c = vagrant_ssh_config
|
94
|
+
Net::SSH.start(
|
95
|
+
c['HostName'],
|
96
|
+
c['User'],
|
97
|
+
port: c['Port'],
|
98
|
+
password: 'vagrant'
|
99
|
+
) do |ssh|
|
100
|
+
puts 'Installing control_spec_helper gem...'
|
101
|
+
ssh.exec!(
|
102
|
+
'cd /vagrant && gem install ./csh/*.gem --no-ri --no-rdoc'
|
103
|
+
)
|
104
|
+
puts 'Running bundle install...'
|
105
|
+
ssh.exec!('cd /vagrant && bundle install')
|
106
|
+
puts 'Installing vagrant...'
|
107
|
+
puts ssh.exec!('sudo rpm -ivh https://releases.hashicorp.com/vagrant/1.8.1/vagrant_1.8.1_x86_64.rpm')
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
ensure
|
112
|
+
`bundle config --delete local.control_spec_helper`
|
113
|
+
end
|
114
|
+
end
|
36
115
|
end
|
data/control_spec_helper.gemspec
CHANGED
@@ -1,26 +1,33 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
$LOAD_PATH.unshift File.expand_path(
|
3
|
-
require
|
2
|
+
$LOAD_PATH.unshift File.expand_path('../lib', __FILE__)
|
3
|
+
require 'control_spec_helper/version'
|
4
4
|
|
5
5
|
Gem::Specification.new do |s|
|
6
|
-
s.name =
|
6
|
+
s.name = 'control_spec_helper'
|
7
7
|
s.version = ControlSpecHelper::Version::STRING
|
8
|
-
s.authors = [
|
9
|
-
s.email = [
|
10
|
-
s.homepage =
|
11
|
-
s.summary =
|
12
|
-
s.description =
|
8
|
+
s.authors = ['Slalom Consulting']
|
9
|
+
s.email = ['eric.shamow@slalom.com']
|
10
|
+
s.homepage = 'http://github.com/eshamow/control_spec_helper'
|
11
|
+
s.summary = 'Standard tasks and configuration for control repo spec tests'
|
12
|
+
s.description = 'Contains rake tasks and a standard spec_helper for ' \
|
13
|
+
'running spec tests on puppet control repo'
|
13
14
|
s.licenses = 'Apache-2.0'
|
14
15
|
|
15
16
|
s.files = `git ls-files`.split("\n")
|
16
17
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
17
|
-
s.executables = `git ls-files -- bin/*`.split("\n")
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n")
|
19
|
+
.map { |f| File.basename(f) }
|
18
20
|
|
19
21
|
# Runtime dependencies, but also probably dependencies of requiring projects
|
20
|
-
s.add_runtime_dependency 'rake'
|
21
|
-
s.add_runtime_dependency 'rspec-puppet'
|
22
|
-
s.add_runtime_dependency 'puppet
|
23
|
-
s.add_runtime_dependency 'puppet-
|
24
|
-
s.add_runtime_dependency '
|
25
|
-
s.
|
22
|
+
s.add_runtime_dependency 'rake', '~> 11.0'
|
23
|
+
s.add_runtime_dependency 'rspec-puppet', '~> 2.4'
|
24
|
+
s.add_runtime_dependency 'puppet', '~> 4.0'
|
25
|
+
s.add_runtime_dependency 'puppet-lint', '~> 1.1'
|
26
|
+
s.add_runtime_dependency 'puppet-syntax', '~> 2.1'
|
27
|
+
s.add_runtime_dependency 'mocha', '~> 1.1'
|
28
|
+
s.add_development_dependency 'pry', '~> 0.10'
|
29
|
+
s.add_development_dependency 'git', '~> 1.3'
|
30
|
+
s.add_development_dependency 'rubocop', '~> 0.39'
|
31
|
+
s.add_development_dependency 'r10k', '~> 2.2'
|
32
|
+
s.add_development_dependency 'net-ssh', '~> 3.1'
|
26
33
|
end
|
data/ext/spec_helper_control.rb
CHANGED
@@ -6,7 +6,7 @@ else
|
|
6
6
|
require 'beaker-rspec/spec_helper'
|
7
7
|
require 'beaker-rspec/helpers/serverspec'
|
8
8
|
|
9
|
-
UNSUPPORTED_PLATFORMS = %w(Suse windows AIX Solaris Debian)
|
9
|
+
UNSUPPORTED_PLATFORMS = %w(Suse windows AIX Solaris Debian).freeze
|
10
10
|
|
11
11
|
RSpec.configure do |c|
|
12
12
|
# Project root
|
@@ -30,9 +30,12 @@ else
|
|
30
30
|
shell 'chown vagrant /controlrepo'
|
31
31
|
install_package(host, 'zlib-devel')
|
32
32
|
install_package(host, 'openssl-devel')
|
33
|
-
|
34
|
-
|
35
|
-
|
33
|
+
shell 'scp -i ~/.vagrant.d/insecure_private_key -o ' \
|
34
|
+
"StrictHostKeyChecking=no -r #{proj_root} " \
|
35
|
+
"vagrant@#{host.connection.ip}:/"
|
36
|
+
# scp_to host, proj_root, '/controlrepo'
|
37
|
+
shell 'cd /controlrepo && gem install ./control_spec_helper-0.0.1.gem' \
|
38
|
+
'&& bundle install && rake r10k'
|
36
39
|
shell 'mkdir -p /etc/facter/facts.d'
|
37
40
|
role = ENV['role'].sub(/^role::/, '')
|
38
41
|
shell "echo \"role=#{role}\" > /etc/facter/facts.d/role.txt"
|
@@ -48,7 +51,7 @@ else
|
|
48
51
|
EOS
|
49
52
|
|
50
53
|
modulepath = '/controlrepo/dist:/controlrepo/modules'
|
51
|
-
apply_manifest(pp, :
|
54
|
+
apply_manifest(pp, modulepath: modulepath, catch_failures: true)
|
52
55
|
end
|
53
56
|
end
|
54
57
|
end
|
@@ -1,7 +1,12 @@
|
|
1
|
-
# rubocop:disable
|
1
|
+
# rubocop:disable Metrics/ModuleLength
|
2
2
|
|
3
|
+
# Test control repositories, similar to puppetlabs_spec_helper
|
3
4
|
module ControlSpecHelper
|
4
|
-
attr_writer :basepath, :basebranch
|
5
|
+
attr_writer :basepath, :basebranch, :root
|
6
|
+
|
7
|
+
def file_name
|
8
|
+
__FILE__
|
9
|
+
end
|
5
10
|
|
6
11
|
def basepath
|
7
12
|
@basepath ||= 'site'
|
@@ -12,7 +17,7 @@ module ControlSpecHelper
|
|
12
17
|
end
|
13
18
|
|
14
19
|
def debug(msg)
|
15
|
-
puts "DEBUG: #{msg}"
|
20
|
+
$stderr.puts "DEBUG: #{msg}" unless ENV['debug'].nil?
|
16
21
|
end
|
17
22
|
|
18
23
|
def puppet_cmd
|
@@ -28,46 +33,51 @@ module ControlSpecHelper
|
|
28
33
|
end
|
29
34
|
|
30
35
|
def role_path
|
31
|
-
File.join(project_root,
|
36
|
+
@role_path || File.join(project_root, basepath, 'role')
|
32
37
|
end
|
33
38
|
|
34
39
|
def profile_path
|
35
|
-
File.join(project_root,
|
40
|
+
@profile_path || File.join(project_root, basepath, 'profile')
|
36
41
|
end
|
37
42
|
|
38
43
|
def diff_from_base
|
39
|
-
`git diff #{@basebranch} --cached --diff-filter=ACMR --name-only
|
44
|
+
`git diff #{@basebranch} --cached --diff-filter=ACMR --name-only`
|
45
|
+
.split("\n")
|
40
46
|
end
|
41
47
|
|
42
48
|
def diff_roles
|
43
|
-
diff_from_base
|
44
|
-
select { |file| file.match(%r{site/role/manifests}) }
|
45
|
-
map { |path| class_from_path(path) }
|
49
|
+
diff_from_base
|
50
|
+
.select { |file| file.match(%r{site/role/manifests}) }
|
51
|
+
.map { |path| class_from_path(path) }
|
46
52
|
end
|
47
53
|
|
48
54
|
def diff_profile
|
49
|
-
diff_from_base
|
50
|
-
select { |file| file.match(%r{site/profile/manifests}) }
|
51
|
-
map { |path| class_from_path(path) }
|
55
|
+
diff_from_base
|
56
|
+
.select { |file| file.match(%r{site/profile/manifests}) }
|
57
|
+
.map { |path| class_from_path(path) }
|
52
58
|
end
|
53
59
|
|
60
|
+
# This is for role and profile modules only
|
54
61
|
def class_from_path(path)
|
55
62
|
return nil unless path =~ /manifests.+\.pp$/
|
56
63
|
|
57
|
-
(path.sub(project_root + '/', '')
|
58
|
-
sub(/\.pp$/, '')
|
59
|
-
split('/') - %w(site manifests))
|
60
|
-
join('::')
|
64
|
+
(path.sub(project_root + '/', '')
|
65
|
+
.sub(/\.pp$/, '')
|
66
|
+
.split('/') - %w(site manifests))
|
67
|
+
.join('::')
|
61
68
|
end
|
62
69
|
|
63
70
|
def roles_that_include(klass)
|
71
|
+
roles = ''
|
64
72
|
Dir.chdir(role_path) do
|
65
73
|
debug("cd to #{role_path}")
|
66
|
-
`git grep -l #{klass}
|
67
|
-
|
68
|
-
|
74
|
+
roles = `git grep -l #{klass}`
|
75
|
+
.split("\n")
|
76
|
+
.map { |path| class_from_path(File.join(role_path, path)) }
|
77
|
+
.compact
|
69
78
|
end
|
70
79
|
debug "cd to #{Dir.pwd}"
|
80
|
+
roles
|
71
81
|
end
|
72
82
|
|
73
83
|
# TODO: this could be much more accurate if we compiled catalogs for all roles
|
@@ -80,14 +90,13 @@ module ControlSpecHelper
|
|
80
90
|
|
81
91
|
def spec_from_class(klass)
|
82
92
|
test = if klass =~ /profile/
|
83
|
-
{ :
|
93
|
+
{ path: 'profile', type: nil }
|
84
94
|
elsif klass =~ /role/
|
85
|
-
{ :
|
95
|
+
{ path: 'role', type: 'acceptance' }
|
86
96
|
else
|
87
|
-
|
97
|
+
raise ArgumentError
|
88
98
|
end
|
89
|
-
|
90
|
-
path = [project_root, @basepath, test[:path], 'spec', test[:type]].compact
|
99
|
+
path = [project_root, basepath, test[:path], 'spec', test[:type]].compact
|
91
100
|
File.join(path << (klass.split('::') - [test[:path]])) + '_spec.rb'
|
92
101
|
end
|
93
102
|
|
@@ -100,25 +109,32 @@ module ControlSpecHelper
|
|
100
109
|
debug "cd to #{Dir.pwd}"
|
101
110
|
end
|
102
111
|
|
112
|
+
# rubocop:disable Metrics/AbcSize
|
113
|
+
# rubocop:disable Metrics/MethodLength
|
103
114
|
def profile_fixtures
|
104
115
|
Dir.chdir(profile_path) do
|
116
|
+
debug(ENV['debug'])
|
105
117
|
debug("cd to #{profile_path}")
|
106
|
-
profile_ln =
|
118
|
+
profile_ln = "#{File.dirname(file_name)}/spec/fixtures/modules/profile"
|
107
119
|
|
108
|
-
FileUtils.mkpath
|
109
|
-
File.symlink(profile_path, profile_ln) unless File.
|
120
|
+
FileUtils.mkpath "#{File.dirname(file_name)}/spec/fixtures/modules/"
|
121
|
+
File.symlink(profile_path, profile_ln) unless File.exist?(profile_ln)
|
110
122
|
|
111
|
-
Dir.glob(
|
123
|
+
Dir.glob("#{File.dirname(file_name)}/../../modules/*").each do |folder|
|
112
124
|
next unless File.directory?(folder)
|
113
|
-
old_path = File.join(File.dirname(
|
114
|
-
new_path = File.
|
125
|
+
old_path = File.join(File.dirname(file_name), folder)
|
126
|
+
new_path = "#{File.dirname(file_name)}/spec/fixtures/modules/" \
|
127
|
+
"#{File.basename(folder)}"
|
115
128
|
|
116
129
|
File.symlink(old_path, new_path) unless File.symlink?(new_path)
|
117
130
|
end
|
118
131
|
end
|
119
132
|
debug "cd to #{Dir.pwd}"
|
120
133
|
end
|
134
|
+
# rubocop:enable Metrics/MethodLength
|
135
|
+
# rubocop:enable Metrics/AbcSize
|
121
136
|
|
137
|
+
# rubocop:disable Metrics/AbcSize
|
122
138
|
def spec_clean
|
123
139
|
Dir.chdir(project_root) do
|
124
140
|
debug("cd to #{project_root}")
|
@@ -128,9 +144,10 @@ module ControlSpecHelper
|
|
128
144
|
abort if fixtures == '' || !fixtures
|
129
145
|
abort if modules == '' || !modules
|
130
146
|
|
131
|
-
|
132
|
-
|
147
|
+
FileUtils.rm_rf(fixtures)
|
148
|
+
FileUtils.rm_rf(modules)
|
133
149
|
end
|
134
150
|
debug "cd to #{Dir.pwd}"
|
135
151
|
end
|
152
|
+
# rubocop:enable Metrics/AbcSize
|
136
153
|
end
|