chefspec-bootstrap 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml 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: []