control_spec_helper 0.0.2 → 0.0.3.pre
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/.gitignore +1 -1
- data/.ruby-version +1 -1
- data/Gemfile.lock +57 -26
- data/Guardfile +1 -0
- data/Rakefile +141 -48
- data/bin/csh-generate +7 -0
- data/config/Guardfile +24 -0
- data/control_spec_helper.gemspec +9 -5
- data/ext/Rakefile.sample +0 -2
- data/ext/spec_helper_control.rb +2 -1
- data/lib/control_spec_helper/control_spec_helper.rb +22 -21
- data/lib/control_spec_helper/debug.rb +7 -0
- data/lib/control_spec_helper/generate.rb +79 -0
- data/lib/control_spec_helper/rake_tasks.rb +0 -1
- data/lib/{slalom.rb → control_spec_helper/util.rb} +22 -7
- data/lib/control_spec_helper/version.rb +1 -1
- data/lib/control_spec_helper.rb +2 -0
- data/lib/tasks/apply.rake +1 -1
- data/lib/tasks/lint.rake +2 -1
- data/lib/tasks/r10k.rake +1 -1
- data/lib/tasks/spec_prep.rake +0 -1
- data/lib/tasks/unit.rake +15 -0
- data/spec/spec_helper.rb +2 -2
- data/spec/support/shared_contexts/rake.rb +1 -1
- data/spec/tasks/apply_debug_spec.rb +72 -0
- data/spec/tasks/apply_spec.rb +72 -0
- data/spec/tasks/apply_standalone_spec.rb +73 -0
- data/spec/tasks/help_spec.rb +54 -0
- data/spec/tasks/lint_spec.rb +69 -0
- data/spec/tasks/puppet_cmd_spec.rb +55 -0
- data/spec/tasks/r10k_spec.rb +69 -0
- data/spec/tasks/spec_clean_spec.rb +61 -0
- data/spec/tasks/spec_prep_spec.rb +69 -0
- data/spec/tasks/unit_spec.rb +70 -0
- data/spec/tasks/vplugins_spec.rb +18 -25
- data/spec/unit/control_spec_helper_spec.rb +3 -3
- data/spec/unit/debug_spec.rb +2 -2
- data/spec/unit/profile_fixtures_spec.rb +111 -125
- data/spec/unit/r10k_spec.rb +7 -0
- metadata +106 -48
- data/lib/tasks/git.rake +0 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b54bde90c4b319d0f9e2107ba26bf2780445860e
|
4
|
+
data.tar.gz: 92625f271ce558d64addee4e6668a6a2923bb24a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 91a175b0417e0497cd18799df712453201e0da0542462d29f5cb85030637de4d4d80f160754abef4d116923400d5db60ccef35c064e67c876fc9030f4f661934
|
7
|
+
data.tar.gz: a39b7cd2881c6bc1f307446ab3ec4bc3a8b868d1c48a40d800246a710c31431fd7338e667c5e645b144e7eeba980f6d8715d5620f8382ac0dd7eeb5d09885dde
|
data/.gitignore
CHANGED
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.
|
1
|
+
2.3.1
|
data/Gemfile.lock
CHANGED
@@ -1,73 +1,105 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
control_spec_helper (0.0.
|
4
|
+
control_spec_helper (0.0.3.pre)
|
5
|
+
git (~> 1.3)
|
6
|
+
guard (~> 2.14)
|
7
|
+
guard-rspec (~> 4.7)
|
8
|
+
listen (= 3.1.1)
|
5
9
|
mocha (~> 1.1)
|
10
|
+
net-ssh (~> 3.1)
|
6
11
|
puppet (~> 4.0)
|
7
|
-
puppet-lint (~>
|
12
|
+
puppet-lint (~> 2.0)
|
8
13
|
puppet-syntax (~> 2.1)
|
14
|
+
r10k (~> 2.2)
|
9
15
|
rake (~> 11.0)
|
10
16
|
rspec-puppet (~> 2.4)
|
17
|
+
rubocop (~> 0.39)
|
11
18
|
|
12
19
|
GEM
|
13
20
|
remote: https://rubygems.org/
|
14
21
|
specs:
|
15
|
-
|
16
|
-
ast (2.2.0)
|
22
|
+
ast (2.3.0)
|
17
23
|
coderay (1.1.1)
|
18
24
|
colored (1.2)
|
19
25
|
cri (2.6.1)
|
20
26
|
colored (~> 1.2)
|
21
27
|
diff-lcs (1.2.5)
|
22
28
|
facter (2.4.6)
|
23
|
-
|
29
|
+
fakefs (0.8.1)
|
24
30
|
faraday (0.9.2)
|
25
31
|
multipart-post (>= 1.2, < 3)
|
26
32
|
faraday_middleware (0.10.0)
|
27
33
|
faraday (>= 0.7.4, < 0.10)
|
34
|
+
ffi (1.9.10)
|
35
|
+
formatador (0.2.5)
|
28
36
|
git (1.3.0)
|
29
|
-
|
37
|
+
guard (2.14.0)
|
38
|
+
formatador (>= 0.2.4)
|
39
|
+
listen (>= 2.7, < 4.0)
|
40
|
+
lumberjack (~> 1.0)
|
41
|
+
nenv (~> 0.1)
|
42
|
+
notiffany (~> 0.0)
|
43
|
+
pry (>= 0.9.12)
|
44
|
+
shellany (~> 0.0)
|
45
|
+
thor (>= 0.18.1)
|
46
|
+
guard-compat (1.2.1)
|
47
|
+
guard-rspec (4.7.2)
|
48
|
+
guard (~> 2.1)
|
49
|
+
guard-compat (~> 1.1)
|
50
|
+
rspec (>= 2.99.0, < 4.0)
|
51
|
+
hiera (3.2.0)
|
30
52
|
json_pure
|
31
53
|
json_pure (1.8.3)
|
54
|
+
listen (3.1.1)
|
55
|
+
rb-fsevent (>= 0.9.3)
|
56
|
+
rb-inotify (>= 0.9.7)
|
32
57
|
log4r (1.1.10)
|
58
|
+
lumberjack (1.0.10)
|
33
59
|
metaclass (0.0.4)
|
34
60
|
method_source (0.8.2)
|
35
61
|
minitar (0.5.4)
|
36
62
|
mocha (1.1.0)
|
37
63
|
metaclass (~> 0.0.1)
|
38
|
-
multi_json (1.
|
64
|
+
multi_json (1.12.1)
|
39
65
|
multipart-post (2.0.0)
|
40
|
-
|
41
|
-
|
66
|
+
nenv (0.3.0)
|
67
|
+
net-ssh (3.2.0)
|
68
|
+
notiffany (0.1.0)
|
69
|
+
nenv (~> 0.1)
|
70
|
+
shellany (~> 0.0)
|
71
|
+
parser (2.3.1.2)
|
42
72
|
ast (~> 2.2)
|
43
73
|
powerpack (0.1.1)
|
44
74
|
pry (0.10.3)
|
45
75
|
coderay (~> 1.1.0)
|
46
76
|
method_source (~> 0.8.1)
|
47
77
|
slop (~> 3.4)
|
48
|
-
puppet (4.
|
49
|
-
CFPropertyList (~> 2.2.6)
|
78
|
+
puppet (4.5.2)
|
50
79
|
facter (> 2.0, < 4)
|
51
80
|
hiera (>= 2.0, < 4)
|
52
81
|
json_pure
|
53
|
-
puppet-lint (
|
82
|
+
puppet-lint (2.0.0)
|
54
83
|
puppet-syntax (2.1.0)
|
55
84
|
rake
|
56
|
-
puppet_forge (2.1
|
85
|
+
puppet_forge (2.2.1)
|
57
86
|
faraday (~> 0.9.0)
|
58
87
|
faraday_middleware (>= 0.9.0, < 0.11.0)
|
59
88
|
minitar
|
60
89
|
semantic_puppet (~> 0.1.0)
|
61
|
-
r10k (2.
|
90
|
+
r10k (2.3.0)
|
62
91
|
colored (= 1.2)
|
63
92
|
cri (~> 2.6.1)
|
64
93
|
log4r (= 1.1.10)
|
65
94
|
minitar
|
66
95
|
multi_json (~> 1.10)
|
67
|
-
puppet_forge (~> 2.
|
96
|
+
puppet_forge (~> 2.2)
|
68
97
|
semantic_puppet (~> 0.1.0)
|
69
98
|
rainbow (2.1.0)
|
70
|
-
rake (11.
|
99
|
+
rake (11.2.2)
|
100
|
+
rb-fsevent (0.9.7)
|
101
|
+
rb-inotify (0.9.7)
|
102
|
+
ffi (>= 0.5.0)
|
71
103
|
rspec (3.4.0)
|
72
104
|
rspec-core (~> 3.4.0)
|
73
105
|
rspec-expectations (~> 3.4.0)
|
@@ -83,27 +115,26 @@ GEM
|
|
83
115
|
rspec-puppet (2.4.0)
|
84
116
|
rspec
|
85
117
|
rspec-support (3.4.1)
|
86
|
-
rubocop (0.
|
87
|
-
parser (>= 2.3.0
|
118
|
+
rubocop (0.40.0)
|
119
|
+
parser (>= 2.3.1.0, < 3.0)
|
88
120
|
powerpack (~> 0.1)
|
89
121
|
rainbow (>= 1.99.1, < 3.0)
|
90
122
|
ruby-progressbar (~> 1.7)
|
91
123
|
unicode-display_width (~> 1.0, >= 1.0.1)
|
92
|
-
ruby-progressbar (1.8.
|
93
|
-
semantic_puppet (0.1.
|
124
|
+
ruby-progressbar (1.8.1)
|
125
|
+
semantic_puppet (0.1.3)
|
126
|
+
shellany (0.0.1)
|
94
127
|
slop (3.6.0)
|
95
|
-
|
128
|
+
thor (0.19.1)
|
129
|
+
unicode-display_width (1.1.0)
|
96
130
|
|
97
131
|
PLATFORMS
|
98
132
|
ruby
|
99
133
|
|
100
134
|
DEPENDENCIES
|
101
135
|
control_spec_helper!
|
102
|
-
|
103
|
-
net-ssh (~> 3.1)
|
136
|
+
fakefs (~> 0.8)
|
104
137
|
pry (~> 0.10)
|
105
|
-
r10k (~> 2.2)
|
106
|
-
rubocop (~> 0.39)
|
107
138
|
|
108
139
|
BUNDLED WITH
|
109
|
-
1.
|
140
|
+
1.12.5
|
data/Guardfile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
config/Guardfile
|
data/Rakefile
CHANGED
@@ -4,7 +4,8 @@ require 'rubygems/package_task'
|
|
4
4
|
require 'rspec/core/rake_task'
|
5
5
|
require 'git'
|
6
6
|
require 'net/ssh'
|
7
|
-
require '
|
7
|
+
require 'English'
|
8
|
+
require 'control_spec_helper/util'
|
8
9
|
|
9
10
|
task :default do
|
10
11
|
sh %(rake -T)
|
@@ -54,62 +55,154 @@ namespace :fixtures do
|
|
54
55
|
FileUtils.mkdir('fixtures') unless File.directory?('fixtures')
|
55
56
|
end
|
56
57
|
|
58
|
+
task :shared_prep do
|
59
|
+
unless File.exist?('fixtures/puppet-control')
|
60
|
+
puts 'Cloning puppet_control repository...'
|
61
|
+
Git.clone('https://github.com/slalompdx/puppet-control.git',
|
62
|
+
'puppet-control',
|
63
|
+
path: 'fixtures',
|
64
|
+
branch: 'fixture')
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
57
68
|
desc 'Remove fixtures directory'
|
58
69
|
task :clean do
|
70
|
+
if File.exist?('fixtures/puppet-control')
|
71
|
+
Dir.chdir('fixtures/puppet-control') do
|
72
|
+
`unset RUBYLIB ; vagrant destroy -f`
|
73
|
+
end
|
74
|
+
end
|
59
75
|
FileUtils.rm_rf('fixtures')
|
60
76
|
end
|
61
77
|
|
62
|
-
desc '
|
63
|
-
task
|
64
|
-
|
65
|
-
|
66
|
-
puts '
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
branch: 'fixture')
|
78
|
+
desc 'Bring up test vm'
|
79
|
+
task vm: [:create, 'package:gem', :shared_prep] do
|
80
|
+
Bundler.with_clean_env do
|
81
|
+
Dir.chdir("#{File.dirname(__FILE__)}/fixtures/puppet-control") do
|
82
|
+
puts 'Bringing up test VM...'
|
83
|
+
IO.popen('unset RUBYLIB ; vagrant up') do |io|
|
84
|
+
io.each { |s| print s }
|
85
|
+
end
|
71
86
|
end
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
desc 'Copy built gem into fixtures directory'
|
91
|
+
task copy_gem: [:create, 'package:gem', :shared_prep] do
|
92
|
+
Bundler.with_clean_env do
|
93
|
+
Dir.chdir("#{File.dirname(__FILE__)}/fixtures/puppet-control") do
|
94
|
+
puts 'Copying control_spec_helper into fixtures'
|
95
|
+
FileUtils.mkdir_p('./vendor/cache') unless File.exist?('./vendor/cache')
|
96
|
+
FileUtils.mkdir_p('./vendor/gems') unless File.exist?('./vendor/gems')
|
97
|
+
FileUtils.cp("../../pkg/control_spec_helper-#{version}.gem",
|
98
|
+
'./vendor/cache')
|
99
|
+
`gem unpack \
|
100
|
+
./vendor/cache/*.gem \
|
101
|
+
--target=./fixtures/puppet-control/vendor/gems/`
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
desc 'Install control_spec_helper gem on client vm'
|
107
|
+
task install_gem: [:copy_gem] do
|
108
|
+
Bundler.with_clean_env do
|
109
|
+
Dir.chdir("#{File.dirname(__FILE__)}/fixtures/puppet-control") do
|
110
|
+
connection = build_vagrant_connection(vagrant_ssh_config)
|
111
|
+
puts 'Installing control_spec_helper gem...'
|
112
|
+
ssh_exec!(
|
113
|
+
connection,
|
114
|
+
'cd /vagrant && gem install ./vendor/cache/*.gem --no-ri --no-rdoc'
|
115
|
+
)
|
116
|
+
connection.close
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
desc 'Run bundle install on client vm'
|
122
|
+
task bundle_install: [:install_gem] do
|
123
|
+
Bundler.with_clean_env do
|
124
|
+
Dir.chdir("#{File.dirname(__FILE__)}/fixtures/puppet-control") do
|
125
|
+
connection = build_vagrant_connection(vagrant_ssh_config)
|
126
|
+
puts 'Running bundle install...'
|
127
|
+
ssh_exec!(connection, 'cd /vagrant && bundle install --path=vendor/')
|
128
|
+
connection.close
|
129
|
+
end
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
desc 'Install vagrant on client vm'
|
134
|
+
task install_vagrant: [:vm] do
|
135
|
+
Bundler.with_clean_env do
|
136
|
+
Dir.chdir("#{File.dirname(__FILE__)}/fixtures/puppet-control") do
|
137
|
+
connection = build_vagrant_connection(vagrant_ssh_config)
|
138
|
+
response = ssh_exec!(connection, 'rpm -qa | grep vagrant')
|
139
|
+
if response[2] != 0
|
140
|
+
puts 'Installing vagrant...'
|
141
|
+
ssh_exec!(
|
142
|
+
connection,
|
143
|
+
'sudo rpm -ivh https://releases.hashicorp.com/'\
|
144
|
+
'vagrant/1.8.1/vagrant_1.8.1_x86_64.rpm'
|
83
145
|
)
|
84
|
-
|
85
|
-
|
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
|
146
|
+
else
|
147
|
+
puts 'Skipping vagrant install, already present...'
|
109
148
|
end
|
110
149
|
end
|
111
|
-
ensure
|
112
|
-
`bundle config --delete local.control_spec_helper`
|
113
150
|
end
|
114
151
|
end
|
152
|
+
|
153
|
+
desc 'Link puppet binary on client vm'
|
154
|
+
task link_puppet: [:vm] do
|
155
|
+
Bundler.with_clean_env do
|
156
|
+
Dir.chdir("#{File.dirname(__FILE__)}/fixtures/puppet-control") do
|
157
|
+
connection = build_vagrant_connection(vagrant_ssh_config)
|
158
|
+
puts 'Linking puppet binary...'
|
159
|
+
ssh_exec!(connection,
|
160
|
+
'sudo ls /usr/bin/puppet || '\
|
161
|
+
'sudo ln -s /opt/puppetlabs/bin/puppet /usr/bin/puppet'
|
162
|
+
)
|
163
|
+
connection.close
|
164
|
+
end
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
168
|
+
desc 'Run r10k on client vm'
|
169
|
+
task run_r10k: [:vm] do
|
170
|
+
Bundler.with_clean_env do
|
171
|
+
Dir.chdir("#{File.dirname(__FILE__)}/fixtures/puppet-control") do
|
172
|
+
connection = build_vagrant_connection(vagrant_ssh_config)
|
173
|
+
puts 'Running r10k on vm...'
|
174
|
+
ssh_exec!(connection,
|
175
|
+
'cd /vagrant ; bundle exec rake r10k')
|
176
|
+
connection.close
|
177
|
+
end
|
178
|
+
end
|
179
|
+
end
|
180
|
+
desc 'Convenience method - Update gem on existing vm'
|
181
|
+
task :update_gem do
|
182
|
+
Rake::Task['package:gem'].invoke
|
183
|
+
Rake::Task['fixtures:copy_gem'].invoke
|
184
|
+
Rake::Task['fixtures:install_gem'].invoke
|
185
|
+
Rake::Task['fixtures:bundle_install'].invoke
|
186
|
+
end
|
187
|
+
|
188
|
+
desc 'Prepare fixtures repository'
|
189
|
+
task prep: [:create, 'package:gem', :shared_prep] do
|
190
|
+
Rake::Task['fixtures:vm'].invoke
|
191
|
+
Rake::Task['fixtures:copy_gem'].invoke
|
192
|
+
Rake::Task['fixtures:install_gem'].invoke
|
193
|
+
Rake::Task['fixtures:bundle_install'].invoke
|
194
|
+
Rake::Task['fixtures:install_vagrant'].invoke
|
195
|
+
Rake::Task['fixtures:link_puppet'].invoke
|
196
|
+
Rake::Task['fixtures:run_r10k'].invoke
|
197
|
+
end
|
198
|
+
end
|
199
|
+
|
200
|
+
desc 'Execute unit tests'
|
201
|
+
task unit: ['fixtures:shared_prep'] do
|
202
|
+
exec 'bundle exec rspec -P spec/unit/*_spec.rb'
|
203
|
+
end
|
204
|
+
|
205
|
+
desc 'Execute acceptance tests'
|
206
|
+
task acceptance: ['fixtures:prep'] do
|
207
|
+
exec 'bundle exec rspec -P spec/tasks/*_spec.rb'
|
115
208
|
end
|
data/bin/csh-generate
ADDED
data/config/Guardfile
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
rspec_options = {
|
2
|
+
cmd: 'bundle exec rspec',
|
3
|
+
run_all: { cmd: 'bundle exec rspec -P spec/unit/*_spec.rb' }
|
4
|
+
}
|
5
|
+
|
6
|
+
guard :rspec, rspec_options do
|
7
|
+
require 'guard/rspec/dsl'
|
8
|
+
dsl = Guard::RSpec::Dsl.new(self)
|
9
|
+
|
10
|
+
# RSpec files
|
11
|
+
rspec = dsl.rspec
|
12
|
+
watch(rspec.spec_helper) { rspec.spec_dir }
|
13
|
+
watch(rspec.spec_support) { rspec.spec_dir }
|
14
|
+
watch(rspec.spec_files)
|
15
|
+
|
16
|
+
# Ruby files
|
17
|
+
ruby = dsl.ruby
|
18
|
+
dsl.watch_spec_files_for(ruby.lib_files)
|
19
|
+
|
20
|
+
# Rake files
|
21
|
+
watch(%r{lib/tasks/.+\.rake})
|
22
|
+
end
|
23
|
+
|
24
|
+
# vi:ft=ruby
|
data/control_spec_helper.gemspec
CHANGED
@@ -22,12 +22,16 @@ Gem::Specification.new do |s|
|
|
22
22
|
s.add_runtime_dependency 'rake', '~> 11.0'
|
23
23
|
s.add_runtime_dependency 'rspec-puppet', '~> 2.4'
|
24
24
|
s.add_runtime_dependency 'puppet', '~> 4.0'
|
25
|
-
s.add_runtime_dependency 'puppet-lint', '~> 1.1'
|
26
25
|
s.add_runtime_dependency 'puppet-syntax', '~> 2.1'
|
27
26
|
s.add_runtime_dependency 'mocha', '~> 1.1'
|
27
|
+
s.add_runtime_dependency 'git', '~> 1.3'
|
28
|
+
s.add_runtime_dependency 'rubocop', '~> 0.39'
|
29
|
+
s.add_runtime_dependency 'r10k', '~> 2.2'
|
30
|
+
s.add_runtime_dependency 'net-ssh', '~> 3.1'
|
31
|
+
s.add_runtime_dependency 'listen', '3.1.1'
|
32
|
+
s.add_runtime_dependency 'guard', '~> 2.14'
|
33
|
+
s.add_runtime_dependency 'guard-rspec', '~> 4.7'
|
34
|
+
s.add_runtime_dependency 'puppet-lint', '~> 2.0'
|
28
35
|
s.add_development_dependency 'pry', '~> 0.10'
|
29
|
-
s.add_development_dependency '
|
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'
|
36
|
+
s.add_development_dependency 'fakefs', '~> 0.8'
|
33
37
|
end
|
data/ext/Rakefile.sample
CHANGED
data/ext/spec_helper_control.rb
CHANGED
@@ -11,7 +11,8 @@ else
|
|
11
11
|
RSpec.configure do |c|
|
12
12
|
# Project root
|
13
13
|
proj_root = File.expand_path(
|
14
|
-
File.join(File.dirname(__FILE__), '..', '..', '..')
|
14
|
+
File.join(File.dirname(__FILE__), '..', '..', '..')
|
15
|
+
)
|
15
16
|
|
16
17
|
# Readable test descriptions
|
17
18
|
c.formatter = :documentation
|
@@ -1,7 +1,12 @@
|
|
1
1
|
# rubocop:disable Metrics/ModuleLength
|
2
2
|
|
3
|
+
require 'English'
|
4
|
+
require 'control_spec_helper/debug'
|
5
|
+
|
3
6
|
# Test control repositories, similar to puppetlabs_spec_helper
|
4
7
|
module ControlSpecHelper
|
8
|
+
include ControlSpecHelper::Debug
|
9
|
+
|
5
10
|
attr_writer :basepath, :basebranch, :root
|
6
11
|
|
7
12
|
def file_name
|
@@ -16,19 +21,15 @@ module ControlSpecHelper
|
|
16
21
|
@basebranch ||= 'master'
|
17
22
|
end
|
18
23
|
|
19
|
-
def debug(msg)
|
20
|
-
$stderr.puts "DEBUG: #{msg}" unless ENV['debug'].nil?
|
21
|
-
end
|
22
|
-
|
23
24
|
def puppet_cmd
|
24
|
-
'puppet apply manifests/site.pp \
|
25
|
+
'sudo puppet apply manifests/site.pp \
|
25
26
|
--modulepath $(echo `pwd`/modules:`pwd`/site) --hiera_config hiera.yaml'
|
26
27
|
end
|
27
28
|
|
28
29
|
def project_root
|
29
30
|
return @root if @root
|
30
31
|
@root = `git rev-parse --show-toplevel`.chomp
|
31
|
-
|
32
|
+
Debug.log("project_root = #{@root}")
|
32
33
|
@root
|
33
34
|
end
|
34
35
|
|
@@ -70,13 +71,13 @@ module ControlSpecHelper
|
|
70
71
|
def roles_that_include(klass)
|
71
72
|
roles = ''
|
72
73
|
Dir.chdir(role_path) do
|
73
|
-
|
74
|
+
Debug.log("cd to #{role_path}")
|
74
75
|
roles = `git grep -l #{klass}`
|
75
76
|
.split("\n")
|
76
77
|
.map { |path| class_from_path(File.join(role_path, path)) }
|
77
78
|
.compact
|
78
79
|
end
|
79
|
-
|
80
|
+
Debug.log "cd to #{Dir.pwd}"
|
80
81
|
roles
|
81
82
|
end
|
82
83
|
|
@@ -101,35 +102,35 @@ module ControlSpecHelper
|
|
101
102
|
end
|
102
103
|
|
103
104
|
def r10k
|
105
|
+
Debug.log "cd to #{Dir.pwd}"
|
104
106
|
Dir.chdir(project_root) do
|
105
|
-
|
107
|
+
Debug.log("cd to #{project_root}")
|
106
108
|
puts 'Installing modules with r10k'
|
107
109
|
`r10k puppetfile install`
|
108
110
|
end
|
109
|
-
|
111
|
+
$CHILD_STATUS.exitstatus
|
110
112
|
end
|
111
113
|
|
112
114
|
# rubocop:disable Metrics/AbcSize
|
113
115
|
# rubocop:disable Metrics/MethodLength
|
114
116
|
def profile_fixtures
|
115
117
|
Dir.chdir(profile_path) do
|
116
|
-
|
117
|
-
|
118
|
-
profile_ln = "#{File.dirname(file_name)}/spec/fixtures/modules/profile"
|
118
|
+
Debug.log("cd to #{profile_path}")
|
119
|
+
profile_ln = "#{Dir.pwd}/spec/fixtures/modules/profile"
|
119
120
|
|
120
|
-
FileUtils.mkpath "#{
|
121
|
+
FileUtils.mkpath "#{Dir.pwd}/spec/fixtures/modules/"
|
121
122
|
File.symlink(profile_path, profile_ln) unless File.exist?(profile_ln)
|
122
123
|
|
123
|
-
Dir.glob("#{
|
124
|
+
Dir.glob("#{Dir.pwd}/../../modules/*").each do |folder|
|
124
125
|
next unless File.directory?(folder)
|
125
|
-
old_path = File.join(
|
126
|
-
|
126
|
+
old_path = File.join(profile_path, '..', '..', 'modules',
|
127
|
+
File.basename(folder))
|
128
|
+
new_path = "#{Dir.pwd}/spec/fixtures/modules/" \
|
127
129
|
"#{File.basename(folder)}"
|
128
|
-
|
129
130
|
File.symlink(old_path, new_path) unless File.symlink?(new_path)
|
130
131
|
end
|
131
132
|
end
|
132
|
-
|
133
|
+
Debug.log "cd to #{Dir.pwd}"
|
133
134
|
end
|
134
135
|
# rubocop:enable Metrics/MethodLength
|
135
136
|
# rubocop:enable Metrics/AbcSize
|
@@ -137,7 +138,7 @@ module ControlSpecHelper
|
|
137
138
|
# rubocop:disable Metrics/AbcSize
|
138
139
|
def spec_clean
|
139
140
|
Dir.chdir(project_root) do
|
140
|
-
|
141
|
+
Debug.log("cd to #{project_root}")
|
141
142
|
fixtures = File.join(profile_path, 'spec', 'fixtures', 'modules')
|
142
143
|
modules = File.join(project_root, 'modules')
|
143
144
|
|
@@ -147,7 +148,7 @@ module ControlSpecHelper
|
|
147
148
|
FileUtils.rm_rf(fixtures)
|
148
149
|
FileUtils.rm_rf(modules)
|
149
150
|
end
|
150
|
-
|
151
|
+
Debug.log "cd to #{Dir.pwd}"
|
151
152
|
end
|
152
153
|
# rubocop:enable Metrics/AbcSize
|
153
154
|
end
|
@@ -0,0 +1,79 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
|
3
|
+
module ControlSpecHelper
|
4
|
+
module Generate
|
5
|
+
def self.skeleton
|
6
|
+
dirs = [
|
7
|
+
File.join('site', ''),
|
8
|
+
File.join('site', 'profile', ''),
|
9
|
+
File.join('site', 'role', ''),
|
10
|
+
File.join('site', 'profile', 'manifests', ''),
|
11
|
+
File.join('site', 'profile', 'spec', ''),
|
12
|
+
File.join('site', 'role', 'manifests', ''),
|
13
|
+
File.join('site', 'role', 'spec', '')
|
14
|
+
]
|
15
|
+
|
16
|
+
files = {
|
17
|
+
'.gitignore' => <<-HEREDOC,
|
18
|
+
.bundle/
|
19
|
+
.vagrant/
|
20
|
+
HEREDOC
|
21
|
+
'Puppetfile' => <<-HEREDOC,
|
22
|
+
mod 'puppetlabs/stdlib'
|
23
|
+
HEREDOC
|
24
|
+
'Rakefile' => <<-HEREDOC,
|
25
|
+
require 'control_spec_helper/control_spec_helper'
|
26
|
+
require 'control_spec_helper/rake_tasks'
|
27
|
+
require 'puppet-lint/tasks/puppet-lint'
|
28
|
+
|
29
|
+
include ControlSpecHelper
|
30
|
+
HEREDOC
|
31
|
+
|
32
|
+
File.join('site', 'profile', 'spec', 'spec_helper.rb') => <<-HEREDOC,
|
33
|
+
require 'rspec-puppet'
|
34
|
+
|
35
|
+
fixture_path = File.expand_path(File.join(__FILE__, '..', 'fixtures'))
|
36
|
+
|
37
|
+
RSpec.configure do |c|
|
38
|
+
c.module_path = File.join(fixture_path, 'modules')
|
39
|
+
c.manifest_dir = File.join(fixture_path, 'manifests')
|
40
|
+
end
|
41
|
+
HEREDOC
|
42
|
+
|
43
|
+
File.join('site', 'role', 'spec', 'spec_helper.rb') => <<-HEREDOC,
|
44
|
+
require 'rspec-puppet'
|
45
|
+
|
46
|
+
fixture_path = File.expand_path(File.join(__FILE__, '..', 'fixtures'))
|
47
|
+
|
48
|
+
RSpec.configure do |c|
|
49
|
+
c.module_path = File.join(fixture_path, 'modules')
|
50
|
+
c.manifest_dir = File.join(fixture_path, 'manifests')
|
51
|
+
end
|
52
|
+
HEREDOC
|
53
|
+
}
|
54
|
+
|
55
|
+
cwd = Dir.pwd
|
56
|
+
answer = ''
|
57
|
+
|
58
|
+
until answer =~ /ye?s?/i
|
59
|
+
print "Create control repo skeleton in #{cwd}? (yN) "
|
60
|
+
answer = $stdin.gets.chomp
|
61
|
+
abort 'Exiting...' if answer =~ /no?/i || answer.empty?
|
62
|
+
end
|
63
|
+
|
64
|
+
puts 'Creating skeleton...'
|
65
|
+
|
66
|
+
dirs.each do |path|
|
67
|
+
Dir.chdir(cwd) { FileUtils.mkdir_p(path) }
|
68
|
+
end
|
69
|
+
|
70
|
+
files.each do |path, content|
|
71
|
+
Dir.chdir(cwd) do
|
72
|
+
f = File.new(path, 'w')
|
73
|
+
f.puts content
|
74
|
+
f.close
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|