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,445 @@
1
+ Feature: All output of commands which were executed
2
+
3
+ In order to specify expected output
4
+ As a developer using Cucumber
5
+ I want to use the "the output should contain" step
6
+
7
+ Background:
8
+ Given I use a fixture named "cli-app"
9
+
10
+ Scenario: Detect subset of one-line output
11
+ Given an executable named "bin/cli" with:
12
+ """bash
13
+ #!/usr/bin/env bash
14
+
15
+ echo 'hello world'
16
+ """
17
+ And a file named "features/output.feature" with:
18
+ """cucumber
19
+ Feature: Run command
20
+ Scenario: Run command
21
+ When I run `cli`
22
+ Then the output should contain "hello world"
23
+ """
24
+ When I run `cucumber`
25
+ Then the features should all pass
26
+
27
+ Scenario: Detect absence of one-line output
28
+ Given an executable named "bin/cli" with:
29
+ """bash
30
+ #!/usr/bin/env bash
31
+
32
+ echo 'hello world'
33
+ """
34
+ And a file named "features/output.feature" with:
35
+ """cucumber
36
+ Feature: Run command
37
+ Scenario: Run command
38
+ When I run `cli`
39
+ Then the output should not contain "good-bye"
40
+ """
41
+ When I run `cucumber`
42
+ Then the features should all pass
43
+
44
+ Scenario: Detect subset of multiline output
45
+ Given an executable named "bin/cli" with:
46
+ """bash
47
+ #!/usr/bin/env bash
48
+
49
+ echo -e "hello\nworld"
50
+ """
51
+ And a file named "features/output.feature" with:
52
+ """cucumber
53
+ Feature: Run command
54
+ Scenario: Run command
55
+ When I run `cli`
56
+ Then the output should contain:
57
+ \"\"\"
58
+ hello
59
+ \"\"\"
60
+ """
61
+ When I run `cucumber`
62
+ Then the features should all pass
63
+
64
+ Scenario: Detect absence of subset of multiline output
65
+ Given an executable named "bin/cli" with:
66
+ """bash
67
+ #!/usr/bin/env bash
68
+
69
+ echo -e "hello\nworld"
70
+ """
71
+ And a file named "features/output.feature" with:
72
+ """cucumber
73
+ Feature: Run command
74
+ Scenario: Run command
75
+ When I run `cli`
76
+ Then the output should not contain:
77
+ \"\"\"
78
+ good-bye
79
+ \"\"\"
80
+ """
81
+ When I run `cucumber`
82
+ Then the features should all pass
83
+
84
+ @posix
85
+ Scenario: Detect exact one-line output for posix commands
86
+ Given a file named "features/output.feature" with:
87
+ """cucumber
88
+ Feature: Run command
89
+ Scenario: Run command
90
+ When I run `printf 'hello world'`
91
+ Then the output should contain exactly:
92
+ \"\"\"
93
+ hello world
94
+ \"\"\"
95
+ """
96
+ When I run `cucumber`
97
+ Then the features should all pass
98
+
99
+ Scenario: Detect exact one-line output for ruby commands
100
+ Given an executable named "bin/cli" with:
101
+ """ruby
102
+ #!/usr/bin/env ruby
103
+
104
+ print "hello world"
105
+ """
106
+ And a file named "features/output.feature" with:
107
+ """cucumber
108
+ Feature: Run command
109
+ Scenario: Run command
110
+ When I run `cli`
111
+ Then the output should contain exactly:
112
+ \"\"\"
113
+ hello world
114
+ \"\"\"
115
+ """
116
+ When I run `cucumber`
117
+ Then the features should all pass
118
+
119
+ Scenario: Detect exact one-line output with ANSI output
120
+ Given an executable named "bin/cli" with:
121
+ """bash
122
+ #!/usr/bin/env bash
123
+
124
+ echo -e "\e[36mhello world\e[0m"
125
+ """
126
+ And a file named "features/output.feature" with:
127
+ """cucumber
128
+ Feature: Run command
129
+ @keep-ansi-escape-sequences
130
+ Scenario: Run command
131
+ When I run `cli`
132
+ Then the output should contain exactly:
133
+ \"\"\"
134
+ \e[36mhello world\e[0m
135
+ \"\"\"
136
+ """
137
+ When I run `cucumber`
138
+ Then the features should all pass
139
+
140
+ Scenario: Detect exact one-line output with ANSI output stripped by default
141
+ Given the default aruba exit timeout is 12 seconds
142
+ Given an executable named "bin/cli" with:
143
+ """bash
144
+ #!/usr/bin/env bash
145
+
146
+ echo -e "\e[36mhello world\e[0m"
147
+ """
148
+ And a file named "features/output.feature" with:
149
+ """cucumber
150
+ Feature: Run command
151
+ Scenario: Run command
152
+ When I run `cli`
153
+ Then the output should contain exactly:
154
+ \"\"\"
155
+ hello world
156
+ \"\"\"
157
+ """
158
+ When I run `cucumber`
159
+ Then the features should all pass
160
+
161
+ Scenario: Detect exact multiline output
162
+ Given an executable named "bin/cli" with:
163
+ """bash
164
+ #!/usr/bin/env bash
165
+
166
+ echo -ne "hello\nworld"
167
+ """
168
+ And a file named "features/output.feature" with:
169
+ """cucumber
170
+ Feature: Run command
171
+ Scenario: Run command
172
+ When I run `cli`
173
+ Then the output should contain exactly:
174
+ \"\"\"
175
+ hello
176
+ world
177
+ \"\"\"
178
+ """
179
+ When I run `cucumber`
180
+ Then the features should all pass
181
+
182
+ Scenario: Detect subset of one-line output
183
+ Given an executable named "bin/cli" with:
184
+ """bash
185
+ #!/usr/bin/env bash
186
+
187
+ echo 'hello world'
188
+ """
189
+ And a file named "features/output.feature" with:
190
+ """cucumber
191
+ Feature: Run command
192
+ Scenario: Run command
193
+ When I run `cli`
194
+ Then the output should contain "hello world"
195
+ """
196
+ When I run `cucumber`
197
+ Then the features should all pass
198
+
199
+ Scenario: Detect subset of one-line output with regex
200
+ Given an executable named "bin/cli" with:
201
+ """bash
202
+ #!/usr/bin/env bash
203
+
204
+ echo 'hello, ruby'
205
+ """
206
+ And a file named "features/output.feature" with:
207
+ """cucumber
208
+ Feature: Run command
209
+ Scenario: Run command
210
+ When I run `cli`
211
+ Then the output should match /^hello(, world)?/
212
+ """
213
+ When I run `cucumber`
214
+ Then the features should all pass
215
+
216
+ Scenario: Detect subset of multiline output with regex
217
+ Given an executable named "bin/cli" with:
218
+ """bash
219
+ #!/usr/bin/env bash
220
+
221
+ echo -e "hello\nworld\nextra line1\nextra line2\nimportant line"
222
+ """
223
+ And a file named "features/output.feature" with:
224
+ """cucumber
225
+ Feature: Run command
226
+ Scenario: Run command
227
+ When I run `cli`
228
+ Then the output should match:
229
+ \"\"\"
230
+ he..o
231
+ wor.d
232
+ .*
233
+ important line
234
+ \"\"\"
235
+ """
236
+ When I run `cucumber`
237
+ Then the features should all pass
238
+
239
+ Scenario: Negative matching of one-line output with regex
240
+ Given an executable named "bin/cli" with:
241
+ """bash
242
+ #!/usr/bin/env bash
243
+
244
+ echo "hello, ruby"
245
+ """
246
+ And a file named "features/output.feature" with:
247
+ """cucumber
248
+ Feature: Run command
249
+ Scenario: Run command
250
+ When I run `cli`
251
+ Then the output should not match /ruby is a better perl$/
252
+ """
253
+ When I run `cucumber`
254
+ Then the features should all pass
255
+
256
+ Scenario: Negative matching of multiline output with regex
257
+ Given an executable named "bin/cli" with:
258
+ """bash
259
+ #!/usr/bin/env bash
260
+
261
+ echo -e "hello\nworld\nextra line1\nextra line2\nimportant line"
262
+ """
263
+ And a file named "features/output.feature" with:
264
+ """cucumber
265
+ Feature: Run command
266
+ Scenario: Run command
267
+ When I run `cli`
268
+ Then the output should not match:
269
+ \"\"\"
270
+ ruby
271
+ is
272
+ a
273
+ .*
274
+ perl
275
+ \"\"\"
276
+ """
277
+ When I run `cucumber`
278
+ Then the features should all pass
279
+
280
+ Scenario: Match passing exit status and partial output
281
+ Given an executable named "bin/cli" with:
282
+ """bash
283
+ #!/usr/bin/env bash
284
+
285
+ echo "hello world"
286
+ exit 0
287
+ """
288
+ And a file named "features/output.feature" with:
289
+ """cucumber
290
+ Feature: Run command
291
+ Scenario: Run command
292
+ When I run `cli`
293
+ Then it should pass with:
294
+ \"\"\"
295
+ hello
296
+ \"\"\"
297
+ """
298
+ When I run `cucumber`
299
+ Then the features should all pass
300
+
301
+ Scenario: Match passing exit status and exact output
302
+ Given an executable named "bin/cli" with:
303
+ """bash
304
+ #!/usr/bin/env bash
305
+
306
+ echo -ne "hello\nworld"
307
+ exit 0
308
+ """
309
+ And a file named "features/output.feature" with:
310
+ """cucumber
311
+ Feature: Run command
312
+ Scenario: Run command
313
+ When I run `cli`
314
+ Then it should pass with exactly:
315
+ \"\"\"
316
+ hello
317
+ world
318
+ \"\"\"
319
+ """
320
+ When I run `cucumber`
321
+ Then the features should all pass
322
+
323
+ Scenario: Match failing exit status and partial output
324
+ Given an executable named "bin/cli" with:
325
+ """bash
326
+ #!/usr/bin/env bash
327
+
328
+ echo -e "hello\nworld"
329
+ exit 1
330
+ """
331
+ And a file named "features/output.feature" with:
332
+ """cucumber
333
+ Feature: Run command
334
+ Scenario: Run command
335
+ When I run `cli`
336
+ Then it should fail with:
337
+ \"\"\"
338
+ hello
339
+ \"\"\"
340
+ """
341
+ When I run `cucumber`
342
+ Then the features should all pass
343
+
344
+
345
+ Scenario: Match failing exit status and exact output
346
+ Given an executable named "bin/cli" with:
347
+ """bash
348
+ #!/usr/bin/env bash
349
+
350
+ echo -e "hello\nworld"
351
+ exit 1
352
+ """
353
+ And a file named "features/output.feature" with:
354
+ """cucumber
355
+ Feature: Run command
356
+ Scenario: Run command
357
+ When I run `cli`
358
+ Then it should fail with:
359
+ \"\"\"
360
+ hello
361
+ world
362
+ \"\"\"
363
+ """
364
+ When I run `cucumber`
365
+ Then the features should all pass
366
+
367
+ Scenario: Match failing exit status and output with regex
368
+ Given an executable named "bin/cli" with:
369
+ """bash
370
+ #!/usr/bin/env bash
371
+
372
+ echo -e "hello\nworld"
373
+ exit 1
374
+ """
375
+ And a file named "features/output.feature" with:
376
+ """cucumber
377
+ Feature: Run command
378
+ Scenario: Run command
379
+ When I run `cli`
380
+ Then it should fail with regex:
381
+ \"\"\"
382
+ hello\s*world
383
+ \"\"\"
384
+ """
385
+ When I run `cucumber`
386
+ Then the features should all pass
387
+
388
+ Scenario: Detect output from all processes
389
+ Given an executable named "bin/cli1" with:
390
+ """bash
391
+ #!/usr/bin/env bash
392
+
393
+ echo 'This is cli1'
394
+ """
395
+ And an executable named "bin/cli2" with:
396
+ """bash
397
+ #!/usr/bin/env bash
398
+
399
+ echo 'This is cli2'
400
+ """
401
+ And a file named "features/output.feature" with:
402
+ """cucumber
403
+ Feature: Run command
404
+ Scenario: Run command
405
+ When I run `cli1`
406
+ When I run `cli2`
407
+ Then the stdout should contain exactly:
408
+ \"\"\"
409
+ This is cli1
410
+ \"\"\"
411
+ And the stdout should contain exactly:
412
+ \"\"\"
413
+ This is cli2
414
+ \"\"\"
415
+ """
416
+ When I run `cucumber`
417
+ Then the features should all pass
418
+
419
+ Scenario: Detect output from all processes (deprecated)
420
+ Given an executable named "bin/cli1" with:
421
+ """bash
422
+ #!/usr/bin/env bash
423
+
424
+ echo 'This is cli1'
425
+ """
426
+ And an executable named "bin/cli2" with:
427
+ """bash
428
+ #!/usr/bin/env bash
429
+
430
+ echo 'This is cli2'
431
+ """
432
+ And a file named "features/output.feature" with:
433
+ """cucumber
434
+ Feature: Run command
435
+ Scenario: Run command
436
+ When I run `cli1`
437
+ When I run `cli2`
438
+ Then the stdout should contain exactly:
439
+ \"\"\"
440
+ This is cli1
441
+ This is cli2
442
+ \"\"\"
443
+ """
444
+ When I run `cucumber`
445
+ Then the features should all pass
@@ -0,0 +1,66 @@
1
+ Feature: Stdout of commands which were executed
2
+
3
+ In order to specify expected output
4
+ As a developer using Cucumber
5
+ I want to use the "the output should contain" step
6
+
7
+ Background:
8
+ Given I use a fixture named "cli-app"
9
+
10
+ Scenario: Match output in stdout
11
+ Given an executable named "bin/cli" with:
12
+ """bash
13
+ #!/usr/bin/env bash
14
+
15
+ echo -e "hello\nworld"
16
+ """
17
+ And a file named "features/output.feature" with:
18
+ """cucumber
19
+ Feature: Run command
20
+ Scenario: Run command
21
+ When I run `cli`
22
+ Then the stdout should contain "hello"
23
+ Then the stderr should not contain "hello"
24
+ """
25
+ When I run `cucumber`
26
+ Then the features should all pass
27
+
28
+ Scenario: Match stdout on several lines
29
+ Given an executable named "bin/cli" with:
30
+ """bash
31
+ #!/usr/bin/env bash
32
+
33
+ echo 'GET /'
34
+ """
35
+ And a file named "features/output.feature" with:
36
+ """cucumber
37
+ Feature: Run command
38
+ Scenario: Run command
39
+ When I run `cli`
40
+ Then the stdout should contain:
41
+ \"\"\"
42
+ GET /
43
+ \"\"\"
44
+ """
45
+ When I run `cucumber`
46
+ Then the features should all pass
47
+
48
+ Scenario: Match output on several lines where stdout contains quotes
49
+ Given an executable named "bin/cli" with:
50
+ """bash
51
+ #!/usr/bin/env bash
52
+
53
+ echo 'GET "/"'
54
+ """
55
+ And a file named "features/output.feature" with:
56
+ """cucumber
57
+ Feature: Run command
58
+ Scenario: Run command
59
+ When I run `cli`
60
+ Then the stdout should contain:
61
+ \"\"\"
62
+ GET "/"
63
+ \"\"\"
64
+ """
65
+ When I run `cucumber`
66
+ Then the features should all pass