aruba 0.9.0.pre → 0.9.0.pre2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (158) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +8 -3
  3. data/History.md +61 -19
  4. data/README.md +10 -6
  5. data/TODO.md +6 -1
  6. data/cucumber.yml +10 -6
  7. data/features/.nav +72 -0
  8. data/features/announce.feature +203 -0
  9. data/features/api/command/extract_text.feature +10 -0
  10. data/features/api/command/run.feature +6 -6
  11. data/features/api/command/stop_all_commands.feature +53 -0
  12. data/features/api/command/terminate_all_commands.feature +53 -0
  13. data/features/api/command/unescape_text.feature +12 -0
  14. data/features/api/command/which.feature +3 -3
  15. data/features/api/core/expand_path.feature +4 -4
  16. data/features/api/environment/append_environment_variable.feature +18 -8
  17. data/features/api/environment/prepend_environment_variable.feature +18 -8
  18. data/features/api/environment/set_environment_variable.feature +33 -16
  19. data/features/api/filesystem/cd.feature +23 -13
  20. data/features/api/filesystem/create_directory.feature +2 -2
  21. data/features/api/filesystem/disk_usage.feature +7 -6
  22. data/features/api/filesystem/does_exist.feature +2 -2
  23. data/features/api/filesystem/is_absolute.feature +2 -2
  24. data/features/api/filesystem/is_directory.feature +2 -2
  25. data/features/api/filesystem/is_file.feature +2 -2
  26. data/features/api/filesystem/is_relative.feature +2 -2
  27. data/features/api/filesystem/move.feature +119 -0
  28. data/features/cli/console.feature +3 -3
  29. data/features/commands/debug_command.feature +93 -0
  30. data/features/commands/environment_variables.feature +64 -0
  31. data/features/commands/flushing.feature +74 -0
  32. data/features/commands/interactive.feature +90 -0
  33. data/features/commands/output/all_output.feature +445 -0
  34. data/features/commands/output/stdout.feature +66 -0
  35. data/features/configuration/exit_timeout.feature +5 -5
  36. data/features/configuration/fixtures_directories.feature +3 -3
  37. data/features/configuration/fixtures_path_prefix.feature +1 -1
  38. data/features/configuration/home_directory.feature +4 -4
  39. data/features/configuration/io_timeout.feature +2 -2
  40. data/features/configuration/keep_ansi.feature +2 -2
  41. data/features/configuration/log_level.feature +3 -3
  42. data/features/configuration/physical_block_size.feature +3 -3
  43. data/features/configuration/usage.feature +159 -0
  44. data/features/core/cleanup_aruba_directory.feature +52 -0
  45. data/features/development/build.feature +16 -0
  46. data/features/development/test.feature +24 -0
  47. data/features/file_system_commands.feature +12 -12
  48. data/features/getting_started/supported_programming_languages.feature +89 -0
  49. data/features/hooks/after/command.feature +1 -1
  50. data/features/hooks/before/command.feature +2 -2
  51. data/features/matchers/collection/include_an_object.feature +72 -0
  52. data/features/matchers/timeouts.feature +2 -2
  53. data/features/output.feature +60 -181
  54. data/features/step_definitions/aruba_dev_steps.rb +17 -10
  55. data/features/step_definitions/hooks.rb +11 -0
  56. data/features/steps/commands/exit_statuses.feature +3 -3
  57. data/features/steps/commands/run.feature +0 -15
  58. data/features/steps/filesystem/copy.feature +45 -0
  59. data/features/steps/filesystem/create_directory.feature +47 -0
  60. data/features/steps/filesystem/create_file.feature +53 -0
  61. data/features/steps/filesystem/file_content.feature +1 -1
  62. data/features/steps/filesystem/move.feature +45 -0
  63. data/features/steps/filesystem/overwrite_file.feature +72 -0
  64. data/features/steps/filesystem/use_fixture.feature +77 -0
  65. data/features/usage/install.feature +8 -0
  66. data/{features/fixtures → fixtures}/cli-app/.gitignore +0 -0
  67. data/{features/fixtures → fixtures}/cli-app/.rspec +0 -0
  68. data/{features/fixtures → fixtures}/cli-app/README.md +0 -0
  69. data/{features/fixtures → fixtures}/cli-app/Rakefile +0 -0
  70. data/{features/fixtures → fixtures}/cli-app/bin/cli +0 -0
  71. data/{features/fixtures → fixtures}/cli-app/cli-app.gemspec +0 -0
  72. data/{features/fixtures → fixtures}/cli-app/features/support/env.rb +0 -0
  73. data/{features/fixtures → fixtures}/cli-app/lib/cli/app.rb +0 -0
  74. data/fixtures/cli-app/lib/cli/app/suppress_simple_cov_output.rb +15 -0
  75. data/{features/fixtures → fixtures}/cli-app/lib/cli/app/version.rb +0 -0
  76. data/{features/fixtures/empty-app → fixtures/cli-app}/script/console +3 -3
  77. data/{features/fixtures → fixtures}/cli-app/spec/spec_helper.rb +0 -0
  78. data/{features/fixtures → fixtures}/cli-app/spec/support/aruba.rb +0 -0
  79. data/{features/fixtures → fixtures}/copy/file.txt +0 -0
  80. data/{features/fixtures → fixtures}/empty-app/.gitignore +0 -0
  81. data/{features/fixtures → fixtures}/empty-app/.rspec +0 -0
  82. data/{features/fixtures → fixtures}/empty-app/README.md +0 -0
  83. data/{features/fixtures → fixtures}/empty-app/Rakefile +0 -0
  84. data/{features/fixtures → fixtures}/empty-app/bin/cli +0 -0
  85. data/{features/fixtures → fixtures}/empty-app/cli-app.gemspec +0 -0
  86. data/{features/fixtures → fixtures}/empty-app/lib/cli/app.rb +0 -0
  87. data/{features/fixtures → fixtures}/empty-app/lib/cli/app/version.rb +0 -0
  88. data/{features/fixtures/cli-app → fixtures/empty-app}/script/console +3 -3
  89. data/{features/fixtures → fixtures}/empty-app/spec/spec_helper.rb +0 -0
  90. data/{features/fixtures → fixtures}/fixtures-app/test.txt +0 -0
  91. data/fixtures/getting-started-app/.gitignore +4 -0
  92. data/fixtures/getting-started-app/Gemfile +4 -0
  93. data/fixtures/getting-started-app/README.md +3 -0
  94. data/fixtures/getting-started-app/features/support/env.rb +1 -0
  95. data/{features/fixtures → fixtures}/spawn_process/stderr.sh +0 -0
  96. data/lib/aruba/announcer.rb +6 -2
  97. data/lib/aruba/api.rb +0 -16
  98. data/lib/aruba/api/command.rb +64 -266
  99. data/lib/aruba/api/core.rb +24 -26
  100. data/lib/aruba/api/deprecated.rb +370 -12
  101. data/lib/aruba/api/filesystem.rb +64 -15
  102. data/lib/aruba/aruba_path.rb +4 -0
  103. data/lib/aruba/config.rb +1 -1
  104. data/lib/aruba/cucumber.rb +5 -449
  105. data/lib/aruba/cucumber/command.rb +378 -0
  106. data/lib/aruba/cucumber/core.rb +29 -0
  107. data/lib/aruba/cucumber/environment.rb +30 -0
  108. data/lib/aruba/cucumber/file.rb +210 -0
  109. data/lib/aruba/cucumber/hooks.rb +11 -14
  110. data/lib/aruba/cucumber/rvm.rb +3 -0
  111. data/lib/aruba/matchers/base/base_matcher.rb +94 -0
  112. data/lib/aruba/matchers/collection.rb +1 -0
  113. data/lib/aruba/matchers/collection/all_objects.rb +2 -0
  114. data/lib/aruba/matchers/collection/include_an_object.rb +120 -0
  115. data/lib/aruba/matchers/command/be_successfully_executed.rb +3 -3
  116. data/lib/aruba/matchers/command/have_exit_status.rb +2 -11
  117. data/lib/aruba/matchers/command/have_finished_in_time.rb +5 -5
  118. data/lib/aruba/matchers/command/have_output.rb +46 -0
  119. data/lib/aruba/matchers/command/have_output_on_stderr.rb +42 -0
  120. data/lib/aruba/matchers/command/have_output_on_stdout.rb +42 -0
  121. data/lib/aruba/matchers/command/have_output_size.rb +28 -0
  122. data/lib/aruba/matchers/directory/be_an_existing_directory.rb +1 -1
  123. data/lib/aruba/matchers/file/be_an_existing_file.rb +1 -1
  124. data/lib/aruba/matchers/file/have_file_content.rb +1 -1
  125. data/lib/aruba/matchers/file/have_file_size.rb +2 -2
  126. data/lib/aruba/matchers/file/have_same_file_content.rb +1 -1
  127. data/lib/aruba/matchers/path/have_permissions.rb +1 -1
  128. data/lib/aruba/platforms/aruba_file_creator.rb +2 -3
  129. data/lib/aruba/platforms/aruba_fixed_size_file_creator.rb +2 -3
  130. data/lib/aruba/platforms/determine_disk_usage.rb +23 -0
  131. data/lib/aruba/platforms/determine_file_size.rb +13 -0
  132. data/lib/aruba/platforms/disk_usage_calculator.rb +11 -0
  133. data/lib/aruba/platforms/local_environment.rb +15 -0
  134. data/lib/aruba/platforms/unix_environment_variables.rb +1 -1
  135. data/lib/aruba/platforms/unix_platform.rb +35 -14
  136. data/lib/aruba/process_monitor.rb +53 -7
  137. data/lib/aruba/processes/basic_process.rb +25 -5
  138. data/lib/aruba/processes/debug_process.rb +27 -25
  139. data/lib/aruba/processes/in_process.rb +7 -22
  140. data/lib/aruba/processes/spawn_process.rb +74 -31
  141. data/lib/aruba/rspec.rb +1 -6
  142. data/lib/aruba/version.rb +1 -1
  143. data/script/console +0 -1
  144. data/spec/aruba/api/environment/restore_env_spec.rb +65 -0
  145. data/spec/aruba/api/environment/set_env_spec.rb +42 -0
  146. data/spec/aruba/api/filesystem/file_size_spec.rb +28 -0
  147. data/spec/aruba/api_spec.rb +10 -7
  148. data/spec/aruba/matchers/command/have_output_size_spec.rb +25 -0
  149. data/spec/aruba/matchers/command_spec.rb +135 -4
  150. data/spec/aruba/spawn_process_spec.rb +1 -1
  151. metadata +107 -65
  152. data/.nav +0 -12
  153. data/features/debug.feature +0 -15
  154. data/features/fixtures/cli-app/spec/cli/app_spec.rb +0 -7
  155. data/features/flushing.feature +0 -26
  156. data/features/interactive.feature +0 -66
  157. data/features/no_clobber.feature +0 -25
  158. data/lib/aruba/disk_usage_calculator.rb +0 -7
@@ -4,18 +4,18 @@ Feature: file system commands
4
4
  As a developer using Cucumber
5
5
  I want to create temporary files
6
6
 
7
- Scenario: create a dir
8
- Given a directory named "foo/bar"
9
- When I run `file foo/bar`
10
- Then the stdout should contain "foo/bar: directory"
11
-
12
- Scenario: create a file
13
- Given a file named "foo/bar/example.txt" with:
14
- """
15
- hello world
16
- """
17
- When I run `cat foo/bar/example.txt`
18
- Then the output should contain exactly "hello world"
7
+ # Scenario: create a dir
8
+ # Given a directory named "foo/bar"
9
+ # When I run `file foo/bar`
10
+ # Then the stdout should contain "foo/bar: directory"
11
+
12
+ # Scenario: create a file
13
+ # Given a file named "foo/bar/example.txt" with:
14
+ # """
15
+ # hello world
16
+ # """
17
+ # When I run `cat foo/bar/example.txt`
18
+ # Then the output should contain exactly "hello world"
19
19
 
20
20
  Scenario: a file does not exist
21
21
  Given a file named "example.txt" does not exist
@@ -0,0 +1,89 @@
1
+ Feature: Supported programming languages
2
+
3
+ As long as you've got the neccessary programs, libraries, runtime
4
+ environments, interpreters installed, it doesn't matter in which programming
5
+ language your commandline application is implemented.
6
+
7
+ Below you find some examples of the "Hello, Aruba!"-application implemented
8
+ with different programming languages. This is NOT an exclusive list. Every
9
+ commandline application should run with `aruba`.
10
+
11
+ Background:
12
+ Given I use a fixture named "getting-started-app"
13
+ And a file named "features/hello_aruba.feature" with:
14
+ """
15
+ Feature: Getting Started With Aruba
16
+ Scenario: First Run of Command
17
+ Given I successfully run `cli`
18
+ Then the output should contain:
19
+ \"\"\"
20
+ Hello, Aruba!
21
+ \"\"\"
22
+ """
23
+
24
+ Scenario: Bash Program
25
+ Given an executable named "bin/cli" with:
26
+ """bash
27
+ #!/usr/bin/env bash
28
+
29
+ echo "Hello, Aruba!"
30
+ """
31
+ When I successfully run `cucumber`
32
+ Then the features should all pass
33
+
34
+ Scenario: Ruby Program
35
+ Given an executable named "bin/cli" with:
36
+ """ruby
37
+ #!/usr/bin/env ruby
38
+
39
+ puts "Hello, Aruba!"
40
+ """
41
+ When I successfully run `cucumber`
42
+ Then the features should all pass
43
+
44
+ Scenario: Python Program
45
+ Given an executable named "bin/cli" with:
46
+ """python
47
+ #!/usr/bin/env python
48
+
49
+ print("Hello, Aruba!")
50
+ """
51
+ When I successfully run `cucumber`
52
+ Then the features should all pass
53
+
54
+ Scenario: Perl Program
55
+ Given an executable named "bin/cli" with:
56
+ """perl
57
+ #!/usr/bin/env perl
58
+
59
+ print "Hello, Aruba!\n";
60
+ """
61
+ When I successfully run `cucumber`
62
+ Then the features should all pass
63
+
64
+ Scenario: Java Program
65
+
66
+ It's even possible to compile and run Java programs with Aruba.
67
+
68
+ Given a file named "features/hello_aruba.feature" with:
69
+ """cucumber
70
+ Feature: Getting Started With Aruba
71
+ Scenario: First Run of Command
72
+ Given a file named "tmp/HelloArubaApp.java" with:
73
+ \"\"\"
74
+ class HelloArubaApp {
75
+ public static void main(String[] args) {
76
+ System.out.println("Hello, Aruba!");
77
+ }
78
+ }
79
+ \"\"\"
80
+ And I successfully run `javac tmp/HelloArubaApp.java`
81
+ And I cd to "tmp/"
82
+ And I successfully run `java HelloArubaApp`
83
+ Then the output should contain:
84
+ \"\"\"
85
+ Hello, Aruba!
86
+ \"\"\"
87
+ """
88
+ When I successfully run `cucumber`
89
+ Then the features should all pass
@@ -22,7 +22,7 @@ Feature: After command hooks
22
22
  RSpec.describe 'Hooks', :type => :aruba do
23
23
  before(:each) { run_simple 'echo running' }
24
24
 
25
- it { expect(last_command.stdout.chomp).to eq 'running' }
25
+ it { expect(last_command_started.stdout.chomp).to eq 'running' }
26
26
  end
27
27
  """
28
28
  When I run `rspec`
@@ -24,7 +24,7 @@ Feature: before_cmd hooks
24
24
  RSpec.describe 'Hooks', :type => :aruba do
25
25
  before(:each) { run_simple 'echo running' }
26
26
 
27
- it { expect(last_command.stdout.chomp).to eq 'running' }
27
+ it { expect(last_command_started.stdout.chomp).to eq 'running' }
28
28
  end
29
29
  """
30
30
  When I run `rspec`
@@ -50,7 +50,7 @@ Feature: before_cmd hooks
50
50
  RSpec.describe 'Hooks', :type => :aruba do
51
51
  before(:each) { run_simple 'echo running' }
52
52
 
53
- it { expect(last_command.stdout.chomp).to eq 'running' }
53
+ it { expect(last_command_started.stdout.chomp).to eq 'running' }
54
54
  end
55
55
  """
56
56
  When I run `rspec`
@@ -0,0 +1,72 @@
1
+ Feature: `include_an_object` Matcher
2
+
3
+ Use the `include_an_object` matcher to specify that a collection's objects include_an_object pass an expected matcher.
4
+ This works on include_an_object enumerable object.
5
+
6
+ ```ruby
7
+ expect([1, 4, 5]).to include_an_object( be_odd )
8
+ expect([1, 3, 'a']).to include_an_object( be_an(Integer) )
9
+ expect([1, 3, 11]).to include_an_object( be < 10 )
10
+ ```
11
+
12
+ The matcher also supports compound matchers:
13
+
14
+ ```ruby
15
+ expect([1, 'a', 11]).to include_an_object( be_odd.and be < 10 )
16
+ ```
17
+
18
+ Background:
19
+ Given I use a fixture named "cli-app"
20
+
21
+ Scenario: Array usage
22
+ Given a file named "spec/array_include_an_object_matcher_spec.rb" with:
23
+ """ruby
24
+ require 'spec_helper'
25
+
26
+ RSpec.describe [1, 4, 'a', 11] do
27
+ it { is_expected.to include_an_object( be_odd ) }
28
+ it { is_expected.to include_an_object( be_an(Integer) ) }
29
+ it { is_expected.to include_an_object( be < 10 ) }
30
+ it { is_expected.not_to include_an_object( eq 'b' ) }
31
+ end
32
+
33
+ RSpec.describe [14, 'a'] do
34
+ it { is_expected.to include_an_object( be_odd ) }
35
+ it { is_expected.to include_an_object( be_an(Symbol) ) }
36
+ it { is_expected.to include_an_object( be < 10 ) }
37
+ it { is_expected.not_to include_an_object( eq 'a' ) }
38
+ end
39
+ """
40
+ When I run `rspec`
41
+ Then the output should contain all of these lines:
42
+ | 8 examples, 4 failures |
43
+ | expected [14, "a"] to include an object be odd |
44
+ | expected [14, "a"] to include an object be a kind of Symbol |
45
+ | expected [14, "a"] to include an object be < 10 |
46
+ | expected [14, "a"] not to include an object eq "a" |
47
+
48
+ Scenario: Compound Matcher Usage
49
+ Given a file named "spec/compound_include_an_object_matcher_spec.rb" with:
50
+ """ruby
51
+ require 'spec_helper'
52
+
53
+ RSpec.describe [1, 'anything', 'something'] do
54
+ it { is_expected.to include_an_object( be_a(String).and include("thing") ) }
55
+ it { is_expected.to include_an_object( be_a(String).and end_with("g") ) }
56
+ it { is_expected.to include_an_object( start_with("s").or include("y") ) }
57
+ it { is_expected.not_to include_an_object( start_with("b").or include("b") ) }
58
+ end
59
+
60
+ RSpec.describe ['anything', 'something'] do
61
+ it { is_expected.to include_an_object( be_a(Integer).and include("thing") ) }
62
+ it { is_expected.to include_an_object( be_a(Integer).and end_with("z") ) }
63
+ it { is_expected.to include_an_object( start_with("z").or include("1") ) }
64
+ it { is_expected.not_to include_an_object( start_with("a").or include("some") ) }
65
+ end
66
+ """
67
+ When I run `rspec`
68
+ Then the output should contain all of these lines:
69
+ | 8 examples, 4 failures |
70
+ | expected ["anything", "something"] to include an object be a kind of Integer and include "thing" |
71
+ | expected ["anything", "something"] to include an object be a kind of Integer and end with "z" |
72
+ | expected ["anything", "something"] to include an object start with "z" or include "1" |
@@ -20,7 +20,7 @@ Feature: Check if a timeout occured during command execution
20
20
 
21
21
  before(:each) { run('cli') }
22
22
 
23
- it { expect(last_command).to run_too_long }
23
+ it { expect(last_command_started).to run_too_long }
24
24
  end
25
25
  """
26
26
  When I run `rspec`
@@ -41,7 +41,7 @@ Feature: Check if a timeout occured during command execution
41
41
 
42
42
  before(:each) { run('cli') }
43
43
 
44
- it { expect(last_command).to have_finished_in_time }
44
+ it { expect(last_command_started).to have_finished_in_time }
45
45
  end
46
46
  """
47
47
  When I run `rspec`
@@ -1,184 +1,47 @@
1
- Feature: Output
1
+ Feature: All output of commands which were executed
2
2
 
3
3
  In order to specify expected output
4
4
  As a developer using Cucumber
5
5
  I want to use the "the output should contain" step
6
6
 
7
- @posix
8
- Scenario: Detect subset of one-line output
9
- When I run `printf 'hello world'`
10
- Then the output should contain "hello world"
7
+ Background:
8
+ Given I use a fixture named "cli-app"
9
+
10
+ Scenario: Detect output from all processes normal and interactive ones
11
+ Given an executable named "bin/cli1" with:
12
+ """
13
+ #!/usr/bin/env bash
14
+ echo 'This is cli1'
15
+ """
16
+ And an executable named "bin/cli2" with:
17
+ """
18
+ #!/usr/bin/env ruby
19
+
20
+ while input = gets do
21
+ break if "" == input
22
+ puts input
23
+ end
24
+ """
25
+ And a file named "features/output.feature" with:
26
+ """
27
+ Feature: Run command
28
+ Scenario: Run command
29
+ When I run `cli1`
30
+ When I run `cli2` interactively
31
+ And I type "This is cli2"
32
+ And I type ""
33
+ Then the stdout should contain exactly:
34
+ \"\"\"
35
+ This is cli1
36
+ \"\"\"
37
+ And the stdout should contain exactly:
38
+ \"\"\"
39
+ This is cli2
40
+ \"\"\"
41
+ """
42
+ When I run `cucumber`
43
+ Then the features should all pass
11
44
 
12
- Scenario: Detect absence of one-line output
13
- When I run `printf "hello world"`
14
- Then the output should not contain "good-bye"
15
-
16
- Scenario: Detect subset of multiline output
17
- When I run `printf "hello\nworld"`
18
- Then the output should contain:
19
- """
20
- hello
21
- """
22
-
23
- Scenario: Detect absence of multiline output
24
- When I run `printf "hello\nworld"`
25
- Then the output should not contain:
26
- """
27
- good-bye
28
- """
29
-
30
- @posix
31
- Scenario: Detect exact one-line output
32
- When I run `printf "hello world"`
33
- Then the output should contain exactly:
34
- """
35
- hello world
36
- """
37
-
38
- @ansi
39
- @posix
40
- Scenario: Detect exact one-line output with ANSI output
41
- When I run `printf "\e[36mhello world\e[0m"`
42
- Then the output should contain exactly:
43
- """
44
- \e[36mhello world\e[0m
45
- """
46
-
47
- @posix
48
- Scenario: Detect exact one-line output with ANSI output stripped by default
49
- When I run `printf "\e[36mhello world\e[0m"`
50
- Then the output should contain exactly:
51
- """
52
- hello world
53
- """
54
-
55
- @posix
56
- Scenario: Detect exact multiline output
57
- When I run `printf "hello\nworld"`
58
- Then the output should contain exactly:
59
- """
60
- hello
61
- world
62
- """
63
-
64
- @announce
65
- Scenario: Detect subset of one-line output with regex
66
- When I run `printf "hello, ruby"`
67
- Then the output should contain "ruby"
68
- And the output should match /^hello(, world)?/
69
-
70
- @announce
71
- @posix
72
- Scenario: Detect subset of multiline output with regex
73
- When I run `printf "hello\nworld\nextra line1\nextra line2\nimportant line"`
74
- Then the output should match:
75
- """
76
- he..o
77
- wor.d
78
- .*
79
- important line
80
- """
81
-
82
- @announce
83
- Scenario: Negative matching of one-line output with regex
84
- When I run `printf "hello, ruby"`
85
- Then the output should contain "ruby"
86
- And the output should not match /ruby is a better perl$/
87
-
88
- @announce
89
- @posix
90
- Scenario: Negative matching of multiline output with regex
91
- When I run `printf "hello\nworld\nextra line1\nextra line2\nimportant line"`
92
- Then the output should not match:
93
- """
94
- ruby
95
- is
96
- a
97
- .*
98
- perl
99
- """
100
-
101
- @announce
102
- @posix
103
- Scenario: Match passing exit status and partial output
104
- When I run `printf "hello\nworld"`
105
- Then it should pass with:
106
- """
107
- hello
108
- """
109
-
110
- @posix
111
- Scenario: Match passing exit status and exact output
112
- When I run `printf "hello\nworld"`
113
- Then it should pass with exactly:
114
- """
115
- hello
116
- world
117
- """
118
-
119
- @announce-stdout
120
- Scenario: Match failing exit status and partial output
121
- When I run `bash -c '(printf "hello\nworld";exit 99)'`
122
- Then it should fail with:
123
- """
124
- hello
125
- """
126
-
127
- @posix
128
- Scenario: Match failing exit status and exact output
129
- When I run `bash -c '(printf "hello\nworld";exit 99)'`
130
- Then it should fail with exactly:
131
- """
132
- hello
133
- world
134
- """
135
-
136
- @announce-stdout
137
- @posix
138
- Scenario: Match failing exit status and output with regex
139
- When I run `bash -c '(printf "hello\nworld";exit 99)'`
140
- Then it should fail with regex:
141
- """
142
- hello\s*world
143
- """
144
-
145
- @announce-cmd
146
- @posix
147
- Scenario: Match output in stdout
148
- When I run `printf "hello\nworld"`
149
- Then the stdout should contain "hello"
150
- Then the stderr should not contain "hello"
151
-
152
- @announce
153
- Scenario: Match output on several lines
154
- When I run `printf 'GET /'`
155
- Then the stdout should contain:
156
- """
157
- GET /
158
- """
159
-
160
- @posix
161
- Scenario: Match output on several lines using quotes
162
- When I run `printf 'GET "/"'`
163
- Then the stdout should contain:
164
- """
165
- GET "/"
166
- """
167
-
168
- @posix
169
- Scenario: Detect output from all processes
170
- When I run `printf "hello world!\n"`
171
- And I run `cat` interactively
172
- And I type "hola"
173
- And I type ""
174
- Then the output should contain exactly:
175
- """
176
- hello world!
177
- hola
178
-
179
- """
180
-
181
- @posix
182
45
  Scenario: Detect stdout from all processes
183
46
  When I run `printf "hello world!\n"`
184
47
  And I run `cat` interactively
@@ -187,22 +50,38 @@ Feature: Output
187
50
  Then the stdout should contain:
188
51
  """
189
52
  hello world!
53
+ """
54
+ And the stdout should contain:
55
+ """
190
56
  hola
191
-
192
57
  """
193
58
  And the stderr should not contain anything
194
59
 
195
- @posix
196
60
  Scenario: Detect stderr from all processes
197
61
  When I run `bash -c 'printf "hello world!\n" >&2'`
198
62
  And I run `bash -c 'cat >&2 '` interactively
199
63
  And I type "hola"
200
64
  And I type ""
201
65
  Then the stderr should contain:
202
- """
203
- hello world!
204
- hola
205
- """
66
+ """
67
+ hello world!
68
+ """
69
+ And the stderr should contain:
70
+ """
71
+ hola
72
+ """
73
+ And the stdout should not contain anything
74
+
75
+ Scenario: Detect stderr from all processes (deprecated)
76
+ When I run `bash -c 'printf "hello world!\n" >&2'`
77
+ And I run `bash -c 'cat >&2 '` interactively
78
+ And I type "hola"
79
+ And I type ""
80
+ Then the stderr should contain:
81
+ """
82
+ hello world!
83
+ hola
84
+ """
206
85
  And the stdout should not contain anything
207
86
 
208
87
  Scenario: Detect output from named source