aruba 0.2.4 → 0.2.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.
@@ -1,3 +1,18 @@
1
+ == 0.2.5
2
+
3
+ === New Features
4
+ * Added 'a file named "whatever" should (not) exist' (Robert Speicher)
5
+ * Added 'a directory named "whatever" should (not) exist' (Robert Speicher)
6
+ * Added /^the stderr should contain exactly:"$/ (Aslak Hellesøy)
7
+ * Added /^the stdout should contain exactly:"$/ (Aslak Hellesøy)
8
+ * Added /it should pass with exactly:/ (Aslak Hellesøy)
9
+ * @announce, @announce-dir and @announce-cmd for interactive processes (Mike Sassak)
10
+ * Add step defs for detecting output, stdout and stderr by process name (Mike Sassak)
11
+
12
+ === Bug fixes
13
+ * Stop all processes before verifying filesystem changes to ensure async operations are complete (#17 Mike Sassak)
14
+ * Outputting large amounts of data causes run steps to hang (#18 Mike Sassak)
15
+
1
16
  == 0.2.4
2
17
 
3
18
  === New Features
@@ -97,4 +112,4 @@
97
112
  * Better Regexp escaping (David Chelimsky)
98
113
 
99
114
  == 0.1.0
100
- * First release (David Chelimsky and Aslak Hellesøy)
115
+ * First release (David Chelimsky and Aslak Hellesøy)
@@ -2,14 +2,14 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = 'aruba'
5
- s.version = "0.2.4"
5
+ s.version = "0.2.5"
6
6
  s.authors = ["Aslak Hellesøy", "David Chelimsky"]
7
7
  s.description = 'CLI Steps for Cucumber, hand-crafted for you in Aruba'
8
8
  s.summary = "aruba-#{s.version}"
9
9
  s.email = 'cukes@googlegroups.com'
10
10
  s.homepage = 'http://github.com/aslakhellesoy/aruba'
11
11
 
12
- s.add_dependency 'cucumber', '~> 0.9.3'
12
+ s.add_dependency 'cucumber', '~> 0.9.4'
13
13
  s.add_dependency 'background_process' # Can't specify a version - bundler/rubygems chokes on '2.1'
14
14
  s.add_development_dependency 'rspec', '~> 2.0.1'
15
15
 
@@ -0,0 +1,2 @@
1
+ default: --tags ~@wip
2
+ wip: --wip --tags @wip
@@ -19,3 +19,7 @@ Feature: exit statuses
19
19
  Scenario: Unsuccessfully run something
20
20
  When I do aruba I successfully run "ruby -e 'exit 10'"
21
21
  Then aruba should fail with "Exit status was 10"
22
+
23
+ Scenario: Try to run something that doesn't exist
24
+ When I run "does_not_exist"
25
+ Then the exit status should be 1
@@ -67,14 +67,21 @@ Feature: file system commands
67
67
  Scenario: Check for absence of files
68
68
  Then the following files should not exist:
69
69
  | lorem/ipsum/dolor |
70
-
70
+
71
+ Scenario: Check for presence of a single file
72
+ Given an empty file named "lorem/ipsum/dolor"
73
+ Then a file named "lorem/ipsum/dolor" should exist
74
+
75
+ Scenario: Check for absence of a single file
76
+ Then a file named "lorem/ipsum/dolor" should not exist
77
+
71
78
  Scenario: Check for presence of a subset of directories
72
79
  Given a directory named "foo/bar"
73
80
  Given a directory named "foo/bla"
74
81
  Then the following directories should exist:
75
82
  | foo/bar |
76
83
  | foo/bla |
77
-
84
+
78
85
  Scenario: check for absence of directories
79
86
  Given a directory named "foo/bar"
80
87
  Given a directory named "foo/bla"
@@ -84,7 +91,18 @@ Feature: file system commands
84
91
  | foo/bar/ |
85
92
  | foo/bla/ |
86
93
  """
87
-
94
+
95
+ Scenario: Check for presence of a single directory
96
+ Given a directory named "foo/bar"
97
+ Then a directory named "foo/bar" should exist
98
+
99
+ Scenario: Check for absence of a single directory
100
+ Given a directory named "foo/bar"
101
+ Then the following step should fail with Spec::Expectations::ExpectationNotMetError:
102
+ """
103
+ Then a directory named "foo/bar" should not exist
104
+ """
105
+
88
106
  Scenario: Check file contents
89
107
  Given a file named "foo" with:
90
108
  """
@@ -0,0 +1,16 @@
1
+ Feature: Flushing output
2
+
3
+ In order to test processes that output a lot of data
4
+ As a developer using Aruba
5
+ I want to make sure that large amounts of output aren't buffered
6
+
7
+ Scenario: Tons of output
8
+ When I run "ruby -e 'puts :a.to_s * 65536'"
9
+ Then the output should contain "a"
10
+ And the output should be 65536 bytes long
11
+
12
+ Scenario: Tons of interactive output
13
+ When I run "ruby -e 'len = gets.chomp; puts :a.to_s * len.to_i'" interactively
14
+ And I type "65536"
15
+ Then the output should contain "a"
16
+ And the output should be 65536 bytes long
@@ -28,3 +28,11 @@ Feature: Interactive process control
28
28
  """
29
29
  7
30
30
  """
31
+
32
+ Scenario: Stop processes before checking for filesystem changes
33
+ See: http://github.com/aslakhellesoy/aruba/issues#issue/17 for context
34
+
35
+ Given a directory named "rename_me"
36
+ When I run "mv rename_me renamed" interactively
37
+ Then a directory named "renamed" should exist
38
+ And a directory named "rename_me" should not exist
@@ -75,6 +75,15 @@ Feature: Output
75
75
  hello
76
76
  """
77
77
 
78
+ Scenario: Match passing exit status and exact output
79
+ When I run "ruby -e 'puts \"hello\\nworld\"'"
80
+ Then it should pass with exactly:
81
+ """
82
+ hello
83
+ world
84
+
85
+ """
86
+
78
87
  @announce-stdout
79
88
  Scenario: Match failing exit status and partial output
80
89
  When I run "ruby -e 'puts \"hello\\nworld\";exit 99'"
@@ -83,6 +92,15 @@ Feature: Output
83
92
  hello
84
93
  """
85
94
 
95
+ Scenario: Match failing exit status and exact output
96
+ When I run "ruby -e 'puts \"hello\\nworld\";exit 99'"
97
+ Then it should fail with exactly:
98
+ """
99
+ hello
100
+ world
101
+
102
+ """
103
+
86
104
  @announce-stdout
87
105
  Scenario: Match failing exit status and output with regex
88
106
  When I run "ruby -e 'puts \"hello\\nworld\";exit 99'"
@@ -102,3 +120,52 @@ Feature: Output
102
120
  When I run "ruby -e 'STDERR.puts \"hello\\nworld\";exit 99'"
103
121
  Then the stderr should contain "hello"
104
122
  Then the stdout should not contain "hello"
123
+
124
+ Scenario: Detect output from all processes
125
+ When I run "ruby -e 'puts \"hello world!\"'"
126
+ And I run "ruby -e 'puts gets.chomp.reverse'" interactively
127
+ And I type "hello"
128
+ Then the output should contain exactly:
129
+ """
130
+ hello world!
131
+ olleh
132
+
133
+ """
134
+
135
+ Scenario: Detect stdout from all processes
136
+ When I run "ruby -e 'puts \"hello world!\"'"
137
+ And I run "ruby -e 'puts gets.chomp.reverse'" interactively
138
+ And I type "hello"
139
+ Then the stdout should contain "hello world!\nolleh"
140
+ And the stderr should not contain "hello world!\nolleh"
141
+
142
+ Scenario: Detect stderr from all processes
143
+ When I run "ruby -e 'STDERR.puts \"hello world!\"'"
144
+ And I run "ruby -e 'STDERR.puts gets.chomp.reverse'" interactively
145
+ And I type "hello"
146
+ Then the stderr should contain "hello world!\nolleh"
147
+ And the stdout should not contain "hello world!\nolleh"
148
+
149
+ Scenario: Detect output from named source
150
+ When I run "ruby -e 'puts :simple'"
151
+ And I run "ruby -e 'puts gets.chomp'" interactively
152
+ And I type "interactive"
153
+ Then the output from "ruby -e 'puts :simple'" should contain "simple"
154
+ And the output from "ruby -e 'puts gets.chomp'" should not contain "simple"
155
+
156
+ Scenario: Detect stdout from named source
157
+ When I run "ruby -e 'puts :hello'"
158
+ And I run "ruby -e 'puts :goodbye'"
159
+ Then the stdout from "ruby -e 'puts :hello'" should contain "hello"
160
+ And the stderr from "ruby -e 'puts :hello'" should not contain "hello"
161
+ And the stdout from "ruby -e 'puts :goodbye'" should not contain "hello"
162
+
163
+ Scenario: Detect stderr from named source
164
+ When I run "ruby -e 'STDERR.puts :hello'"
165
+ And I run "ruby -e 'puts :goodbye'"
166
+ Then the stderr from "ruby -e 'STDERR.puts :hello'" should contain "hello"
167
+ And the stdout from "ruby -e 'STDERR.puts :hello'" should not contain "hello"
168
+ And the stderr from "ruby -e 'puts :goodbye'" should not contain "hello"
169
+
170
+ @wip
171
+ Scenario: Detect output from named source with custom name
@@ -6,10 +6,19 @@ When /^I do aruba (.*)$/ do |aruba_step|
6
6
  end
7
7
  end
8
8
 
9
+ # Useful for debugging timing problems
10
+ When /^sleep (\d+)$/ do |time|
11
+ sleep time.to_i
12
+ end
13
+
9
14
  Then /^aruba should fail with "([^"]*)"$/ do |error_message|
10
- @aruba_exception.message.should =~ regexp(error_message)
15
+ @aruba_exception.message.should include(unescape(error_message))
11
16
  end
12
17
 
13
18
  Then /^the following step should fail with Spec::Expectations::ExpectationNotMetError:$/ do |multiline_step|
14
19
  proc {steps multiline_step}.should raise_error(RSpec::Expectations::ExpectationNotMetError)
15
20
  end
21
+
22
+ Then /^the output should be (\d+) bytes long$/ do |length|
23
+ all_output.chomp.length.should == length.to_i
24
+ end
@@ -1,6 +1,7 @@
1
1
  require 'fileutils'
2
2
  require 'rbconfig'
3
- require 'background_process'
3
+
4
+ require 'aruba/process'
4
5
 
5
6
  module Aruba
6
7
  module Api
@@ -49,7 +50,7 @@ module Aruba
49
50
  end
50
51
 
51
52
  def check_file_presence(paths, expect_presence)
52
- in_current_dir do
53
+ prep_for_fs_check do
53
54
  paths.each do |path|
54
55
  if expect_presence
55
56
  File.should be_file(path)
@@ -62,7 +63,7 @@ module Aruba
62
63
 
63
64
  def check_file_content(file, partial_content, expect_match)
64
65
  regexp = regexp(partial_content)
65
- in_current_dir do
66
+ prep_for_fs_check do
66
67
  content = IO.read(file)
67
68
  if expect_match
68
69
  content.should =~ regexp
@@ -73,13 +74,11 @@ module Aruba
73
74
  end
74
75
 
75
76
  def check_exact_file_content(file, exact_content)
76
- in_current_dir do
77
- IO.read(file).should == exact_content
78
- end
77
+ prep_for_fs_check { IO.read(file).should == exact_content }
79
78
  end
80
79
 
81
80
  def check_directory_presence(paths, expect_presence)
82
- in_current_dir do
81
+ prep_for_fs_check do
83
82
  paths.each do |path|
84
83
  if expect_presence
85
84
  File.should be_directory(path)
@@ -90,6 +89,11 @@ module Aruba
90
89
  end
91
90
  end
92
91
 
92
+ def prep_for_fs_check(&block)
93
+ stop_processes!
94
+ in_current_dir{ block.call }
95
+ end
96
+
93
97
  def _mkdir(dir_name)
94
98
  FileUtils.mkdir_p(dir_name) unless File.directory?(dir_name)
95
99
  end
@@ -102,16 +106,39 @@ module Aruba
102
106
  Regexp === string_or_regexp ? string_or_regexp : Regexp.compile(Regexp.escape(string_or_regexp))
103
107
  end
104
108
 
105
- def combined_output
106
- if @interactive
107
- interactive_output
108
- else
109
- @last_stdout + @last_stderr
110
- end
109
+ def output_from(cmd)
110
+ cmd = detect_ruby(cmd)
111
+ processes[cmd].output
112
+ end
113
+
114
+ def stdout_from(cmd)
115
+ cmd = detect_ruby(cmd)
116
+ processes[cmd].stdout
117
+ end
118
+
119
+ def stderr_from(cmd)
120
+ cmd = detect_ruby(cmd)
121
+ processes[cmd].stderr
122
+ end
123
+
124
+ def all_stdout
125
+ processes.values.inject("") { |out, ps| out << ps.stdout }
126
+ end
127
+
128
+ def all_stderr
129
+ processes.values.inject("") { |out, ps| out << ps.stderr }
130
+ end
131
+
132
+ def all_output
133
+ all_stdout << all_stderr
134
+ end
135
+
136
+ def assert_exact_output(exact_output)
137
+ all_output.should == exact_output
111
138
  end
112
139
 
113
140
  def assert_partial_output(partial_output)
114
- combined_output.should =~ regexp(partial_output)
141
+ all_output.should include(unescape(partial_output))
115
142
  end
116
143
 
117
144
  def assert_passing_with(partial_output)
@@ -124,6 +151,19 @@ module Aruba
124
151
 
125
152
  def assert_exit_status_and_partial_output(expect_to_pass, partial_output)
126
153
  assert_partial_output(partial_output)
154
+ assert_exiting_with(expect_to_pass)
155
+ end
156
+
157
+ def assert_exit_status_and_output(expect_to_pass, output, expect_exact_output)
158
+ if expect_exact_output
159
+ assert_exact_output(output)
160
+ else
161
+ assert_partial_output(output)
162
+ end
163
+ assert_exiting_with(expect_to_pass)
164
+ end
165
+
166
+ def assert_exiting_with(expect_to_pass)
127
167
  if expect_to_pass
128
168
  @last_exit_status.should == 0
129
169
  else
@@ -139,42 +179,44 @@ module Aruba
139
179
  end
140
180
  end
141
181
 
142
- def run(cmd, fail_on_error=true)
182
+ def processes
183
+ @processes ||= {}
184
+ end
185
+
186
+ def stop_processes!
187
+ processes.each do |_, process|
188
+ process.stop
189
+ end
190
+ end
191
+
192
+ def run(cmd)
143
193
  cmd = detect_ruby(cmd)
144
194
 
145
195
  in_current_dir do
146
196
  announce_or_puts("$ cd #{Dir.pwd}") if @announce_dir
147
197
  announce_or_puts("$ #{cmd}") if @announce_cmd
148
- ps = BackgroundProcess.run(cmd)
149
- @last_exit_status = ps.exitstatus # waits for the process to finish
150
- @last_stdout = ps.stdout.read
151
- announce_or_puts(@last_stdout) if @announce_stdout
152
- @last_stderr = ps.stderr.read
153
- announce_or_puts(@last_stderr) if @announce_stderr
154
- end
198
+
199
+ process = processes[cmd] = Process.new(cmd)
200
+ process.run!
155
201
 
156
- if(@last_exit_status != 0 && fail_on_error)
157
- fail("Exit status was #{@last_exit_status}. Output:\n#{combined_output}")
202
+ block_given? ? yield(process) : process
158
203
  end
159
-
160
- @last_stderr
161
204
  end
162
205
 
163
- def run_interactive(cmd)
164
- cmd = detect_ruby(cmd)
206
+ def run_simple(cmd, fail_on_error=true)
207
+ @last_exit_status = run(cmd) do |process|
208
+ announce_or_puts(process.stdout) if @announce_stdout
209
+ announce_or_puts(process.stderr) if @announce_stderr
210
+ process.stop
211
+ end
165
212
 
166
- in_current_dir do
167
- @interactive = BackgroundProcess.run(cmd)
213
+ if(@last_exit_status != 0 && fail_on_error)
214
+ fail("Exit status was #{@last_exit_status}. Output:\n#{all_output}")
168
215
  end
169
216
  end
170
217
 
171
- def interactive_output
172
- if @interactive
173
- @interactive.wait(1) || @interactive.kill('TERM')
174
- @interactive.stdout.read
175
- else
176
- ""
177
- end
218
+ def run_interactive(cmd)
219
+ @interactive = run(cmd)
178
220
  end
179
221
 
180
222
  def write_interactive(input)
@@ -92,11 +92,11 @@ When /^I cd to "([^"]*)"$/ do |dir|
92
92
  end
93
93
 
94
94
  When /^I run "(.*)"$/ do |cmd|
95
- run(unescape(cmd), false)
95
+ run_simple(unescape(cmd), false)
96
96
  end
97
97
 
98
98
  When /^I successfully run "(.*)"$/ do |cmd|
99
- run(unescape(cmd))
99
+ run_simple(unescape(cmd))
100
100
  end
101
101
 
102
102
  When /^I run "([^"]*)" interactively$/ do |cmd|
@@ -108,27 +108,35 @@ When /^I type "([^"]*)"$/ do |input|
108
108
  end
109
109
 
110
110
  Then /^the output should contain "([^"]*)"$/ do |partial_output|
111
- assert_partial_output(partial_output)
111
+ assert_partial_output(unescape(partial_output))
112
+ end
113
+
114
+ Then /^the output from "([^"]*)" should contain "([^"]*)"$/ do |cmd, partial_output|
115
+ output_from(cmd).should include(unescape(partial_output))
116
+ end
117
+
118
+ Then /^the output from "([^"]*)" should not contain "([^"]*)"$/ do |cmd, partial_output|
119
+ output_from(cmd).should_not include(unescape(partial_output))
112
120
  end
113
121
 
114
122
  Then /^the output should not contain "([^"]*)"$/ do |partial_output|
115
- combined_output.should_not =~ regexp(partial_output)
123
+ all_output.should_not include(unescape(partial_output))
116
124
  end
117
125
 
118
126
  Then /^the output should contain:$/ do |partial_output|
119
- combined_output.should =~ regexp(partial_output)
127
+ all_output.should include(unescape(partial_output))
120
128
  end
121
129
 
122
130
  Then /^the output should not contain:$/ do |partial_output|
123
- combined_output.should_not =~ regexp(partial_output)
131
+ all_output.should_not include(unescape(partial_output))
124
132
  end
125
133
 
126
134
  Then /^the output should contain exactly "([^"]*)"$/ do |exact_output|
127
- combined_output.should == unescape(exact_output)
135
+ all_output.should == unescape(exact_output)
128
136
  end
129
137
 
130
138
  Then /^the output should contain exactly:$/ do |exact_output|
131
- combined_output.should == exact_output
139
+ all_output.should == unescape(exact_output)
132
140
  end
133
141
 
134
142
  # "the output should match" allows regex in the partial_output, if
@@ -136,11 +144,11 @@ end
136
144
  # that way, you don't have to escape regex characters that
137
145
  # appear naturally in the output
138
146
  Then /^the output should match \/([^\/]*)\/$/ do |partial_output|
139
- combined_output.should =~ /#{partial_output}/
147
+ all_output.should =~ /#{partial_output}/
140
148
  end
141
149
 
142
150
  Then /^the output should match:$/ do |partial_output|
143
- combined_output.should =~ /#{partial_output}/m
151
+ all_output.should =~ /#{partial_output}/m
144
152
  end
145
153
 
146
154
  Then /^the exit status should be (\d+)$/ do |exit_status|
@@ -155,6 +163,10 @@ Then /^it should (pass|fail) with:$/ do |pass_fail, partial_output|
155
163
  self.__send__("assert_#{pass_fail}ing_with", partial_output)
156
164
  end
157
165
 
166
+ Then /^it should (pass|fail) with exactly:$/ do |pass_fail, exact_output|
167
+ assert_exit_status_and_output(pass_fail == "pass", exact_output, true)
168
+ end
169
+
158
170
  Then /^it should (pass|fail) with regexp?:$/ do |pass_fail, partial_output|
159
171
  Then "the output should match:", partial_output
160
172
  if pass_fail == 'pass'
@@ -165,19 +177,43 @@ Then /^it should (pass|fail) with regexp?:$/ do |pass_fail, partial_output|
165
177
  end
166
178
 
167
179
  Then /^the stderr should contain "([^"]*)"$/ do |partial_output|
168
- @last_stderr.should =~ regexp(partial_output)
180
+ all_stderr.should include(unescape(partial_output))
181
+ end
182
+
183
+ Then /^the stderr should contain exactly:$/ do |exact_output|
184
+ @last_stderr.should == exact_output
169
185
  end
170
186
 
171
187
  Then /^the stdout should contain "([^"]*)"$/ do |partial_output|
172
- @last_stdout.should =~ regexp(partial_output)
188
+ all_stdout.should include(unescape(partial_output))
189
+ end
190
+
191
+ Then /^the stdout should contain exactly:$/ do |exact_output|
192
+ @stdout.should == exact_output
173
193
  end
174
194
 
175
195
  Then /^the stderr should not contain "([^"]*)"$/ do |partial_output|
176
- @last_stderr.should_not =~ regexp(partial_output)
196
+ all_stderr.should_not include(unescape(partial_output))
177
197
  end
178
198
 
179
199
  Then /^the stdout should not contain "([^"]*)"$/ do |partial_output|
180
- @last_stdout.should_not =~ regexp(partial_output)
200
+ all_stdout.should_not include(unescape(partial_output))
201
+ end
202
+
203
+ Then /^the stdout from "([^"]*)" should contain "([^"]*)"$/ do |cmd, partial_output|
204
+ stdout_from(cmd).should include(unescape(partial_output))
205
+ end
206
+
207
+ Then /^the stdout from "([^"]*)" should not contain "([^"]*)"$/ do |cmd, partial_output|
208
+ stdout_from(cmd).should_not include(unescape(partial_output))
209
+ end
210
+
211
+ Then /^the stderr from "([^"]*)" should contain "([^"]*)"$/ do |cmd, partial_output|
212
+ stderr_from(cmd).should include(unescape(partial_output))
213
+ end
214
+
215
+ Then /^the stderr from "([^"]*)" should not contain "([^"]*)"$/ do |cmd, partial_output|
216
+ stderr_from(cmd).should_not include(unescape(partial_output))
181
217
  end
182
218
 
183
219
  Then /^the file "([^"]*)" should not exist$/ do |file_name|
@@ -192,6 +228,14 @@ Then /^the following files should not exist:$/ do |files|
192
228
  check_file_presence(files.raw.map{|file_row| file_row[0]}, false)
193
229
  end
194
230
 
231
+ Then /^a file named "([^"]*)" should exist$/ do |file|
232
+ check_file_presence([file], true)
233
+ end
234
+
235
+ Then /^a file named "([^"]*)" should not exist$/ do |file|
236
+ check_file_presence([file], false)
237
+ end
238
+
195
239
  Then /^the following directories should exist:$/ do |directories|
196
240
  check_directory_presence(directories.raw.map{|directory_row| directory_row[0]}, true)
197
241
  end
@@ -200,6 +244,14 @@ Then /^the following directories should not exist:$/ do |directories|
200
244
  check_directory_presence(directories.raw.map{|directory_row| directory_row[0]}, false)
201
245
  end
202
246
 
247
+ Then /^a directory named "([^"]*)" should exist$/ do |directory|
248
+ check_directory_presence([directory], true)
249
+ end
250
+
251
+ Then /^a directory named "([^"]*)" should not exist$/ do |directory|
252
+ check_directory_presence([directory], false)
253
+ end
254
+
203
255
  Then /^the file "([^"]*)" should contain "([^"]*)"$/ do |file, partial_content|
204
256
  check_file_content(file, partial_content, true)
205
257
  end
@@ -0,0 +1,45 @@
1
+ require 'background_process'
2
+
3
+ module Aruba
4
+ class Process
5
+ def initialize(cmd)
6
+ @cmd = cmd
7
+ end
8
+
9
+ def run!(&block)
10
+ @process = BackgroundProcess.run(@cmd)
11
+ yield self if block_given?
12
+ end
13
+
14
+ def stdin
15
+ @process.stdin
16
+ end
17
+
18
+ def output
19
+ stdout + stderr
20
+ end
21
+
22
+ def stdout
23
+ if @process
24
+ @stdout ||= @process.stdout.read
25
+ else
26
+ ''
27
+ end
28
+ end
29
+
30
+ def stderr
31
+ if @process
32
+ @stderr ||= @process.stderr.read
33
+ else
34
+ ''
35
+ end
36
+ end
37
+
38
+ def stop
39
+ if @process
40
+ status = @process.wait(1)
41
+ status && status.exitstatus
42
+ end
43
+ end
44
+ end
45
+ end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 2
8
- - 4
9
- version: 0.2.4
8
+ - 5
9
+ version: 0.2.5
10
10
  platform: ruby
11
11
  authors:
12
12
  - "Aslak Helles\xC3\xB8y"
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-11-02 00:00:00 +00:00
18
+ date: 2010-11-13 00:00:00 +00:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -28,8 +28,8 @@ dependencies:
28
28
  segments:
29
29
  - 0
30
30
  - 9
31
- - 3
32
- version: 0.9.3
31
+ - 4
32
+ version: 0.9.4
33
33
  type: :runtime
34
34
  prerelease: false
35
35
  version_requirements: *id001
@@ -83,8 +83,10 @@ files:
83
83
  - Rakefile
84
84
  - aruba.gemspec
85
85
  - config/.gitignore
86
+ - cucumber.yml
86
87
  - features/exit_statuses.feature
87
88
  - features/file_system_commands.feature
89
+ - features/flushing.feature
88
90
  - features/interactive.feature
89
91
  - features/output.feature
90
92
  - features/step_definitions/aruba_dev_steps.rb
@@ -92,6 +94,7 @@ files:
92
94
  - lib/aruba.rb
93
95
  - lib/aruba/api.rb
94
96
  - lib/aruba/cucumber.rb
97
+ - lib/aruba/process.rb
95
98
  has_rdoc: true
96
99
  homepage: http://github.com/aslakhellesoy/aruba
97
100
  licenses: []
@@ -106,7 +109,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
106
109
  requirements:
107
110
  - - ">="
108
111
  - !ruby/object:Gem::Version
109
- hash: -3353510939538542612
112
+ hash: 1671730072629991587
110
113
  segments:
111
114
  - 0
112
115
  version: "0"
@@ -115,7 +118,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
115
118
  requirements:
116
119
  - - ">="
117
120
  - !ruby/object:Gem::Version
118
- hash: -3353510939538542612
121
+ hash: 1671730072629991587
119
122
  segments:
120
123
  - 0
121
124
  version: "0"
@@ -125,10 +128,11 @@ rubyforge_project:
125
128
  rubygems_version: 1.3.7
126
129
  signing_key:
127
130
  specification_version: 3
128
- summary: aruba-0.2.4
131
+ summary: aruba-0.2.5
129
132
  test_files:
130
133
  - features/exit_statuses.feature
131
134
  - features/file_system_commands.feature
135
+ - features/flushing.feature
132
136
  - features/interactive.feature
133
137
  - features/output.feature
134
138
  - features/step_definitions/aruba_dev_steps.rb