aruba 0.9.0.pre → 0.9.0.pre2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (158) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +8 -3
  3. data/History.md +61 -19
  4. data/README.md +10 -6
  5. data/TODO.md +6 -1
  6. data/cucumber.yml +10 -6
  7. data/features/.nav +72 -0
  8. data/features/announce.feature +203 -0
  9. data/features/api/command/extract_text.feature +10 -0
  10. data/features/api/command/run.feature +6 -6
  11. data/features/api/command/stop_all_commands.feature +53 -0
  12. data/features/api/command/terminate_all_commands.feature +53 -0
  13. data/features/api/command/unescape_text.feature +12 -0
  14. data/features/api/command/which.feature +3 -3
  15. data/features/api/core/expand_path.feature +4 -4
  16. data/features/api/environment/append_environment_variable.feature +18 -8
  17. data/features/api/environment/prepend_environment_variable.feature +18 -8
  18. data/features/api/environment/set_environment_variable.feature +33 -16
  19. data/features/api/filesystem/cd.feature +23 -13
  20. data/features/api/filesystem/create_directory.feature +2 -2
  21. data/features/api/filesystem/disk_usage.feature +7 -6
  22. data/features/api/filesystem/does_exist.feature +2 -2
  23. data/features/api/filesystem/is_absolute.feature +2 -2
  24. data/features/api/filesystem/is_directory.feature +2 -2
  25. data/features/api/filesystem/is_file.feature +2 -2
  26. data/features/api/filesystem/is_relative.feature +2 -2
  27. data/features/api/filesystem/move.feature +119 -0
  28. data/features/cli/console.feature +3 -3
  29. data/features/commands/debug_command.feature +93 -0
  30. data/features/commands/environment_variables.feature +64 -0
  31. data/features/commands/flushing.feature +74 -0
  32. data/features/commands/interactive.feature +90 -0
  33. data/features/commands/output/all_output.feature +445 -0
  34. data/features/commands/output/stdout.feature +66 -0
  35. data/features/configuration/exit_timeout.feature +5 -5
  36. data/features/configuration/fixtures_directories.feature +3 -3
  37. data/features/configuration/fixtures_path_prefix.feature +1 -1
  38. data/features/configuration/home_directory.feature +4 -4
  39. data/features/configuration/io_timeout.feature +2 -2
  40. data/features/configuration/keep_ansi.feature +2 -2
  41. data/features/configuration/log_level.feature +3 -3
  42. data/features/configuration/physical_block_size.feature +3 -3
  43. data/features/configuration/usage.feature +159 -0
  44. data/features/core/cleanup_aruba_directory.feature +52 -0
  45. data/features/development/build.feature +16 -0
  46. data/features/development/test.feature +24 -0
  47. data/features/file_system_commands.feature +12 -12
  48. data/features/getting_started/supported_programming_languages.feature +89 -0
  49. data/features/hooks/after/command.feature +1 -1
  50. data/features/hooks/before/command.feature +2 -2
  51. data/features/matchers/collection/include_an_object.feature +72 -0
  52. data/features/matchers/timeouts.feature +2 -2
  53. data/features/output.feature +60 -181
  54. data/features/step_definitions/aruba_dev_steps.rb +17 -10
  55. data/features/step_definitions/hooks.rb +11 -0
  56. data/features/steps/commands/exit_statuses.feature +3 -3
  57. data/features/steps/commands/run.feature +0 -15
  58. data/features/steps/filesystem/copy.feature +45 -0
  59. data/features/steps/filesystem/create_directory.feature +47 -0
  60. data/features/steps/filesystem/create_file.feature +53 -0
  61. data/features/steps/filesystem/file_content.feature +1 -1
  62. data/features/steps/filesystem/move.feature +45 -0
  63. data/features/steps/filesystem/overwrite_file.feature +72 -0
  64. data/features/steps/filesystem/use_fixture.feature +77 -0
  65. data/features/usage/install.feature +8 -0
  66. data/{features/fixtures → fixtures}/cli-app/.gitignore +0 -0
  67. data/{features/fixtures → fixtures}/cli-app/.rspec +0 -0
  68. data/{features/fixtures → fixtures}/cli-app/README.md +0 -0
  69. data/{features/fixtures → fixtures}/cli-app/Rakefile +0 -0
  70. data/{features/fixtures → fixtures}/cli-app/bin/cli +0 -0
  71. data/{features/fixtures → fixtures}/cli-app/cli-app.gemspec +0 -0
  72. data/{features/fixtures → fixtures}/cli-app/features/support/env.rb +0 -0
  73. data/{features/fixtures → fixtures}/cli-app/lib/cli/app.rb +0 -0
  74. data/fixtures/cli-app/lib/cli/app/suppress_simple_cov_output.rb +15 -0
  75. data/{features/fixtures → fixtures}/cli-app/lib/cli/app/version.rb +0 -0
  76. data/{features/fixtures/empty-app → fixtures/cli-app}/script/console +3 -3
  77. data/{features/fixtures → fixtures}/cli-app/spec/spec_helper.rb +0 -0
  78. data/{features/fixtures → fixtures}/cli-app/spec/support/aruba.rb +0 -0
  79. data/{features/fixtures → fixtures}/copy/file.txt +0 -0
  80. data/{features/fixtures → fixtures}/empty-app/.gitignore +0 -0
  81. data/{features/fixtures → fixtures}/empty-app/.rspec +0 -0
  82. data/{features/fixtures → fixtures}/empty-app/README.md +0 -0
  83. data/{features/fixtures → fixtures}/empty-app/Rakefile +0 -0
  84. data/{features/fixtures → fixtures}/empty-app/bin/cli +0 -0
  85. data/{features/fixtures → fixtures}/empty-app/cli-app.gemspec +0 -0
  86. data/{features/fixtures → fixtures}/empty-app/lib/cli/app.rb +0 -0
  87. data/{features/fixtures → fixtures}/empty-app/lib/cli/app/version.rb +0 -0
  88. data/{features/fixtures/cli-app → fixtures/empty-app}/script/console +3 -3
  89. data/{features/fixtures → fixtures}/empty-app/spec/spec_helper.rb +0 -0
  90. data/{features/fixtures → fixtures}/fixtures-app/test.txt +0 -0
  91. data/fixtures/getting-started-app/.gitignore +4 -0
  92. data/fixtures/getting-started-app/Gemfile +4 -0
  93. data/fixtures/getting-started-app/README.md +3 -0
  94. data/fixtures/getting-started-app/features/support/env.rb +1 -0
  95. data/{features/fixtures → fixtures}/spawn_process/stderr.sh +0 -0
  96. data/lib/aruba/announcer.rb +6 -2
  97. data/lib/aruba/api.rb +0 -16
  98. data/lib/aruba/api/command.rb +64 -266
  99. data/lib/aruba/api/core.rb +24 -26
  100. data/lib/aruba/api/deprecated.rb +370 -12
  101. data/lib/aruba/api/filesystem.rb +64 -15
  102. data/lib/aruba/aruba_path.rb +4 -0
  103. data/lib/aruba/config.rb +1 -1
  104. data/lib/aruba/cucumber.rb +5 -449
  105. data/lib/aruba/cucumber/command.rb +378 -0
  106. data/lib/aruba/cucumber/core.rb +29 -0
  107. data/lib/aruba/cucumber/environment.rb +30 -0
  108. data/lib/aruba/cucumber/file.rb +210 -0
  109. data/lib/aruba/cucumber/hooks.rb +11 -14
  110. data/lib/aruba/cucumber/rvm.rb +3 -0
  111. data/lib/aruba/matchers/base/base_matcher.rb +94 -0
  112. data/lib/aruba/matchers/collection.rb +1 -0
  113. data/lib/aruba/matchers/collection/all_objects.rb +2 -0
  114. data/lib/aruba/matchers/collection/include_an_object.rb +120 -0
  115. data/lib/aruba/matchers/command/be_successfully_executed.rb +3 -3
  116. data/lib/aruba/matchers/command/have_exit_status.rb +2 -11
  117. data/lib/aruba/matchers/command/have_finished_in_time.rb +5 -5
  118. data/lib/aruba/matchers/command/have_output.rb +46 -0
  119. data/lib/aruba/matchers/command/have_output_on_stderr.rb +42 -0
  120. data/lib/aruba/matchers/command/have_output_on_stdout.rb +42 -0
  121. data/lib/aruba/matchers/command/have_output_size.rb +28 -0
  122. data/lib/aruba/matchers/directory/be_an_existing_directory.rb +1 -1
  123. data/lib/aruba/matchers/file/be_an_existing_file.rb +1 -1
  124. data/lib/aruba/matchers/file/have_file_content.rb +1 -1
  125. data/lib/aruba/matchers/file/have_file_size.rb +2 -2
  126. data/lib/aruba/matchers/file/have_same_file_content.rb +1 -1
  127. data/lib/aruba/matchers/path/have_permissions.rb +1 -1
  128. data/lib/aruba/platforms/aruba_file_creator.rb +2 -3
  129. data/lib/aruba/platforms/aruba_fixed_size_file_creator.rb +2 -3
  130. data/lib/aruba/platforms/determine_disk_usage.rb +23 -0
  131. data/lib/aruba/platforms/determine_file_size.rb +13 -0
  132. data/lib/aruba/platforms/disk_usage_calculator.rb +11 -0
  133. data/lib/aruba/platforms/local_environment.rb +15 -0
  134. data/lib/aruba/platforms/unix_environment_variables.rb +1 -1
  135. data/lib/aruba/platforms/unix_platform.rb +35 -14
  136. data/lib/aruba/process_monitor.rb +53 -7
  137. data/lib/aruba/processes/basic_process.rb +25 -5
  138. data/lib/aruba/processes/debug_process.rb +27 -25
  139. data/lib/aruba/processes/in_process.rb +7 -22
  140. data/lib/aruba/processes/spawn_process.rb +74 -31
  141. data/lib/aruba/rspec.rb +1 -6
  142. data/lib/aruba/version.rb +1 -1
  143. data/script/console +0 -1
  144. data/spec/aruba/api/environment/restore_env_spec.rb +65 -0
  145. data/spec/aruba/api/environment/set_env_spec.rb +42 -0
  146. data/spec/aruba/api/filesystem/file_size_spec.rb +28 -0
  147. data/spec/aruba/api_spec.rb +10 -7
  148. data/spec/aruba/matchers/command/have_output_size_spec.rb +25 -0
  149. data/spec/aruba/matchers/command_spec.rb +135 -4
  150. data/spec/aruba/spawn_process_spec.rb +1 -1
  151. metadata +107 -65
  152. data/.nav +0 -12
  153. data/features/debug.feature +0 -15
  154. data/features/fixtures/cli-app/spec/cli/app_spec.rb +0 -7
  155. data/features/flushing.feature +0 -26
  156. data/features/interactive.feature +0 -66
  157. data/features/no_clobber.feature +0 -25
  158. data/lib/aruba/disk_usage_calculator.rb +0 -7
@@ -0,0 +1,378 @@
1
+ When(/^I run "(.*)"$/)do |cmd|
2
+ warn(%{\e[35m The /^I run "(.*)"$/ step definition is deprecated. Please use the `backticks` version\e[0m})
3
+
4
+ cmd = unescape_text(cmd)
5
+ cmd = extract_text(cmd) if !aruba.config.keep_ansi || aruba.config.remove_ansi_escape_sequences
6
+
7
+ run_simple(cmd, false)
8
+ end
9
+
10
+ When(/^I run `([^`]*)`$/)do |cmd|
11
+ cmd = unescape_text(cmd)
12
+ cmd = extract_text(cmd) if !aruba.config.keep_ansi || aruba.config.remove_ansi_escape_sequences
13
+
14
+ run_simple(cmd, false)
15
+ end
16
+
17
+ When(/^I successfully run "(.*)"$/)do |cmd|
18
+ warn(%{\e[35m The /^I successfully run "(.*)"$/ step definition is deprecated. Please use the `backticks` version\e[0m})
19
+
20
+ cmd = unescape_text(cmd)
21
+ cmd = extract_text(cmd) if !aruba.config.keep_ansi || aruba.config.remove_ansi_escape_sequences
22
+
23
+ run_simple(cmd)
24
+ end
25
+
26
+ ## I successfully run `echo -n "Hello"`
27
+ ## I successfully run `sleep 29` for up to 30 seconds
28
+ When(/^I successfully run `(.*?)`(?: for up to (\d+) seconds)?$/)do |cmd, secs|
29
+ cmd = unescape_text(cmd)
30
+ cmd = extract_text(cmd) if !aruba.config.keep_ansi || aruba.config.remove_ansi_escape_sequences
31
+
32
+ run_simple(cmd, true, secs && secs.to_i)
33
+ end
34
+
35
+ When(/^I run "([^"]*)" interactively$/) do |cmd|
36
+ Aruba.platform.deprecated(%{\e[35m The /^I run "([^"]*)" interactively$/ step definition is deprecated. Please use the `backticks` version\e[0m})
37
+
38
+ step %(I run `#{cmd}` interactively)
39
+ end
40
+
41
+ When(/^I run `([^`]*)` interactively$/)do |cmd|
42
+ cmd = unescape_text(cmd)
43
+ cmd = extract_text(cmd) if !aruba.config.keep_ansi || aruba.config.remove_ansi_escape_sequences
44
+
45
+ @interactive = run(cmd)
46
+ end
47
+
48
+ When(/^I type "([^"]*)"$/) do |input|
49
+ type(unescape_text(input))
50
+ end
51
+
52
+ When(/^I close the stdin stream$/) do
53
+ close_input
54
+ end
55
+
56
+ When(/^I pipe in (?:a|the) file(?: named)? "([^"]*)"$/) do |file|
57
+ pipe_in_file(file)
58
+
59
+ close_input
60
+ end
61
+
62
+ When(/^I stop the command(?: started last)? if (output|stdout|stderr) contains:$/) do |channel, expected|
63
+ fail %(Invalid output channel "#{channel}" chosen. Please choose one of "output, stdout or stderr") unless %w(output stdout stderr).include? channel
64
+
65
+ begin
66
+ Timeout.timeout(aruba.config.exit_timeout) do
67
+ loop do
68
+ output = if RUBY_VERSION < '1.9.3'
69
+ last_command_started.send channel.to_sym, :wait_for_io => 0
70
+ else
71
+ last_command_started.public_send channel.to_sym, :wait_for_io => 0
72
+ end
73
+
74
+ output = unescape_text(output)
75
+ output = extract_text(output) if !aruba.config.keep_ansi || aruba.config.remove_ansi_escape_sequences
76
+
77
+ expected = unescape_text(expected)
78
+ expected = extract_text(expected) if !aruba.config.keep_ansi || aruba.config.remove_ansi_escape_sequences
79
+
80
+ if output.include? expected
81
+ last_command_started.terminate
82
+
83
+ break
84
+ end
85
+
86
+ sleep 0.1
87
+ end
88
+ end
89
+ rescue ChildProcess::TimeoutError, TimeoutError
90
+ last_command_started.terminate
91
+ ensure
92
+ announcer.announce :stdout, last_command_started.stdout
93
+ announcer.announce :stderr, last_command_started.stderr
94
+ end
95
+ end
96
+
97
+ When(/^I wait for (?:output|stdout) to contain:$/) do |expected|
98
+ Timeout.timeout(exit_timeout) do
99
+ loop do
100
+ begin
101
+ expected = unescape_text(expected)
102
+ expected = extract_text(expected) if !aruba.config.keep_ansi || aruba.config.remove_ansi_escape_sequences
103
+
104
+ expect(last_command_started).to have_output Regexp.new(expected)
105
+ rescue ExpectationError
106
+ sleep 0.1
107
+ retry
108
+ end
109
+
110
+ break
111
+ end
112
+ end
113
+ end
114
+
115
+ When(/^I wait for (?:output|stdout) to contain "([^"]*)"$/) do |expected|
116
+ Timeout.timeout(exit_timeout) do
117
+ loop do
118
+ begin
119
+ expected = unescape_text(expected)
120
+ expected = extract_text(expected) if !aruba.config.keep_ansi || aruba.config.remove_ansi_escape_sequences
121
+
122
+ expect(last_command_started).to have_output Regexp.new(expected)
123
+ rescue ExpectationError
124
+ sleep 0.1
125
+ retry
126
+ end
127
+
128
+ break
129
+ end
130
+ end
131
+ end
132
+
133
+ Then(/^the output should be (\d+) bytes long$/) do |size|
134
+ expect(all_output).to have_output_size size.to_i
135
+ end
136
+
137
+ Then(/^(?:the )?(output|stderr|stdout)(?: from "([^"]*)")? should( not)? contain( exactly)? "([^"]*)"$/) do |channel, cmd, negated, exactly, expected|
138
+ matcher = case channel.to_sym
139
+ when :output
140
+ :have_output
141
+ when :stderr
142
+ :have_output_on_stderr
143
+ when :stdout
144
+ :have_output_on_stdout
145
+ end
146
+
147
+ commands = if cmd
148
+ [process_monitor.get_process(Aruba.platform.detect_ruby(cmd))]
149
+ else
150
+ all_commands
151
+ end
152
+
153
+ expected = unescape_text(expected).chomp
154
+ expected = extract_text(expected) if !aruba.config.keep_ansi || aruba.config.remove_ansi_escape_sequences
155
+
156
+ expected = if exactly
157
+ expected
158
+ else
159
+ Regexp.new(Regexp.escape(expected))
160
+ end
161
+
162
+ if Aruba::VERSION < '1.0'
163
+ combined_output = commands.map do |c|
164
+ c.stop(announcer)
165
+ c.send(channel.to_sym).chomp
166
+ end.join("\n")
167
+
168
+ if negated
169
+ expect(combined_output).not_to match expected
170
+ else
171
+ expect(combined_output).to match expected
172
+ end
173
+ else
174
+ if negated
175
+ expect(commands).not_to include_an_object send(matcher, expected)
176
+ else
177
+ expect(commands).to include_an_object send(matcher, expected)
178
+ end
179
+ end
180
+ end
181
+
182
+ ## the stderr should contain "hello"
183
+ ## the stderr from "echo -n 'Hello'" should contain "hello"
184
+ ## the stderr should contain exactly:
185
+ ## the stderr from "echo -n 'Hello'" should contain exactly:
186
+ Then(/^(?:the )?(output|stderr|stdout)(?: from "([^"]*)")? should( not)? contain( exactly)?:$/) do |channel, cmd, negated, exactly, expected|
187
+ matcher = case channel.to_sym
188
+ when :output
189
+ :have_output
190
+ when :stderr
191
+ :have_output_on_stderr
192
+ when :stdout
193
+ :have_output_on_stdout
194
+ else
195
+ fail ArgumentError, %(Invalid channel "#{channel}" chosen. Only "output", "stderr" or "stdout" are allowed.)
196
+ end
197
+
198
+ commands = if cmd
199
+ [process_monitor.get_process(Aruba.platform.detect_ruby(cmd))]
200
+ else
201
+ all_commands
202
+ end
203
+
204
+ expected = unescape_text(expected).chomp
205
+ expected = extract_text(expected) if !aruba.config.keep_ansi || aruba.config.remove_ansi_escape_sequences
206
+
207
+ expected = if exactly
208
+ expected
209
+ else
210
+ Regexp.new(Regexp.escape(expected))
211
+ end
212
+
213
+ if Aruba::VERSION < '1.0'
214
+ combined_output = commands.map do |c|
215
+ c.stop(announcer)
216
+ c.send(channel.to_sym).chomp
217
+ end.join("\n")
218
+
219
+ if negated
220
+ expect(combined_output).not_to match expected
221
+ else
222
+ expect(combined_output).to match expected
223
+ end
224
+ else
225
+ if negated
226
+ expect(commands).not_to include_an_object send(matcher, expected)
227
+ else
228
+ expect(commands).to include_an_object send(matcher, expected)
229
+ end
230
+ end
231
+ end
232
+
233
+ # "the output should match" allows regex in the partial_output, if
234
+ # you don't need regex, use "the output should contain" instead since
235
+ # that way, you don't have to escape regex characters that
236
+ # appear naturally in the output
237
+ Then(/^the output should( not)? match \/([^\/]*)\/$/) do |negated, expected|
238
+ if negated
239
+ expect(all_commands).not_to include_an_object have_output Regexp.new(expected, Regexp::MULTILINE)
240
+ else
241
+ expect(all_commands).to include_an_object have_output Regexp.new(expected, Regexp::MULTILINE)
242
+ end
243
+ end
244
+
245
+ Then(/^the output should( not)? match %r<([^>]*)>$/) do |negated, expected|
246
+ if negated
247
+ expect(all_commands).not_to include_an_object have_output Regexp.new(expected, Regexp::MULTILINE)
248
+ else
249
+ expect(all_commands).to include_an_object have_output Regexp.new(expected, Regexp::MULTILINE)
250
+ end
251
+ end
252
+
253
+ Then(/^the output should( not)? match:$/) do |negated, expected|
254
+ if negated
255
+ expect(all_commands).not_to include_an_object have_output Regexp.new(expected, Regexp::MULTILINE)
256
+ else
257
+ expect(all_commands).to include_an_object have_output Regexp.new(expected, Regexp::MULTILINE)
258
+ end
259
+ end
260
+
261
+ Then(/^the exit status should( not)? be (\d+)$/) do |negated, exit_status|
262
+ if negated
263
+ expect(last_command_stopped).not_to have_exit_status exit_status.to_i
264
+ else
265
+ expect(last_command_stopped).to have_exit_status exit_status.to_i
266
+ end
267
+ end
268
+
269
+ Then(/^it should( not)? (pass|fail) with "(.*?)"$/) do |negated, pass_fail, expected|
270
+ expected = unescape_text(expected).chomp
271
+ expected = extract_text(expected) if !aruba.config.keep_ansi || aruba.config.remove_ansi_escape_sequences
272
+ expected = Regexp.new(Regexp.escape(expected))
273
+
274
+ if pass_fail == 'pass'
275
+ expect(last_command_stopped).to be_successfully_executed
276
+ else
277
+ expect(last_command_stopped).not_to be_successfully_executed
278
+ end
279
+
280
+ if negated
281
+ expect(last_command_stopped).not_to have_output expected
282
+ else
283
+ expect(last_command_stopped).to have_output expected
284
+ end
285
+ end
286
+
287
+ Then(/^it should( not)? (pass|fail) with:$/) do |negated, pass_fail, expected|
288
+ expected = unescape_text(expected).chomp
289
+ expected = extract_text(expected) if !aruba.config.keep_ansi || aruba.config.remove_ansi_escape_sequences
290
+ expected = Regexp.new(Regexp.escape(expected))
291
+
292
+ if pass_fail == 'pass'
293
+ expect(last_command_stopped).to be_successfully_executed
294
+ else
295
+ expect(last_command_stopped).not_to be_successfully_executed
296
+ end
297
+
298
+ if negated
299
+ expect(last_command_stopped).not_to have_output expected
300
+ else
301
+ expect(last_command_stopped).to have_output expected
302
+ end
303
+ end
304
+
305
+ Then(/^it should( not)? (pass|fail) with exactly:$/) do |negated, pass_fail, expected|
306
+ expected = unescape_text(expected).chomp
307
+ expected = extract_text(expected) if !aruba.config.keep_ansi || aruba.config.remove_ansi_escape_sequences
308
+
309
+ if pass_fail == 'pass'
310
+ expect(last_command_stopped).to be_successfully_executed
311
+ else
312
+ expect(last_command_stopped).not_to be_successfully_executed
313
+ end
314
+
315
+ if negated
316
+ expect(last_command_stopped).not_to have_output expected
317
+ else
318
+ expect(last_command_stopped).to have_output expected
319
+ end
320
+ end
321
+
322
+ Then(/^it should( not)? (pass|fail) with regexp?:$/) do |negated, pass_fail, expected|
323
+ expected = unescape_text(expected).chomp
324
+ expected = extract_text(expected) if !aruba.config.keep_ansi || aruba.config.remove_ansi_escape_sequences
325
+ expected = Regexp.new(expected, Regexp::MULTILINE)
326
+
327
+ if pass_fail == 'pass'
328
+ expect(last_command_stopped).to be_successfully_executed
329
+ else
330
+ expect(last_command_stopped).not_to be_successfully_executed
331
+ end
332
+
333
+ if negated
334
+ expect(last_command_stopped).not_to have_output expected
335
+ else
336
+ expect(last_command_stopped).to have_output expected
337
+ end
338
+ end
339
+
340
+ Then(/^(?:the )?(output|stderr|stdout) should not contain anything$/) do |channel|
341
+ matcher = case channel.to_sym
342
+ when :output
343
+ :have_output
344
+ when :stderr
345
+ :have_output_on_stderr
346
+ when :stdout
347
+ :have_output_on_stdout
348
+ else
349
+ fail ArgumentError, %(Invalid channel "#{channel}" chosen. Only "output", "stdout" and "stderr" are supported.)
350
+ end
351
+
352
+ expect(all_commands).to include_an_object send(matcher, be_nil.or(be_empty))
353
+ end
354
+
355
+ Then(/^(?:the )?(output|stdout|stderr) should( not)? contain all of these lines:$/) do |channel, negated, table|
356
+ table.raw.flatten.each do |expected|
357
+ expected = unescape_text(expected).chomp
358
+ expected = extract_text(expected) if !aruba.config.keep_ansi || aruba.config.remove_ansi_escape_sequences
359
+ expected = Regexp.new(Regexp.escape(expected))
360
+
361
+ matcher = case channel.to_sym
362
+ when :output
363
+ :have_output
364
+ when :stderr
365
+ :have_output_on_stderr
366
+ when :stdout
367
+ :have_output_on_stdout
368
+ else
369
+ fail ArgumentError, %(Invalid channel "#{channel}" chosen. Only "output", "stdout" and "stderr" are supported.)
370
+ end
371
+
372
+ if negated
373
+ expect(all_commands).not_to include_an_object send(matcher, expected)
374
+ else
375
+ expect(all_commands).to include_an_object send(matcher, expected)
376
+ end
377
+ end
378
+ end
@@ -0,0 +1,29 @@
1
+ if Aruba::VERSION >= '1.0.0'
2
+ Aruba.configure do |config|
3
+ config.working_directory = 'tmp/cucumber'
4
+ end
5
+ end
6
+
7
+ Given(/the default aruba timeout is (\d+) seconds/) do |seconds|
8
+ # rubocop:disable Metrics/LineLength
9
+ Aruba.platform.deprecated(%{The /^the default aruba timeout is (\d+) seconds/ step definition is deprecated. Please use /^the default aruba exit timeout is (\d+) seconds/ step definition is deprecated.})
10
+ # rubocop:enable Metrics/LineLength
11
+
12
+ aruba.config.exit_timeout = seconds.to_i
13
+ end
14
+
15
+ Given(/The default aruba timeout is (\d+) seconds/) do |seconds|
16
+ # rubocop:disable Metrics/LineLength
17
+ Aruba.platform.deprecated(%{The /^The default aruba timeout is (\d+) seconds/ step definition is deprecated. Please use /^the default aruba exit timeout is (\d+) seconds/ step definition is deprecated.})
18
+ # rubocop:enable Metrics/LineLength
19
+
20
+ aruba.config.exit_timeout = seconds.to_i
21
+ end
22
+
23
+ Given(/the default aruba io wait timeout is (\d+) seconds/) do |seconds|
24
+ aruba.config.io_wait_timeout = seconds.to_i
25
+ end
26
+
27
+ Given(/the default aruba exit timeout is (\d+) seconds/) do |seconds|
28
+ aruba.config.exit_timeout = seconds.to_i
29
+ end
@@ -0,0 +1,30 @@
1
+ Given(/^a mocked home directory$/)do
2
+ set_environment_variable 'HOME', expand_path('.')
3
+ end
4
+
5
+ Given(/^I set the environment variables? to:/) do |table|
6
+ table.hashes.each do |row|
7
+ variable = row['variable'].to_s.upcase
8
+ value = row['value'].to_s
9
+
10
+ set_environment_variable(variable, value)
11
+ end
12
+ end
13
+
14
+ Given(/^I append the values? to the environment variables?:/) do |table|
15
+ table.hashes.each do |row|
16
+ variable = row['variable'].to_s.upcase
17
+ value = row['value'].to_s
18
+
19
+ append_environment_variable(variable, value)
20
+ end
21
+ end
22
+
23
+ Given(/^I prepend the values? to the environment variables?:/) do |table|
24
+ table.hashes.each do |row|
25
+ variable = row['variable'].to_s.upcase
26
+ value = row['value'].to_s
27
+
28
+ prepend_environment_variable(variable, value)
29
+ end
30
+ end
@@ -0,0 +1,210 @@
1
+ Given(/^I use (?:a|the) fixture(?: named)? "([^"]*)"$/) do |name|
2
+ copy File.join(aruba.config.fixtures_path_prefix, name), name
3
+ cd name
4
+ end
5
+
6
+ Given(/^I copy (?:a|the) (file|directory)(?: (?:named|from))? "([^"]*)" to "([^"]*)"$/) do |file_or_directory, source, destination|
7
+ copy source, destination
8
+ end
9
+
10
+ Given(/^I move (?:a|the) (file|directory)(?: (?:named|from))? "([^"]*)" to "([^"]*)"$/) do |file_or_directory, source, destination|
11
+ move source, destination
12
+ end
13
+
14
+ Given(/^(?:a|the) directory(?: named)? "([^"]*)"$/) do |dir_name|
15
+ create_directory(dir_name)
16
+ end
17
+
18
+ Given(/^(?:a|the) directory(?: named)? "([^"]*)" with mode "([^"]*)"$/) do |dir_name, dir_mode|
19
+ create_directory(dir_name)
20
+ chmod(dir_mode, dir_name)
21
+ end
22
+
23
+ Given(/^(?:a|the) file(?: named)? "([^"]*)" with:$/) do |file_name, file_content|
24
+ write_file(file_name, file_content)
25
+ end
26
+
27
+ Given(/^(?:an|the) executable(?: named)? "([^"]*)" with:$/) do |file_name, file_content|
28
+ step %(a file named "#{file_name}" with mode "0755" and with:), file_content
29
+ end
30
+
31
+ Given(/^(?:a|the) file(?: named)? "([^"]*)" with "([^"]*)"$/) do |file_name, file_content|
32
+ file_content = unescape_text(file_content)
33
+ file_content = extract_text(file_content) if !aruba.config.keep_ansi || aruba.config.remove_ansi_escape_sequences
34
+
35
+ write_file(file_name, file_content)
36
+ end
37
+
38
+ Given(/^(?:a|the) file(?: named)? "([^"]*)" with mode "([^"]*)" and with:$/) do |file_name, file_mode, file_content|
39
+ write_file(file_name, file_content)
40
+ chmod(file_mode, file_name)
41
+ end
42
+
43
+ Given(/^(?:a|the) (\d+) byte file(?: named)? "([^"]*)"$/) do |file_size, file_name|
44
+ write_fixed_size_file(file_name, file_size.to_i)
45
+ end
46
+
47
+ Given(/^(?:an|the) empty file(?: named)? "([^"]*)"$/) do |file_name|
48
+ write_file(file_name, "")
49
+ end
50
+
51
+ Given(/^(?:an|the) empty file(?: named)? "([^"]*)" with mode "([^"]*)"$/) do |file_name, file_mode|
52
+ write_file(file_name, "")
53
+ chmod(file_mode, file_name)
54
+ end
55
+
56
+ Given(/^(?:a|the) directory(?: named)? "([^"]*)" does not exist$/) do |directory_name|
57
+ remove(directory_name, :force => true)
58
+ end
59
+
60
+ When(/^I write to "([^"]*)" with:$/) do |file_name, file_content|
61
+ write_file(file_name, file_content)
62
+ end
63
+
64
+ When(/^I overwrite(?: (?:a|the) file(?: named)?)? "([^"]*)" with:$/) do |file_name, file_content|
65
+ overwrite_file(file_name, file_content)
66
+ end
67
+
68
+ When(/^I append to "([^"]*)" with:$/) do |file_name, file_content|
69
+ append_to_file(file_name, file_content)
70
+ end
71
+
72
+ When(/^I append to "([^"]*)" with "([^"]*)"$/) do |file_name, file_content|
73
+ append_to_file(file_name, file_content)
74
+ end
75
+
76
+ When(/^I remove (?:a|the) file(?: named)? "([^"]*)"$/) do |file_name|
77
+ remove(file_name)
78
+ end
79
+
80
+ Given(/^(?:a|the) file(?: named)? "([^"]*)" does not exist$/) do |file_name|
81
+ remove(file_name, :force => true)
82
+ end
83
+
84
+ When(/^I remove (?:a|the) directory(?: named)? "(.*?)"$/) do |directory_name|
85
+ remove(directory_name)
86
+ end
87
+
88
+ When(/^I cd to "([^"]*)"$/) do |dir|
89
+ cd(dir)
90
+ end
91
+
92
+ Then(/^the following files should (not )?exist:$/) do |negated, files|
93
+ files = files.rows.flatten
94
+
95
+ if negated
96
+ expect(files).not_to include an_existing_file
97
+ else
98
+ expect(files).to all_objects be_an_existing_file
99
+ end
100
+ end
101
+
102
+ Then(/^(?:a|the) file(?: named)? "([^"]*)" should (not )?exist$/) do |file, expect_match|
103
+ if expect_match
104
+ expect(file).not_to be_an_existing_file
105
+ else
106
+ expect(file).to be_an_existing_file
107
+ end
108
+ end
109
+
110
+ Then(/^(?:a|the) file matching %r<(.*?)> should (not )?exist$/) do |pattern, expect_match|
111
+ if expect_match
112
+ expect(all_paths).not_to include match Regexp.new(pattern)
113
+ else
114
+ expect(all_paths).to include match Regexp.new(pattern)
115
+ end
116
+ end
117
+
118
+ Then(/^(?:a|the) (\d+) byte file(?: named)? "([^"]*)" should (not )?exist$/) do |size, file, negated|
119
+ if negated
120
+ expect(file).not_to have_file_size(size)
121
+ else
122
+ expect(file).to have_file_size(size)
123
+ end
124
+ end
125
+
126
+ Then(/^the following directories should (not )?exist:$/) do |negated, directories|
127
+ directories = directories.rows.flatten
128
+
129
+ if negated
130
+ expect(directories).not_to include an_existing_directory
131
+ else
132
+ expect(directories).to all_objects be_an_existing_directory
133
+ end
134
+ end
135
+
136
+ Then(/^(?:a|the) directory(?: named)? "([^"]*)" should (not )?exist$/) do |directory, negated|
137
+ if negated
138
+ expect(directory).not_to be_an_existing_directory
139
+ else
140
+ expect(directory).to be_an_existing_directory
141
+ end
142
+ end
143
+
144
+ Then(/^(?:a|the) file(?: named)? "([^"]*)" should (not )?contain "([^"]*)"$/) do |file, negated, content|
145
+ if negated
146
+ expect(file).not_to have_file_content Regexp.new(Regexp.escape(content.chomp))
147
+ else
148
+ expect(file).to have_file_content Regexp.new(Regexp.escape(content.chomp))
149
+ end
150
+ end
151
+
152
+ Then(/^(?:a|the) file(?: named)? "([^"]*)" should (not )?contain:$/) do |file, negated, content|
153
+ if negated
154
+ expect(file).not_to have_file_content Regexp.new(Regexp.escape(content.chomp))
155
+ else
156
+ expect(file).to have_file_content Regexp.new(Regexp.escape(content.chomp))
157
+ end
158
+ end
159
+
160
+ Then(/^(?:a|the) file(?: named)? "([^"]*)" should (not )?contain exactly:$/) do |file, negated, content|
161
+ if negated
162
+ expect(file).not_to have_file_content content
163
+ else
164
+ expect(file).to have_file_content content
165
+ end
166
+ end
167
+
168
+ Then(/^(?:a|the) file(?: named)? "([^"]*)" should (not )?match %r<([^\/]*)>$/) do |file, negated, content|
169
+ if negated
170
+ expect(file).not_to have_file_content Regexp.new(content)
171
+ else
172
+ expect(file).to have_file_content Regexp.new(content)
173
+ end
174
+ end
175
+
176
+ Then(/^(?:a|the) file(?: named)? "([^"]*)" should (not )?match \/([^\/]*)\/$/) do |file, negated, content|
177
+ if negated
178
+ expect(file).not_to have_file_content Regexp.new(content)
179
+ else
180
+ expect(file).to have_file_content Regexp.new(content)
181
+ end
182
+ end
183
+
184
+ Then(/^(?:a|the) file(?: named)? "([^"]*)" should (not )?be equal to file "([^"]*)"/) do |file, negated, reference_file|
185
+ if negated
186
+ expect(file).not_to have_same_file_content_like(reference_file)
187
+ else
188
+ expect(file).to have_same_file_content_like(reference_file)
189
+ end
190
+ end
191
+
192
+ Then(/^the mode of filesystem object "([^"]*)" should (not )?match "([^"]*)"$/) do |file, negated, permissions|
193
+ # rubocop:disable Metrics/LineLength
194
+ Aruba.platform.deprecated('The use of step "the mode of filesystem object "([^"]*)" should (not )?match "([^"]*)" is deprecated. Use "^the (?:file|directory)(?: named)? "([^"]*)" should have permissions "([^"]*)"$" instead')
195
+ # rubocop:enable Metrics/LineLength
196
+
197
+ if negated
198
+ expect(file).not_to have_permissions(permissions)
199
+ else
200
+ expect(file).to have_permissions(permissions)
201
+ end
202
+ end
203
+
204
+ Then(/^the (?:file|directory)(?: named)? "([^"]*)" should( not)? have permissions "([^"]*)"$/) do |path, negated, permissions|
205
+ if negated
206
+ expect(path).not_to have_permissions(permissions)
207
+ else
208
+ expect(path).to have_permissions(permissions)
209
+ end
210
+ end