chef-zero 0.9 → 0.9.1

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.
@@ -0,0 +1,69 @@
1
+ require 'thin'
2
+ require 'tempfile'
3
+ require 'chef_zero/server'
4
+ require 'chef/config'
5
+
6
+ module ChefZero
7
+ module RSpec
8
+ def when_the_chef_server(description, &block)
9
+ context "When the Chef server #{description}" do
10
+ before :each do
11
+ raise "Attempt to create multiple servers in one test" if @server
12
+ # Set up configuration so that clients will point to the server
13
+ Thin::Logging.silent = true
14
+ @chef_zero_server = ChefZero::Server.new(:port => 8889)
15
+ Chef::Config.chef_server_url = @chef_zero_server.url
16
+ Chef::Config.node_name = 'admin'
17
+ @chef_zero_client_key = Tempfile.new(['chef_zero_client_key', '.pem'])
18
+ @chef_zero_client_key.write(ChefZero::PRIVATE_KEY)
19
+ @chef_zero_client_key.close
20
+ Chef::Config.client_key = @chef_zero_client_key
21
+
22
+ # Start the server
23
+ @chef_zero_server.start_background
24
+ end
25
+
26
+ def self.client(name, client)
27
+ before(:each) { @chef_zero_server.load_data({ 'clients' => { name => client }}) }
28
+ end
29
+
30
+ def self.cookbook(name, version, cookbook)
31
+ before(:each) { @chef_zero_server.load_data({ 'cookbooks' => { "#{name}-#{version}" => cookbook }}) }
32
+ end
33
+
34
+ def self.data_bag(name, data_bag)
35
+ before(:each) { @chef_zero_server.load_data({ 'data' => { name => data_bag }}) }
36
+ end
37
+
38
+ def self.environment(name, environment)
39
+ before(:each) { @chef_zero_server.load_data({ 'environments' => { name => environment }}) }
40
+ end
41
+
42
+ def self.node(name, node)
43
+ before(:each) { @chef_zero_server.load_data({ 'nodes' => { name => node }}) }
44
+ end
45
+
46
+ def self.role(name, role)
47
+ before(:each) { @chef_zero_server.load_data({ 'roles' => { name => role }}) }
48
+ end
49
+
50
+ def self.user(name, user)
51
+ before(:each) { @chef_zero_server.load_data({ 'users' => { name => user }}) }
52
+ end
53
+
54
+ after :each do
55
+ if @chef_zero_server
56
+ @chef_zero_server.stop
57
+ @chef_zero_server = nil
58
+ end
59
+ if @chef_zero_client_key
60
+ @chef_zero_client_key.unlink
61
+ @chef_zero_client_key = nil
62
+ end
63
+ end
64
+
65
+ instance_eval(&block)
66
+ end
67
+ end
68
+ end
69
+ end
@@ -117,14 +117,13 @@ module ChefZero
117
117
  end
118
118
 
119
119
  def stop(timeout = 5)
120
- Timeout::timeout(timeout) do
120
+ begin
121
121
  server.stop
122
- until !server.running? || !server_error
123
- sleep(0.01)
124
- end
125
- end
126
- if @thread
127
- @thread.kill
122
+ @thread.join(timeout)
123
+ @thread = nil
124
+ rescue
125
+ Chef::Log.error("Server did not stop within #{timeout}s. Killing.")
126
+ @thread.kill if @thread
128
127
  @thread = nil
129
128
  end
130
129
  end
@@ -109,7 +109,6 @@ module ChefZero
109
109
 
110
110
  def parse_error(token, str)
111
111
  error = "Error on token '#{token}' at #{@index} of '#{@query_string}': #{str}"
112
- puts error
113
112
  raise error
114
113
  end
115
114
 
@@ -1,3 +1,3 @@
1
1
  module ChefZero
2
- VERSION = '0.9'
2
+ VERSION = '0.9.1'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chef-zero
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.9'
4
+ version: 0.9.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -91,6 +91,7 @@ files:
91
91
  - lib/chef_zero/rest_error_response.rb
92
92
  - lib/chef_zero/rest_request.rb
93
93
  - lib/chef_zero/router.rb
94
+ - lib/chef_zero/rspec.rb
94
95
  - lib/chef_zero/server.rb
95
96
  - lib/chef_zero/solr/query/binary_operator.rb
96
97
  - lib/chef_zero/solr/query/phrase.rb