puppet-retrospec 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +28 -25
- data/VERSION +1 -1
- data/bin/retrospec +5 -4
- data/lib/helpers.rb +7 -6
- data/lib/puppet-retrospec.rb +117 -57
- data/lib/templates/acceptance_spec_test.erb +24 -0
- data/lib/templates/gemfile.erb +23 -4
- data/lib/templates/nodesets/centos-59-x64.yml +10 -0
- data/lib/templates/nodesets/centos-64-x64-pe.yml +12 -0
- data/lib/templates/nodesets/centos-64-x64.yml +11 -0
- data/lib/templates/nodesets/centos-65-x64.yml +10 -0
- data/lib/templates/nodesets/debian-607-x64.yml +11 -0
- data/lib/templates/nodesets/debian-70rc1-x64.yml +11 -0
- data/lib/templates/nodesets/debian-73-i386.yml +11 -0
- data/lib/templates/nodesets/debian-73-x64.yml +11 -0
- data/lib/templates/nodesets/default.yml +11 -0
- data/lib/templates/nodesets/fedora-18-x64.yml +11 -0
- data/lib/templates/nodesets/sles-11sp1-x64.yml +11 -0
- data/lib/templates/nodesets/ubuntu-server-10044-x64.yml +10 -0
- data/lib/templates/nodesets/ubuntu-server-12042-x64.yml +10 -0
- data/lib/templates/nodesets/ubuntu-server-1310-x64.yml +11 -0
- data/lib/templates/nodesets/ubuntu-server-1404-x64.yml +11 -0
- data/lib/templates/rakefile.erb +41 -1
- data/lib/templates/spec_helper_acceptance.rb.erb +33 -0
- data/puppet-retrospec.gemspec +21 -4
- data/spec/unit/puppet-retrospec_spec.rb +111 -22
- metadata +20 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4fd53d7dc8e523b7ab53a2b04244836e7b0b972d
|
4
|
+
data.tar.gz: 5e4d3517dc4b7b34172ff914b6334b8fd59ff7c9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d1d577bb42dbcf4b39a8c0e458d5875615f1318dded5348c4d19ba81b2f5c6e957a469ad24eba172aaebf4e53fc48b321ea5e24d423188c68deb763b397610ce
|
7
|
+
data.tar.gz: 8feb4bab90ce38a5b9cdf4a60b479901af24f0443c01e4ad814bd26d983fdab725d1baa1153ee42eb4d9e5d7705e1183987b472422bc0417034175e604a94a3c
|
data/README.md
CHANGED
@@ -20,24 +20,14 @@ Install
|
|
20
20
|
|
21
21
|
How to use
|
22
22
|
=============
|
23
|
-
Run from a rake task
|
24
|
-
```
|
25
|
-
require 'puppet-retrospec'
|
26
|
-
|
27
|
-
desc "Scans the module directory and automatically creates basic spec tests"
|
28
|
-
task :retrospec do
|
29
|
-
Retrospec.run
|
30
|
-
end
|
31
|
-
|
32
|
-
```
|
33
|
-
|
34
23
|
Run from the command line
|
35
24
|
```
|
36
25
|
$ retrospec -h
|
37
|
-
Options:
|
38
|
-
--module-path, -m <s>:
|
26
|
+
Options:
|
27
|
+
--module-path, -m <s>: The path (relative or absolute) to the module directory (Defaults to current directory)
|
39
28
|
--template-dir, -t <s>: Path to templates directory (only for overriding Retrospec templates)
|
40
|
-
--enable-user-templates, -e: Use Retrospec templates from
|
29
|
+
--enable-user-templates, -e: Use Retrospec templates from ~/.puppet_retrospec_templates
|
30
|
+
--enable-beaker-tests, -n: Enable the creation of beaker tests
|
41
31
|
--help, -h: Show this message
|
42
32
|
|
43
33
|
retrospec -m ~/projects/puppet_modules/apache
|
@@ -141,29 +131,42 @@ your puppet module with unit tests.
|
|
141
131
|
Overriding the templates
|
142
132
|
=======================
|
143
133
|
There may be a time when you want to override the default templates used to generate the rspec related files.
|
144
|
-
To override these templates just set **one** of the following
|
134
|
+
To override these templates just set **one** of the following cli options.
|
145
135
|
|
146
136
|
```shell
|
147
|
-
|
148
|
-
|
137
|
+
--template-dir, -t <s>: Path to templates directory (only for overriding Retrospec templates)
|
138
|
+
--enable-user-templates, -e: Use Retrospec templates from ~/.puppet_retrospec_templates
|
149
139
|
|
150
140
|
```
|
151
141
|
|
152
|
-
Once one of the
|
142
|
+
Once one of the options is set, retrospec will copy over all the templates from the gem location to the default
|
153
143
|
or specified override templates path.
|
154
144
|
If you have already created the a erb file in the templates location, then puppet-retrospec will not overwrite the file.
|
155
|
-
You can set multiple template paths if you use them for different projects so just be sure the set the
|
156
|
-
template
|
145
|
+
You can set multiple template paths if you use them for different projects so just be sure the set the correct
|
146
|
+
template option when running retrospec.
|
157
147
|
|
158
|
-
Setting the `
|
148
|
+
Setting the `--enable-user-templates` option will tell retrospec to use the default user template location.
|
159
149
|
|
160
150
|
The default location for the templates when using this variable is ~/.puppet_retrospec_templates
|
161
151
|
|
162
|
-
If you wish to override ~/.puppet_retrospec_templates location you can use the following
|
163
|
-
|
164
|
-
|
152
|
+
If you wish to override ~/.puppet_retrospec_templates location you can use the following option
|
153
|
+
`--template-dir`
|
154
|
+
|
155
|
+
If you set the `--template-dir` option you are not required to set the set `--enable-user-templates` option
|
156
|
+
|
157
|
+
Example:
|
158
|
+
`--template-dir=~/my_templates`
|
159
|
+
|
160
|
+
Beaker Testing
|
161
|
+
=================
|
162
|
+
Beaker is Puppetlabs acceptance testing framework that you use to test puppet code on real machines. Beaker is fairly new
|
163
|
+
and is subject to frequent changes. Testing patterns have not been established yet so consider beaker support in puppet-retrospec
|
164
|
+
to be experimental.
|
165
|
+
|
166
|
+
If you wish to enable the creation of beaker tests you can use the following cli option. By default these
|
167
|
+
acceptance tests are not created. However at a later time they will be enabled by default.
|
165
168
|
|
166
|
-
`
|
169
|
+
`--enable-beaker-tests`
|
167
170
|
|
168
171
|
Troubleshooting
|
169
172
|
===============
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.4.0
|
data/bin/retrospec
CHANGED
@@ -3,13 +3,14 @@ require 'trollop'
|
|
3
3
|
require 'puppet-retrospec'
|
4
4
|
|
5
5
|
opts = Trollop::options do
|
6
|
-
opt :module_path, "
|
6
|
+
opt :module_path, "The path (relative or absolute) to the module directory (Defaults to current directory) " ,
|
7
7
|
:type => :string, :required => false, :default => nil
|
8
8
|
opt :template_dir, "Path to templates directory (only for overriding Retrospec templates)", :type => :string,
|
9
9
|
:required => false, :default => nil
|
10
10
|
opt :enable_user_templates, "Use Retrospec templates from #{File.expand_path('~/.puppet_retrospec_templates')}",
|
11
11
|
:require => false, :type => :boolean
|
12
|
+
opt :enable_beaker_tests, "Enable the creation of beaker tests", :require => false, :type => :boolean
|
12
13
|
end
|
13
|
-
|
14
|
-
|
15
|
-
|
14
|
+
|
15
|
+
retro = Retrospec.new(opts[:module_path], opts)
|
16
|
+
retro.create_files
|
data/lib/helpers.rb
CHANGED
@@ -56,10 +56,9 @@ class Helpers
|
|
56
56
|
# creates and/or copies all templates in the gem to the user templates path
|
57
57
|
# returns: user_template_dir
|
58
58
|
def self.sync_user_template_dir(user_template_directory)
|
59
|
-
Dir.glob(File.join(gem_template_dir,
|
60
|
-
|
61
|
-
dest
|
62
|
-
safe_copy_file(src, dest)
|
59
|
+
Dir.glob(File.join(gem_template_dir, '**', '*')).each do |src|
|
60
|
+
dest = src.gsub(gem_template_dir, user_template_directory)
|
61
|
+
safe_copy_file(src, dest) unless File.directory?(src)
|
63
62
|
end
|
64
63
|
user_template_directory
|
65
64
|
end
|
@@ -82,12 +81,13 @@ class Helpers
|
|
82
81
|
end
|
83
82
|
|
84
83
|
def self.safe_copy_file(src, dest)
|
85
|
-
if File.exists?(dest)
|
84
|
+
if File.exists?(dest) and not File.zero?(dest)
|
86
85
|
$stderr.puts "!! #{dest} already exists"
|
87
86
|
else
|
88
87
|
if not File.exists?(src)
|
89
88
|
safe_touch(src)
|
90
89
|
else
|
90
|
+
safe_mkdir(File.dirname(dest))
|
91
91
|
FileUtils.cp(src,dest)
|
92
92
|
end
|
93
93
|
puts " + #{dest}"
|
@@ -108,7 +108,8 @@ class Helpers
|
|
108
108
|
def self.safe_create_file(filename, content)
|
109
109
|
if File.exists? filename
|
110
110
|
old_content = File.read(filename)
|
111
|
-
if
|
111
|
+
# if we did a better comparison of content we could be smarter about when we create files
|
112
|
+
if old_content != content or not File.zero?(filename)
|
112
113
|
$stderr.puts "!! #{filename} already exists and differs from template"
|
113
114
|
end
|
114
115
|
else
|
data/lib/puppet-retrospec.rb
CHANGED
@@ -9,18 +9,31 @@ class Retrospec
|
|
9
9
|
attr_reader :tmp_module_path
|
10
10
|
attr_accessor :default_modules
|
11
11
|
attr_accessor :facts_used
|
12
|
+
attr_accessor :module_name
|
13
|
+
attr_reader :template_dir
|
12
14
|
|
13
15
|
# module path is the relative or absolute path to the module that should retro fitted
|
14
|
-
|
16
|
+
# opts hash contains additional flags and options that can be user to control the creation of the tests
|
17
|
+
# opts[:enable_user_templates]
|
18
|
+
# opts[:enable_beaker_tests]
|
19
|
+
# opts[:template_dir]
|
20
|
+
def initialize(module_path=nil,opts={})
|
15
21
|
# user supplied a template path or user wants to use local templates
|
16
|
-
if
|
17
|
-
|
22
|
+
if opts[:template_dir] or opts[:enable_user_templates]
|
23
|
+
@template_dir = Helpers.setup_user_template_dir(opts[:template_dir])
|
24
|
+
else
|
25
|
+
# if user doesn't supply template directory we assume we should use the templates in this gem
|
26
|
+
@template_dir = Helpers.gem_template_dir
|
18
27
|
end
|
19
|
-
@
|
20
|
-
@
|
28
|
+
@enable_beaker_tests = opts[:enable_beaker_tests]
|
29
|
+
@module_path = validate_module_dir(module_path)
|
21
30
|
tmp_module_path
|
22
31
|
end
|
23
32
|
|
33
|
+
def enable_beaker_tests?
|
34
|
+
@enable_beaker_tests == true
|
35
|
+
end
|
36
|
+
|
24
37
|
def default_modules
|
25
38
|
@default_modules ||= ['stdlib']
|
26
39
|
end
|
@@ -31,13 +44,30 @@ class Retrospec
|
|
31
44
|
safe_create_gemfile
|
32
45
|
safe_create_rakefile
|
33
46
|
safe_make_shared_context
|
47
|
+
safe_create_acceptance_spec_helper if enable_beaker_tests?
|
48
|
+
safe_create_node_sets if enable_beaker_tests?
|
34
49
|
types.each do |type|
|
35
50
|
safe_create_resource_spec_files(type)
|
51
|
+
if enable_beaker_tests?
|
52
|
+
safe_create_acceptance_tests(type)
|
53
|
+
end
|
36
54
|
end
|
37
55
|
FileUtils.remove_entry_secure tmp_modules_dir # ensure we remove the temporary directory
|
38
56
|
true
|
39
57
|
end
|
40
58
|
|
59
|
+
def safe_create_node_sets
|
60
|
+
# copy all of the nodesets from the templates path nodesets directory
|
61
|
+
Dir.glob("#{template_dir}/nodesets/*.yml").each do |node_set_file|
|
62
|
+
dest = File.expand_path(File.join(module_path, 'spec', 'acceptance', 'nodesets', File.basename(node_set_file) ))
|
63
|
+
Helpers.safe_copy_file(node_set_file,dest)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def safe_create_acceptance_spec_helper(template='spec_helper_acceptance.rb.erb')
|
68
|
+
safe_create_template_file(File.join('spec', 'spec_helper_acceptance.rb'), template)
|
69
|
+
end
|
70
|
+
|
41
71
|
def safe_create_rakefile(template='rakefile.erb')
|
42
72
|
safe_create_template_file('Rakefile', template)
|
43
73
|
end
|
@@ -81,15 +111,25 @@ class Retrospec
|
|
81
111
|
def tmp_module_path
|
82
112
|
if @tmp_module_path.nil?
|
83
113
|
# create a link where source is the current repo and dest is /tmp/modules/module_name
|
84
|
-
path = File.join(tmp_modules_dir,
|
114
|
+
path = File.join(tmp_modules_dir, module_dir_name)
|
85
115
|
FileUtils.ln_s(module_path, path)
|
86
116
|
@tmp_module_path = path
|
87
117
|
end
|
88
118
|
@tmp_module_path
|
89
119
|
end
|
90
120
|
|
121
|
+
# the directory name of the module
|
122
|
+
# usually this is the same as the module name but it can be namespaced sometimes
|
123
|
+
def module_dir_name
|
124
|
+
@module_dir_name ||= File.basename(module_path)
|
125
|
+
end
|
126
|
+
|
127
|
+
# returns the name of the module ie. mysql::config => mysql
|
91
128
|
def module_name
|
92
|
-
@module_name
|
129
|
+
if @module_name.nil?
|
130
|
+
@module_name = types.first.name.split('::').first if types.length > 0
|
131
|
+
end
|
132
|
+
@module_name
|
93
133
|
end
|
94
134
|
|
95
135
|
# creates a tmp module directory so puppet can work correctly
|
@@ -103,24 +143,6 @@ class Retrospec
|
|
103
143
|
@modules_dir
|
104
144
|
end
|
105
145
|
|
106
|
-
# pass in either the path to the module directory
|
107
|
-
# or the path to a specific manifest
|
108
|
-
# defaults to all manifests in the current directory
|
109
|
-
# if ENV['RETROSPEC_ENABLE_LOCAL_TEMPLATES'] = 'true' the use the default user templates path
|
110
|
-
# if ENV["RETROSPEC_TEMPLATES_PATH"] is set then we will override the default user template path
|
111
|
-
# with the path provided
|
112
|
-
# we will use the necessary templates from that directory instead of the default gem path
|
113
|
-
def self.run(path=nil, template_dir=ENV['RETROSPEC_TEMPLATES_PATH'])
|
114
|
-
spec = Retrospec.new(path, template_dir)
|
115
|
-
spec.create_files
|
116
|
-
end
|
117
|
-
|
118
|
-
# if user doesn't supply template directory we assume we should use the templates in this gem
|
119
|
-
def template_dir
|
120
|
-
@template_dir ||= Helpers.gem_template_dir
|
121
|
-
end
|
122
|
-
|
123
|
-
|
124
146
|
def modules_included
|
125
147
|
@modules_included ||= default_modules + referenced_modules
|
126
148
|
end
|
@@ -129,25 +151,7 @@ class Retrospec
|
|
129
151
|
[]
|
130
152
|
end
|
131
153
|
|
132
|
-
|
133
|
-
# returns the validated dir
|
134
|
-
def validate_module_dir(dir)
|
135
|
-
# first check to see if manifests directory even exists when path is nil
|
136
|
-
if dir.nil?
|
137
|
-
dir = '.'
|
138
|
-
elsif dir.instance_of?(Array)
|
139
|
-
raise "Retrospec - an array of moudule paths is not supported at this time"
|
140
|
-
end
|
141
|
-
dir = File.expand_path(dir)
|
142
|
-
manifest_dir = File.join(dir,'manifests')
|
143
|
-
if ! File.exist?(manifest_dir)
|
144
|
-
raise "No manifest directory in #{manifest_dir}, cannot validate this is a module"
|
145
|
-
else
|
146
|
-
files = Dir.glob("#{manifest_dir}/**/*.pp")
|
147
|
-
warn 'No puppet manifest files found at #' if files.length < 1
|
148
|
-
end
|
149
|
-
dir
|
150
|
-
end
|
154
|
+
|
151
155
|
|
152
156
|
# finds all the included resources so we can test and depend on in the fixtures file
|
153
157
|
# def included_declarations(file)
|
@@ -175,23 +179,54 @@ class Retrospec
|
|
175
179
|
# @included_declarations
|
176
180
|
# end
|
177
181
|
|
182
|
+
|
183
|
+
|
178
184
|
# Creates an associated spec file for each type and even creates the subfolders for nested classes one::two::three
|
179
185
|
def safe_create_resource_spec_files(type,template='resource_spec_file.erb')
|
180
|
-
classes_dir = 'spec/classes'
|
181
|
-
defines_dir = 'spec/defines'
|
182
|
-
hosts_dir = 'spec/hosts'
|
183
186
|
@parameters = type.arguments
|
184
187
|
@type = type
|
188
|
+
file_path = generate_file_path(type, false)
|
189
|
+
safe_create_template_file(file_path, template)
|
190
|
+
file_path
|
191
|
+
end
|
192
|
+
|
193
|
+
def safe_create_acceptance_tests(type,template='acceptance_spec_test.erb')
|
194
|
+
@parameters = type.arguments
|
195
|
+
@type = type
|
196
|
+
file_path = generate_file_path(type, true)
|
197
|
+
safe_create_template_file(file_path, template)
|
198
|
+
file_path
|
199
|
+
end
|
200
|
+
|
201
|
+
# creates a puppet environment given a module path and environment name
|
202
|
+
def puppet_environment
|
203
|
+
@puppet_environment ||= Puppet::Node::Environment.create('production', [tmp_modules_dir])
|
204
|
+
end
|
205
|
+
|
206
|
+
# generates a file path for spec tests based on the resource name. An added option
|
207
|
+
# is to generate directory names for each parent resource as a default option
|
208
|
+
# at this time acceptance tests follow this same test directory layout until best
|
209
|
+
# practices are formed.
|
210
|
+
def generate_file_path(type, is_acceptance_test)
|
211
|
+
classes_dir = 'classes'
|
212
|
+
defines_dir = 'defines'
|
213
|
+
hosts_dir = 'hosts'
|
214
|
+
acceptance_dir = 'acceptance'
|
185
215
|
case type.type
|
186
216
|
when :hostclass
|
187
217
|
type_dir_name = classes_dir
|
188
218
|
when :definition
|
189
219
|
type_dir_name = defines_dir
|
190
220
|
else
|
191
|
-
raise "#{type.type}
|
221
|
+
raise "#{type.type} retrospec does not support this resource type yet"
|
192
222
|
end
|
223
|
+
if is_acceptance_test
|
224
|
+
type_dir_name = File.join('spec',acceptance_dir, type_dir_name)
|
225
|
+
else
|
226
|
+
type_dir_name = File.join('spec', type_dir_name)
|
227
|
+
end
|
228
|
+
file_name = generate_file_name(type.name)
|
193
229
|
tokens = type.name.split('::')
|
194
|
-
file_name = tokens.pop # the last item should be the filename
|
195
230
|
# if there are only two tokens ie. tomcat::params we dont need to create a subdirectory
|
196
231
|
if tokens.count > 1
|
197
232
|
# this is a deep level resource ie. tomcat::config::server::connector
|
@@ -200,13 +235,23 @@ class Retrospec
|
|
200
235
|
tokens.delete_at(0)
|
201
236
|
# so lets make a directory structure out of it
|
202
237
|
dir_name = File.join(tokens) # config/server
|
203
|
-
dir_name = File.join(type_dir_name,dir_name) # spec/classes/tomcat/config/server
|
204
|
-
safe_create_template_file(File.join(dir_name,"#{file_name}_spec.rb"), template)
|
238
|
+
dir_name = File.join(type_dir_name,dir_name, file_name) # spec/classes/tomcat/config/server
|
205
239
|
else
|
206
|
-
|
240
|
+
dir_name = File.join(type_dir_name,file_name)
|
207
241
|
end
|
242
|
+
dir_name
|
208
243
|
end
|
209
244
|
|
245
|
+
# returns the filename of the type
|
246
|
+
def generate_file_name(type_name)
|
247
|
+
tokens = type_name.split('::')
|
248
|
+
file_name = tokens.pop
|
249
|
+
"#{file_name}_spec.rb"
|
250
|
+
end
|
251
|
+
|
252
|
+
private
|
253
|
+
|
254
|
+
# creates a puppet resource request to be used indirectly
|
210
255
|
def request(key, method)
|
211
256
|
instance = Puppet::Indirector::Indirection.instance(:resource_type)
|
212
257
|
indirection_name = 'test'
|
@@ -215,15 +260,11 @@ class Retrospec
|
|
215
260
|
@request
|
216
261
|
end
|
217
262
|
|
263
|
+
# creates an instance of the resource type parser
|
218
264
|
def resource_type_parser
|
219
265
|
@resource_type_parser ||= Puppet::Indirector::ResourceType::Parser.new
|
220
266
|
end
|
221
267
|
|
222
|
-
# creates a puppet environment given a module path and environment name
|
223
|
-
def puppet_environment
|
224
|
-
@puppet_environment ||= Puppet::Node::Environment.create('production', [tmp_modules_dir])
|
225
|
-
end
|
226
|
-
|
227
268
|
# returns the resource type ofject given a resource name ie. tomcat::connector
|
228
269
|
def find_resource(resource_name)
|
229
270
|
request = request(resource_name, 'find')
|
@@ -236,4 +277,23 @@ class Retrospec
|
|
236
277
|
resource_type_parser.search(request)
|
237
278
|
end
|
238
279
|
|
280
|
+
# processes a directory and expands to its full path, assumes './'
|
281
|
+
# returns the validated dir
|
282
|
+
def validate_module_dir(dir)
|
283
|
+
# first check to see if manifests directory even exists when path is nil
|
284
|
+
if dir.nil?
|
285
|
+
dir = '.'
|
286
|
+
elsif dir.instance_of?(Array)
|
287
|
+
raise "Retrospec - an array of moudule paths is not supported at this time"
|
288
|
+
end
|
289
|
+
dir = File.expand_path(dir)
|
290
|
+
manifest_dir = File.join(dir,'manifests')
|
291
|
+
if ! File.exist?(manifest_dir)
|
292
|
+
raise "No manifest directory in #{manifest_dir}, cannot validate this is a module"
|
293
|
+
else
|
294
|
+
files = Dir.glob("#{manifest_dir}/**/*.pp")
|
295
|
+
warn 'No puppet manifest files found at #' if files.length < 1
|
296
|
+
end
|
297
|
+
dir
|
298
|
+
end
|
239
299
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'spec_helper_acceptance'
|
2
|
+
|
3
|
+
describe '<%= @type.name -%> <%= @type.type %>' do
|
4
|
+
describe 'running puppet code' do
|
5
|
+
it 'should work with no errors' do
|
6
|
+
pp = <<-EOS
|
7
|
+
class { '<%= @type.name %>':
|
8
|
+
<%- @parameters.each do |k,v| -%>
|
9
|
+
<%- if v.nil? -%>
|
10
|
+
<%= "#{k} => 'place_value_here'," %>
|
11
|
+
<%- else -%>
|
12
|
+
<%= "##{k} => #{v}," %>
|
13
|
+
<%- end -%>
|
14
|
+
<%- end -%>
|
15
|
+
}
|
16
|
+
EOS
|
17
|
+
|
18
|
+
# Run it twice and test for idempotency
|
19
|
+
apply_manifest(pp, :catch_failures => true)
|
20
|
+
expect(apply_manifest(pp, :catch_failures => true).exit_code).to be_zero
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
data/lib/templates/gemfile.erb
CHANGED
@@ -1,8 +1,27 @@
|
|
1
1
|
source "https://rubygems.org"
|
2
2
|
|
3
|
-
group :
|
4
|
-
|
5
|
-
|
6
|
-
|
3
|
+
group :test do
|
4
|
+
gem "rake"
|
5
|
+
gem "puppet", ENV['PUPPET_VERSION'] || '~> 3.7.0'
|
6
|
+
gem "rspec-puppet", :git => 'https://github.com/rodjek/rspec-puppet.git'
|
7
|
+
gem "puppetlabs_spec_helper"
|
8
|
+
gem 'rspec-puppet-utils', :git => 'https://github.com/Accuity/rspec-puppet-utils.git'
|
9
|
+
gem 'hiera-puppet-helper', :git => 'https://github.com/bobtfish/hiera-puppet-helper.git'
|
10
|
+
|
11
|
+
end
|
12
|
+
|
13
|
+
group :development do
|
14
|
+
gem "travis"
|
15
|
+
gem "travis-lint"
|
16
|
+
<%- if enable_beaker_tests? -%>
|
17
|
+
gem "beaker", :git => 'https://github.com/logicminds/beaker.git', :branch => 'sshd_restart'
|
18
|
+
gem "beaker-rspec", :git => 'https://github.com/puppetlabs/beaker-rspec.git'
|
19
|
+
gem "vagrant-wrapper"
|
20
|
+
<%- end -%>
|
21
|
+
gem "puppet-blacksmith"
|
22
|
+
gem "guard-rake"
|
23
|
+
gem "metadata-json-lint"
|
24
|
+
gem 'puppet-syntax'
|
25
|
+
gem 'serverspec'
|
7
26
|
end
|
8
27
|
|
@@ -0,0 +1,12 @@
|
|
1
|
+
HOSTS:
|
2
|
+
centos-64-x64:
|
3
|
+
roles:
|
4
|
+
- master
|
5
|
+
- database
|
6
|
+
- dashboard
|
7
|
+
platform: el-6-x86_64
|
8
|
+
box : centos-64-x64-vbox4210-nocm
|
9
|
+
box_url : http://puppet-vagrant-boxes.puppetlabs.com/centos-64-x64-vbox4210-nocm.box
|
10
|
+
hypervisor : vagrant
|
11
|
+
CONFIG:
|
12
|
+
type: pe
|
@@ -0,0 +1,11 @@
|
|
1
|
+
HOSTS:
|
2
|
+
debian-607-x64:
|
3
|
+
roles:
|
4
|
+
- master
|
5
|
+
platform: debian-6-amd64
|
6
|
+
box : debian-607-x64-vbox4210-nocm
|
7
|
+
box_url : http://puppet-vagrant-boxes.puppetlabs.com/debian-607-x64-vbox4210-nocm.box
|
8
|
+
hypervisor : vagrant
|
9
|
+
CONFIG:
|
10
|
+
log_level: debug
|
11
|
+
type: git
|
@@ -0,0 +1,11 @@
|
|
1
|
+
HOSTS:
|
2
|
+
debian-70rc1-x64:
|
3
|
+
roles:
|
4
|
+
- master
|
5
|
+
platform: debian-7-amd64
|
6
|
+
box : debian-70rc1-x64-vbox4210-nocm
|
7
|
+
box_url : http://puppet-vagrant-boxes.puppetlabs.com/debian-70rc1-x64-vbox4210-nocm.box
|
8
|
+
hypervisor : vagrant
|
9
|
+
CONFIG:
|
10
|
+
log_level: debug
|
11
|
+
type: git
|
@@ -0,0 +1,11 @@
|
|
1
|
+
HOSTS:
|
2
|
+
debian-73-i386:
|
3
|
+
roles:
|
4
|
+
- master
|
5
|
+
platform: debian-7-i386
|
6
|
+
box : debian-73-i386-virtualbox-nocm
|
7
|
+
box_url : http://puppet-vagrant-boxes.puppetlabs.com/debian-73-i386-virtualbox-nocm.box
|
8
|
+
hypervisor : vagrant
|
9
|
+
CONFIG:
|
10
|
+
log_level: debug
|
11
|
+
type: git
|
@@ -0,0 +1,11 @@
|
|
1
|
+
HOSTS:
|
2
|
+
debian-73-x64:
|
3
|
+
roles:
|
4
|
+
- master
|
5
|
+
platform: debian-7-amd64
|
6
|
+
box : debian-73-x64-virtualbox-nocm
|
7
|
+
box_url : http://puppet-vagrant-boxes.puppetlabs.com/debian-73-x64-virtualbox-nocm.box
|
8
|
+
hypervisor : vagrant
|
9
|
+
CONFIG:
|
10
|
+
log_level: debug
|
11
|
+
type: git
|
@@ -0,0 +1,11 @@
|
|
1
|
+
HOSTS:
|
2
|
+
fedora-18-x64:
|
3
|
+
roles:
|
4
|
+
- master
|
5
|
+
platform: fedora-18-x86_64
|
6
|
+
box : fedora-18-x64-vbox4210-nocm
|
7
|
+
box_url : http://puppet-vagrant-boxes.puppetlabs.com/fedora-18-x64-vbox4210-nocm.box
|
8
|
+
hypervisor : vagrant
|
9
|
+
CONFIG:
|
10
|
+
log_level: debug
|
11
|
+
type: git
|
@@ -0,0 +1,11 @@
|
|
1
|
+
HOSTS:
|
2
|
+
sles-11sp1-x64:
|
3
|
+
roles:
|
4
|
+
- master
|
5
|
+
platform: sles-11-x86_64
|
6
|
+
box : sles-11sp1-x64-vbox4210-nocm
|
7
|
+
box_url : http://puppet-vagrant-boxes.puppetlabs.com/sles-11sp1-x64-vbox4210-nocm.box
|
8
|
+
hypervisor : vagrant
|
9
|
+
CONFIG:
|
10
|
+
log_level: debug
|
11
|
+
type: git
|
@@ -0,0 +1,10 @@
|
|
1
|
+
HOSTS:
|
2
|
+
ubuntu-server-10044-x64:
|
3
|
+
roles:
|
4
|
+
- master
|
5
|
+
platform: ubuntu-10.04-amd64
|
6
|
+
box : ubuntu-server-10044-x64-vbox4210-nocm
|
7
|
+
box_url : http://puppet-vagrant-boxes.puppetlabs.com/ubuntu-server-10044-x64-vbox4210-nocm.box
|
8
|
+
hypervisor : vagrant
|
9
|
+
CONFIG:
|
10
|
+
type: foss
|
@@ -0,0 +1,10 @@
|
|
1
|
+
HOSTS:
|
2
|
+
ubuntu-server-12042-x64:
|
3
|
+
roles:
|
4
|
+
- master
|
5
|
+
platform: ubuntu-12.04-amd64
|
6
|
+
box : ubuntu-server-12042-x64-vbox4210-nocm
|
7
|
+
box_url : http://puppet-vagrant-boxes.puppetlabs.com/ubuntu-server-12042-x64-vbox4210-nocm.box
|
8
|
+
hypervisor : vagrant
|
9
|
+
CONFIG:
|
10
|
+
type: foss
|
@@ -0,0 +1,11 @@
|
|
1
|
+
HOSTS:
|
2
|
+
ubuntu-server-1310-x64:
|
3
|
+
roles:
|
4
|
+
- master
|
5
|
+
platform: ubuntu-13.10-amd64
|
6
|
+
box : ubuntu-server-1310-x64-vbox4210-nocm
|
7
|
+
box_url : http://puppet-vagrant-boxes.puppetlabs.com/ubuntu-1310-x64-virtualbox-nocm.box
|
8
|
+
hypervisor : vagrant
|
9
|
+
CONFIG:
|
10
|
+
log_level : debug
|
11
|
+
type: git
|
@@ -0,0 +1,11 @@
|
|
1
|
+
HOSTS:
|
2
|
+
ubuntu-server-1404-x64:
|
3
|
+
roles:
|
4
|
+
- master
|
5
|
+
platform: ubuntu-14.04-amd64
|
6
|
+
box : puppetlabs/ubuntu-14.04-64-nocm
|
7
|
+
box_url : https://vagrantcloud.com/puppetlabs/ubuntu-14.04-64-nocm
|
8
|
+
hypervisor : vagrant
|
9
|
+
CONFIG:
|
10
|
+
log_level : debug
|
11
|
+
type: git
|
data/lib/templates/rakefile.erb
CHANGED
@@ -1 +1,41 @@
|
|
1
|
-
require '
|
1
|
+
require 'puppetlabs_spec_helper/rake_tasks'
|
2
|
+
require 'puppet-lint/tasks/puppet-lint'
|
3
|
+
require 'puppet-syntax/tasks/puppet-syntax'
|
4
|
+
|
5
|
+
# These two gems aren't always present, for instance
|
6
|
+
# on Travis with --without development
|
7
|
+
begin
|
8
|
+
require 'puppet_blacksmith/rake_tasks'
|
9
|
+
rescue LoadError
|
10
|
+
end
|
11
|
+
|
12
|
+
PuppetLint.configuration.relative = true
|
13
|
+
PuppetLint.configuration.send("disable_80chars")
|
14
|
+
PuppetLint.configuration.log_format = "%{path}:%{linenumber}:%{check}:%{KIND}:%{message}"
|
15
|
+
PuppetLint.configuration.fail_on_warnings = true
|
16
|
+
|
17
|
+
# Forsake support for Puppet 2.6.2 for the benefit of cleaner code.
|
18
|
+
# http://puppet-lint.com/checks/class_parameter_defaults/
|
19
|
+
PuppetLint.configuration.send('disable_class_parameter_defaults')
|
20
|
+
# http://puppet-lint.com/checks/class_inherits_from_params_class/
|
21
|
+
PuppetLint.configuration.send('disable_class_inherits_from_params_class')
|
22
|
+
|
23
|
+
exclude_paths = [
|
24
|
+
"pkg/**/*",
|
25
|
+
"vendor/**/*",
|
26
|
+
"spec/**/*",
|
27
|
+
]
|
28
|
+
PuppetLint.configuration.ignore_paths = exclude_paths
|
29
|
+
PuppetSyntax.exclude_paths = exclude_paths
|
30
|
+
|
31
|
+
task :metadata do
|
32
|
+
sh "metadata-json-lint metadata.json"
|
33
|
+
end
|
34
|
+
|
35
|
+
desc "Run syntax, lint, and spec tests."
|
36
|
+
task :test => [
|
37
|
+
:syntax,
|
38
|
+
:lint,
|
39
|
+
:spec,
|
40
|
+
:metadata,
|
41
|
+
]
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'beaker-rspec'
|
2
|
+
|
3
|
+
UNSUPPORTED_PLATFORMS = [ 'Windows', 'Solaris', 'AIX' ]
|
4
|
+
|
5
|
+
unless ENV['RS_PROVISION'] == 'no' or ENV['BEAKER_provision'] == 'no'
|
6
|
+
# This will install the latest available package on el and deb based
|
7
|
+
# systems fail on windows and osx, and install via gem on other *nixes
|
8
|
+
foss_opts = { :default_action => 'gem_install' }
|
9
|
+
|
10
|
+
if default.is_pe?; then install_pe; else install_puppet( foss_opts ); end
|
11
|
+
|
12
|
+
hosts.each do |host|
|
13
|
+
on hosts, "mkdir -p #{host['distmoduledir']}"
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
RSpec.configure do |c|
|
18
|
+
# Project root
|
19
|
+
proj_root = File.expand_path(File.join(File.dirname(__FILE__), '..'))
|
20
|
+
|
21
|
+
# Readable test descriptions
|
22
|
+
c.formatter = :documentation
|
23
|
+
|
24
|
+
# Configure all nodes in nodeset
|
25
|
+
c.before :suite do
|
26
|
+
hosts.each do |host|
|
27
|
+
# Install this module
|
28
|
+
copy_module_to(host, :source => proj_root, :module_name => '<%= @module_name %>')
|
29
|
+
# List other dependencies here so they are installed on the host
|
30
|
+
on host, puppet('module','install','puppetlabs-stdlib'), { :acceptable_exit_codes => [0,1] }
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/puppet-retrospec.gemspec
CHANGED
@@ -2,16 +2,16 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: puppet-retrospec 0.
|
5
|
+
# stub: puppet-retrospec 0.4.0 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "puppet-retrospec"
|
9
|
-
s.version = "0.
|
9
|
+
s.version = "0.4.0"
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
12
|
s.require_paths = ["lib"]
|
13
13
|
s.authors = ["Corey Osman"]
|
14
|
-
s.date = "2014-11-
|
14
|
+
s.date = "2014-11-21"
|
15
15
|
s.description = "Retrofits and generates valid puppet rspec test code to existing modules"
|
16
16
|
s.email = "corey@logicminds.biz"
|
17
17
|
s.executables = ["retrospec"]
|
@@ -31,11 +31,28 @@ Gem::Specification.new do |s|
|
|
31
31
|
"bin/retrospec",
|
32
32
|
"lib/helpers.rb",
|
33
33
|
"lib/puppet-retrospec.rb",
|
34
|
+
"lib/templates/acceptance_spec_test.erb",
|
34
35
|
"lib/templates/fixtures_file.erb",
|
35
36
|
"lib/templates/gemfile.erb",
|
37
|
+
"lib/templates/nodesets/centos-59-x64.yml",
|
38
|
+
"lib/templates/nodesets/centos-64-x64-pe.yml",
|
39
|
+
"lib/templates/nodesets/centos-64-x64.yml",
|
40
|
+
"lib/templates/nodesets/centos-65-x64.yml",
|
41
|
+
"lib/templates/nodesets/debian-607-x64.yml",
|
42
|
+
"lib/templates/nodesets/debian-70rc1-x64.yml",
|
43
|
+
"lib/templates/nodesets/debian-73-i386.yml",
|
44
|
+
"lib/templates/nodesets/debian-73-x64.yml",
|
45
|
+
"lib/templates/nodesets/default.yml",
|
46
|
+
"lib/templates/nodesets/fedora-18-x64.yml",
|
47
|
+
"lib/templates/nodesets/sles-11sp1-x64.yml",
|
48
|
+
"lib/templates/nodesets/ubuntu-server-10044-x64.yml",
|
49
|
+
"lib/templates/nodesets/ubuntu-server-12042-x64.yml",
|
50
|
+
"lib/templates/nodesets/ubuntu-server-1310-x64.yml",
|
51
|
+
"lib/templates/nodesets/ubuntu-server-1404-x64.yml",
|
36
52
|
"lib/templates/rakefile.erb",
|
37
53
|
"lib/templates/resource_spec_file.erb",
|
38
54
|
"lib/templates/shared_context.erb",
|
55
|
+
"lib/templates/spec_helper_acceptance.rb.erb",
|
39
56
|
"lib/templates/spec_helper_file.erb",
|
40
57
|
"puppet-retrospec.gemspec",
|
41
58
|
"spec/fixtures/fixture_modules/zero_resource_module/manifests/not_a_resource_defination.pp",
|
@@ -46,7 +63,7 @@ Gem::Specification.new do |s|
|
|
46
63
|
]
|
47
64
|
s.homepage = "http://github.com/logicminds/puppet-retrospec"
|
48
65
|
s.licenses = ["MIT"]
|
49
|
-
s.rubygems_version = "2.
|
66
|
+
s.rubygems_version = "2.4.4"
|
50
67
|
s.summary = "Generates puppet rspec test code based on the classes and defines inside the manifests directory. Aims to reduce some of the boilerplate coding with default test patterns."
|
51
68
|
|
52
69
|
if s.respond_to? :specification_version then
|
@@ -18,22 +18,46 @@ describe "puppet-retrospec" do
|
|
18
18
|
end
|
19
19
|
|
20
20
|
before :each do
|
21
|
-
ENV['RETROSPEC_ENABLE_LOCAL_TEMPLATES'] = nil
|
22
|
-
ENV['RETROSPEC_TEMPLATES_PATH'] = nil
|
23
21
|
clean_up_spec_dir(@path)
|
24
|
-
|
22
|
+
@opts = {:module_path => @path, :enable_beaker_tests => false,
|
23
|
+
:enable_user_templates => false, :template_dir => nil }
|
25
24
|
end
|
26
25
|
|
27
26
|
it 'should run without errors using new' do
|
28
|
-
tomcat = Retrospec.new(@
|
27
|
+
tomcat = Retrospec.new(@opts[:module_path], @opts)
|
29
28
|
expect(tomcat.create_files).to eq(true)
|
30
29
|
expect(File.exists?(File.join(@path, 'Gemfile'))).to eq(true)
|
31
30
|
expect(File.exists?(File.join(@path, '.fixtures.yml'))).to eq(true)
|
32
31
|
expect(File.exists?(File.join(@path, 'spec','classes','tomcat_spec.rb'))).to eq(true)
|
33
32
|
end
|
34
33
|
|
34
|
+
it 'should create acceptance test files' do
|
35
|
+
@opts[:enable_beaker_tests] = true
|
36
|
+
tomcat = Retrospec.new(@opts[:module_path], @opts)
|
37
|
+
spec_path = File.expand_path(File.join(@path, 'spec'))
|
38
|
+
tomcat.create_files
|
39
|
+
expect(File.exists?(File.join(spec_path, 'spec_helper_acceptance.rb'))).to eq(true)
|
40
|
+
expect(File.exists?(File.join(spec_path, 'acceptance'))).to eq(true)
|
41
|
+
expect(File.exists?(File.join(spec_path, 'acceptance', 'classes', 'tomcat_spec.rb'))).to eq(true)
|
42
|
+
expect(File.exists?(File.join(spec_path, 'acceptance', 'nodesets'))).to eq(true)
|
43
|
+
expect(File.exists?(File.join(spec_path, 'acceptance', 'nodesets', 'default.yml'))).to eq(true)
|
44
|
+
|
45
|
+
end
|
46
|
+
|
47
|
+
it 'should not create acceptance test files' do
|
48
|
+
@opts[:enable_beaker_tests] = false
|
49
|
+
tomcat = Retrospec.new(@opts[:module_path], @opts)
|
50
|
+
spec_path = File.expand_path(File.join(@path, 'spec'))
|
51
|
+
tomcat.create_files
|
52
|
+
expect(File.exists?(File.join(spec_path, 'spec_helper_acceptance.rb'))).to eq(false)
|
53
|
+
expect(File.exists?(File.join(spec_path, 'acceptance'))).to eq(false)
|
54
|
+
expect(File.exists?(File.join(spec_path, 'acceptance', 'classes', 'tomcat_spec.rb'))).to eq(false)
|
55
|
+
expect(File.exists?(File.join(spec_path, 'acceptance', 'nodesets'))).to eq(false)
|
56
|
+
expect(File.exists?(File.join(spec_path, 'acceptance', 'nodesets', 'default.yml'))).to eq(false)
|
57
|
+
end
|
58
|
+
|
35
59
|
it 'should create a local templates directory when flag is on' do
|
36
|
-
|
60
|
+
@opts[:enable_user_templates] = true
|
37
61
|
FakeFS do
|
38
62
|
user_directory = Helpers.default_user_template_dir
|
39
63
|
FileUtils.mkdir_p(Helpers.gem_template_dir)
|
@@ -42,23 +66,25 @@ describe "puppet-retrospec" do
|
|
42
66
|
FileUtils.touch(File.join(Helpers.gem_template_dir, 'shared_context.erb'))
|
43
67
|
FileUtils.touch(File.join(Helpers.gem_template_dir, 'spec_helper_file.erb'))
|
44
68
|
FileUtils.touch(File.join(Helpers.gem_template_dir, 'gemfile.erb'))
|
45
|
-
|
69
|
+
FileUtils.mkdir_p(File.join(Helpers.gem_template_dir, 'nodesets'))
|
70
|
+
FileUtils.touch(File.join(Helpers.gem_template_dir, 'nodesets', 'default.yml'))
|
46
71
|
FileUtils.mkdir_p('/modules/tomcat/manifests')
|
47
72
|
FileUtils.touch('/modules/tomcat/manifests/init.pp')
|
48
|
-
|
73
|
+
@opts[:module_path] = '/modules/tomcat'
|
74
|
+
Retrospec.new(@opts[:module_path], @opts)
|
49
75
|
expect(File.exists?(user_directory)).to eq(true)
|
50
76
|
expect(File.exists?(File.join(user_directory, 'gemfile.erb'))).to eq(true)
|
51
77
|
expect(File.exists?(File.join(user_directory, 'fixtures_file.erb'))).to eq(true)
|
52
78
|
expect(File.exists?(File.join(user_directory, 'resource_spec_file.erb'))).to eq(true)
|
53
79
|
expect(File.exists?(File.join(user_directory, 'shared_context.erb'))).to eq(true)
|
54
80
|
expect(File.exists?(File.join(user_directory, 'spec_helper_file.erb'))).to eq(true)
|
81
|
+
expect(File.exists?(File.join(user_directory, 'nodesets'))).to eq(true)
|
82
|
+
expect(File.exists?(File.join(user_directory, 'nodesets', 'default.yml'))).to eq(true)
|
55
83
|
end
|
56
|
-
ENV['RETROSPEC_ENABLE_LOCAL_TEMPLATES'] = nil
|
57
|
-
ENV['RETROSPEC_TEMPLATES_PATH'] = nil
|
58
84
|
end
|
59
85
|
|
60
86
|
it 'should create the user supplied templates directory when variable is set' do
|
61
|
-
|
87
|
+
@opts[:template_dir] = '/tmp/my_templates'
|
62
88
|
FakeFS do
|
63
89
|
FileUtils.mkdir_p(Helpers.gem_template_dir)
|
64
90
|
FileUtils.touch(File.join(Helpers.gem_template_dir, 'fixtures_file.erb'))
|
@@ -66,9 +92,12 @@ describe "puppet-retrospec" do
|
|
66
92
|
FileUtils.touch(File.join(Helpers.gem_template_dir, 'shared_context.erb'))
|
67
93
|
FileUtils.touch(File.join(Helpers.gem_template_dir, 'spec_helper_file.erb'))
|
68
94
|
FileUtils.touch(File.join(Helpers.gem_template_dir, 'gemfile.erb'))
|
95
|
+
FileUtils.mkdir_p(File.join(Helpers.gem_template_dir, 'nodesets'))
|
96
|
+
FileUtils.touch(File.join(Helpers.gem_template_dir, 'nodesets', 'default.yml'))
|
69
97
|
FileUtils.mkdir_p('/modules/tomcat/manifests')
|
70
98
|
FileUtils.touch('/modules/tomcat/manifests/init.pp')
|
71
|
-
|
99
|
+
@opts[:module_path] = '/modules/tomcat'
|
100
|
+
r = Retrospec.new(@opts[:module_path], @opts)
|
72
101
|
user_directory = r.template_dir
|
73
102
|
expect(user_directory).to eq('/tmp/my_templates')
|
74
103
|
expect(File.exists?(user_directory)).to eq(true)
|
@@ -77,14 +106,14 @@ describe "puppet-retrospec" do
|
|
77
106
|
expect(File.exists?(File.join(user_directory, 'resource_spec_file.erb'))).to eq(true)
|
78
107
|
expect(File.exists?(File.join(user_directory, 'shared_context.erb'))).to eq(true)
|
79
108
|
expect(File.exists?(File.join(user_directory, 'spec_helper_file.erb'))).to eq(true)
|
109
|
+
expect(File.exists?(File.join(user_directory, 'nodesets'))).to eq(true)
|
110
|
+
expect(File.exists?(File.join(user_directory, 'nodesets', 'default.yml'))).to eq(true)
|
80
111
|
end
|
81
|
-
ENV['RETROSPEC_ENABLE_LOCAL_TEMPLATES'] = nil
|
82
|
-
ENV['RETROSPEC_TEMPLATES_PATH'] = nil
|
83
112
|
|
84
113
|
end
|
85
114
|
|
86
115
|
it 'should create proper spec helper file' do
|
87
|
-
tomcat = Retrospec.new(@
|
116
|
+
tomcat = Retrospec.new(@opts[:module_path], @opts)
|
88
117
|
filepath = File.expand_path(File.join(@path, 'spec', 'spec_helper.rb'))
|
89
118
|
path = tomcat.tmp_module_path
|
90
119
|
tomcat.safe_create_spec_helper
|
@@ -92,22 +121,37 @@ describe "puppet-retrospec" do
|
|
92
121
|
end
|
93
122
|
|
94
123
|
it 'should create proper shared context file' do
|
95
|
-
tomcat = Retrospec.new(@
|
124
|
+
tomcat = Retrospec.new(@opts[:module_path], @opts)
|
96
125
|
filepath = File.expand_path(File.join(@path, 'spec', 'shared_contexts.rb'))
|
97
126
|
path = tomcat.tmp_module_path
|
98
127
|
tomcat.safe_make_shared_context
|
99
128
|
expect(File.exists?(filepath)).to eq(true)
|
100
129
|
end
|
101
130
|
|
131
|
+
it 'should create acceptance spec helper file' do
|
132
|
+
tomcat = Retrospec.new(@opts[:module_path], @opts)
|
133
|
+
filepath = File.expand_path(File.join(@path, 'spec', 'spec_helper_acceptance.rb'))
|
134
|
+
tomcat.safe_create_acceptance_spec_helper
|
135
|
+
expect(File.exists?(filepath)).to eq(true)
|
136
|
+
end
|
137
|
+
|
138
|
+
it 'should create 15 nodesets' do
|
139
|
+
tomcat = Retrospec.new(@opts[:module_path], @opts)
|
140
|
+
filepath = File.expand_path(File.join(@path, 'spec', 'acceptance', 'nodesets', 'default.yml'))
|
141
|
+
tomcat.safe_create_node_sets
|
142
|
+
expect(File.exists?(filepath)).to eq(true)
|
143
|
+
expect(Dir.glob(File.expand_path(File.join(@path, 'spec', 'acceptance', 'nodesets', '*.yml'))).length).to eq(15)
|
144
|
+
end
|
145
|
+
|
102
146
|
it 'should create Gemfile file' do
|
103
|
-
tomcat = Retrospec.new(@
|
147
|
+
tomcat = Retrospec.new(@opts[:module_path], @opts)
|
104
148
|
filepath = File.expand_path(File.join(@path, 'Gemfile'))
|
105
149
|
tomcat.safe_create_gemfile
|
106
150
|
expect(File.exists?(filepath)).to eq(true)
|
107
151
|
end
|
108
152
|
|
109
153
|
it 'should create Rakefile file' do
|
110
|
-
tomcat = Retrospec.new(@
|
154
|
+
tomcat = Retrospec.new(@opts[:module_path], @opts)
|
111
155
|
filepath = File.expand_path(File.join(@path, 'Rakefile'))
|
112
156
|
tomcat.safe_create_rakefile
|
113
157
|
expect(File.exists?(filepath)).to eq(true)
|
@@ -116,7 +160,7 @@ describe "puppet-retrospec" do
|
|
116
160
|
it 'should create proper fixtures file' do
|
117
161
|
filepath = File.expand_path(File.join(@path,'.fixtures.yml'))
|
118
162
|
FileUtils.rm_f(filepath) # ensure we have a clean state
|
119
|
-
tomcat = Retrospec.new(@
|
163
|
+
tomcat = Retrospec.new(@opts[:module_path], @opts)
|
120
164
|
tomcat.safe_create_fixtures_file
|
121
165
|
expect(File.exists?(filepath)).to eq(true)
|
122
166
|
end
|
@@ -128,13 +172,13 @@ describe "puppet-retrospec" do
|
|
128
172
|
end
|
129
173
|
|
130
174
|
it 'should create a temp modules dir' do
|
131
|
-
tomcat = Retrospec.new(@
|
175
|
+
tomcat = Retrospec.new(@opts[:module_path], @opts)
|
132
176
|
path = tomcat.tmp_modules_dir
|
133
177
|
path.should =~ /modules/
|
134
178
|
end
|
135
179
|
|
136
180
|
it 'should create a link in the temp modules directory' do
|
137
|
-
tomcat = Retrospec.new(@
|
181
|
+
tomcat = Retrospec.new(@opts[:module_path], @opts)
|
138
182
|
path = tomcat.tmp_modules_dir
|
139
183
|
tomcat.tmp_module_path
|
140
184
|
File.exists?(tomcat.tmp_module_path).should eq(true)
|
@@ -142,14 +186,59 @@ describe "puppet-retrospec" do
|
|
142
186
|
end
|
143
187
|
|
144
188
|
it 'should create a file from a template' do
|
145
|
-
tomcat = Retrospec.new(@
|
189
|
+
tomcat = Retrospec.new(@opts[:module_path], @opts)
|
146
190
|
tomcat.safe_create_template_file('.fixtures.yml', 'fixtures_file.erb')
|
147
191
|
file_path = File.join(@path,'.fixtures.yml')
|
148
192
|
expect(File.exists?(file_path)).to eq(true)
|
149
193
|
end
|
150
194
|
|
195
|
+
describe 'generate_file_path' do
|
196
|
+
|
197
|
+
describe 'classes' do
|
198
|
+
it 'should generate a acceptance test path correctly' do
|
199
|
+
type = double("type")
|
200
|
+
allow(type).to receive(:type).and_return(:hostclass)
|
201
|
+
allow(type).to receive(:name).and_return('tomcat::config::server::connector')
|
202
|
+
tomcat = Retrospec.new(@opts[:module_path], @opts)
|
203
|
+
expect(tomcat.generate_file_path(type, true)).to eq("spec/acceptance/classes/config/server/connector/connector_spec.rb")
|
204
|
+
end
|
205
|
+
it 'should generate a normal test path correctly' do
|
206
|
+
type = double("type")
|
207
|
+
allow(type).to receive(:type).and_return(:hostclass)
|
208
|
+
allow(type).to receive(:name).and_return('tomcat::config::server::connector')
|
209
|
+
tomcat = Retrospec.new(@opts[:module_path], @opts)
|
210
|
+
expect(tomcat.generate_file_path(type, false)).to eq("spec/classes/config/server/connector/connector_spec.rb")
|
211
|
+
end
|
212
|
+
end
|
213
|
+
|
214
|
+
describe 'defines' do
|
215
|
+
it 'should generate a acceptance test path correctly' do
|
216
|
+
type = double("type")
|
217
|
+
allow(type).to receive(:type).and_return(:definition)
|
218
|
+
allow(type).to receive(:name).and_return('tomcat::config::server::connector')
|
219
|
+
tomcat = Retrospec.new(@opts[:module_path], @opts)
|
220
|
+
expect(tomcat.generate_file_path(type, true)).to eq("spec/acceptance/defines/config/server/connector/connector_spec.rb")
|
221
|
+
end
|
222
|
+
|
223
|
+
it 'should generate a normal test path correctly' do
|
224
|
+
type = double("type")
|
225
|
+
allow(type).to receive(:type).and_return(:definition)
|
226
|
+
allow(type).to receive(:name).and_return('tomcat::config::server::connector')
|
227
|
+
tomcat = Retrospec.new(@opts[:module_path], @opts)
|
228
|
+
expect(tomcat.generate_file_path(type, false)).to eq("spec/defines/config/server/connector/connector_spec.rb")
|
229
|
+
end
|
230
|
+
end
|
231
|
+
end
|
232
|
+
|
233
|
+
it 'should generate a test file name correctly' do
|
234
|
+
tomcat = Retrospec.new(@opts[:module_path], @opts)
|
235
|
+
expect(tomcat.generate_file_name('tomcat::config::server::connector')).to eq('connector_spec.rb')
|
236
|
+
expect(tomcat.generate_file_name('tomcat')).to eq('tomcat_spec.rb')
|
237
|
+
expect(tomcat.generate_file_name('tomcat::config')).to eq('config_spec.rb')
|
238
|
+
end
|
239
|
+
|
151
240
|
# it 'should contain a list of parameters in the test' do
|
152
|
-
# tomcat = Retrospec.new(@
|
241
|
+
# tomcat = Retrospec.new(@opts[:module_path], @opts)
|
153
242
|
# tomcat.create_files
|
154
243
|
#
|
155
244
|
# end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: puppet-retrospec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Corey Osman
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-11-
|
11
|
+
date: 2014-11-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: puppet
|
@@ -156,11 +156,28 @@ files:
|
|
156
156
|
- bin/retrospec
|
157
157
|
- lib/helpers.rb
|
158
158
|
- lib/puppet-retrospec.rb
|
159
|
+
- lib/templates/acceptance_spec_test.erb
|
159
160
|
- lib/templates/fixtures_file.erb
|
160
161
|
- lib/templates/gemfile.erb
|
162
|
+
- lib/templates/nodesets/centos-59-x64.yml
|
163
|
+
- lib/templates/nodesets/centos-64-x64-pe.yml
|
164
|
+
- lib/templates/nodesets/centos-64-x64.yml
|
165
|
+
- lib/templates/nodesets/centos-65-x64.yml
|
166
|
+
- lib/templates/nodesets/debian-607-x64.yml
|
167
|
+
- lib/templates/nodesets/debian-70rc1-x64.yml
|
168
|
+
- lib/templates/nodesets/debian-73-i386.yml
|
169
|
+
- lib/templates/nodesets/debian-73-x64.yml
|
170
|
+
- lib/templates/nodesets/default.yml
|
171
|
+
- lib/templates/nodesets/fedora-18-x64.yml
|
172
|
+
- lib/templates/nodesets/sles-11sp1-x64.yml
|
173
|
+
- lib/templates/nodesets/ubuntu-server-10044-x64.yml
|
174
|
+
- lib/templates/nodesets/ubuntu-server-12042-x64.yml
|
175
|
+
- lib/templates/nodesets/ubuntu-server-1310-x64.yml
|
176
|
+
- lib/templates/nodesets/ubuntu-server-1404-x64.yml
|
161
177
|
- lib/templates/rakefile.erb
|
162
178
|
- lib/templates/resource_spec_file.erb
|
163
179
|
- lib/templates/shared_context.erb
|
180
|
+
- lib/templates/spec_helper_acceptance.rb.erb
|
164
181
|
- lib/templates/spec_helper_file.erb
|
165
182
|
- puppet-retrospec.gemspec
|
166
183
|
- spec/fixtures/fixture_modules/zero_resource_module/manifests/not_a_resource_defination.pp
|
@@ -188,7 +205,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
188
205
|
version: '0'
|
189
206
|
requirements: []
|
190
207
|
rubyforge_project:
|
191
|
-
rubygems_version: 2.
|
208
|
+
rubygems_version: 2.4.4
|
192
209
|
signing_key:
|
193
210
|
specification_version: 4
|
194
211
|
summary: Generates puppet rspec test code based on the classes and defines inside
|