aruba 0.9.0.pre → 0.9.0.pre2

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.
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