aruba 0.12.0 → 0.13.0

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 (43) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +5 -1
  3. data/History.md +75 -55
  4. data/Rakefile +1 -1
  5. data/aruba.gemspec +0 -1
  6. data/features/api/command/run_simple.feature +37 -2
  7. data/features/api/command/stderr.feature +46 -0
  8. data/features/api/command/stdout.feature +46 -0
  9. data/features/configuration/activate_announcer_on_command_failure.feature +38 -0
  10. data/features/steps/command/run.feature +28 -0
  11. data/features/steps/command/shell.feature +155 -0
  12. data/features/steps/core/announce.feature +80 -0
  13. data/features/support/aruba.rb +3 -2
  14. data/lib/aruba/api/command.rb +7 -10
  15. data/lib/aruba/colorizer.rb +108 -0
  16. data/lib/aruba/config.rb +4 -2
  17. data/lib/aruba/cucumber/command.rb +12 -0
  18. data/lib/aruba/cucumber/hooks.rb +10 -0
  19. data/lib/aruba/errors.rb +6 -0
  20. data/lib/aruba/event_bus.rb +59 -0
  21. data/lib/aruba/event_bus/name_resolver.rb +168 -0
  22. data/lib/aruba/generators/script_file.rb +46 -0
  23. data/lib/aruba/matchers/path/have_permissions.rb +1 -1
  24. data/lib/aruba/platforms/announcer.rb +30 -23
  25. data/lib/aruba/platforms/filesystem_status.rb +68 -0
  26. data/lib/aruba/platforms/simple_table.rb +14 -7
  27. data/lib/aruba/platforms/unix_platform.rb +11 -2
  28. data/lib/aruba/platforms/unix_which.rb +0 -2
  29. data/lib/aruba/platforms/windows_which.rb +0 -2
  30. data/lib/aruba/processes/basic_process.rb +8 -0
  31. data/lib/aruba/processes/spawn_process.rb +31 -12
  32. data/lib/aruba/rspec.rb +12 -8
  33. data/lib/aruba/runtime.rb +2 -2
  34. data/lib/aruba/setup.rb +5 -2
  35. data/lib/aruba/version.rb +1 -1
  36. data/script/bootstrap +8 -0
  37. data/spec/aruba/api_spec.rb +1 -1
  38. data/spec/aruba/platform/simple_table_spec.rb +2 -2
  39. data/spec/event_bus/name_resolver_spec.rb +68 -0
  40. data/spec/event_bus_spec.rb +160 -0
  41. data/spec/spec_helper.rb +0 -3
  42. data/spec/support/configs/aruba.rb +5 -0
  43. metadata +22 -17
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a03bef8bda8e7603e1f838f59617c33ed241a6c5
4
- data.tar.gz: 2400a8a46277213356de308fc2be9bff799de045
3
+ metadata.gz: c728c7b302f5e46b803fabe9a95ab2769c768b65
4
+ data.tar.gz: 2a613d641ff60f99b06774b89bd23513a6aa01e1
5
5
  SHA512:
6
- metadata.gz: dee2acfaddc2865642aacb0d4dd464aa8e9656e9485511e16a78568b7305a60a8fb79c0529c86c493dab163e8f12d9549eda3f2638c589201c04630e6ea11462
7
- data.tar.gz: 07adf9438e735fd1d9bc85149b95ae4f51795d193676f793f0e516f9dbff80f99d75380e081cde6bd9eea78c821a4d796016b1e54db693b8d7eb5584fad47cf0
6
+ metadata.gz: 8ed3b4ac93ed91676ec48e17eb70fae1ab9d456213810880e2cf50c1f84e3df75e5585c708647c6d6da00604c424e54ea907c2cd225779cac6a67cb766d21108
7
+ data.tar.gz: c3e739cc6c22e3b42bbd19d04b86b40c4c4f7c370b0bfd6fcaf0fae267654dd73b8f5c7e6f244d1ef2e59e16121fd3bcb31a799d47b0a2b9d50b010fb224109e
data/.travis.yml CHANGED
@@ -39,5 +39,9 @@ notifications:
39
39
  env:
40
40
  global:
41
41
  - secure: l8uznA5K4K9mZ1krmP3lTMD8WcJ32qGxFOR3jubKHcOBSLB4xSzU2aIqjyJdO+rLzebkwamhJc8pGSIWOUDQYvFiX7splK+uEkbBJ5huAhXtLF4Qgl86bCWbEXYzN7rvn0DQfpJAovyFMNRMnfo70XhwqWzFsaYa7Z0YbqYsJE4=
42
- # - JRUBY_OPTS='-Xcli.debug=true --debug'
43
42
  - JRUBY_OPTS='--dev'
43
+ cache: apt
44
+ addons:
45
+ apt:
46
+ packages:
47
+ - zsh
data/History.md CHANGED
@@ -1,4 +1,78 @@
1
- # Latest Release
1
+ # UNRELEASED
2
+
3
+ ## [v1.0.0](https://github.com/cucumber/aruba/compare/v0.11.0...v1.0.0)
4
+
5
+ * Support for rubies older than 1.9.3 is discontinued - e.g 1.8.7 and 1.9.2
6
+ * aruba requires "cucumber 2" for the feature steps. The rest of aruba should
7
+ be usable by whatever testing framework you are using.
8
+ * Overwriting methods for configuration is discontinued. You need to use
9
+ `aruba.config.<variable>` or `Aruba.configure { |config| config.<variable>`
10
+ instead.
11
+ * "aruba/reporting" will be removed. Please use `@debug`-tag + `byebug`,
12
+ `debugger`, `pry` to troubleshoot your feature tests.
13
+ * Set environment variables will have only effect on `#run` and the like +
14
+ `#with_environment { }`.
15
+ * The process environment will be fully resetted between tests. Sharing state
16
+ via ENV['VAR'] = 'shared state' between tests will not be possible anymore.
17
+ Please make that obvious by using explicit steps or use the aruba API for
18
+ that.
19
+ * There will be a major cleanup for command execution. There will be only
20
+ `run` and `run_simple` left. `run_interactive` is replaced by `run`.
21
+ * Setting the root directory of aruba via method overwrite or configuration -
22
+ this should be your project root directory where the test suite is run.
23
+ * The direct use of "InProcess", "DebugProcess" and "SpawnProcess" is not
24
+ supported anymore. You need to use "Command" instead. But be careful, it has
25
+ a different API.
26
+ * HOME can be configured via `Aruba.configure {}` and defaults to
27
+ `File.join(aruba.config.root_directory, aruba.config.working_directory?)`
28
+ if `aruba/cucumber` or `aruba/rspec` is used.
29
+ * Use different working directories based on test suite - RSpec, Cucumber.
30
+ It's `tmp/rspec` and `tmp/cucumber` now to make sure they do not overwrite
31
+ the test results from each other.
32
+ * The use of `@interactive` is discontinued. You need to use
33
+ `#last_command_started`-method to get access to the interactively started
34
+ command.
35
+ * If multiple commands have been started, each output has to be check
36
+ separately
37
+
38
+ ```cucumber
39
+ Scenario: Detect stdout from all processes
40
+ When I run `printf "hello world!\n"`
41
+ And I run `cat` interactively
42
+ And I type "hola"
43
+ And I type ""
44
+ Then the stdout should contain:
45
+ """
46
+ hello world!
47
+ """
48
+ And the stdout should contain:
49
+ """
50
+ hola
51
+ """
52
+ And the stderr should not contain anything
53
+ ```
54
+
55
+ # RELEASED
56
+
57
+ ## [v0.13.0](https://github.com/cucumber/aruba/compare/v0.12.0...v0.13.0)
58
+
59
+ * Add two new hooks for rspec and cucumber to make troubleshooting feature
60
+ files easier (PR #338):
61
+ * command_content: Outputs command content - helpful for scripts
62
+ * command_filesystem_status: Outputs information like group, owner, mode,
63
+ atime, mtime
64
+ * Add generator to create ad hoc script file (PR #323, @AdrieanKhisbe)
65
+ * Colored announcer output similar to the color of `cucumber` tags: cyan
66
+ * Fixed bug in announcer. It announces infomation several times due to
67
+ duplicate announce-calls.
68
+ * Refactorings to internal `#simple_table`-method (internal)
69
+ * Refactored Announcer, now it supports blocks for announce as well (internal)
70
+ * Fix circular require warnings (issue #339)
71
+ * Fix use of old instances variable "@io_wait" (issue #341). Now the
72
+ default value for io_wait_timeout can be set correctly.
73
+ * Make it possible to announce information on command error, using a new option
74
+ called `activate_announcer_on_command_failure` (PR #335, @njam)
75
+ * Re-integrate `event-bus`-library into `aruba`-core (PR #342)
2
76
 
3
77
  ## [v0.12.0](https://github.com/cucumber/aruba/compare/v0.11.2...v0.12.0)
4
78
 
@@ -493,57 +567,3 @@
493
567
  ## [v0.1.0](https://github.com/cucumber/aruba/compare/ed6a175d23aaff62dbf355706996f276f304ae8b...v0.1.1)
494
568
 
495
569
  * First release (David Chelimsky and Aslak Hellesøy)
496
-
497
- # Upcoming un-released versions
498
-
499
- ## [v1.0.0](https://github.com/cucumber/aruba/compare/v0.11.0...v1.0.0)
500
-
501
- * Support for rubies older than 1.9.3 is discontinued - e.g 1.8.7 and 1.9.2
502
- * aruba requires "cucumber 2" for the feature steps. The rest of aruba should
503
- be usable by whatever testing framework you are using.
504
- * Overwriting methods for configuration is discontinued. You need to use
505
- `aruba.config.<variable>` or `Aruba.configure { |config| config.<variable>`
506
- instead.
507
- * "aruba/reporting" will be removed. Please use `@debug`-tag + `byebug`,
508
- `debugger`, `pry` to troubleshoot your feature tests.
509
- * Set environment variables will have only effect on `#run` and the like +
510
- `#with_environment { }`.
511
- * The process environment will be fully resetted between tests. Sharing state
512
- via ENV['VAR'] = 'shared state' between tests will not be possible anymore.
513
- Please make that obvious by using explicit steps or use the aruba API for
514
- that.
515
- * There will be a major cleanup for command execution. There will be only
516
- `run` and `run_simple` left. `run_interactive` is replaced by `run`.
517
- * Setting the root directory of aruba via method overwrite or configuration -
518
- this should be your project root directory where the test suite is run.
519
- * The direct use of "InProcess", "DebugProcess" and "SpawnProcess" is not
520
- supported anymore. You need to use "Command" instead. But be careful, it has
521
- a different API.
522
- * HOME can be configured via `Aruba.configure {}` and defaults to
523
- `File.join(aruba.config.root_directory, aruba.config.working_directory?)`
524
- if `aruba/cucumber` or `aruba/rspec` is used.
525
- * Use different working directories based on test suite - RSpec, Cucumber.
526
- It's `tmp/rspec` and `tmp/cucumber` now to make sure they do not overwrite
527
- the test results from each other.
528
- * The use of `@interactive` is discontinued. You need to use
529
- `#last_command_started`-method to get access to the interactively started
530
- command.
531
- * If multiple commands have been started, each output has to be check
532
- separately
533
-
534
- ```cucumber
535
- Scenario: Detect stdout from all processes
536
- When I run `printf "hello world!\n"`
537
- And I run `cat` interactively
538
- And I type "hola"
539
- And I type ""
540
- Then the stdout should contain:
541
- """
542
- hello world!
543
- """
544
- And the stdout should contain:
545
- """
546
- hola
547
- """
548
- And the stderr should not contain anything
549
- ```
data/Rakefile CHANGED
@@ -19,7 +19,7 @@ end
19
19
  require 'rspec/core/rake_task'
20
20
  desc "Run RSpec"
21
21
  RSpec::Core::RakeTask.new do |spec|
22
- spec.rspec_opts = ['--color', '--format documentation']
22
+ spec.rspec_opts = ['--color', '--format documentation', '--warnings']
23
23
  end
24
24
 
25
25
  namespace :travis do
data/aruba.gemspec CHANGED
@@ -19,7 +19,6 @@ Gem::Specification.new do |s|
19
19
  s.add_runtime_dependency 'rspec-expectations', '>= 2.99'
20
20
  s.add_runtime_dependency 'contracts', '~> 0.9'
21
21
  s.add_runtime_dependency 'thor', '~> 0.19'
22
- s.add_runtime_dependency 'event-bus', '~> 0.2'
23
22
 
24
23
  s.add_development_dependency 'bundler', '~> 1.11'
25
24
 
@@ -8,7 +8,7 @@ Feature: Run command
8
8
  Given this option is `true`, `aruba` fails if the `command` fails to run - exit code <> 0.
9
9
 
10
10
  For all other options see [run.feature](run.feature).
11
-
11
+
12
12
  Background:
13
13
  Given I use a fixture named "cli-app"
14
14
 
@@ -107,7 +107,7 @@ Feature: Run command
107
107
  Given an executable named "bin/cli" with:
108
108
  """bash
109
109
  #!/usr/bin/env bash
110
-
110
+
111
111
  function initialize_script {
112
112
  sleep 2
113
113
  }
@@ -205,3 +205,38 @@ Feature: Run command
205
205
  """
206
206
  When I run `rspec`
207
207
  Then the specs should all pass
208
+
209
+ Scenario: Activate announcer channels on failure
210
+
211
+ Given an executable named "bin/cli" with:
212
+ """bash
213
+ #!/bin/bash
214
+ echo "Hello, I'm STDOUT"
215
+ echo "Hello, I'm STDERR" 1>&2
216
+ exit 1
217
+ """
218
+ And a file named "spec/run_spec.rb" with:
219
+ """ruby
220
+ require 'spec_helper'
221
+
222
+ Aruba.configure do |config|
223
+ config.activate_announcer_on_command_failure = [:stdout, :stderr]
224
+ end
225
+
226
+ RSpec.describe 'Run command', :type => :aruba do
227
+ it { expect { run_simple('cli', :fail_on_error => true) }.to_not raise_error }
228
+ end
229
+ """
230
+ When I run `rspec`
231
+ Then the specs should not pass
232
+ And the output should contain:
233
+ """
234
+ <<-STDOUT
235
+ Hello, I'm STDOUT
236
+
237
+ STDOUT
238
+ <<-STDERR
239
+ Hello, I'm STDERR
240
+
241
+ STDERR
242
+ """
@@ -0,0 +1,46 @@
1
+ Feature: Access STDERR of command
2
+
3
+ You may need to `#stop_all_commands` before accessing `#stderr` of a single
4
+ command - e.g. `#last_command_started`.
5
+
6
+ Background:
7
+ Given I use a fixture named "cli-app"
8
+ And the default aruba io wait timeout is 1 seconds
9
+
10
+ Scenario: Existing executable
11
+ Given an executable named "bin/cli" with:
12
+ """bash
13
+ #!/bin/bash
14
+ echo 'Hello, Aruba!' >&2
15
+ """
16
+ And a file named "spec/run_spec.rb" with:
17
+ """ruby
18
+ require 'spec_helper'
19
+
20
+ RSpec.describe 'Run command', :type => :aruba do
21
+ before(:each) { run('cli') }
22
+ before(:each) { stop_all_commands }
23
+ it { expect(last_command_started.stderr).to start_with 'Hello' }
24
+ end
25
+ """
26
+ When I run `rspec`
27
+ Then the specs should all pass
28
+
29
+ Scenario: Waiting for output to "appear" after 2 seconds
30
+ Given an executable named "bin/cli" with:
31
+ """bash
32
+ #!/bin/bash
33
+ sleep 1
34
+ echo 'Hello, Aruba' >&2
35
+ """
36
+ And a file named "spec/run_spec.rb" with:
37
+ """ruby
38
+ require 'spec_helper'
39
+
40
+ RSpec.describe 'Run command', :type => :aruba, :io_wait_timeout => 2 do
41
+ before(:each) { run('cli') }
42
+ it { expect(last_command_started.stderr).to start_with 'Hello' }
43
+ end
44
+ """
45
+ When I run `rspec`
46
+ Then the specs should all pass
@@ -0,0 +1,46 @@
1
+ Feature: Access STDOUT of command
2
+
3
+ You may need to `#stop_all_commands` before accessing `#stdout` of a single
4
+ command - e.g. `#last_command_started`.
5
+
6
+ Background:
7
+ Given I use a fixture named "cli-app"
8
+ And the default aruba io wait timeout is 1 seconds
9
+
10
+ Scenario: Existing executable
11
+ Given an executable named "bin/cli" with:
12
+ """bash
13
+ #!/bin/bash
14
+ echo 'Hello, Aruba!'
15
+ """
16
+ And a file named "spec/run_spec.rb" with:
17
+ """ruby
18
+ require 'spec_helper'
19
+
20
+ RSpec.describe 'Run command', :type => :aruba do
21
+ before(:each) { run('cli') }
22
+ before(:each) { stop_all_commands }
23
+ it { expect(last_command_started.stdout).to start_with 'Hello' }
24
+ end
25
+ """
26
+ When I run `rspec`
27
+ Then the specs should all pass
28
+
29
+ Scenario: Waiting for output to "appear" after 2 seconds
30
+ Given an executable named "bin/cli" with:
31
+ """bash
32
+ #!/bin/bash
33
+ sleep 1
34
+ echo 'Hello, Aruba'
35
+ """
36
+ And a file named "spec/run_spec.rb" with:
37
+ """ruby
38
+ require 'spec_helper'
39
+
40
+ RSpec.describe 'Run command', :type => :aruba, :io_wait_timeout => 2 do
41
+ before(:each) { run('cli') }
42
+ it { expect(last_command_started.stdout).to start_with 'Hello' }
43
+ end
44
+ """
45
+ When I run `rspec`
46
+ Then the specs should all pass
@@ -0,0 +1,38 @@
1
+ Feature: Configure announcer activation on command failure
2
+
3
+ As a developer
4
+ I want to configure which announcers should get activated on command failure
5
+ In order to understand what caused a command to fail
6
+
7
+ Background:
8
+ Given I use the fixture "cli-app"
9
+
10
+ Scenario: Default value
11
+ Given a file named "features/support/aruba.rb" with:
12
+ """ruby
13
+ Aruba.configure do |config|
14
+ puts %(The default value is "#{config.activate_announcer_on_command_failure.inspect}")
15
+ end
16
+ """
17
+ When I successfully run `cucumber`
18
+ Then the output should contain:
19
+ """ruby
20
+ The default value is "[]"
21
+ """
22
+
23
+ Scenario: Modify value
24
+ Given a file named "features/support/aruba.rb" with:
25
+ """ruby
26
+ Aruba.configure do |config|
27
+ config.activate_announcer_on_command_failure = [:foo, :bar]
28
+ end
29
+
30
+ Aruba.configure do |config|
31
+ puts %(The value is "#{config.activate_announcer_on_command_failure.inspect}")
32
+ end
33
+ """
34
+ Then I successfully run `cucumber`
35
+ Then the output should contain:
36
+ """
37
+ The value is "[:foo, :bar]"
38
+ """
@@ -20,3 +20,31 @@ Feature: Run commands
20
20
  When I run `cucumber`
21
21
  Then the features should all pass
22
22
 
23
+ Scenario: Activate desired announcers when running command fails
24
+ Given an executable named "bin/cli" with:
25
+ """
26
+ #!/bin/bash
27
+ echo "Hello, I'm STDOUT"
28
+ exit 1
29
+ """
30
+ And a file named "features/run.feature" with:
31
+ """
32
+ Feature: Run it
33
+ Scenario: Run command
34
+ When I successfully run `cli`
35
+ """
36
+ And I append to "features/support/env.rb" with:
37
+ """
38
+ Before do
39
+ aruba.config.activate_announcer_on_command_failure = [:stdout]
40
+ end
41
+ """
42
+ When I run `cucumber`
43
+ Then the features should not pass
44
+ And the output should contain:
45
+ """
46
+ <<-STDOUT
47
+ Hello, I'm STDOUT
48
+
49
+ STDOUT
50
+ """
@@ -0,0 +1,155 @@
1
+ Feature: Running shell commands
2
+
3
+ You can run an *ad hoc* script with the following steps:
4
+ - `When I run the following script:`
5
+
6
+ Or you can run shell commands with:
7
+ - `I run the following (bash|zsh|...shell)? commands`
8
+ - `I run the following (bash|zsh|...shell)? commands (in|with) \`interpreter\``
9
+ - `I run the following (bash|zsh|...shell)? commands (in|with) \`/path/to/interpreter\``
10
+
11
+ Background:
12
+ Given I use a fixture named "cli-app"
13
+
14
+ Scenario: Creating and running scripts
15
+ Given a file named "features/shell.feature" with:
16
+ """
17
+ Feature: Running scripts
18
+ Scenario: Running ruby script
19
+ When I run the following script:
20
+ \"\"\"bash
21
+ #!/usr/bin/env ruby
22
+
23
+ puts "Hello"
24
+ \"\"\"
25
+ Then the output should contain exactly "Hello"
26
+
27
+ Scenario: Running python script
28
+ When I run the following script:
29
+ \"\"\"bash
30
+ #!/usr/bin/env python
31
+
32
+ print("Hello")
33
+ \"\"\"
34
+ Then the output should contain exactly "Hello"
35
+ """
36
+ When I run `cucumber`
37
+ Then the features should all pass
38
+
39
+ Scenario: Running shell commands
40
+ Given a file named "features/shell.feature" with:
41
+ """
42
+ Feature: Running scripts
43
+ Scenario: Running shell commands
44
+ When I run the following commands:
45
+ \"\"\"bash
46
+ echo "Hello shell"
47
+ \"\"\"
48
+ Then the output should contain exactly "Hello shell"
49
+ """
50
+ When I run `cucumber`
51
+ Then the features should all pass
52
+
53
+ Scenario: Running bash commands
54
+ Given a file named "features/shell.feature" with:
55
+ """
56
+ Feature: Running scripts
57
+ Scenario: Running bash commands
58
+ When I run the following commands with `bash`:
59
+ \"\"\"bash
60
+ echo -n "Hello "
61
+ echo `echo bash` # subshell
62
+ \"\"\"
63
+ Then the output should contain exactly "Hello bash"
64
+ """
65
+ When I run `cucumber`
66
+ Then the features should all pass
67
+
68
+ Scenario: Running zsh commands
69
+ Given a file named "features/shell.feature" with:
70
+ """
71
+ Feature: Running zsh scripts
72
+ Scenario: Running zsh commands
73
+ When I run the following commands with `zsh`:
74
+ \"\"\"bash
75
+ echo "Hello \c"
76
+ echo $((2 + 2))
77
+ \"\"\"
78
+ Then the output should contain exactly "Hello 4"
79
+ """
80
+ When I run `cucumber`
81
+ Then the features should all pass
82
+
83
+ Scenario: Running ruby commands
84
+ Given a file named "features/shell.feature" with:
85
+ """
86
+ Feature: Running scripts
87
+ Scenario: Running ruby commands
88
+ When I run the following commands with `ruby`:
89
+ \"\"\"ruby
90
+ puts "Hello, Aruba!"
91
+ \"\"\"
92
+ Then the output should contain exactly "Hello, Aruba!"
93
+ """
94
+ When I run `cucumber`
95
+ Then the features should all pass
96
+
97
+ Scenario: Running python commands
98
+ Given a file named "features/shell.feature" with:
99
+ """
100
+ Feature: Running scripts
101
+ Scenario: Running ruby commands
102
+ When I run the following commands with `python`:
103
+ \"\"\"ruby
104
+ print("Hello, Aruba!")
105
+ \"\"\"
106
+ Then the output should contain exactly "Hello, Aruba!"
107
+ """
108
+ When I run `cucumber`
109
+ Then the features should all pass
110
+
111
+ Scenario: Running commands if full path to interpreter is given
112
+ Given a file named "features/shell.feature" with:
113
+ """
114
+ Feature: Running full path zsh
115
+ Scenario: Running zsh commands #1
116
+ When I run the following commands with `/bin/zsh`:
117
+ \"\"\"bash
118
+ echo "Hello \c"
119
+ echo $((6 - 2))
120
+ \"\"\"
121
+ Then the output should contain exactly "Hello 4"
122
+
123
+ Scenario: Running zsh commands #1
124
+ When I run the following commands in `/bin/zsh`:
125
+ \"\"\"bash
126
+ echo "Hello \c"
127
+ echo $((6 - 2))
128
+ \"\"\"
129
+ Then the output should contain exactly "Hello 4"
130
+ """
131
+ When I run `cucumber`
132
+ Then the features should all pass
133
+
134
+ Scenario: Running commands if only the name of interpreter is given
135
+ Given a file named "features/shell.feature" with:
136
+ """
137
+ Feature: Running full path zsh
138
+ Scenario: Running zsh commands #1
139
+ When I run the following commands with `zsh`:
140
+ \"\"\"bash
141
+ echo "Hello \c"
142
+ echo $((6 - 2))
143
+ \"\"\"
144
+ Then the output should contain exactly "Hello 4"
145
+
146
+ Scenario: Running zsh commands #2
147
+ When I run the following commands in `zsh`:
148
+ \"\"\"bash
149
+ echo "Hello \c"
150
+ echo $((6 - 2))
151
+ \"\"\"
152
+ Then the output should contain exactly "Hello 4"
153
+ """
154
+ When I run `cucumber`
155
+ Then the features should all pass