chefspec 0.4.0 → 0.5.0

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.
@@ -51,7 +51,10 @@ module ChefSpec
51
51
  end
52
52
 
53
53
  Chef::Config[:solo] = true
54
+ Chef::Config[:cache_type] = "Memory"
55
+ Chef::Cookbook::FileVendor.on_create { |manifest| Chef::Cookbook::FileSystemFileVendor.new(manifest) }
54
56
  Chef::Config[:cookbook_path] = options[:cookbook_path]
57
+ Chef::Config[:client_key] = nil
55
58
  Chef::Log.verbose = true if Chef::Log.respond_to?(:verbose)
56
59
  Chef::Log.level(options[:log_level])
57
60
  @client = Chef::Client.new
@@ -99,6 +102,14 @@ module ChefSpec
99
102
  find_resource('directory', path)
100
103
  end
101
104
 
105
+ # Find any cookbook_file declared with the given path
106
+ #
107
+ # @param [String] path The cookbook_file path
108
+ # @return [Chef::Resource::Directory] The matching cookbook_file, or Nil
109
+ def cookbook_file(path)
110
+ find_resource('cookbook_file', path)
111
+ end
112
+
102
113
  # Find any file declared with the given path
103
114
  #
104
115
  # @param [String] path The file path
@@ -3,7 +3,7 @@ require 'chefspec/matchers/shared'
3
3
  module ChefSpec
4
4
  module Matchers
5
5
 
6
- define_resource_matchers([:create, :delete], [:file, :directory], :path)
6
+ define_resource_matchers([:create, :delete], [:file, :directory, :cookbook_file], :path)
7
7
 
8
8
  RSpec::Matchers.define :be_owned_by do |user, group|
9
9
  match do |file|
@@ -6,7 +6,7 @@ module ChefSpec
6
6
  match do |chef_run|
7
7
  chef_run.resources.any? do |resource|
8
8
  if resource.name == path
9
- if resource.action.include?(:create) || resource.action.include?(:create_if_missing)
9
+ if (Array(resource.action).map { |action| action.to_sym } & [:create, :create_if_missing]).any?
10
10
  case resource_type(resource)
11
11
  when 'template'
12
12
  @actual_content = render(resource, chef_run.node)
@@ -14,6 +14,11 @@ module ChefSpec
14
14
  when 'file'
15
15
  @actual_content = resource.content
16
16
  @actual_content.to_s.include? content
17
+ when 'cookbook_file'
18
+ cookbook_name = resource.cookbook || resource.cookbook_name
19
+ cookbook = chef_run.node.cookbook_collection[cookbook_name]
20
+ @actual_content = File.read(cookbook.preferred_filename_on_disk_location(chef_run.node, :files, resource.source, resource.path))
21
+ @actual_content.to_s.include? content
17
22
  end
18
23
  end
19
24
  end
@@ -3,7 +3,7 @@ require 'chefspec/matchers/shared'
3
3
  module ChefSpec
4
4
  module Matchers
5
5
 
6
- define_resource_matchers([:install, :remove, :upgrade, :purge], [:package], :package_name)
6
+ define_resource_matchers([:install, :remove, :upgrade, :purge], [:package, :gem_package], :package_name)
7
7
 
8
8
  RSpec::Matchers.define :install_package_at_version do |package_name, version|
9
9
  match do |chef_run|
@@ -12,5 +12,12 @@ module ChefSpec
12
12
  end
13
13
  end
14
14
  end
15
+ RSpec::Matchers.define :install_gem_package_at_version do |package_name, version|
16
+ match do |chef_run|
17
+ chef_run.resources.any? do |resource|
18
+ resource_type(resource) == 'gem_package' and resource.package_name == package_name and resource.action.to_s.include? 'install' and resource.version == version
19
+ end
20
+ end
21
+ end
15
22
  end
16
- end
23
+ end
@@ -3,14 +3,14 @@ class Hash
3
3
 
4
4
  # Monkey-patch to stdlib Hash to give us Mash style lookup
5
5
  # @param [Symbol] method_id The method name
6
- def method_missing(method_id)
6
+ def method_missing(method_id, *)
7
7
  key = method_id.id2name
8
8
  if has_key?(key)
9
9
  self[key]
10
10
  elsif has_key?(key.to_sym)
11
11
  self[key.to_sym]
12
12
  else
13
- super.method_missing(method_id)
13
+ super
14
14
  end
15
15
  end
16
16
  end
@@ -1,4 +1,4 @@
1
1
  module ChefSpec
2
2
  # The gem version
3
- VERSION = '0.4.0'
3
+ VERSION = '0.5.0'
4
4
  end
metadata CHANGED
@@ -1,58 +1,84 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: chefspec
3
- version: !ruby/object:Gem::Version
4
- version: 0.4.0
3
+ version: !ruby/object:Gem::Version
4
+ hash: 11
5
5
  prerelease:
6
+ segments:
7
+ - 0
8
+ - 5
9
+ - 0
10
+ version: 0.5.0
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - Andrew Crump
9
14
  autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
- date: 2011-11-14 00:00:00.000000000Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: chef
16
- requirement: &2152367380 !ruby/object:Gem::Requirement
17
+
18
+ date: 2012-02-20 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ version_requirements: &id001 !ruby/object:Gem::Requirement
17
22
  none: false
18
- requirements:
19
- - - ! '>='
20
- - !ruby/object:Gem::Version
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ hash: 35
27
+ segments:
28
+ - 0
29
+ - 9
30
+ - 12
21
31
  version: 0.9.12
22
32
  - - ~>
23
- - !ruby/object:Gem::Version
24
- version: '0.10'
33
+ - !ruby/object:Gem::Version
34
+ hash: 31
35
+ segments:
36
+ - 0
37
+ - 10
38
+ version: "0.10"
39
+ requirement: *id001
25
40
  type: :runtime
26
41
  prerelease: false
27
- version_requirements: *2152367380
28
- - !ruby/object:Gem::Dependency
29
- name: erubis
30
- requirement: &2152365220 !ruby/object:Gem::Requirement
42
+ name: chef
43
+ - !ruby/object:Gem::Dependency
44
+ version_requirements: &id002 !ruby/object:Gem::Requirement
31
45
  none: false
32
- requirements:
33
- - - ! '>='
34
- - !ruby/object:Gem::Version
35
- version: '0'
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ hash: 3
50
+ segments:
51
+ - 0
52
+ version: "0"
53
+ requirement: *id002
36
54
  type: :runtime
37
55
  prerelease: false
38
- version_requirements: *2152365220
39
- - !ruby/object:Gem::Dependency
40
- name: rspec
41
- requirement: &2152364200 !ruby/object:Gem::Requirement
56
+ name: erubis
57
+ - !ruby/object:Gem::Dependency
58
+ version_requirements: &id003 !ruby/object:Gem::Requirement
42
59
  none: false
43
- requirements:
44
- - - ! '>='
45
- - !ruby/object:Gem::Version
46
- version: 2.6.0
60
+ requirements:
61
+ - - ~>
62
+ - !ruby/object:Gem::Version
63
+ hash: 47
64
+ segments:
65
+ - 2
66
+ - 8
67
+ - 0
68
+ version: 2.8.0
69
+ requirement: *id003
47
70
  type: :runtime
48
71
  prerelease: false
49
- version_requirements: *2152364200
72
+ name: rspec
50
73
  description: Write RSpec examples for Opscode Chef recipes
51
74
  email:
52
75
  executables: []
76
+
53
77
  extensions: []
78
+
54
79
  extra_rdoc_files: []
55
- files:
80
+
81
+ files:
56
82
  - lib/chef/knife/cookbook_create_specs.rb
57
83
  - lib/chefspec/chef_runner.rb
58
84
  - lib/chefspec/matchers/execute.rb
@@ -67,34 +93,38 @@ files:
67
93
  - lib/chefspec/version.rb
68
94
  - lib/chefspec.rb
69
95
  homepage: http://acrmp.github.com/chefspec
70
- licenses:
96
+ licenses:
71
97
  - MIT
72
98
  post_install_message:
73
99
  rdoc_options: []
74
- require_paths:
100
+
101
+ require_paths:
75
102
  - lib
76
- required_ruby_version: !ruby/object:Gem::Requirement
103
+ required_ruby_version: !ruby/object:Gem::Requirement
77
104
  none: false
78
- requirements:
79
- - - ! '>='
80
- - !ruby/object:Gem::Version
81
- version: '0'
82
- segments:
105
+ requirements:
106
+ - - ">="
107
+ - !ruby/object:Gem::Version
108
+ hash: 3
109
+ segments:
83
110
  - 0
84
- hash: 1029718533477551194
85
- required_rubygems_version: !ruby/object:Gem::Requirement
111
+ version: "0"
112
+ required_rubygems_version: !ruby/object:Gem::Requirement
86
113
  none: false
87
- requirements:
88
- - - ! '>='
89
- - !ruby/object:Gem::Version
90
- version: '0'
91
- segments:
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ hash: 3
118
+ segments:
92
119
  - 0
93
- hash: 1029718533477551194
120
+ version: "0"
94
121
  requirements: []
122
+
95
123
  rubyforge_project:
96
124
  rubygems_version: 1.8.10
97
125
  signing_key:
98
126
  specification_version: 3
99
- summary: chefspec-0.4.0
127
+ summary: chefspec-0.5.0
100
128
  test_files: []
129
+
130
+ has_rdoc: