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
@@ -0,0 +1,119 @@
1
+ Feature: Move file/directory
2
+
3
+ If you need to move some files/directories you can use the `#move`-method
4
+ command. If multiple arguments are given, the last one needs to be a directory.
5
+
6
+ Background:
7
+ Given I use a fixture named "cli-app"
8
+
9
+ Scenario: Non-existing destination
10
+ Given a file named "spec/cd_spec.rb" with:
11
+ """ruby
12
+ require 'spec_helper'
13
+
14
+ RSpec.describe 'Move', :type => :aruba do
15
+ let(:old_location) { 'old_dir.d' }
16
+ let(:new_location) { 'new_dir.d' }
17
+
18
+ before(:each) do
19
+ create_directory old_location
20
+ move old_location, new_location
21
+ end
22
+
23
+ it { expect(new_location).to be_an_existing_directory }
24
+ end
25
+ """
26
+ When I run `rspec`
27
+ Then the specs should all pass
28
+
29
+ Scenario: Existing destination
30
+ Given a file named "spec/cd_spec.rb" with:
31
+ """ruby
32
+ require 'spec_helper'
33
+
34
+ RSpec.describe 'Move', :type => :aruba do
35
+ let(:old_location) { 'old_dir.d' }
36
+ let(:new_location) { 'new_dir.d' }
37
+
38
+ before(:each) do
39
+ create_directory old_location
40
+ create_directory new_location
41
+
42
+ move old_location, new_location
43
+ end
44
+
45
+ it { expect(File.join(new_location, old_location)).to be_an_existing_directory }
46
+ end
47
+ """
48
+ When I run `rspec`
49
+ Then the specs should all pass
50
+
51
+ Scenario: Source is fixture path
52
+ Given a file named "spec/cd_spec.rb" with:
53
+ """ruby
54
+ require 'spec_helper'
55
+
56
+ RSpec.describe 'Move', :type => :aruba do
57
+ let(:old_location) { '%/old_dir.d' }
58
+ let(:new_location) { 'new_dir.d' }
59
+
60
+ it { expect { move old_location, new_location }.to raise_error ArgumentError, /fixture/ }
61
+ end
62
+ """
63
+ When I run `rspec`
64
+ Then the specs should all pass
65
+
66
+ Scenario: Destination is fixture path
67
+ Given a file named "spec/cd_spec.rb" with:
68
+ """ruby
69
+ require 'spec_helper'
70
+
71
+ RSpec.describe 'Move', :type => :aruba do
72
+ let(:old_location) { 'old_dir.d' }
73
+ let(:new_location) { '%/new_dir.d' }
74
+
75
+ it { expect { move old_location, new_location }.to raise_error ArgumentError, /fixture/ }
76
+ end
77
+ """
78
+ When I run `rspec`
79
+ Then the specs should all pass
80
+
81
+ Scenario: Multiple sources and destination is directory
82
+ Given a file named "spec/cd_spec.rb" with:
83
+ """ruby
84
+ require 'spec_helper'
85
+
86
+ RSpec.describe 'Move', :type => :aruba do
87
+ let(:old_location) { %w(old_dir1.d old_dir2.d) }
88
+ let(:new_location) { 'new_dir.d' }
89
+
90
+ before :each do
91
+ old_location.each { |l| create_directory l }
92
+ move old_location, new_location
93
+ end
94
+
95
+ it { expect(old_location.map { |l| File.join(new_location, l) }).to all be_an_existing_directory }
96
+ end
97
+ """
98
+ When I run `rspec`
99
+ Then the specs should all pass
100
+
101
+ Scenario: Multiple sources and destination is file
102
+ Given a file named "spec/cd_spec.rb" with:
103
+ """ruby
104
+ require 'spec_helper'
105
+
106
+ RSpec.describe 'Move', :type => :aruba do
107
+ let(:old_location) { %w(old_dir1.d old_dir2.d) }
108
+ let(:new_location) { 'new_file.txt' }
109
+
110
+ before :each do
111
+ old_location.each { |l| create_directory l }
112
+ touch new_location
113
+ end
114
+
115
+ it { expect { move old_location, new_location }.to raise_error ArgumentError, /Multiple sources/ }
116
+ end
117
+ """
118
+ When I run `rspec`
119
+ Then the specs should all pass
@@ -11,7 +11,7 @@ Feature: Aruba Console
11
11
  aruba:001:0>
12
12
  """
13
13
 
14
- @ignore-platform-java
14
+ @unsupported-on-platform-java
15
15
  Scenario: Show help
16
16
  Given I run `aruba console` interactively
17
17
  And I type "aruba_help"
@@ -29,7 +29,7 @@ Feature: Aruba Console
29
29
  Documentation:
30
30
  """
31
31
 
32
- @ignore-platform-java
32
+ @unsupported-on-platform-java
33
33
  Scenario: Show methods
34
34
  Given I run `aruba console` interactively
35
35
  And I type "aruba_methods"
@@ -43,7 +43,7 @@ Feature: Aruba Console
43
43
  * setup_aruba
44
44
  """
45
45
 
46
- @ignore-platform-java
46
+ @unsupported-on-platform-java
47
47
  Scenario: Has history
48
48
  Given I run `aruba console` interactively
49
49
  And I type "aruba_methods"
@@ -0,0 +1,93 @@
1
+ Feature: Debug your command in cucumber-test-run
2
+
3
+ As a developer
4
+ I want to use some debugger in my code and therefor need system() to execute my program
5
+ In order to find a bug
6
+
7
+ Background:
8
+ Given I use a fixture named "cli-app"
9
+ And the default aruba exit timeout is 60 seconds
10
+
11
+ Scenario: Can handle exit status 0
12
+ Given an executable named "bin/cli" with:
13
+ """bash
14
+ #!/usr/bin/env bash
15
+
16
+ exit 0
17
+ """
18
+ And a file named "features/debug.feature" with:
19
+ """cucumber
20
+ Feature: Exit status in debug environment
21
+
22
+ @debug
23
+ Scenario: Run program with debug code
24
+ When I run `cli`
25
+ Then the exit status should be 0
26
+ """
27
+ When I successfully run `cucumber`
28
+ Then the features should all pass
29
+
30
+ Scenario: Can handle exit status 1
31
+ Given an executable named "bin/cli" with:
32
+ """bash
33
+ #!/usr/bin/env bash
34
+
35
+ exit 1
36
+ """
37
+ And a file named "features/debug.feature" with:
38
+ """cucumber
39
+ Feature: Exit status in debug environment
40
+
41
+ @debug
42
+ Scenario: Run program with debug code
43
+ When I run `cli`
44
+ Then the exit status should be 1
45
+ """
46
+ When I successfully run `cucumber`
47
+ Then the features should all pass
48
+
49
+ @unsupported-on-ruby-older-193
50
+ Scenario: You can use a debug repl in your cli program
51
+
52
+ If you want to debug a strange error, which only occures in one of your
53
+ `cucumber`-tests, the `@debug`-tag becomes handy. You can add `@debug` in
54
+ front of your feature/scenario to make `binding.pry` or `byebug` work in
55
+ your program.
56
+
57
+ Please make sure, that there's a statement after the `binding.pry`-call.
58
+ Otherwise you might not get an interactive shell, because your program will
59
+ just exit.
60
+
61
+ We are going to demonstrate this using `pry`, but any other interactive
62
+ debugger for any other programming language should also work.
63
+
64
+ Given an executable named "bin/cli" with:
65
+ """ruby
66
+ #!/usr/bin/env ruby
67
+
68
+ $stderr.sync = true
69
+ $stdout.sync = true
70
+
71
+ require 'pry'
72
+ binding.pry
73
+
74
+ exit 0
75
+ """
76
+ And a file named "features/debug.feature" with:
77
+ """cucumber
78
+ Feature: Exit status in debug environment
79
+
80
+ @debug
81
+ Scenario: Run program with debug code
82
+ When I run `cli`
83
+ Then the exit status should be 0
84
+ """
85
+ When I run `cucumber` interactively
86
+ And I stop the command started last if output contains:
87
+ """
88
+ pry
89
+ """
90
+ Then the output should contain:
91
+ """
92
+ binding.pry
93
+ """
@@ -0,0 +1,64 @@
1
+ Feature: Modify environment variables
2
+
3
+ In order to test command line applications which make use of environment variables
4
+ As a developer using Cucumber
5
+ I want to use the command environment variable step
6
+
7
+ Background:
8
+ Given I use a fixture named "cli-app"
9
+
10
+ Scenario: Change/Set value of arbitrary environment variable
11
+ Given an executable named "bin/cli" with:
12
+ """ruby
13
+ #!/usr/bin/env ruby
14
+
15
+ puts ENV['LONG_LONG_VARIABLE']
16
+ """
17
+ And a file named "features/environment_variable.feature" with:
18
+ """cucumber
19
+ Feature: Flushing output
20
+ Scenario: Run command
21
+ Given I set the environment variables to:
22
+ | variable | value |
23
+ | LONG_LONG_VARIABLE | long_value |
24
+ When I run `cli`
25
+ Then the output should contain "long_value"
26
+ """
27
+ When I run `cucumber`
28
+ Then the features should all pass
29
+
30
+ Scenario: Change the HOME-variable of current user during test using custom step
31
+ Given an executable named "bin/cli" with:
32
+ """ruby
33
+ #!/usr/bin/env ruby
34
+
35
+ puts File.expand_path('~/')
36
+ """
37
+ And a file named "features/home_directory.feature" with:
38
+ """cucumber
39
+ Feature: Run command with different home directory
40
+ Scenario: Run command
41
+ Given a mocked home directory
42
+ When I run `cli`
43
+ Then the output should contain "tmp/aruba"
44
+ """
45
+ When I run `cucumber`
46
+ Then the features should all pass
47
+
48
+ Scenario: Change the HOME-variable of current user during test using tag
49
+ Given an executable named "bin/cli" with:
50
+ """ruby
51
+ #!/usr/bin/env ruby
52
+
53
+ puts File.expand_path('~/')
54
+ """
55
+ And a file named "features/home_directory.feature" with:
56
+ """cucumber
57
+ Feature: Run command
58
+ @mocked_home_directory
59
+ Scenario: Run command
60
+ When I run `cli`
61
+ Then the output should contain "tmp/aruba"
62
+ """
63
+ When I run `cucumber`
64
+ Then the features should all pass
@@ -0,0 +1,74 @@
1
+ Feature: Flushing the output of your application
2
+
3
+ In order to test processes that output a lot of data
4
+ As a developer using Aruba
5
+ I want to make sure that large amounts of output aren't buffered
6
+
7
+ Background:
8
+ Given I use a fixture named "cli-app"
9
+
10
+ Scenario: A little output
11
+ Given an executable named "bin/cli" with:
12
+ """bash
13
+ #!/usr/bin/env bash
14
+
15
+ for ((c=0; c<256; c = c+1)); do
16
+ echo -n "a"
17
+ done
18
+ """
19
+ And a file named "features/flushing.feature" with:
20
+ """cucumber
21
+ Feature: Flushing output
22
+ Scenario: Run command
23
+ When I run `cli`
24
+ Then the output should contain "a"
25
+ And the output should be 256 bytes long
26
+ And the exit status should be 0
27
+ """
28
+ When I run `cucumber`
29
+ Then the features should all pass
30
+
31
+ Scenario: Tons of output
32
+ Given the default aruba exit timeout is 10 seconds
33
+ And an executable named "bin/cli" with:
34
+ """bash
35
+ #!/usr/bin/env bash
36
+
37
+ for ((c=0; c<65536; c = c+1)); do
38
+ echo -n "a"
39
+ done
40
+ """
41
+ And a file named "features/flushing.feature" with:
42
+ """cucumber
43
+ Feature: Flushing output
44
+ Scenario: Run command
45
+ When I run `cli`
46
+ Then the output should contain "a"
47
+ And the output should be 65536 bytes long
48
+ And the exit status should be 0
49
+ """
50
+ When I run `cucumber`
51
+ Then the features should all pass
52
+
53
+ Scenario: Tons of interactive output
54
+ Given the default aruba exit timeout is 10 seconds
55
+ And an executable named "bin/cli" with:
56
+ """bash
57
+ #!/usr/bin/env bash
58
+
59
+ read size; for ((c=0; c<$size; c = c+1)); do
60
+ echo -n "a"
61
+ done
62
+ """
63
+ And a file named "features/flushing.feature" with:
64
+ """cucumber
65
+ Feature: Flushing output
66
+ Scenario: Run command
67
+ When I run `cli` interactively
68
+ And I type "65536"
69
+ Then the output should contain "a"
70
+ And the output should be 65536 bytes long
71
+ And the exit status should be 0
72
+ """
73
+ When I run `cucumber`
74
+ Then the features should all pass
@@ -0,0 +1,90 @@
1
+ Feature: Interactive process control
2
+
3
+ In order to test interactive command line applications
4
+ As a developer using Cucumber
5
+ I want to use the interactive session steps
6
+
7
+ Background:
8
+ Given I use a fixture named "cli-app"
9
+
10
+ @wip-jruby-java-1.6
11
+ Scenario: Running ruby interactively
12
+ Given an executable named "bin/cli" with:
13
+ """bash
14
+ #!/usr/bin/env ruby
15
+
16
+ while res = gets.chomp
17
+ break if res == "quit"
18
+ puts res.reverse
19
+ end
20
+ """
21
+ And a file named "features/interactive.feature" with:
22
+ """cucumber
23
+ Feature: Run command
24
+ Scenario: Run command
25
+ When I run `cli` interactively
26
+ And I type "hello, world"
27
+ And I type "quit"
28
+ Then it should pass with "dlrow ,olleh"
29
+ """
30
+ When I run `cucumber`
31
+ Then the features should all pass
32
+
33
+ @posix
34
+ Scenario: Running a native binary interactively
35
+ Given a file named "features/interactive.feature" with:
36
+ """cucumber
37
+ Feature: Run command
38
+ Scenario: Run command
39
+ When I run `cat` interactively
40
+ And I type "Hello, world"
41
+ And I type ""
42
+ Then the output should contain "Hello, world"
43
+ """
44
+ When I run `cucumber`
45
+ Then the features should all pass
46
+
47
+ @posix
48
+ Scenario: Pipe in a file
49
+ Given a file named "features/interactive.feature" with:
50
+ """cucumber
51
+ Feature: Run command
52
+ Scenario: Run command
53
+ Given a file named "test.txt" with "line1\nline2"
54
+ When I run `cat` interactively
55
+ And I pipe in the file "test.txt"
56
+ Then the output should contain "line1\nline2"
57
+ """
58
+ When I run `cucumber`
59
+ Then the features should all pass
60
+
61
+ @posix
62
+ Scenario: Close stdin stream
63
+ Given a file named "features/interactive.feature" with:
64
+ """cucumber
65
+ Feature: Run command
66
+ Scenario: Run command
67
+ When I run `cat` interactively
68
+ And I type "Hello, world"
69
+ And I close the stdin stream
70
+ Then the output should contain "Hello, world"
71
+ """
72
+ When I run `cucumber`
73
+ Then the features should all pass
74
+
75
+ @posix
76
+ Scenario: All processes are stopped before checking for filesystem changes
77
+
78
+ See: http://github.com/aslakhellesoy/aruba/issues#issue/17 for context
79
+
80
+ Given a file named "features/interactive.feature" with:
81
+ """cucumber
82
+ Feature: Run command
83
+ Scenario: Run command
84
+ Given a directory named "rename_me"
85
+ When I run `mv rename_me renamed` interactively
86
+ Then the directory "renamed" should exist
87
+ And the directory "rename_me" should not exist
88
+ """
89
+ When I run `cucumber`
90
+ Then the features should all pass