chefspec-bootstrap 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ YTA2YjJjMWJkYTNmNDU4OGNlOWFmMGVlNDBjMzdiYTRlMjk5OTRkMg==
5
+ data.tar.gz: !binary |-
6
+ Y2I2OTdlNmNkZDYzMTA4MThhMjY3M2U2OGNlOWVjZGRlZTBiZjExMA==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ NDE1Y2NjYTljNjJlMTA4NjkzZGM2ODU4ZTNjNmFlMTZlMzMyZTFhZWJkNTU4
10
+ NzM2MDE0N2NiMTI1NGYwZTM0MWQwZDZjN2RhY2EyMGQxZTQ1NDA3YjE2OWI5
11
+ M2JkMjlhYjExZGQ4ZGVhM2VjNmU1MWE1OGEzNzIxZGE5MzE4N2U=
12
+ data.tar.gz: !binary |-
13
+ MTNkYzA3ZmY3MDQxYjk3NmMzZGI5NWJkYWVkZWIwYzI1OWRjMzgxNGQwYjk3
14
+ NzQxYmE2YWFmZjFkZDEyMTIwNDM3NDQyYzFiMDRkODA1MzZkOWU1N2I5Nzg2
15
+ ODQyY2FmNGVlNDMxYzcwODc3Zjc5MGNhMmI5MGFmZjc0OGM4NDM=
data/.rubocop.yml ADDED
@@ -0,0 +1,13 @@
1
+ Encoding:
2
+ Enabled: false
3
+
4
+ LineLength:
5
+ Max: 120
6
+
7
+ Documentation:
8
+ Enabled: false
9
+
10
+ MethodLength:
11
+ Enabled: false
12
+
13
+ inherit_from: .rubocop_todo.yml
data/.rubocop_todo.yml ADDED
@@ -0,0 +1,35 @@
1
+ # This configuration was generated by `rubocop --auto-gen-config`
2
+ # on 2014-06-09 15:47:50 -0400 using RuboCop version 0.23.0.
3
+ # The point is for the user to remove these configuration records
4
+ # one by one as the offenses are removed from the code base.
5
+ # Note that changes in the inspected code, or installation of new
6
+ # versions of RuboCop, may require this file to be generated again.
7
+
8
+ # Offense count: 1
9
+ # Cop supports --auto-correct.
10
+ Lint/RescueException:
11
+ Enabled: false
12
+
13
+ # Offense count: 2
14
+ Lint/UselessAssignment:
15
+ Enabled: false
16
+
17
+ # Offense count: 1
18
+ # Configuration parameters: CountComments.
19
+ Style/ClassLength:
20
+ Max: 134
21
+
22
+ # Offense count: 2
23
+ # Configuration parameters: Exclude.
24
+ Style/FileName:
25
+ Enabled: false
26
+
27
+ # Offense count: 1
28
+ # Configuration parameters: MaxLineLength.
29
+ Style/IfUnlessModifier:
30
+ Enabled: false
31
+
32
+ # Offense count: 1
33
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
34
+ Style/Next:
35
+ Enabled: false
data/Gemfile ADDED
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
4
+ gem 'rubocop'
5
+
data/README.md CHANGED
@@ -3,7 +3,7 @@ chefspec-bootstrap
3
3
 
4
4
  A command line tool to get started with ChefSpec. Generates spec files for your untested recipes.
5
5
 
6
- Given a cookbook called `cookbook` with a recipe called `recipe.rb`:
6
+ Given a cookbook called `my_cookbook` with a recipe called `my_recipe.rb`:
7
7
  ```ruby
8
8
  package "apache2"
9
9
 
@@ -16,11 +16,11 @@ template "/etc/apache2/sites-available/mysite" do
16
16
  end
17
17
  ```
18
18
 
19
- The command line tool will generate the following spec file at `spec/cookbook/recipe_spec.rb`:
19
+ The command line tool will generate output the following to stdout:
20
20
  ```ruby
21
21
  require 'chefspec'
22
22
 
23
- describe 'cookbook::recipe' do
23
+ describe 'my_cookbook::my_recipe' do
24
24
  let(:chef_run) { ChefSpec::Runner.new.converge(described_recipe) }
25
25
 
26
26
  it "installs the apache2 package" do
@@ -47,15 +47,14 @@ gem install chefspec-bootstrap
47
47
 
48
48
  Run the command-line tool
49
49
  ```
50
- chefspec-bootstrap
50
+ chefspec-bootstrap my_cookbook/recipes/my_recipe.rb
51
51
  ```
52
52
 
53
53
  Options
54
54
  ---
55
55
  ```
56
- --cookbooks-dir, -c <s>: Your site cookbooks directory (default: site-cookbooks)
57
- --spec-dir, -s <s>: Your spec directory (default: spec)
58
- --template, -t <s>: ERB template file used to generate specs
56
+ Usage: chefspec-bootstrap <recipe.rb> [options]
57
+ -t, --template TEMPLATEFILE ERB template file used to generate specs
59
58
  ```
60
59
 
61
60
  Creating a custom template
@@ -1,23 +1,36 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ require 'rspec/expectations'
3
4
  require 'chefspec-bootstrap'
4
- require 'trollop'
5
+ require 'optparse'
5
6
 
6
- cookbook_path_help_text = "RSpec config for cookbook path. Defaults to RSpec.configure.cookbook_path from spec_helper.rb."
7
+ options = {:template => nil}
7
8
 
8
- opts = Trollop::options do
9
- opt :cookbooks_dir, "Your site cookbooks directory", :type => :string, :default => "site-cookbooks"
10
- opt :cookbooks_path, cookbook_path_help_text, :type => :strings
11
- opt :recursive, "Generate specs for included recipes."
12
- opt :spec_dir, "Your spec directory", :type => :string, :default => "spec"
13
- opt :template, "ERB template file used to generate specs", :type => :string
9
+ optparse = OptionParser.new do |opts|
10
+ opts.banner = "Usage: chefspec-bootstrap <recipe.rb> [options]"
11
+
12
+ opts.on('-t', '--template <file>', "ERB template file used to generate specs") do |t|
13
+ options[:template] = t
14
+ end
15
+
16
+ opts.on('-s', '--spechelper <file>', "spec_helper.rb file. By default, looks in spec/spec_helper.rb") do |s|
17
+ options[:spec_helper] = s
18
+ end
19
+
20
+ opts.on('-o', '--output <file>', "File to output spec. Prints to stdout if not specified.") do |o|
21
+ options[:output_file] = o
22
+ end
14
23
  end
15
24
 
25
+ abort "Recipe not specified!" if ARGV.empty?
26
+
27
+ optparse.parse!
28
+
29
+ recipe = ARGV[0]
16
30
  bootstrap = ChefSpec::Bootstrap.new(
17
- opts[:cookbooks_dir],
18
- opts[:cookbooks_path],
19
- opts[:spec_dir],
20
- opts[:template],
21
- opts[:recursive]
31
+ recipe,
32
+ options[:template],
33
+ options[:spec_helper],
34
+ options[:output_file]
22
35
  )
23
- bootstrap.generate()
36
+ bootstrap.generate
@@ -1,17 +1,16 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'chefspec-bootstrap'
3
- s.version = '0.0.3'
4
- s.date = '2014-06-02'
5
- s.summary = "Bootstrap your ChefSpec tests."
6
- s.description = "Automatically generate ChefSpec tests based on your recipes."
7
- s.authors = ["Alexander Meng"]
3
+ s.version = '0.0.4'
4
+ s.date = '2014-12-01'
5
+ s.summary = 'Bootstrap your ChefSpec tests.'
6
+ s.description = 'Automatically generate ChefSpec tests based on your recipes.'
7
+ s.authors = ['Alexander Meng']
8
8
  s.email = 'alexbmeng@gmail.com'
9
- s.files = `git ls-files`.split($/)
9
+ s.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
10
10
  s.homepage = 'http://rubygems.org/gems/chefspec-bootstrap'
11
11
  s.license = 'Apache'
12
- s.executables = ["chefspec-bootstrap"]
12
+ s.executables = ['chefspec-bootstrap']
13
13
  s.required_ruby_version = '>= 1.9'
14
14
 
15
15
  s.add_dependency 'chefspec', '~> 3.4.0'
16
- s.add_dependency 'trollop', '~> 2.0.0'
17
16
  end
data/lib/api_map.rb CHANGED
@@ -1,82 +1,81 @@
1
1
  module ChefSpec
2
2
  class APIMap
3
-
4
- IT_CREATE_IF_MISSING = "creates the %{adjective} %{noun} if it is missing"
5
- IT_MODIFY = "modifies the %{adjective} %{noun}"
6
- IT_TOUCH = "touches the %{adjective} %{noun}"
7
- EXPECT_CREATE_IF_MISSING = "create_%{noun}_if_missing"
3
+ IT_CREATE_IF_MISSING = 'creates the %{adjective} %{noun} if it is missing'
4
+ IT_MODIFY = 'modifies the %{adjective} %{noun}'
5
+ IT_TOUCH = 'touches the %{adjective} %{noun}'
6
+ EXPECT_CREATE_IF_MISSING = 'create_%{noun}_if_missing'
8
7
 
9
8
  def map
10
9
  {
11
- :cookbook_file => {
12
- :it => { :create_if_missing => IT_CREATE_IF_MISSING },
13
- :expect => { :create_if_missing => EXPECT_CREATE_IF_MISSING }
10
+ cookbook_file: {
11
+ it: { create_if_missing: IT_CREATE_IF_MISSING },
12
+ expect: { create_if_missing: EXPECT_CREATE_IF_MISSING }
14
13
  },
15
- :deploy => {
16
- :it => { :force_deploy => "force deploys the %{adjective} %{noun}" }
14
+ deploy: {
15
+ it: { force_deploy: 'force deploys the %{adjective} %{noun}' }
17
16
  },
18
- :env => {
19
- :it => { :modify => IT_MODIFY }
17
+ env: {
18
+ it: { modify: IT_MODIFY }
20
19
  },
21
- :execute => {
22
- :it => { :run => "executes %{adjective}" }
20
+ execute: {
21
+ it: { run: 'executes %{adjective}' }
23
22
  },
24
- :file => {
25
- :it => {
26
- :create_if_missing => IT_CREATE_IF_MISSING,
27
- :touch => IT_TOUCH
23
+ file: {
24
+ it: {
25
+ create_if_missing: IT_CREATE_IF_MISSING,
26
+ touch: IT_TOUCH
28
27
  },
29
- :expect => { :create_if_missing => EXPECT_CREATE_IF_MISSING }
28
+ expect: { create_if_missing: EXPECT_CREATE_IF_MISSING }
30
29
  },
31
- :git => {
32
- :it => {
33
- :default => "%{verb}s the %{adjective} git repository",
34
- :checkout => "checks out the %{adjective} git repository"
30
+ git: {
31
+ it: {
32
+ default: '%{verb}s the %{adjective} git repository',
33
+ checkout: 'checks out the %{adjective} git repository'
35
34
  }
36
35
  },
37
- :group => {
38
- :it => { :modify => IT_MODIFY }
36
+ group: {
37
+ it: { modify: IT_MODIFY }
39
38
  },
40
- :http_request => {
41
- :it => {
42
- :default => "performs a %{verb} HTTP request to %{adjective}"
39
+ http_request: {
40
+ it: {
41
+ default: 'performs a %{verb} HTTP request to %{adjective}'
43
42
  }
44
43
  },
45
- :ifconfig => {
46
- :it => {
47
- :default => "%{verb}s the %{adjective} network interface using %{noun}"
44
+ ifconfig: {
45
+ it: {
46
+ default: '%{verb}s the %{adjective} network interface using %{noun}'
48
47
  }
49
48
  },
50
- :registry_key => {
51
- :it => {
52
- :create_if_missing => IT_CREATE_IF_MISSING,
53
- :delete => "%{verb}s the %{adjective} %{noun} value"
49
+ registry_key: {
50
+ it: {
51
+ create_if_missing: IT_CREATE_IF_MISSING,
52
+ delete: '%{verb}s the %{adjective} %{noun} value'
54
53
  },
55
- :expect => { :create_if_missing => EXPECT_CREATE_IF_MISSING }
54
+ expect: { create_if_missing: EXPECT_CREATE_IF_MISSING }
56
55
  },
57
- :remote_directory => {
58
- :it => { :create_if_missing => IT_CREATE_IF_MISSING },
59
- :expect => { :create_if_missing => EXPECT_CREATE_IF_MISSING }
56
+ remote_directory: {
57
+ it: { create_if_missing: IT_CREATE_IF_MISSING },
58
+ expect: { create_if_missing: EXPECT_CREATE_IF_MISSING }
60
59
  },
61
- :remote_file => {
62
- :it => {
63
- :create_if_missing => IT_CREATE_IF_MISSING,
64
- :touch => IT_TOUCH
60
+ remote_file: {
61
+ it: {
62
+ create_if_missing: IT_CREATE_IF_MISSING,
63
+ touch: IT_TOUCH
65
64
  },
66
- :expect => { :create_if_missing => EXPECT_CREATE_IF_MISSING }
65
+ expect: { create_if_missing: EXPECT_CREATE_IF_MISSING }
67
66
  },
68
- :subversion => {
69
- :it => {
70
- :default => "%{verb}s the %{adjective} svn repository",
71
- :checkout => "checks out the %{adjective} svn repository"
67
+ subversion: {
68
+ it: {
69
+ default: '%{verb}s the %{adjective} svn repository',
70
+ checkout: 'checks out the %{adjective} svn repository'
72
71
  }
73
72
  },
74
- :template => {
75
- :it => {
76
- :create_if_missing => IT_CREATE_IF_MISSING,
77
- :touch => IT_TOUCH
73
+ template: {
74
+ it: {
75
+ create_if_missing: IT_CREATE_IF_MISSING,
76
+ touch: IT_TOUCH
78
77
  },
79
- :expect => { :create_if_missing => EXPECT_CREATE_IF_MISSING }
78
+ expect: { create_if_missing: EXPECT_CREATE_IF_MISSING }
80
79
  }
81
80
  }
82
81
  end
@@ -6,76 +6,65 @@ require_relative 'api_map'
6
6
 
7
7
  module ChefSpec
8
8
  class Bootstrap
9
-
10
- def initialize(cookbooks_dir, cookbooks_path, spec_dir, template_file, recursive)
11
- @cookbooks_dir = cookbooks_dir
12
- @cookbooks_path = cookbooks_path
13
- @spec_dir = spec_dir
9
+ def initialize(recipe, template_file, spec_helper_file, output_file)
14
10
  @template_file = template_file
15
- @recursive = recursive
11
+ @recipe = recipe
12
+ @spec_helper_file = spec_helper_file || 'spec/spec_helper.rb'
13
+ @output_file = output_file
16
14
  end
17
15
 
18
16
  def setup
19
- if not Dir.exist?(@cookbooks_dir)
20
- abort "Unable to locate your cookbooks directory (#{@cookbooks_dir})"
17
+ unless File.exist?(@recipe)
18
+ abort "Unable to locate recipe file (#{@recipe})"
21
19
  end
22
20
 
23
- if not @template_file
21
+ unless @template_file
24
22
  @template_file = root.join('templates', 'default.erb')
25
23
  end
26
24
 
27
- if not File.exist?(@template_file)
25
+ unless File.exist?(@template_file)
28
26
  abort "Unable to locate template file (#{@template_file})"
29
27
  end
30
28
 
31
29
  @api_map = ChefSpec::APIMap.new.map
32
30
 
33
31
  begin
34
- require File.expand_path("#{@spec_dir}/spec_helper.rb")
32
+ require File.expand_path(@spec_helper_file)
35
33
  @spec_helper = true
36
34
  rescue LoadError
37
35
  @spec_helper = false
38
36
  ::RSpec.configure do |config|
39
- config.cookbook_path = @cookbooks_path || [@cookbooks_dir, 'cookbooks']
37
+ config.cookbook_path = ['cookbooks']
40
38
  end
41
39
  end
42
40
  end
43
41
 
44
42
  def generate
45
- setup()
46
-
47
- erb = ERB.new(File.read(@template_file))
43
+ setup
48
44
 
49
- Dir.glob("#{@cookbooks_dir}/*/recipes/*").each do |path|
50
- path, recipe_file = File.split(path)
51
- recipe = recipe_file.split('.')[0]
52
- cookbook = path.split(File::SEPARATOR)[1]
45
+ abort 'Output file already exists. Refusing to override.' if @output_file and File.exist?(@output_file)
53
46
 
54
- filename = "#{@spec_dir}/#{cookbook}/#{recipe}_spec.rb"
55
-
56
- puts filename
47
+ erb = ERB.new(File.read(@template_file))
57
48
 
58
- if File.exist?(filename)
59
- puts " spec already exists. Skipping."
60
- else
61
- FileUtils.mkdir_p "#{@spec_dir}/#{cookbook}"
49
+ path, recipe_file = File.split(@recipe)
50
+ recipe = recipe_file.split('.')[0]
51
+ cookbook = path.split(File::SEPARATOR)[1]
52
+ chef_run = get_chef_run(cookbook, recipe)
62
53
 
63
- puts " executing recipe with ChefSpec..."
64
- chef_run = get_chef_run(cookbook, recipe)
54
+ puts 'Chefspec execution failed. Generating generic spec.' unless chef_run
65
55
 
66
- if chef_run
67
- puts " execution suceeded. Creating spec file."
68
- else
69
- puts " execution failed. Creating empty spec file."
70
- end
56
+ resources = get_resources(chef_run, cookbook, recipe)
57
+ test_cases = generate_test_cases(resources)
58
+ spec_helper = @spec_helper
71
59
 
72
- resources = get_resources(chef_run, cookbook, recipe)
73
- test_cases = generate_test_cases(resources)
60
+ spec_output = erb.result(binding)
74
61
 
75
- File.open(filename, "w") do |spec_file|
76
- spec_file.write(erb.result(binding))
77
- end
62
+ if @output_file
63
+ File.open(@output_file, 'w') do |spec_file|
64
+ spec_file.write(spec_output)
78
65
  end
66
+ else
67
+ puts spec_output
79
68
  end
80
69
  end
81
70
 
@@ -84,19 +73,17 @@ module ChefSpec
84
73
  end
85
74
 
86
75
  def get_chef_run(cookbook, recipe)
87
- begin
88
- return ChefSpec::Runner.new.converge("#{cookbook}::#{recipe}")
89
- rescue Exception => e
90
- return nil
91
- end
76
+ return ChefSpec::Runner.new.converge("#{cookbook}::#{recipe}")
77
+ rescue Exception => e
78
+ return nil
92
79
  end
93
80
 
94
81
  def get_resource_name(resource)
95
- return resource.name || resource.identity
82
+ resource.name || resource.identity
96
83
  end
97
84
 
98
85
  def get_all_resources(chef_run)
99
- return chef_run.resource_collection.all_resources
86
+ chef_run.resource_collection.all_resources
100
87
  end
101
88
 
102
89
  def get_resources(chef_run, cookbook, recipe)
@@ -106,7 +93,7 @@ module ChefSpec
106
93
  return resources
107
94
  else
108
95
  return resources.select do |resource|
109
- resource.cookbook_name == cookbook.to_sym and resource.recipe_name == recipe
96
+ resource.cookbook_name == cookbook.to_sym && resource.recipe_name == recipe
110
97
  end
111
98
  end
112
99
  else
@@ -118,7 +105,7 @@ module ChefSpec
118
105
  test_cases = []
119
106
  resources.each do |resource|
120
107
  verbs = resource.action
121
- if not verbs.respond_to?(:each)
108
+ unless verbs.respond_to?(:each)
122
109
  verbs = [verbs]
123
110
  end
124
111
 
@@ -126,25 +113,25 @@ module ChefSpec
126
113
  adjective = resource.name
127
114
 
128
115
  verbs.each do |verb|
129
- if not verb == :nothing
130
- test_cases.push({
131
- :it => get_it_block(noun, verb, adjective),
132
- :expect => get_expect_block(noun, verb),
133
- :name => adjective
134
- })
116
+ unless verb == :nothing
117
+ test_cases.push(
118
+ it: get_it_block(noun, verb, adjective),
119
+ expect: get_expect_block(noun, verb),
120
+ name: adjective
121
+ )
135
122
  end
136
123
  end
137
124
  end
138
- return test_cases
125
+ test_cases
139
126
  end
140
127
 
141
128
  def get_it_block(noun, verb, adjective)
142
- it = "%{verb}s the %{adjective} %{noun}"
143
- noun_readable = noun.to_s.gsub("_", " ")
144
- verb_readable = verb.to_s.gsub("_", " ")
145
- string_variables = {:noun => noun_readable, :verb => verb_readable, :adjective => adjective}
129
+ it = '%{verb}s the %{adjective} %{noun}'
130
+ noun_readable = noun.to_s.gsub('_', ' ')
131
+ verb_readable = verb.to_s.gsub('_', ' ')
132
+ string_variables = { noun: noun_readable, verb: verb_readable, adjective: adjective }
146
133
 
147
- if @api_map[noun] and @api_map[noun][:it]
134
+ if @api_map[noun] && @api_map[noun][:it]
148
135
  if @api_map[noun][:it][verb]
149
136
  it = @api_map[noun][:it][verb]
150
137
  elsif @api_map[noun][:it][:default]
@@ -152,14 +139,14 @@ module ChefSpec
152
139
  end
153
140
  end
154
141
 
155
- return escape_string(it % string_variables)
142
+ escape_string(it % string_variables)
156
143
  end
157
144
 
158
145
  def get_expect_block(noun, verb)
159
- expect = "%{verb}_%{noun}"
160
- string_variables = {:noun => noun, :verb => verb}
146
+ expect = '%{verb}_%{noun}'
147
+ string_variables = { noun: noun, verb: verb }
161
148
 
162
- if @api_map[noun] and @api_map[noun][:expect]
149
+ if @api_map[noun] && @api_map[noun][:expect]
163
150
  if @api_map[noun][:expect][verb]
164
151
  expect = @api_map[noun][:expect][verb]
165
152
  elsif @api_map[noun][:expect][:default]
@@ -167,12 +154,11 @@ module ChefSpec
167
154
  end
168
155
  end
169
156
 
170
- return escape_string(expect % string_variables)
157
+ escape_string(expect % string_variables)
171
158
  end
172
159
 
173
160
  def escape_string(string)
174
- return string.gsub("\\","\\\\").gsub("\"", "\\\"")
161
+ string.gsub('\\', '\\\\').gsub("\"", "\\\"")
175
162
  end
176
-
177
163
  end
178
164
  end
@@ -1,4 +1,5 @@
1
- require 'chefspec'
1
+ require 'chefspec'<% if spec_helper %>
2
+ require_relative '../spec_helper'<% end %>
2
3
 
3
4
  describe '<%= cookbook %>::<%= recipe %>' do
4
5
  let(:chef_run) { ChefSpec::Runner.new.converge(described_recipe) }<% if not test_cases.empty? %><% test_cases.each do |test_case| %>
metadata CHANGED
@@ -1,20 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chefspec-bootstrap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
5
- prerelease:
4
+ version: 0.0.4
6
5
  platform: ruby
7
6
  authors:
8
7
  - Alexander Meng
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2014-06-02 00:00:00.000000000 Z
11
+ date: 2014-12-01 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: chefspec
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
@@ -22,27 +20,10 @@ dependencies:
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ~>
28
25
  - !ruby/object:Gem::Version
29
26
  version: 3.4.0
30
- - !ruby/object:Gem::Dependency
31
- name: trollop
32
- requirement: !ruby/object:Gem::Requirement
33
- none: false
34
- requirements:
35
- - - ~>
36
- - !ruby/object:Gem::Version
37
- version: 2.0.0
38
- type: :runtime
39
- prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ~>
44
- - !ruby/object:Gem::Version
45
- version: 2.0.0
46
27
  description: Automatically generate ChefSpec tests based on your recipes.
47
28
  email: alexbmeng@gmail.com
48
29
  executables:
@@ -51,6 +32,9 @@ extensions: []
51
32
  extra_rdoc_files: []
52
33
  files:
53
34
  - .gitignore
35
+ - .rubocop.yml
36
+ - .rubocop_todo.yml
37
+ - Gemfile
54
38
  - LICENSE
55
39
  - README.md
56
40
  - bin/chefspec-bootstrap
@@ -61,26 +45,25 @@ files:
61
45
  homepage: http://rubygems.org/gems/chefspec-bootstrap
62
46
  licenses:
63
47
  - Apache
48
+ metadata: {}
64
49
  post_install_message:
65
50
  rdoc_options: []
66
51
  require_paths:
67
52
  - lib
68
53
  required_ruby_version: !ruby/object:Gem::Requirement
69
- none: false
70
54
  requirements:
71
55
  - - ! '>='
72
56
  - !ruby/object:Gem::Version
73
57
  version: '1.9'
74
58
  required_rubygems_version: !ruby/object:Gem::Requirement
75
- none: false
76
59
  requirements:
77
60
  - - ! '>='
78
61
  - !ruby/object:Gem::Version
79
62
  version: '0'
80
63
  requirements: []
81
64
  rubyforge_project:
82
- rubygems_version: 1.8.25
65
+ rubygems_version: 2.2.2
83
66
  signing_key:
84
- specification_version: 3
67
+ specification_version: 4
85
68
  summary: Bootstrap your ChefSpec tests.
86
69
  test_files: []