puppet-retrospec 0.9.1 → 0.10.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/Gemfile +1 -11
- data/Gemfile.lock +2 -20
- data/README.md +67 -20
- data/VERSION +1 -1
- data/lib/retrospec/plugins/v1/plugin/puppet.rb +108 -20
- data/lib/retrospec/plugins/v1/plugin/version.rb +1 -1
- data/puppet-retrospec.gemspec +6 -14
- data/spec/fixtures/fixture_modules/zero_resource_module/metadata.json +13 -0
- data/spec/unit/plugin_spec.rb +15 -6
- data/spec/unit/puppet-retrospec_spec.rb +59 -2
- metadata +5 -46
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cbc49b480678daffff061e656b863bd070e751aa
|
4
|
+
data.tar.gz: 664b47744df42f5fa4df4121ac631a443c578818
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3c933d5fb7ee82ea64ab460dfe40f4b6e8a79d690785ece5422109323aedf9998112f27f0d0b949a89e2dfae0edf7b28314ef5c0f6b43442a2c1dfb112575b31
|
7
|
+
data.tar.gz: 8df5426ac543a838444891ca1a4cbca589d9dc228344e589975da6fab5d16eaee44674f8489e02d1325cf9b9f66938a79fdebad7013c2725b6028681bc1f06a1
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
## 0.10.0
|
2
|
+
* refactor cli options to use retrospec 0.4.0 specifications
|
3
|
+
* gh-32 - add ability to create new module
|
4
|
+
* fix pinning of module to use 0.x.0 instead of 0.x
|
5
|
+
* pin to version 0.4.x
|
1
6
|
## 0.9.0
|
2
7
|
* convert to retrospec plugin
|
3
8
|
This is a big change in how you run puppet-retrospec please see the readme for changes.
|
data/Gemfile
CHANGED
@@ -1,25 +1,15 @@
|
|
1
1
|
source "http://rubygems.org"
|
2
2
|
|
3
|
-
# while retrospec does not use facter or hiera,
|
4
|
-
# we vendor the puppet gem 3.7.3 which also requires facter and hiera
|
5
|
-
#gem 'facter', '< 3', '> 1.6'
|
6
|
-
#gem 'hiera', '~> 1.0'
|
7
|
-
|
8
3
|
gem 'trollop'
|
9
|
-
gem 'retrospec', "~> 0.
|
4
|
+
gem 'retrospec', "~> 0.4.0"
|
10
5
|
# Include everything needed to run rake, tests, features, etc.
|
11
6
|
group :development do
|
12
7
|
gem "rspec", "~> 3.2"
|
13
8
|
gem 'puppet', '3.7.3', :path => 'vendor/gems/puppet-3.7.3'
|
14
|
-
#gem 'facter', '< 3', '> 1.6'
|
15
|
-
#gem 'hiera', '~> 1.0'
|
16
9
|
gem "yard", "~> 0.7"
|
17
10
|
gem "rdoc", "~> 3.12"
|
18
11
|
gem "bundler", "~> 1.0"
|
19
12
|
gem "jeweler"
|
20
13
|
gem 'pry'
|
21
14
|
gem "fakefs", :require => "fakefs/safe"
|
22
|
-
gem 'pry-rescue'
|
23
|
-
gem 'pry-stack_explorer'
|
24
|
-
gem 'pry-coolline'
|
25
15
|
end
|
data/Gemfile.lock
CHANGED
@@ -11,13 +11,8 @@ GEM
|
|
11
11
|
specs:
|
12
12
|
CFPropertyList (2.2.8)
|
13
13
|
addressable (2.3.8)
|
14
|
-
binding_of_caller (0.7.2)
|
15
|
-
debug_inspector (>= 0.0.1)
|
16
14
|
builder (3.2.2)
|
17
15
|
coderay (1.1.0)
|
18
|
-
coolline (0.5.0)
|
19
|
-
unicode_utils (~> 1.4)
|
20
|
-
debug_inspector (0.0.2)
|
21
16
|
descendants_tracker (0.0.4)
|
22
17
|
thread_safe (~> 0.3, >= 0.3.1)
|
23
18
|
diff-lcs (1.2.5)
|
@@ -39,7 +34,6 @@ GEM
|
|
39
34
|
hiera (1.3.4)
|
40
35
|
json_pure
|
41
36
|
highline (1.7.7)
|
42
|
-
interception (0.5)
|
43
37
|
jeweler (2.0.1)
|
44
38
|
builder
|
45
39
|
bundler (>= 1.0)
|
@@ -69,19 +63,11 @@ GEM
|
|
69
63
|
coderay (~> 1.1.0)
|
70
64
|
method_source (~> 0.8.1)
|
71
65
|
slop (~> 3.4)
|
72
|
-
pry-coolline (0.2.5)
|
73
|
-
coolline (~> 0.5)
|
74
|
-
pry-rescue (1.4.2)
|
75
|
-
interception (>= 0.5)
|
76
|
-
pry
|
77
|
-
pry-stack_explorer (0.4.9.2)
|
78
|
-
binding_of_caller (>= 0.7)
|
79
|
-
pry (>= 0.9.11)
|
80
66
|
rack (1.6.4)
|
81
67
|
rake (10.4.2)
|
82
68
|
rdoc (3.12.2)
|
83
69
|
json (~> 1.4)
|
84
|
-
retrospec (0.
|
70
|
+
retrospec (0.4.0)
|
85
71
|
trollop
|
86
72
|
rspec (3.3.0)
|
87
73
|
rspec-core (~> 3.3.0)
|
@@ -99,7 +85,6 @@ GEM
|
|
99
85
|
slop (3.6.0)
|
100
86
|
thread_safe (0.3.5)
|
101
87
|
trollop (2.1.2)
|
102
|
-
unicode_utils (1.4.0)
|
103
88
|
yard (0.8.7.6)
|
104
89
|
|
105
90
|
PLATFORMS
|
@@ -110,12 +95,9 @@ DEPENDENCIES
|
|
110
95
|
fakefs
|
111
96
|
jeweler
|
112
97
|
pry
|
113
|
-
pry-coolline
|
114
|
-
pry-rescue
|
115
|
-
pry-stack_explorer
|
116
98
|
puppet (= 3.7.3)!
|
117
99
|
rdoc (~> 3.12)
|
118
|
-
retrospec (~> 0.
|
100
|
+
retrospec (~> 0.4.0)
|
119
101
|
rspec (~> 3.2)
|
120
102
|
trollop
|
121
103
|
yard (~> 0.7)
|
data/README.md
CHANGED
@@ -68,34 +68,80 @@ Installing ri documentation for puppet-retrospec-0.9.0
|
|
68
68
|
|
69
69
|
```
|
70
70
|
|
71
|
-
Dependency
|
72
|
-
============
|
71
|
+
## Dependency
|
73
72
|
Retrospec relies heavily on the puppet 3.7.x codebase. Because of this hard dependency the puppet gem is vendored into
|
74
73
|
the library so there should not be conflicts with your existing puppet gem.
|
75
74
|
|
76
|
-
Install
|
77
|
-
=============
|
75
|
+
## Install
|
78
76
|
`gem install puppet-retrospec`
|
79
77
|
|
80
78
|
This will also install the retrospec framework that is required to use the plugin.
|
81
79
|
|
82
|
-
How to use
|
83
|
-
|
84
|
-
Run from the command line
|
80
|
+
## How to use
|
81
|
+
|
82
|
+
Run from the command line: `retrospec puppet`
|
83
|
+
|
84
|
+
If you need to point to a directory outside the current directory you can use the `--module_path` option.
|
85
85
|
```
|
86
|
-
retrospec puppet -h
|
86
|
+
[puppet@puppetdev ~]$ retrospec -m /tmp/test3323 puppet -h
|
87
87
|
Generates puppet rspec test code based on the classes and defines inside the manifests directory.
|
88
|
-
|
89
|
-
|
88
|
+
|
89
|
+
Subcommands:
|
90
|
+
new_module
|
91
|
+
-t, --template-dir=<s> Path to templates directory (only for overriding Retrospec templates)
|
92
|
+
(default: /Users/cosman/.retrospec/repos/retrospec-puppet-templates)
|
93
|
+
-s, --scm-url=<s> SCM url for retrospec templates (default:
|
94
|
+
https://github.com/nwops/retrospec-templates)
|
95
|
+
-n, --name=<s> The name of the module you wish to create (default: test3323)
|
90
96
|
-b, --branch=<s> Branch you want to use for the retrospec template repo (default: master)
|
97
|
+
-a, --namespace=<s> The namespace to use only when creating a new module (default: namespace)
|
91
98
|
-e, --enable-beaker-tests Enable the creation of beaker tests
|
92
|
-
-
|
99
|
+
-l, --enable-future-parser Enables the future parser only during validation
|
93
100
|
-v, --version Print version and exit
|
94
|
-
-h, --help Show this message
|
101
|
+
-h, --help Show this message -h, --help Show this message
|
102
|
+
```
|
95
103
|
|
96
104
|
|
105
|
+
### Enabling the future parser
|
97
106
|
|
98
|
-
retrospec -m ~/projects/puppet_modules/apache puppet --enable-future-parser
|
107
|
+
`retrospec -m ~/projects/puppet_modules/apache puppet --enable-future-parser`
|
108
|
+
|
109
|
+
### Creating a new module
|
110
|
+
|
111
|
+
Creating a new module can now be done with retrospec as of 0.10.0. To do so you just need to use the sub command
|
112
|
+
`new_module`. See `retrospec puppet -h` for more options and overridable configurations.
|
113
|
+
|
114
|
+
|
115
|
+
```
|
116
|
+
retrospec -m /tmp/new_module puppet new_module --namespace lmc --name apache2
|
117
|
+
Successfully ran hook: /Users/cosman/.retrospec/repos/retrospec-puppet-templates/clone-hook
|
118
|
+
Already up-to-date.
|
119
|
+
|
120
|
+
The module located at: /tmp/new_module does not exist, do you wish to create it? (y/n): y
|
121
|
+
+ /tmp/new_module/manifests/
|
122
|
+
+ /tmp/new_module/manifests/init.pp
|
123
|
+
Successfully ran hook: /Users/cosman/.retrospec/repos/retrospec-puppet-templates/pre-hook
|
124
|
+
|
125
|
+
+ /tmp/new_module/.bundle/
|
126
|
+
+ /tmp/new_module/.bundle/config
|
127
|
+
+ /tmp/new_module/.fixtures.yml
|
128
|
+
+ /tmp/new_module/.git/
|
129
|
+
+ /tmp/new_module/.git/hooks/
|
130
|
+
+ /tmp/new_module/.git/hooks/pre-commit
|
131
|
+
+ /tmp/new_module/.gitignore
|
132
|
+
+ /tmp/new_module/.puppet-lint.rc
|
133
|
+
+ /tmp/new_module/.travis.yml
|
134
|
+
+ /tmp/new_module/Gemfile
|
135
|
+
+ /tmp/new_module/README.markdown
|
136
|
+
+ /tmp/new_module/Rakefile
|
137
|
+
+ /tmp/new_module/Vagrantfile
|
138
|
+
+ /tmp/new_module/spec/
|
139
|
+
+ /tmp/new_module/spec/acceptance/
|
140
|
+
+ /tmp/new_module/spec/shared_contexts.rb
|
141
|
+
+ /tmp/new_module/spec/spec_helper.rb
|
142
|
+
+ /tmp/new_module/metadata.json
|
143
|
+
+ /tmp/new_module/spec/classes/
|
144
|
+
+ /tmp/new_module/spec/classes/apache2_spec.rb
|
99
145
|
|
100
146
|
```
|
101
147
|
|
@@ -111,15 +157,16 @@ plugins::puppet::templates::ref: master
|
|
111
157
|
plugins::puppet::enable_beaker_tests: true
|
112
158
|
plugins::puppet::enable_future_parser: true
|
113
159
|
plugins::puppet::template_dir: /Users/username/.retrospec/repos/retrospec-puppet-templates
|
160
|
+
plugins::puppet::namespace: organization
|
161
|
+
plugins::puppet::author: your_name
|
114
162
|
```
|
115
|
-
|
116
|
-
Note: your not require to set any of these as they can be specified on the cli and also default to
|
163
|
+
Note: your not required to set any of these as they can be specified on the cli and also default to
|
117
164
|
sane values.
|
118
165
|
|
119
166
|
Example
|
120
167
|
======================
|
121
168
|
|
122
|
-
Below you can see that it creates files for every resource in the
|
169
|
+
Below you can see that it creates files for every resource in the apache module in addition to other files
|
123
170
|
that you need for unit testing puppet code. Rspec-puppet best practices says to put definitions in a defines folder
|
124
171
|
and classes in a classes folder since it infers what kind of resource it is based on this convention. Retrospec sets up
|
125
172
|
this scaffolding for you. Don't like the files that came with your module? Simply delete the files and re-generate them
|
@@ -413,9 +460,9 @@ Lets say I have three clients that each need site specific files in the module a
|
|
413
460
|
don't give me everything I want. Thus I will need to override the templates for each client.
|
414
461
|
|
415
462
|
```shell
|
416
|
-
retrospec --template-dir ~/retrspec_client1
|
417
|
-
retrospec --template-dir ~/retrspec_client2
|
418
|
-
retrospec --template-dir ~/retrspec_client3
|
463
|
+
retrospec puppet --template-dir ~/retrspec_client1
|
464
|
+
retrospec puppet --template-dir ~/retrspec_client2
|
465
|
+
retrospec puppet --template-dir ~/retrspec_client3
|
419
466
|
touch ~/retrspec_client1/module_files/special_file_for_client1.yml
|
420
467
|
touch ~/retrspec_client2/module_files/special_file_for_client2.yml
|
421
468
|
touch ~/retrspec_client3/module_files/special_file_for_client3.yml
|
@@ -568,7 +615,7 @@ parser cannot read future code syntax. If your puppet 4 codebase is compatible
|
|
568
615
|
In order to allow future parser validation please run retrospec with the following option.
|
569
616
|
|
570
617
|
```shell
|
571
|
-
retrospec --enable-future-parser
|
618
|
+
retrospec puppet --enable-future-parser
|
572
619
|
|
573
620
|
```
|
574
621
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.10.0
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'retrospec/plugins/v1/module_helpers'
|
2
2
|
require 'retrospec/plugins/v1'
|
3
|
+
require 'retrospec/config'
|
3
4
|
require_relative 'spec_object'
|
4
5
|
require 'erb'
|
5
6
|
require_relative 'template_helpers'
|
@@ -26,36 +27,98 @@ module Retrospec
|
|
26
27
|
Utilities::PuppetModule.instance.future_parser = config_data[:enable_future_parser]
|
27
28
|
# user supplied a template path or user wants to use local templates
|
28
29
|
@template_dir = setup_user_template_dir(config_data[:template_dir], config_data[:scm_url], config_data[:ref])
|
30
|
+
end
|
31
|
+
|
32
|
+
def post_init
|
33
|
+
# before we validate the module directory we should ensure the module exists by creating it
|
29
34
|
# validation also occurs when setting the module path
|
30
35
|
Utilities::PuppetModule.instance.module_path = module_path
|
31
36
|
Utilities::PuppetModule.create_tmp_module_path # this is required to finish initialization
|
37
|
+
# setting the context is require to make other methods below work. #TODO lazy create the context
|
32
38
|
@context = ::Puppet::SpecObject.new(module_path, Utilities::PuppetModule.instance, config_data)
|
33
39
|
end
|
34
40
|
|
35
|
-
#
|
41
|
+
# if the module does not exist lets create it
|
42
|
+
# this will create the module directory, manifests directory and basic init.pp file
|
43
|
+
# if the manifest directory already exist but an init.pp file does not we do not creating
|
44
|
+
# anything since it is not mandatory
|
45
|
+
# I thought about using the the module face to perform this generation but it seems like its not
|
46
|
+
# supported at this time, and you can't specify the path to generate the module in
|
47
|
+
def new_module
|
48
|
+
unless File.exist?(manifest_dir)
|
49
|
+
init_class = File.join(manifest_dir, 'init.pp')
|
50
|
+
content = File.read(File.join(template_dir, 'manifest_file.pp'))
|
51
|
+
print "The module located at: #{module_path} does not exist, do you wish to create it? (y/n): "
|
52
|
+
answer = gets.chomp
|
53
|
+
unless answer =~ /y/i
|
54
|
+
exit 1
|
55
|
+
end
|
56
|
+
create_manifest_file(init_class, content)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
# used to display subcommand options to tglobal_confighe cli
|
36
61
|
# the global options are passed in for your usage
|
37
62
|
# http://trollop.rubyforge.org
|
38
63
|
# all options here are available in the config passed into the initialize code
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
64
|
+
# this is the only entry point into the plugin
|
65
|
+
def self.run_cli(global_opts, global_config, plugin_config, args=ARGV)
|
66
|
+
template_dir = plugin_config['plugins::puppet::template_dir'] || File.expand_path('~/.retrospec/repos/retrospec-puppet-templates')
|
67
|
+
scm_url = ENV['RETROSPEC_PUPPET_SCM_URL'] || plugin_config['plugins::puppet::templates::url']
|
68
|
+
scm_branch = ENV['RETROSPEC_PUPPET_SCM_BRANCH'] || plugin_config['plugins::puppet::templates::ref'] || 'master'
|
69
|
+
future_parser = plugin_config['plugins::puppet::enable_future_parser'] || false
|
70
|
+
beaker_tests = plugin_config['plugins::puppet::enable_beaker_tests'] || false
|
71
|
+
namespace = plugin_config['plugins::puppet::namespace'] || 'namespace'
|
72
|
+
# a list of subcommands for this plugin
|
73
|
+
sub_commands = [:new_module]
|
74
|
+
if sub_commands.count > 0
|
75
|
+
sub_command_help = "Subcommands:\n#{sub_commands.join("\n")}\n"
|
76
|
+
else
|
77
|
+
sub_command_help = ""
|
78
|
+
end
|
79
|
+
plugin_opts = Trollop::options do
|
46
80
|
version "#{Retrospec::Puppet::VERSION} (c) Corey Osman"
|
47
81
|
banner <<-EOS
|
48
|
-
Generates puppet rspec test code based on the classes and defines inside the manifests directory
|
82
|
+
Generates puppet rspec test code based on the classes and defines inside the manifests directory.\n
|
83
|
+
#{sub_command_help}
|
49
84
|
|
50
85
|
EOS
|
51
86
|
opt :template_dir, "Path to templates directory (only for overriding Retrospec templates)", :type => :string,
|
52
87
|
:required => false, :default => template_dir
|
53
88
|
opt :scm_url, "SCM url for retrospec templates", :type => :string, :required => false,
|
54
89
|
:default => scm_url
|
90
|
+
opt :name, "The name of the module you wish to create", :type => :string, :require => :false, :short => '-n',
|
91
|
+
:default => File.basename(global_opts[:module_path])
|
55
92
|
opt :branch, "Branch you want to use for the retrospec template repo", :type => :string, :required => false,
|
56
93
|
:default => scm_branch
|
94
|
+
opt :namespace, "The namespace to use only when creating a new module", :default => namespace, :required => false,
|
95
|
+
:type => :string
|
57
96
|
opt :enable_beaker_tests, "Enable the creation of beaker tests", :require => false, :type => :boolean, :default => beaker_tests
|
58
97
|
opt :enable_future_parser, "Enables the future parser only during validation", :default => future_parser, :require => false, :type => :boolean
|
98
|
+
stop_on sub_commands
|
99
|
+
end
|
100
|
+
# the passed in options will always override the config file
|
101
|
+
plugin_data = plugin_opts.merge(global_config).merge(global_opts).merge(plugin_opts)
|
102
|
+
# define the default action to use the plugin here, the default is run
|
103
|
+
sub_command = (args.shift || :run).to_sym
|
104
|
+
# create an instance of this plugin
|
105
|
+
plugin = self.new(plugin_data[:module_path],plugin_data)
|
106
|
+
# check if the plugin supports the sub command
|
107
|
+
if plugin.respond_to?(sub_command)
|
108
|
+
case sub_command
|
109
|
+
when :new_module
|
110
|
+
plugin.send(sub_command)
|
111
|
+
plugin.post_init # finish initialization
|
112
|
+
when :run
|
113
|
+
plugin.post_init # finish initialization
|
114
|
+
else
|
115
|
+
plugin.post_init # finish initialization
|
116
|
+
plugin.send(sub_command)
|
117
|
+
end
|
118
|
+
plugin.send(:run)
|
119
|
+
else
|
120
|
+
puts "The subcommand #{sub_command} is not supported or valid"
|
121
|
+
exit 1
|
59
122
|
end
|
60
123
|
end
|
61
124
|
|
@@ -105,6 +168,7 @@ Generates puppet rspec test code based on the classes and defines inside the man
|
|
105
168
|
def create_files
|
106
169
|
types = context.types
|
107
170
|
safe_create_module_files
|
171
|
+
generate_metadata_file
|
108
172
|
# a Type is nothing more than a defined type or puppet class
|
109
173
|
# we could have named this manifest but there could be multiple types
|
110
174
|
# in a manifest.
|
@@ -239,17 +303,41 @@ Generates puppet rspec test code based on the classes and defines inside the man
|
|
239
303
|
'.pp'
|
240
304
|
end
|
241
305
|
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
#
|
250
|
-
|
251
|
-
|
252
|
-
|
306
|
+
def create_manifest_file(dest, content)
|
307
|
+
# replace the name in the target file with the module_name from this class
|
308
|
+
# I would have just used a template but the context does not exist yet
|
309
|
+
new_content = content.gsub('CLASS_NAME', config_data[:name])
|
310
|
+
safe_create_file(dest, new_content)
|
311
|
+
end
|
312
|
+
|
313
|
+
# generates the metadata file in the module directory
|
314
|
+
def generate_metadata_file
|
315
|
+
require 'puppet/module_tool/metadata'
|
316
|
+
# make sure the metadata file exists
|
317
|
+
metadata_file = File.join(module_path, 'metadata.json')
|
318
|
+
unless File.exists?(metadata_file)
|
319
|
+
# by default the module tool metadata checks for a namespece
|
320
|
+
if ! config_data[:name].include?('-')
|
321
|
+
name = "#{config_data[:namespace]}-#{config_data[:name]}"
|
322
|
+
else
|
323
|
+
name = config_data[:name]
|
324
|
+
end
|
325
|
+
begin
|
326
|
+
metadata = ::Puppet::ModuleTool::Metadata.new.update(
|
327
|
+
'name' => name,
|
328
|
+
'version' => '0.1.0',
|
329
|
+
'author' => (config_data['plugins::puppet::author'] || nil ),
|
330
|
+
'dependencies' => [
|
331
|
+
{ 'name' => 'puppetlabs-stdlib', 'version_requirement' => '>= 1.0.0' }
|
332
|
+
]
|
333
|
+
)
|
334
|
+
rescue ArgumentError => e
|
335
|
+
puts e.message
|
336
|
+
exit -1
|
337
|
+
end
|
338
|
+
safe_create_file(metadata_file, metadata.to_json)
|
339
|
+
end
|
340
|
+
end
|
253
341
|
end
|
254
342
|
end
|
255
343
|
end
|
data/puppet-retrospec.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "puppet-retrospec"
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.10.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Corey Osman"]
|
12
|
-
s.date = "2015-
|
12
|
+
s.date = "2015-10-12"
|
13
13
|
s.description = "Retrofits and generates valid puppet rspec test code to existing modules"
|
14
14
|
s.email = "corey@logicminds.biz"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -46,6 +46,7 @@ Gem::Specification.new do |s|
|
|
46
46
|
"spec/fixtures/fixture_modules/one_resource_module/manifests/params.pp",
|
47
47
|
"spec/fixtures/fixture_modules/zero_resource_module/manifests/empty_class.pp",
|
48
48
|
"spec/fixtures/fixture_modules/zero_resource_module/manifests/not_a_resource_defination.pp",
|
49
|
+
"spec/fixtures/fixture_modules/zero_resource_module/metadata.json",
|
49
50
|
"spec/fixtures/manifests/includes-class.pp",
|
50
51
|
"spec/fixtures/manifests/includes-defines.pp",
|
51
52
|
"spec/fixtures/modules/concat/CHANGELOG.md",
|
@@ -1821,7 +1822,7 @@ Gem::Specification.new do |s|
|
|
1821
1822
|
|
1822
1823
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
1823
1824
|
s.add_runtime_dependency(%q<trollop>, [">= 0"])
|
1824
|
-
s.add_runtime_dependency(%q<retrospec>, ["~> 0.
|
1825
|
+
s.add_runtime_dependency(%q<retrospec>, ["~> 0.4.0"])
|
1825
1826
|
s.add_development_dependency(%q<rspec>, ["~> 3.2"])
|
1826
1827
|
s.add_development_dependency(%q<puppet>, ["= 3.7.3"])
|
1827
1828
|
s.add_development_dependency(%q<yard>, ["~> 0.7"])
|
@@ -1830,12 +1831,9 @@ Gem::Specification.new do |s|
|
|
1830
1831
|
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
1831
1832
|
s.add_development_dependency(%q<pry>, [">= 0"])
|
1832
1833
|
s.add_development_dependency(%q<fakefs>, [">= 0"])
|
1833
|
-
s.add_development_dependency(%q<pry-rescue>, [">= 0"])
|
1834
|
-
s.add_development_dependency(%q<pry-stack_explorer>, [">= 0"])
|
1835
|
-
s.add_development_dependency(%q<pry-coolline>, [">= 0"])
|
1836
1834
|
else
|
1837
1835
|
s.add_dependency(%q<trollop>, [">= 0"])
|
1838
|
-
s.add_dependency(%q<retrospec>, ["~> 0.
|
1836
|
+
s.add_dependency(%q<retrospec>, ["~> 0.4.0"])
|
1839
1837
|
s.add_dependency(%q<rspec>, ["~> 3.2"])
|
1840
1838
|
s.add_dependency(%q<puppet>, ["= 3.7.3"])
|
1841
1839
|
s.add_dependency(%q<yard>, ["~> 0.7"])
|
@@ -1844,13 +1842,10 @@ Gem::Specification.new do |s|
|
|
1844
1842
|
s.add_dependency(%q<jeweler>, [">= 0"])
|
1845
1843
|
s.add_dependency(%q<pry>, [">= 0"])
|
1846
1844
|
s.add_dependency(%q<fakefs>, [">= 0"])
|
1847
|
-
s.add_dependency(%q<pry-rescue>, [">= 0"])
|
1848
|
-
s.add_dependency(%q<pry-stack_explorer>, [">= 0"])
|
1849
|
-
s.add_dependency(%q<pry-coolline>, [">= 0"])
|
1850
1845
|
end
|
1851
1846
|
else
|
1852
1847
|
s.add_dependency(%q<trollop>, [">= 0"])
|
1853
|
-
s.add_dependency(%q<retrospec>, ["~> 0.
|
1848
|
+
s.add_dependency(%q<retrospec>, ["~> 0.4.0"])
|
1854
1849
|
s.add_dependency(%q<rspec>, ["~> 3.2"])
|
1855
1850
|
s.add_dependency(%q<puppet>, ["= 3.7.3"])
|
1856
1851
|
s.add_dependency(%q<yard>, ["~> 0.7"])
|
@@ -1859,9 +1854,6 @@ Gem::Specification.new do |s|
|
|
1859
1854
|
s.add_dependency(%q<jeweler>, [">= 0"])
|
1860
1855
|
s.add_dependency(%q<pry>, [">= 0"])
|
1861
1856
|
s.add_dependency(%q<fakefs>, [">= 0"])
|
1862
|
-
s.add_dependency(%q<pry-rescue>, [">= 0"])
|
1863
|
-
s.add_dependency(%q<pry-stack_explorer>, [">= 0"])
|
1864
|
-
s.add_dependency(%q<pry-coolline>, [">= 0"])
|
1865
1857
|
end
|
1866
1858
|
end
|
1867
1859
|
|
@@ -0,0 +1,13 @@
|
|
1
|
+
{
|
2
|
+
"name": "name-test123",
|
3
|
+
"version": "0.1.0",
|
4
|
+
"author": "name",
|
5
|
+
"summary": null,
|
6
|
+
"license": "Apache 2.0",
|
7
|
+
"source": "",
|
8
|
+
"project_page": null,
|
9
|
+
"issues_url": null,
|
10
|
+
"dependencies": [
|
11
|
+
{"name":"puppetlabs-stdlib","version_requirement":">= 1.0.0"}
|
12
|
+
]
|
13
|
+
}
|
data/spec/unit/plugin_spec.rb
CHANGED
@@ -6,16 +6,25 @@ describe "puppet" do
|
|
6
6
|
Retrospec::Plugins::V1::Puppet.new('/tmp/testplugin_dir', {:name => 'testplugin', :config1 => 'test'})
|
7
7
|
end
|
8
8
|
|
9
|
-
|
10
|
-
|
9
|
+
let(:global_opts) do
|
10
|
+
{:module_path => '/tmp/testplugin_dir'}
|
11
11
|
end
|
12
12
|
|
13
|
-
|
14
|
-
|
13
|
+
before :each do
|
14
|
+
FileUtils.rm_rf('/tmp/testplugin_dir')
|
15
15
|
end
|
16
16
|
|
17
|
+
it 'can show the version' do
|
18
|
+
expect(Retrospec::Puppet::VERSION).to eq('0.10.0')
|
19
|
+
end
|
20
|
+
|
21
|
+
# disabling for now until we can stub gets
|
22
|
+
xit 'can run cli and create new module' do
|
23
|
+
expect(Retrospec::Plugins::V1::Puppet.run_cli(global_opts, {},{}, ['new_module'])).to eq(nil)
|
24
|
+
end
|
17
25
|
|
18
|
-
|
19
|
-
|
26
|
+
xit 'can run cli' do
|
27
|
+
Retrospec::Plugins::V1::Puppet.run_cli(global_opts, {},{}, ['new_module'])
|
28
|
+
expect(Retrospec::Plugins::V1::Puppet.run_cli(global_opts, {},{}, [])).to eq(nil)
|
20
29
|
end
|
21
30
|
end
|
@@ -7,6 +7,30 @@ describe "puppet-retrospec" do
|
|
7
7
|
FileUtils.rm_rf(fixture_modules_path) if ENV['RETROSPEC_CLEAN_UP_TEST_MODULES'] =~ /true/
|
8
8
|
end
|
9
9
|
|
10
|
+
let(:global_config) do
|
11
|
+
{'author' => 'Corey Osman'}
|
12
|
+
end
|
13
|
+
|
14
|
+
let(:plugin_config) do
|
15
|
+
{
|
16
|
+
# 'plugins::puppet::template_dir' => '/Users',
|
17
|
+
# 'plugins::puppet::templates::url' => '',
|
18
|
+
# 'plugins::puppet::templates::ref' => '',
|
19
|
+
# 'plugins::puppet::enable_future_parser' => '',
|
20
|
+
# 'plugins::puppet::enable_beaker_tests' => '',
|
21
|
+
# 'plugins::puppet::namespace' => '',
|
22
|
+
# 'plugins::puppet::auto_create' => '',
|
23
|
+
}
|
24
|
+
end
|
25
|
+
|
26
|
+
let(:global_opts) do
|
27
|
+
{:module_path => File.join(fixture_modules_path, 'tomcat')}
|
28
|
+
end
|
29
|
+
|
30
|
+
let(:plugin_opts) do
|
31
|
+
{}
|
32
|
+
end
|
33
|
+
|
10
34
|
before :all do
|
11
35
|
#enabling the removal of real modules slows down tests, but from time to time we may need to
|
12
36
|
FileUtils.rm_rf(fixture_modules_path) if ENV['RETROSPEC_CLEAN_UP_TEST_MODULES'] =~ /true/
|
@@ -16,7 +40,7 @@ describe "puppet-retrospec" do
|
|
16
40
|
|
17
41
|
before :each do
|
18
42
|
clean_up_spec_dir(@path)
|
19
|
-
@opts = {:module_path => @path, :enable_beaker_tests => false,
|
43
|
+
@opts = {:module_path => @path, :enable_beaker_tests => false, :name => 'name-test123',
|
20
44
|
:enable_user_templates => false, :template_dir => '/tmp/.retrospec_templates' }
|
21
45
|
end
|
22
46
|
|
@@ -29,11 +53,31 @@ describe "puppet-retrospec" do
|
|
29
53
|
opts = {:module_path => @path, :enable_beaker_tests => false,
|
30
54
|
:enable_user_templates => false, :template_dir => nil, :enable_future_parser => true }
|
31
55
|
tomcat = Retrospec::Plugins::V1::Puppet.new(opts[:module_path], opts)
|
56
|
+
tomcat.post_init
|
32
57
|
expect(tomcat.context.instance.future_parser).to eq(true)
|
33
58
|
end
|
59
|
+
describe 'new module' do
|
60
|
+
after :each do
|
61
|
+
FileUtils.rm_rf('/tmp/new_module')
|
62
|
+
end
|
63
|
+
it 'should create a module when it does not exist' do
|
64
|
+
opts = {'plugins::puppet::author' => 'test_name', :module_path => '/tmp/new_module', :create => true,
|
65
|
+
:namespace => 'retrospec', :enable_beaker_tests => false,
|
66
|
+
:enable_user_templates => false, :name => 'moduletest', :template_dir => nil, :enable_future_parser => true }
|
67
|
+
new_module = Retrospec::Plugins::V1::Puppet.new(opts[:module_path], opts)
|
68
|
+
allow(new_module).to receive(:gets).and_return("y\n")
|
69
|
+
new_module.new_module
|
70
|
+
new_module.post_init
|
71
|
+
new_module.run
|
72
|
+
expect(File.exists?(File.join(new_module.manifest_dir, 'init.pp'))).to eq(true)
|
73
|
+
expect(File.exists?(File.join(new_module.module_path, 'metadata.json'))).to eq(true)
|
74
|
+
expect(JSON.parse(File.read(File.join(new_module.module_path, 'metadata.json')))['author']).to eq('test_name')
|
75
|
+
end
|
76
|
+
end
|
34
77
|
|
35
78
|
it 'should create files without error' do
|
36
79
|
tomcat = Retrospec::Plugins::V1::Puppet.new(@opts[:module_path], @opts)
|
80
|
+
tomcat.post_init
|
37
81
|
tomcat.create_files
|
38
82
|
expect(File.exists?(File.join(@path, 'Gemfile'))).to eq(true)
|
39
83
|
expect(File.exists?(File.join(@path, 'Rakefile'))).to eq(true)
|
@@ -47,6 +91,7 @@ describe "puppet-retrospec" do
|
|
47
91
|
it 'should create acceptance test files' do
|
48
92
|
@opts[:enable_beaker_tests] = true
|
49
93
|
tomcat = Retrospec::Plugins::V1::Puppet.new(@opts[:module_path], @opts)
|
94
|
+
tomcat.post_init
|
50
95
|
spec_path = File.expand_path(File.join(@path, 'spec'))
|
51
96
|
tomcat.create_files
|
52
97
|
expect(File.exists?(File.join(spec_path, 'spec_helper_acceptance.rb'))).to eq(true)
|
@@ -61,6 +106,7 @@ describe "puppet-retrospec" do
|
|
61
106
|
clean_up_spec_dir(@path)
|
62
107
|
@opts[:enable_beaker_tests] = false
|
63
108
|
tomcat = Retrospec::Plugins::V1::Puppet.new(@opts[:module_path], @opts)
|
109
|
+
tomcat.post_init
|
64
110
|
spec_path = File.expand_path(File.join(@path, 'spec'))
|
65
111
|
tomcat.create_files
|
66
112
|
expect(File.exists?(File.join(spec_path, 'spec_helper_acceptance.rb'))).to eq(false)
|
@@ -72,6 +118,7 @@ describe "puppet-retrospec" do
|
|
72
118
|
|
73
119
|
it 'should create proper spec helper file' do
|
74
120
|
tomcat = Retrospec::Plugins::V1::Puppet.new(@opts[:module_path], @opts)
|
121
|
+
tomcat.post_init
|
75
122
|
filepath = File.expand_path(File.join(@path, 'spec', 'spec_helper.rb'))
|
76
123
|
tomcat.safe_create_module_files
|
77
124
|
path = tomcat.module_path
|
@@ -80,6 +127,7 @@ describe "puppet-retrospec" do
|
|
80
127
|
|
81
128
|
it 'should create proper shared context file' do
|
82
129
|
tomcat = Retrospec::Plugins::V1::Puppet.new(@opts[:module_path], @opts)
|
130
|
+
tomcat.post_init
|
83
131
|
filepath = File.expand_path(File.join(@path, 'spec', 'shared_contexts.rb'))
|
84
132
|
tomcat.safe_create_module_files
|
85
133
|
expect(File.exists?(filepath)).to eq(true)
|
@@ -87,6 +135,7 @@ describe "puppet-retrospec" do
|
|
87
135
|
|
88
136
|
it 'should produce hiera data' do
|
89
137
|
tomcat = Retrospec::Plugins::V1::Puppet.new(@opts[:module_path], @opts)
|
138
|
+
tomcat.post_init
|
90
139
|
filepath = File.expand_path(File.join(@path, 'spec', 'shared_contexts.rb'))
|
91
140
|
tomcat.safe_create_module_files
|
92
141
|
path = tomcat.module_path
|
@@ -107,6 +156,7 @@ describe "puppet-retrospec" do
|
|
107
156
|
opts = {:module_path => @path, :enable_beaker_tests => true,
|
108
157
|
:template_dir => '/tmp/my_templates' }
|
109
158
|
tomcat = Retrospec::Plugins::V1::Puppet.new(@opts[:module_path], opts)
|
159
|
+
tomcat.post_init
|
110
160
|
filepath = File.expand_path(File.join(@path, 'spec', 'spec_helper_acceptance.rb'))
|
111
161
|
tomcat.safe_create_module_files
|
112
162
|
expect(File.exists?(filepath)).to eq(true)
|
@@ -117,6 +167,7 @@ describe "puppet-retrospec" do
|
|
117
167
|
:template_dir => '/tmp/my_templates' }
|
118
168
|
filepath = File.expand_path(File.join(@path, 'spec', 'spec_helper_acceptance.rb'))
|
119
169
|
tomcat = Retrospec::Plugins::V1::Puppet.new(@opts[:module_path], opts)
|
170
|
+
tomcat.post_init
|
120
171
|
tomcat.safe_create_module_files
|
121
172
|
expect(File.exists?(filepath)).to eq(false)
|
122
173
|
end
|
@@ -125,6 +176,7 @@ describe "puppet-retrospec" do
|
|
125
176
|
opts = {:module_path => @path, :enable_beaker_tests => true,
|
126
177
|
:template_dir => '/tmp/my_templates' }
|
127
178
|
tomcat = Retrospec::Plugins::V1::Puppet.new(@opts[:module_path], opts)
|
179
|
+
tomcat.post_init
|
128
180
|
filepath = File.expand_path(File.join(@path, 'spec', 'acceptance', 'nodesets', 'default.yml'))
|
129
181
|
tomcat.safe_create_module_files
|
130
182
|
expect(File.exists?(filepath)).to eq(true)
|
@@ -133,6 +185,7 @@ describe "puppet-retrospec" do
|
|
133
185
|
|
134
186
|
it 'should create Gemfile file' do
|
135
187
|
tomcat = Retrospec::Plugins::V1::Puppet.new(@opts[:module_path], @opts)
|
188
|
+
tomcat.post_init
|
136
189
|
filepath = File.expand_path(File.join(@path, 'Gemfile'))
|
137
190
|
tomcat.safe_create_module_files
|
138
191
|
expect(File.exists?(filepath)).to eq(true)
|
@@ -140,6 +193,7 @@ describe "puppet-retrospec" do
|
|
140
193
|
|
141
194
|
it 'should create Rakefile file' do
|
142
195
|
tomcat = Retrospec::Plugins::V1::Puppet.new(@opts[:module_path], @opts)
|
196
|
+
tomcat.post_init
|
143
197
|
filepath = File.expand_path(File.join(@path, 'Rakefile'))
|
144
198
|
tomcat.safe_create_module_files
|
145
199
|
expect(File.exists?(filepath)).to eq(true)
|
@@ -149,18 +203,20 @@ describe "puppet-retrospec" do
|
|
149
203
|
filepath = File.expand_path(File.join(@path,'.fixtures.yml'))
|
150
204
|
FileUtils.rm_f(filepath) # ensure we have a clean state
|
151
205
|
tomcat = Retrospec::Plugins::V1::Puppet.new(@opts[:module_path], @opts)
|
206
|
+
tomcat.post_init
|
152
207
|
tomcat.safe_create_module_files
|
153
208
|
expect(File.exists?(filepath)).to eq(true)
|
154
209
|
end
|
155
210
|
|
156
211
|
it 'should not create any files when 0 resources exists' do
|
157
212
|
my_path = File.expand_path(File.join('spec', 'fixtures', 'fixture_modules', 'zero_resource_module'))
|
158
|
-
my_retro = Retrospec::Plugins::V1::Puppet.new(my_path)
|
213
|
+
my_retro = Retrospec::Plugins::V1::Puppet.new(my_path, @opts)
|
159
214
|
my_retro.should_not_receive(:safe_create_file).with(anything,'resource_spec_file.erb')
|
160
215
|
end
|
161
216
|
|
162
217
|
it 'should create a file from a template' do
|
163
218
|
tomcat = Retrospec::Plugins::V1::Puppet.new(@opts[:module_path], @opts)
|
219
|
+
tomcat.post_init
|
164
220
|
file_path = File.join(@path,'.fixtures.yml')
|
165
221
|
template_file = File.join(tomcat.template_dir,'module_files','.fixtures.yml.retrospec.erb')
|
166
222
|
tomcat.safe_create_template_file(file_path, template_file, tomcat.context)
|
@@ -220,4 +276,5 @@ describe "puppet-retrospec" do
|
|
220
276
|
expect(tomcat.generate_file_name('tomcat')).to eq('tomcat_spec.rb')
|
221
277
|
expect(tomcat.generate_file_name('tomcat::config')).to eq('config_spec.rb')
|
222
278
|
end
|
279
|
+
|
223
280
|
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.10.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: 2015-
|
11
|
+
date: 2015-10-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: trollop
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - ~>
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 0.4.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ~>
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 0.4.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -150,48 +150,6 @@ dependencies:
|
|
150
150
|
- - '>='
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: '0'
|
153
|
-
- !ruby/object:Gem::Dependency
|
154
|
-
name: pry-rescue
|
155
|
-
requirement: !ruby/object:Gem::Requirement
|
156
|
-
requirements:
|
157
|
-
- - '>='
|
158
|
-
- !ruby/object:Gem::Version
|
159
|
-
version: '0'
|
160
|
-
type: :development
|
161
|
-
prerelease: false
|
162
|
-
version_requirements: !ruby/object:Gem::Requirement
|
163
|
-
requirements:
|
164
|
-
- - '>='
|
165
|
-
- !ruby/object:Gem::Version
|
166
|
-
version: '0'
|
167
|
-
- !ruby/object:Gem::Dependency
|
168
|
-
name: pry-stack_explorer
|
169
|
-
requirement: !ruby/object:Gem::Requirement
|
170
|
-
requirements:
|
171
|
-
- - '>='
|
172
|
-
- !ruby/object:Gem::Version
|
173
|
-
version: '0'
|
174
|
-
type: :development
|
175
|
-
prerelease: false
|
176
|
-
version_requirements: !ruby/object:Gem::Requirement
|
177
|
-
requirements:
|
178
|
-
- - '>='
|
179
|
-
- !ruby/object:Gem::Version
|
180
|
-
version: '0'
|
181
|
-
- !ruby/object:Gem::Dependency
|
182
|
-
name: pry-coolline
|
183
|
-
requirement: !ruby/object:Gem::Requirement
|
184
|
-
requirements:
|
185
|
-
- - '>='
|
186
|
-
- !ruby/object:Gem::Version
|
187
|
-
version: '0'
|
188
|
-
type: :development
|
189
|
-
prerelease: false
|
190
|
-
version_requirements: !ruby/object:Gem::Requirement
|
191
|
-
requirements:
|
192
|
-
- - '>='
|
193
|
-
- !ruby/object:Gem::Version
|
194
|
-
version: '0'
|
195
153
|
description: Retrofits and generates valid puppet rspec test code to existing modules
|
196
154
|
email: corey@logicminds.biz
|
197
155
|
executables: []
|
@@ -229,6 +187,7 @@ files:
|
|
229
187
|
- spec/fixtures/fixture_modules/one_resource_module/manifests/params.pp
|
230
188
|
- spec/fixtures/fixture_modules/zero_resource_module/manifests/empty_class.pp
|
231
189
|
- spec/fixtures/fixture_modules/zero_resource_module/manifests/not_a_resource_defination.pp
|
190
|
+
- spec/fixtures/fixture_modules/zero_resource_module/metadata.json
|
232
191
|
- spec/fixtures/manifests/includes-class.pp
|
233
192
|
- spec/fixtures/manifests/includes-defines.pp
|
234
193
|
- spec/fixtures/modules/concat/CHANGELOG.md
|