chef-zero 0.9 → 0.9.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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