cucumber-chef 2.0.2.pre → 2.0.3.pre

Sign up to get free protection for your applications and to get access to all the features.
@@ -35,6 +35,19 @@ module Cucumber::Chef::Helpers::ChefServer
35
35
  log("chef-server", "destroyed client '#{name}'")
36
36
  end
37
37
 
38
+ ################################################################################
39
+
40
+ def load_cookbook(cookbook, cookbook_path)
41
+ if !File.exists?(cookbook_path)
42
+ raise "Cookbook path does not exist!"
43
+ end
44
+ cookbook_repo = ::Chef::CookbookLoader.new(cookbook_path)
45
+ cookbook_repo.each do |name, cbook|
46
+ ::Chef::CookbookUploader.new(cbook, cookbook_path, :force => true).upload_cookbook
47
+ log("chef-server", "uploaded cookbook '#{cookbook}' from path '#{cookbook_path}'")
48
+ end
49
+ end
50
+
38
51
  ################################################################################
39
52
 
40
53
  def load_role(role, role_path)
@@ -30,3 +30,9 @@ And /^the following roles have been updated:$/ do |table|
30
30
  load_role(entry['role'], entry['role_path'])
31
31
  end
32
32
  end
33
+
34
+ And /^the following cookbooks have been uploaded:$/ do |table|
35
+ table.hashes.each do |entry|
36
+ load_cookbook(entry['cookbook'], entry['cookbook_path'])
37
+ end
38
+ end
@@ -31,7 +31,7 @@ And /^"([^\"]*)" has "([^\"]*)" architecture$/ do |name, arch|
31
31
  @servers[name].merge!( :arch => arch )
32
32
  end
33
33
 
34
- And /^"([^\"]*)" should( not)? be persistant$/ do |name, boolean|
34
+ And /^"([^\"]*)" should( not)? be persist[ae]nt$/ do |name, boolean|
35
35
  @servers[name].merge!( :persist => (!boolean ? true : false) )
36
36
  end
37
37
 
@@ -93,3 +93,46 @@ Then /^I should( not)? see the "([^\"]*)" of "([^\"]*)" in the output$/ do |bool
93
93
  @output.should_not =~ /#{$servers[name][key.downcase.to_sym]}/i
94
94
  end
95
95
  end
96
+
97
+ Then /^path "([^\"]*)" should exist$/ do |dir|
98
+ parent = File.dirname dir
99
+ child = File.basename dir
100
+ command = "ls %s" % [
101
+ parent
102
+ ]
103
+ @output = @connection.exec!(command)
104
+ @output.should =~ /#{child}/
105
+ end
106
+
107
+ Then /^path "([^\"]*)" should be owned by "([^\"]*)"$/ do |path, owner|
108
+ command = "stat -c %%U:%%G %s" % [
109
+ path
110
+ ]
111
+ @output = @connection.exec!(command)
112
+ @output.should =~ /#{owner}/
113
+ end
114
+
115
+ Then /^file "([^\"]*)" should( not)? contain "([^\"]*)"$/ do |path, boolean, content|
116
+ command = "cat %s" % [
117
+ path
118
+ ]
119
+ @output = @connection.exec!(command)
120
+ if (!boolean)
121
+ @output.should =~ /#{content}/
122
+ else
123
+ @output.should_not =~ /#{content}/
124
+ end
125
+ end
126
+
127
+ Then /^package "([^\"]*)" should be installed$/ do |package|
128
+ command = ""
129
+ if (dpkg = @connection.exec!("which dpkg 2> /dev/null")).length > 0
130
+ command = "#{dpkg.chomp} --get-selections"
131
+ elsif (yum = @connection.exec!("which yum 2> /dev/null")).length > 0
132
+ command = "#{yum.chomp} -q list installed"
133
+ # could easily add more cases here, if I knew what they were :)
134
+ end
135
+
136
+ @output = @connection.exec!(command)
137
+ @output.should =~ /#{package}/
138
+ end
@@ -51,9 +51,9 @@ module Cucumber
51
51
 
52
52
  @stdout.puts("Executing Cucumber-Chef Test Runner")
53
53
  remote_path = File.join("/", "home", "ubuntu", "features")
54
- cucumber_options = args.flatten.compact.uniq.join(" ")
54
+ cucumber_options = args.flatten.compact.join(" ")
55
55
  env = ( destroy ? "DESTROY=1" : nil )
56
- command = [ "cd #{remote_path}", "&&", "sudo", env, "cucumber", cucumber_options, "--exclude support/roles", "--exclude support/data_bags", "--exclude support/keys", "." ].flatten.compact.join(" ")
56
+ command = [ "cd #{remote_path}", "&&", "sudo", env, "cucumber", cucumber_options, "--exclude support/cookbooks", "--exclude support/roles", "--exclude support/data_bags", "--exclude support/keys", "." ].flatten.compact.join(" ")
57
57
 
58
58
  @ssh.exec(command)
59
59
  end
@@ -24,7 +24,7 @@ module Cucumber
24
24
 
25
25
  ################################################################################
26
26
 
27
- VERSION = "2.0.2.pre" unless const_defined?(:VERSION)
27
+ VERSION = "2.0.3.pre" unless const_defined?(:VERSION)
28
28
 
29
29
  ################################################################################
30
30
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cucumber-chef
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.2.pre
4
+ version: 2.0.3.pre
5
5
  prerelease: 6
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-08-27 00:00:00.000000000 Z
13
+ date: 2012-08-30 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: chef