aruba 0.12.0 → 0.13.0

Sign up to get free protection for your applications and to get access to all the features.
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