cucumber-chef 2.0.4 → 2.0.5
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.
- data/.travis.yml +0 -3
- data/TODO.md +3 -3
- data/bin/cc-knife +2 -2
- data/bin/cc-push +38 -0
- data/bin/cc-server +49 -0
- data/bin/cucumber-chef +23 -51
- data/cucumber-chef.gemspec +4 -4
- data/lib/cucumber/chef.rb +1 -11
- data/lib/cucumber/chef/bootstrap.rb +7 -7
- data/lib/cucumber/chef/helpers.rb +2 -8
- data/lib/cucumber/chef/helpers/chef_server.rb +1 -0
- data/lib/cucumber/chef/helpers/container.rb +11 -8
- data/lib/cucumber/chef/helpers/server.rb +10 -10
- data/lib/cucumber/chef/helpers/test_lab.rb +1 -1
- data/lib/cucumber/chef/provisioner.rb +11 -11
- data/lib/cucumber/chef/steps/minitest_steps.rb +2 -2
- data/lib/cucumber/chef/steps/provision_steps.rb +5 -5
- data/lib/cucumber/chef/steps/ssh_steps.rb +21 -79
- data/lib/cucumber/chef/templates/bootstrap/ubuntu-precise-test-lab.erb +8 -8
- data/lib/cucumber/chef/templates/cucumber-chef/knife-rb.erb +4 -4
- data/lib/cucumber/chef/templates/cucumber/env.rb +60 -17
- data/lib/cucumber/chef/templates/cucumber/example_feature.erb +1 -1
- data/lib/cucumber/chef/test_lab.rb +4 -2
- data/lib/cucumber/chef/utility.rb +12 -0
- data/lib/cucumber/chef/version.rb +1 -1
- data/spec/spec_helper.rb +1 -1
- metadata +39 -42
- data/bin/push-cucumber-chef +0 -38
- data/lib/cucumber/chef/command.rb +0 -78
- data/lib/cucumber/chef/logger.rb +0 -90
- data/lib/cucumber/chef/ssh.rb +0 -190
- data/lib/cucumber/chef/tcp_socket.rb +0 -83
- data/lib/cucumber/chef/template.rb +0 -57
- data/lib/cucumber/chef/test_runner.rb +0 -103
data/lib/cucumber/chef/logger.rb
DELETED
@@ -1,90 +0,0 @@
|
|
1
|
-
################################################################################
|
2
|
-
#
|
3
|
-
# Author: Stephen Nelson-Smith <stephen@atalanta-systems.com>
|
4
|
-
# Author: Zachary Patten <zachary@jovelabs.com>
|
5
|
-
# Copyright: Copyright (c) 2011-2012 Atalanta Systems Ltd
|
6
|
-
# License: Apache License, Version 2.0
|
7
|
-
#
|
8
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
9
|
-
# you may not use this file except in compliance with the License.
|
10
|
-
# You may obtain a copy of the License at
|
11
|
-
#
|
12
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
13
|
-
#
|
14
|
-
# Unless required by applicable law or agreed to in writing, software
|
15
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
16
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
17
|
-
# See the License for the specific language governing permissions and
|
18
|
-
# limitations under the License.
|
19
|
-
#
|
20
|
-
################################################################################
|
21
|
-
|
22
|
-
|
23
|
-
module Cucumber
|
24
|
-
module Chef
|
25
|
-
|
26
|
-
class LoggerError < Error; end
|
27
|
-
|
28
|
-
class Logger < ::Logger
|
29
|
-
|
30
|
-
SEVERITIES = Severity.constants.inject([]) {|arr,c| arr[Severity.const_get(c)] = c; arr}
|
31
|
-
|
32
|
-
################################################################################
|
33
|
-
|
34
|
-
def initialize(file=nil)
|
35
|
-
if file.nil?
|
36
|
-
config_path = File.join(Cucumber::Chef.locate_parent(".chef"), ".cucumber-chef")
|
37
|
-
FileUtils.mkdir_p(config_path)
|
38
|
-
file = File.join(config_path, "cucumber-chef.log")
|
39
|
-
end
|
40
|
-
|
41
|
-
#super(file, 7, (1024 * 1024))
|
42
|
-
super(file)
|
43
|
-
set_log_level
|
44
|
-
end
|
45
|
-
|
46
|
-
################################################################################
|
47
|
-
|
48
|
-
def parse_caller(at)
|
49
|
-
if /^(.+?):(\d+)(?::in `(.*)')?/ =~ at
|
50
|
-
file = Regexp.last_match[1]
|
51
|
-
line = Regexp.last_match[2]
|
52
|
-
method = Regexp.last_match[3]
|
53
|
-
"#{File.basename(file)}:#{line}:#{method} | "
|
54
|
-
else
|
55
|
-
""
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
################################################################################
|
60
|
-
|
61
|
-
def add(severity, message = nil, progname = nil, &block)
|
62
|
-
return if (@level > severity)
|
63
|
-
|
64
|
-
called_by = parse_caller(caller[1])
|
65
|
-
|
66
|
-
msg = (block && block.call)
|
67
|
-
return if (msg.nil? || msg.strip.empty?)
|
68
|
-
message = [message, progname, msg].delete_if{|i| i == nil}.join(": ")
|
69
|
-
message = "%19s.%06d | %5s | %5s | %s%s\n" % [Time.now.utc.strftime("%Y-%m-%d %H:%M:%S"), Time.now.utc.usec, Process.pid.to_s, SEVERITIES[severity], called_by, message]
|
70
|
-
|
71
|
-
@logdev.write(message)
|
72
|
-
|
73
|
-
true
|
74
|
-
end
|
75
|
-
|
76
|
-
################################################################################
|
77
|
-
|
78
|
-
def set_log_level(level="INFO")
|
79
|
-
log_level = (ENV['LOG_LEVEL'] || level)
|
80
|
-
self.level = Cucumber::Chef::Logger.const_get(log_level.to_s.upcase)
|
81
|
-
end
|
82
|
-
|
83
|
-
################################################################################
|
84
|
-
|
85
|
-
end
|
86
|
-
|
87
|
-
end
|
88
|
-
end
|
89
|
-
|
90
|
-
################################################################################
|
data/lib/cucumber/chef/ssh.rb
DELETED
@@ -1,190 +0,0 @@
|
|
1
|
-
################################################################################
|
2
|
-
#
|
3
|
-
# Author: Stephen Nelson-Smith <stephen@atalanta-systems.com>
|
4
|
-
# Author: Zachary Patten <zachary@jovelabs.com>
|
5
|
-
# Copyright: Copyright (c) 2011-2012 Atalanta Systems Ltd
|
6
|
-
# License: Apache License, Version 2.0
|
7
|
-
#
|
8
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
9
|
-
# you may not use this file except in compliance with the License.
|
10
|
-
# You may obtain a copy of the License at
|
11
|
-
#
|
12
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
13
|
-
#
|
14
|
-
# Unless required by applicable law or agreed to in writing, software
|
15
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
16
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
17
|
-
# See the License for the specific language governing permissions and
|
18
|
-
# limitations under the License.
|
19
|
-
#
|
20
|
-
################################################################################
|
21
|
-
|
22
|
-
module Cucumber
|
23
|
-
module Chef
|
24
|
-
|
25
|
-
class SSHError < Error; end
|
26
|
-
|
27
|
-
class SSH
|
28
|
-
attr_accessor :stdout, :stderr, :stdin, :config
|
29
|
-
|
30
|
-
################################################################################
|
31
|
-
|
32
|
-
def initialize(stdout=STDOUT, stderr=STDERR, stdin=STDIN)
|
33
|
-
@stdout, @stderr, @stdin = stdout, stderr, stdin
|
34
|
-
@stdout.sync = true if @stdout.respond_to?(:sync=)
|
35
|
-
|
36
|
-
@config = Hash.new(nil)
|
37
|
-
end
|
38
|
-
|
39
|
-
################################################################################
|
40
|
-
|
41
|
-
def console
|
42
|
-
$logger.debug { "config(#{@config.inspect})" }
|
43
|
-
|
44
|
-
command = [ "ssh" ]
|
45
|
-
command << [ "-q" ]
|
46
|
-
command << [ "-o", "UserKnownHostsFile=/dev/null" ]
|
47
|
-
command << [ "-o", "StrictHostKeyChecking=no" ]
|
48
|
-
command << [ "-o", "KeepAlive=yes" ]
|
49
|
-
command << [ "-o", "ServerAliveInterval=60" ]
|
50
|
-
command << [ "-i", @config[:identity_file] ] if @config[:identity_file]
|
51
|
-
command << [ "-o", "ProxyCommand=\"#{proxy_command}\"" ] if @config[:proxy]
|
52
|
-
command << "#{@config[:ssh_user]}@#{@config[:host]}"
|
53
|
-
command = command.flatten.compact.join(" ")
|
54
|
-
$logger.info { "command(#{command})" }
|
55
|
-
Kernel.exec(command)
|
56
|
-
end
|
57
|
-
|
58
|
-
################################################################################
|
59
|
-
|
60
|
-
def exec(command, options={})
|
61
|
-
@ssh ||= Net::SSH.start(@config[:host], @config[:ssh_user], ssh_options)
|
62
|
-
|
63
|
-
options = { :silence => false }.merge(options)
|
64
|
-
silence = options[:silence]
|
65
|
-
output = ""
|
66
|
-
|
67
|
-
$logger.debug { "config(#{@config.inspect})" }
|
68
|
-
$logger.debug { "options(#{options.inspect})" }
|
69
|
-
$logger.info { "command(#{command})" }
|
70
|
-
channel = @ssh.open_channel do |chan|
|
71
|
-
$logger.debug { "channel opened" }
|
72
|
-
chan.exec(command) do |ch, success|
|
73
|
-
raise SSHError, "Could not execute '#{command}'." unless success
|
74
|
-
|
75
|
-
ch.on_data do |c, data|
|
76
|
-
output += data
|
77
|
-
$logger.debug { data.chomp.strip }
|
78
|
-
@stdout.print(data) if !silence
|
79
|
-
end
|
80
|
-
|
81
|
-
ch.on_extended_data do |c, type, data|
|
82
|
-
output += data
|
83
|
-
$logger.debug { data.chomp.strip }
|
84
|
-
@stderr.print(data) if !silence
|
85
|
-
end
|
86
|
-
|
87
|
-
end
|
88
|
-
end
|
89
|
-
channel.wait
|
90
|
-
$logger.debug { "channel closed" }
|
91
|
-
|
92
|
-
output
|
93
|
-
end
|
94
|
-
|
95
|
-
################################################################################
|
96
|
-
|
97
|
-
def upload(local, remote)
|
98
|
-
@sftp ||= Net::SFTP.start(@config[:host], @config[:ssh_user], ssh_options)
|
99
|
-
|
100
|
-
$logger.debug { "config(#{@config.inspect})" }
|
101
|
-
$logger.info { "parameters(#{local},#{remote})" }
|
102
|
-
@sftp.upload!(local.to_s, remote.to_s) do |event, uploader, *args|
|
103
|
-
case event
|
104
|
-
when :open
|
105
|
-
$logger.info { "upload(#{args[0].local} -> #{args[0].remote})" }
|
106
|
-
when :close
|
107
|
-
$logger.debug { "close(#{args[0].remote})" }
|
108
|
-
when :mkdir
|
109
|
-
$logger.debug { "mkdir(#{args[0]})" }
|
110
|
-
when :put
|
111
|
-
$logger.debug { "put(#{args[0].remote}, size #{args[2].size} bytes, offset #{args[1]})" }
|
112
|
-
when :finish
|
113
|
-
$logger.info { "finish" }
|
114
|
-
end
|
115
|
-
end
|
116
|
-
end
|
117
|
-
|
118
|
-
################################################################################
|
119
|
-
|
120
|
-
def download(remote, local)
|
121
|
-
@sftp ||= Net::SFTP.start(@config[:host], @config[:ssh_user], ssh_options)
|
122
|
-
|
123
|
-
$logger.debug { "config(#{@config.inspect})" }
|
124
|
-
$logger.info { "parameters(#{remote},#{local})" }
|
125
|
-
@sftp.download!(remote.to_s, local.to_s) do |event, downloader, *args|
|
126
|
-
case event
|
127
|
-
when :open
|
128
|
-
$logger.info { "download(#{args[0].remote} -> #{args[0].local})" }
|
129
|
-
when :close
|
130
|
-
$logger.debug { "close(#{args[0].local})" }
|
131
|
-
when :mkdir
|
132
|
-
$logger.debug { "mkdir(#{args[0]})" }
|
133
|
-
when :get
|
134
|
-
$logger.debug { "get(#{args[0].remote}, size #{args[2].size} bytes, offset #{args[1]})" }
|
135
|
-
when :finish
|
136
|
-
$logger.info { "finish" }
|
137
|
-
end
|
138
|
-
end
|
139
|
-
end
|
140
|
-
|
141
|
-
|
142
|
-
################################################################################
|
143
|
-
private
|
144
|
-
################################################################################
|
145
|
-
|
146
|
-
def proxy_command
|
147
|
-
$logger.debug { "config(#{@config.inspect})" }
|
148
|
-
|
149
|
-
if !@config[:identity_file]
|
150
|
-
message = "You must specify an identity file in order to SSH proxy."
|
151
|
-
$logger.fatal { message }
|
152
|
-
raise SSHError, message
|
153
|
-
end
|
154
|
-
|
155
|
-
command = ["ssh"]
|
156
|
-
command << [ "-q" ]
|
157
|
-
command << [ "-o", "UserKnownHostsFile=/dev/null" ]
|
158
|
-
command << [ "-o", "StrictHostKeyChecking=no" ]
|
159
|
-
command << [ "-o", "KeepAlive=yes" ]
|
160
|
-
command << [ "-o", "ServerAliveInterval=60" ]
|
161
|
-
command << [ "-i", @config[:proxy_identity_file] ] if @config[:proxy_identity_file]
|
162
|
-
command << "#{@config[:proxy_ssh_user]}@#{@config[:proxy_host]}"
|
163
|
-
command << "nc %h %p"
|
164
|
-
command = command.flatten.compact.join(" ")
|
165
|
-
$logger.debug { "command(#{command})" }
|
166
|
-
command
|
167
|
-
end
|
168
|
-
|
169
|
-
################################################################################
|
170
|
-
|
171
|
-
def ssh_options
|
172
|
-
$logger.debug { "config(#{@config.inspect})" }
|
173
|
-
options = {}
|
174
|
-
options.merge!(:password => @config[:ssh_password]) if @config[:ssh_password]
|
175
|
-
options.merge!(:keys => @config[:identity_file]) if @config[:identity_file]
|
176
|
-
options.merge!(:timeout => @config[:timeout]) if @config[:timeout]
|
177
|
-
options.merge!(:user_known_hosts_file => '/dev/null') if !@config[:host_key_verify]
|
178
|
-
options.merge!(:proxy => Net::SSH::Proxy::Command.new(proxy_command)) if @config[:proxy]
|
179
|
-
$logger.debug { "options(#{options.inspect})" }
|
180
|
-
options
|
181
|
-
end
|
182
|
-
|
183
|
-
################################################################################
|
184
|
-
|
185
|
-
end
|
186
|
-
|
187
|
-
end
|
188
|
-
end
|
189
|
-
|
190
|
-
################################################################################
|
@@ -1,83 +0,0 @@
|
|
1
|
-
################################################################################
|
2
|
-
#
|
3
|
-
# Author: Stephen Nelson-Smith <stephen@atalanta-systems.com>
|
4
|
-
# Author: Zachary Patten <zachary@jovelabs.com>
|
5
|
-
# Copyright: Copyright (c) 2011-2012 Atalanta Systems Ltd
|
6
|
-
# License: Apache License, Version 2.0
|
7
|
-
#
|
8
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
9
|
-
# you may not use this file except in compliance with the License.
|
10
|
-
# You may obtain a copy of the License at
|
11
|
-
#
|
12
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
13
|
-
#
|
14
|
-
# Unless required by applicable law or agreed to in writing, software
|
15
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
16
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
17
|
-
# See the License for the specific language governing permissions and
|
18
|
-
# limitations under the License.
|
19
|
-
#
|
20
|
-
################################################################################
|
21
|
-
|
22
|
-
module Cucumber
|
23
|
-
module Chef
|
24
|
-
|
25
|
-
class TCPSocketError < Error; end
|
26
|
-
|
27
|
-
class TCPSocket
|
28
|
-
|
29
|
-
################################################################################
|
30
|
-
|
31
|
-
def initialize(host, port, data=nil)
|
32
|
-
@host, @port, @data = host, port, data
|
33
|
-
|
34
|
-
if !host
|
35
|
-
message = "You must supply a host!"
|
36
|
-
$logger.fatal { message } if $logger
|
37
|
-
raise TCPSocketError, message
|
38
|
-
end
|
39
|
-
|
40
|
-
if !port
|
41
|
-
message = "You must supply a port!"
|
42
|
-
$logger.fatal { message } if $logger
|
43
|
-
raise TCPSocketError, message
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
################################################################################
|
48
|
-
|
49
|
-
def ready?
|
50
|
-
socket = ::TCPSocket.new(@host, @port)
|
51
|
-
|
52
|
-
if @data.nil?
|
53
|
-
$logger.debug { "read(#{@host}:#{@port})" } if $logger
|
54
|
-
((::IO.select([socket], nil, nil, 5) && socket.gets) ? true : false)
|
55
|
-
else
|
56
|
-
$logger.debug { "write(#{@host}:#{@port}, '#{@data}')" } if $logger
|
57
|
-
((::IO.select(nil, [socket], nil, 5) && socket.write(@data)) ? true : false)
|
58
|
-
end
|
59
|
-
|
60
|
-
rescue Errno::ETIMEDOUT, Errno::ECONNREFUSED, Errno::EHOSTUNREACH => e
|
61
|
-
$logger.debug { "#{@host}:#{@port} - #{e.message}" } if $logger
|
62
|
-
false
|
63
|
-
ensure
|
64
|
-
(socket && socket.close)
|
65
|
-
end
|
66
|
-
|
67
|
-
################################################################################
|
68
|
-
|
69
|
-
def wait
|
70
|
-
begin
|
71
|
-
success = ready?
|
72
|
-
sleep(1)
|
73
|
-
end until success
|
74
|
-
end
|
75
|
-
|
76
|
-
################################################################################
|
77
|
-
|
78
|
-
end
|
79
|
-
|
80
|
-
end
|
81
|
-
end
|
82
|
-
|
83
|
-
################################################################################
|
@@ -1,57 +0,0 @@
|
|
1
|
-
################################################################################
|
2
|
-
#
|
3
|
-
# Author: Stephen Nelson-Smith <stephen@atalanta-systems.com>
|
4
|
-
# Author: Zachary Patten <zachary@jovelabs.com>
|
5
|
-
# Copyright: Copyright (c) 2011-2012 Atalanta Systems Ltd
|
6
|
-
# License: Apache License, Version 2.0
|
7
|
-
#
|
8
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
9
|
-
# you may not use this file except in compliance with the License.
|
10
|
-
# You may obtain a copy of the License at
|
11
|
-
#
|
12
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
13
|
-
#
|
14
|
-
# Unless required by applicable law or agreed to in writing, software
|
15
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
16
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
17
|
-
# See the License for the specific language governing permissions and
|
18
|
-
# limitations under the License.
|
19
|
-
#
|
20
|
-
################################################################################
|
21
|
-
|
22
|
-
module Cucumber
|
23
|
-
module Chef
|
24
|
-
|
25
|
-
class TemplateError < Error; end
|
26
|
-
|
27
|
-
class Template
|
28
|
-
|
29
|
-
################################################################################
|
30
|
-
|
31
|
-
def self.render(template, context=nil)
|
32
|
-
self.render_template(self.load_template(template), context)
|
33
|
-
end
|
34
|
-
|
35
|
-
|
36
|
-
################################################################################
|
37
|
-
private
|
38
|
-
################################################################################
|
39
|
-
|
40
|
-
def self.load_template(template)
|
41
|
-
IO.read(template).chomp
|
42
|
-
end
|
43
|
-
|
44
|
-
################################################################################
|
45
|
-
|
46
|
-
def self.render_template(template, context)
|
47
|
-
Erubis::Eruby.new(template).evaluate(:config => context)
|
48
|
-
end
|
49
|
-
|
50
|
-
################################################################################
|
51
|
-
|
52
|
-
end
|
53
|
-
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
################################################################################
|
@@ -1,103 +0,0 @@
|
|
1
|
-
################################################################################
|
2
|
-
#
|
3
|
-
# Author: Stephen Nelson-Smith <stephen@atalanta-systems.com>
|
4
|
-
# Author: Zachary Patten <zachary@jovelabs.com>
|
5
|
-
# Copyright: Copyright (c) 2011-2012 Atalanta Systems Ltd
|
6
|
-
# License: Apache License, Version 2.0
|
7
|
-
#
|
8
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
9
|
-
# you may not use this file except in compliance with the License.
|
10
|
-
# You may obtain a copy of the License at
|
11
|
-
#
|
12
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
13
|
-
#
|
14
|
-
# Unless required by applicable law or agreed to in writing, software
|
15
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
16
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
17
|
-
# See the License for the specific language governing permissions and
|
18
|
-
# limitations under the License.
|
19
|
-
#
|
20
|
-
################################################################################
|
21
|
-
|
22
|
-
module Cucumber
|
23
|
-
module Chef
|
24
|
-
|
25
|
-
class TestRunnerError < Error; end
|
26
|
-
|
27
|
-
class TestRunner
|
28
|
-
|
29
|
-
################################################################################
|
30
|
-
|
31
|
-
def initialize(features_path, stdout=STDOUT, stderr=STDERR, stdin=STDIN)
|
32
|
-
@features_path = features_path
|
33
|
-
@stdout, @stderr, @stdin = stdout, stderr, stdin
|
34
|
-
@stdout.sync = true if @stdout.respond_to?(:sync=)
|
35
|
-
|
36
|
-
@test_lab = Cucumber::Chef::TestLab.new(@stdout, @stderr, @stdin)
|
37
|
-
|
38
|
-
@ssh = Cucumber::Chef::SSH.new(@stdout, @stderr, @stdin)
|
39
|
-
@ssh.config[:host] = @test_lab.labs_running.first.public_ip_address
|
40
|
-
@ssh.config[:ssh_user] = "ubuntu"
|
41
|
-
@ssh.config[:identity_file] = Cucumber::Chef.locate(:file, ".cucumber-chef", "id_rsa-#{@ssh.config[:ssh_user]}")
|
42
|
-
|
43
|
-
@stdout.puts("Cucumber-Chef Test Runner Initalized!")
|
44
|
-
end
|
45
|
-
|
46
|
-
################################################################################
|
47
|
-
|
48
|
-
def run(destroy, *args)
|
49
|
-
reset_project
|
50
|
-
upload_project
|
51
|
-
|
52
|
-
@stdout.puts("Executing Cucumber-Chef Test Runner")
|
53
|
-
remote_path = File.join("/", "home", "ubuntu", "features")
|
54
|
-
cucumber_options = args.flatten.compact.join(" ")
|
55
|
-
env = ( destroy ? "DESTROY=1" : nil )
|
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
|
-
|
58
|
-
@ssh.exec(command)
|
59
|
-
end
|
60
|
-
|
61
|
-
|
62
|
-
################################################################################
|
63
|
-
private
|
64
|
-
################################################################################
|
65
|
-
|
66
|
-
def reset_project
|
67
|
-
@stdout.print("Cleaning up any previous test runs...")
|
68
|
-
Cucumber::Chef.spinner do
|
69
|
-
remote_path = File.join("/", "home", "ubuntu", "features")
|
70
|
-
|
71
|
-
command = "rm -rf #{remote_path}"
|
72
|
-
@ssh.exec(command, :silence => true)
|
73
|
-
end
|
74
|
-
@stdout.print("done.\n")
|
75
|
-
end
|
76
|
-
|
77
|
-
################################################################################
|
78
|
-
|
79
|
-
def upload_project
|
80
|
-
@stdout.print("Uploading files required for this test run...")
|
81
|
-
Cucumber::Chef.spinner do
|
82
|
-
local_path = File.join(@features_path)
|
83
|
-
remote_path = File.join("/", "home", "ubuntu", "features")
|
84
|
-
@ssh.upload(local_path, remote_path)
|
85
|
-
|
86
|
-
root_path = Cucumber::Chef.locate_parent(".chef")
|
87
|
-
cucumber_config_file = File.expand_path(File.join(root_path, "cucumber.yml"))
|
88
|
-
if File.exists?(cucumber_config_file)
|
89
|
-
remote_file = File.join(remote_path, File.basename(cucumber_config_file))
|
90
|
-
@ssh.upload(cucumber_config_file, remote_file)
|
91
|
-
end
|
92
|
-
end
|
93
|
-
@stdout.print("done.\n")
|
94
|
-
end
|
95
|
-
|
96
|
-
################################################################################
|
97
|
-
|
98
|
-
end
|
99
|
-
|
100
|
-
end
|
101
|
-
end
|
102
|
-
|
103
|
-
################################################################################
|