aruba 0.14.9 → 1.0.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.
- checksums.yaml +4 -4
- data/.cucumberproignore +3 -0
- data/.github/ISSUE_TEMPLATE.md +48 -0
- data/.github/PULL_REQUEST_TEMPLATE.md +41 -0
- data/.gitignore +1 -0
- data/.rspec +1 -1
- data/.rubocop.yml +20 -179
- data/.rubocop_todo.yml +262 -0
- data/.simplecov +7 -5
- data/.travis.yml +54 -46
- data/.yardopts +3 -0
- data/CHANGELOG.md +613 -246
- data/CONTRIBUTING.md +247 -45
- data/Dockerfile +67 -0
- data/Gemfile +5 -96
- data/LICENSE +1 -1
- data/README.md +57 -180
- data/Rakefile +63 -32
- data/appveyor.yml +8 -11
- data/aruba.gemspec +47 -41
- data/bin/console +7 -0
- data/bin/test +9 -0
- data/cucumber.yml +4 -24
- data/doc/dependency_decisions.yml +42 -2
- data/docker-compose.yml +26 -0
- data/{bin → exe}/aruba +1 -1
- data/fixtures/cli-app/Rakefile +1 -1
- data/fixtures/cli-app/bin/aruba-test-cli +6 -0
- data/fixtures/cli-app/cli-app.gemspec +1 -2
- data/fixtures/cli-app/features/support/aruba.rb +1 -0
- data/fixtures/cli-app/features/support/env.rb +1 -1
- data/fixtures/cli-app/lib/cli/app/suppress_simple_cov_output.rb +3 -3
- data/fixtures/cli-app/lib/cli/app/version.rb +1 -1
- data/fixtures/cli-app/lib/cli/app.rb +1 -5
- data/fixtures/cli-app/spec/spec_helper.rb +4 -6
- data/fixtures/empty-app/Rakefile +1 -1
- data/fixtures/empty-app/cli-app.gemspec +1 -2
- data/fixtures/empty-app/lib/cli/app/version.rb +1 -1
- data/fixtures/empty-app/lib/cli/app.rb +0 -6
- data/fixtures/getting-started-app/Gemfile +1 -1
- data/lib/aruba/api/commands.rb +109 -143
- data/lib/aruba/api/core.rb +57 -43
- data/lib/aruba/api/environment.rb +16 -7
- data/lib/aruba/api/filesystem.rb +42 -29
- data/lib/aruba/api/text.rb +3 -9
- data/lib/aruba/api.rb +6 -11
- data/lib/aruba/aruba_path.rb +27 -89
- data/lib/aruba/basic_configuration.rb +4 -24
- data/lib/aruba/cli.rb +1 -1
- data/lib/aruba/colorizer.rb +10 -99
- data/lib/aruba/command.rb +2 -0
- data/lib/aruba/config/jruby.rb +15 -5
- data/lib/aruba/config_wrapper.rb +1 -1
- data/lib/aruba/configuration.rb +92 -0
- data/lib/aruba/console/help.rb +1 -7
- data/lib/aruba/console.rb +5 -5
- data/lib/aruba/contracts/absolute_path.rb +2 -2
- data/lib/aruba/contracts/relative_path.rb +2 -2
- data/lib/aruba/cucumber/command.rb +171 -160
- data/lib/aruba/cucumber/environment.rb +1 -1
- data/lib/aruba/cucumber/file.rb +21 -35
- data/lib/aruba/cucumber/hooks.rb +17 -56
- data/lib/aruba/cucumber/testing_frameworks.rb +74 -50
- data/lib/aruba/cucumber.rb +0 -5
- data/lib/aruba/event_bus/name_resolver.rb +5 -16
- data/lib/aruba/hooks.rb +1 -1
- data/lib/aruba/in_config_wrapper.rb +5 -1
- data/lib/aruba/initializer.rb +36 -42
- data/lib/aruba/matchers/base/base_matcher.rb +2 -2
- data/lib/aruba/matchers/base/message_indenter.rb +19 -0
- data/lib/aruba/matchers/base/object_formatter.rb +2 -9
- data/lib/aruba/matchers/collection/include_an_object.rb +7 -9
- data/lib/aruba/matchers/command/be_successfully_executed.rb +6 -4
- data/lib/aruba/matchers/command/have_exit_status.rb +14 -4
- data/lib/aruba/matchers/command/have_finished_in_time.rb +3 -5
- data/lib/aruba/matchers/command/have_output.rb +10 -5
- data/lib/aruba/matchers/command/have_output_on_stderr.rb +2 -2
- data/lib/aruba/matchers/command/have_output_on_stdout.rb +2 -2
- data/lib/aruba/matchers/command/have_output_size.rb +2 -2
- data/lib/aruba/matchers/directory/be_an_existing_directory.rb +5 -7
- data/lib/aruba/matchers/directory/have_sub_directory.rb +4 -6
- data/lib/aruba/matchers/file/be_a_command_found_in_path.rb +2 -4
- data/lib/aruba/matchers/file/be_an_existing_executable.rb +4 -6
- data/lib/aruba/matchers/file/be_an_existing_file.rb +5 -7
- data/lib/aruba/matchers/file/have_file_content.rb +4 -4
- data/lib/aruba/matchers/file/have_file_size.rb +6 -8
- data/lib/aruba/matchers/file/have_same_file_content.rb +5 -8
- data/lib/aruba/matchers/path/a_path_matching_pattern.rb +2 -4
- data/lib/aruba/matchers/path/be_an_absolute_path.rb +3 -5
- data/lib/aruba/matchers/path/be_an_existing_path.rb +4 -6
- data/lib/aruba/matchers/path/have_permissions.rb +6 -8
- data/lib/aruba/matchers/string/include_output_string.rb +8 -10
- data/lib/aruba/matchers/string/match_output_string.rb +9 -11
- data/lib/aruba/matchers/string/output_string_eq.rb +7 -9
- data/lib/aruba/platform.rb +0 -8
- data/lib/aruba/platforms/announcer.rb +42 -79
- data/lib/aruba/platforms/aruba_file_creator.rb +2 -6
- data/lib/aruba/platforms/aruba_fixed_size_file_creator.rb +2 -2
- data/lib/aruba/platforms/aruba_logger.rb +23 -7
- data/lib/aruba/platforms/command_monitor.rb +12 -107
- data/lib/aruba/platforms/determine_disk_usage.rb +56 -14
- data/lib/aruba/platforms/filesystem_status.rb +10 -14
- data/lib/aruba/platforms/local_environment.rb +2 -2
- data/lib/aruba/platforms/simple_table.rb +3 -11
- data/lib/aruba/platforms/unix_command_string.rb +7 -11
- data/lib/aruba/platforms/unix_environment_variables.rb +18 -27
- data/lib/aruba/platforms/unix_platform.rb +20 -51
- data/lib/aruba/platforms/unix_which.rb +2 -1
- data/lib/aruba/platforms/windows_command_string.rb +15 -10
- data/lib/aruba/platforms/windows_environment_variables.rb +43 -44
- data/lib/aruba/platforms/windows_platform.rb +4 -0
- data/lib/aruba/platforms/windows_which.rb +4 -3
- data/lib/aruba/processes/basic_process.rb +28 -30
- data/lib/aruba/processes/debug_process.rb +12 -3
- data/lib/aruba/processes/in_process.rb +17 -8
- data/lib/aruba/processes/spawn_process.rb +57 -46
- data/lib/aruba/rspec.rb +14 -36
- data/lib/aruba/runtime.rb +3 -6
- data/lib/aruba/setup.rb +6 -6
- data/lib/aruba/tasks/docker_helpers.rb +154 -0
- data/lib/aruba/version.rb +1 -1
- metadata +191 -244
- data/features/.nav +0 -72
- data/features/api/command/find_command.feature +0 -83
- data/features/api/command/last_command_started.feature +0 -50
- data/features/api/command/last_command_stopped.feature +0 -89
- data/features/api/command/run.feature +0 -414
- data/features/api/command/run_simple.feature +0 -242
- data/features/api/command/send_signal.feature +0 -53
- data/features/api/command/stderr.feature +0 -46
- data/features/api/command/stdout.feature +0 -46
- data/features/api/command/stop.feature +0 -131
- data/features/api/command/stop_all_commands.feature +0 -53
- data/features/api/command/terminate_all_commands.feature +0 -53
- data/features/api/command/which.feature +0 -37
- data/features/api/core/expand_path.feature +0 -88
- data/features/api/environment/append_environment_variable.feature +0 -128
- data/features/api/environment/delete_environment_variable.feature +0 -63
- data/features/api/environment/prepend_environment_variable.feature +0 -128
- data/features/api/environment/set_environment_variable.feature +0 -376
- data/features/api/filesystem/cd.feature +0 -184
- data/features/api/filesystem/create_directory.feature +0 -57
- data/features/api/filesystem/disk_usage.feature +0 -152
- data/features/api/filesystem/does_exist.feature +0 -62
- data/features/api/filesystem/fixtures.feature +0 -104
- data/features/api/filesystem/is_absolute.feature +0 -48
- data/features/api/filesystem/is_directory.feature +0 -53
- data/features/api/filesystem/is_file.feature +0 -54
- data/features/api/filesystem/is_relative.feature +0 -48
- data/features/api/filesystem/move.feature +0 -119
- data/features/api/text/extract_text.feature +0 -87
- data/features/api/text/replace_variables.feature +0 -45
- data/features/api/text/sanitize_text.feature +0 -228
- data/features/api/text/unescape_text.feature +0 -127
- data/features/cli/console.feature +0 -52
- data/features/cli/init.feature +0 -79
- data/features/configuration/activate_announcer_on_command_failure.feature +0 -38
- data/features/configuration/command_runtime_environment.feature +0 -129
- data/features/configuration/console_history_file.feature +0 -38
- data/features/configuration/exit_timeout.feature +0 -52
- data/features/configuration/fixtures_directories.feature +0 -38
- data/features/configuration/fixtures_path_prefix.feature +0 -23
- data/features/configuration/home_directory.feature +0 -80
- data/features/configuration/io_timeout.feature +0 -30
- data/features/configuration/keep_ansi.feature +0 -30
- data/features/configuration/log_level.feature +0 -38
- data/features/configuration/physical_block_size.feature +0 -53
- data/features/configuration/remove_ansi_escape_sequences.feature +0 -38
- data/features/configuration/root_directory.feature +0 -30
- data/features/configuration/startup_wait_time.feature +0 -48
- data/features/configuration/usage.feature +0 -159
- data/features/configuration/working_directory.feature +0 -33
- data/features/development/build.feature +0 -15
- data/features/getting_started/cleanup.feature +0 -58
- data/features/getting_started/run_commands.feature +0 -187
- data/features/getting_started/supported_testing_frameworks.feature +0 -104
- data/features/getting_started/writing_good_feature_tests.feature +0 -38
- data/features/hooks/after/command.feature +0 -46
- data/features/hooks/before/command.feature +0 -75
- data/features/matchers/collection/include_an_object.feature +0 -72
- data/features/matchers/directory/have_sub_directory.feature +0 -110
- data/features/matchers/file/be_a_command_found_in_path.feature +0 -115
- data/features/matchers/file/be_existing_executable.feature +0 -88
- data/features/matchers/file/be_existing_file.feature +0 -82
- data/features/matchers/file/have_file_content.feature +0 -123
- data/features/matchers/file/have_file_size.feature +0 -107
- data/features/matchers/path/be_an_absolute_path.feature +0 -74
- data/features/matchers/path/be_an_existing_path.feature +0 -97
- data/features/matchers/path/have_permissions.feature +0 -118
- data/features/matchers/timeouts.feature +0 -48
- data/features/platforms/jruby.feature +0 -14
- data/features/rspec/integration.feature +0 -179
- data/features/step_definitions/aruba_dev_steps.rb +0 -56
- data/features/step_definitions/hooks.rb +0 -156
- data/features/steps/command/debug.feature +0 -92
- data/features/steps/command/exit_statuses.feature +0 -136
- data/features/steps/command/in_process.feature +0 -485
- data/features/steps/command/interactive.feature +0 -90
- data/features/steps/command/output.feature +0 -567
- data/features/steps/command/run.feature +0 -66
- data/features/steps/command/send_signal.feature +0 -104
- data/features/steps/command/shell.feature +0 -155
- data/features/steps/command/stderr.feature +0 -68
- data/features/steps/command/stdout.feature +0 -109
- data/features/steps/command/stop.feature +0 -313
- data/features/steps/core/announce.feature +0 -283
- data/features/steps/environment/append_environment_variable.feature +0 -52
- data/features/steps/environment/disable_bunder.feature +0 -18
- data/features/steps/environment/home_variable.feature +0 -62
- data/features/steps/environment/prepend_environment_variable.feature +0 -52
- data/features/steps/environment/set_environment_variable.feature +0 -49
- data/features/steps/filesystem/append_to_file.feature +0 -45
- data/features/steps/filesystem/cd_to_directory.feature +0 -33
- data/features/steps/filesystem/check_file_content.feature +0 -61
- data/features/steps/filesystem/check_permissions_of_file.feature +0 -39
- data/features/steps/filesystem/compare_files.feature +0 -42
- data/features/steps/filesystem/copy.feature +0 -45
- data/features/steps/filesystem/create_directory.feature +0 -57
- data/features/steps/filesystem/create_file.feature +0 -76
- data/features/steps/filesystem/existence_of_directory.feature +0 -57
- data/features/steps/filesystem/existence_of_file.feature +0 -43
- data/features/steps/filesystem/file_content.feature +0 -86
- data/features/steps/filesystem/fixtures.feature +0 -64
- data/features/steps/filesystem/move.feature +0 -45
- data/features/steps/filesystem/non_existence_of_directory.feature +0 -69
- data/features/steps/filesystem/non_existence_of_file.feature +0 -80
- data/features/steps/filesystem/overwrite_file.feature +0 -72
- data/features/steps/filesystem/remove_directory.feature +0 -38
- data/features/steps/filesystem/remove_file.feature +0 -38
- data/features/steps/filesystem/use_fixture.feature +0 -77
- data/features/steps/overview.feature +0 -25
- data/features/support/aruba.rb +0 -7
- data/features/support/env.rb +0 -33
- data/features/support/jruby.rb +0 -5
- data/features/support/simplecov_setup.rb +0 -8
- data/fixtures/cli-app/bin/cli +0 -6
- data/fixtures/spawn_process/stderr.sh +0 -3
- data/lib/aruba/api/deprecated.rb +0 -1234
- data/lib/aruba/config.rb +0 -107
- data/lib/aruba/cucumber/core.rb +0 -5
- data/lib/aruba/cucumber/rvm.rb +0 -3
- data/lib/aruba/in_process.rb +0 -14
- data/lib/aruba/jruby.rb +0 -4
- data/lib/aruba/matchers/deprecated/file.rb +0 -17
- data/lib/aruba/matchers/deprecated.rb +0 -1
- data/lib/aruba/matchers/path/match_path_pattern.rb +0 -41
- data/lib/aruba/matchers/rspec_matcher_include_regexp.rb +0 -25
- data/lib/aruba/platforms/disk_usage_calculator.rb +0 -20
- data/lib/aruba/reporting.rb +0 -126
- data/lib/aruba/spawn_process.rb +0 -11
- data/script/bootstrap +0 -28
- data/script/console +0 -16
- data/script/test +0 -3
- data/spec/aruba/api/bundler_spec.rb +0 -15
- data/spec/aruba/api/deprecated_spec.rb +0 -308
- data/spec/aruba/api/environment/restore_env_spec.rb +0 -86
- data/spec/aruba/api/environment/set_env_spec.rb +0 -46
- data/spec/aruba/api/filesystem/file_size_spec.rb +0 -28
- data/spec/aruba/api/runtime_spec.rb +0 -28
- data/spec/aruba/api_spec.rb +0 -981
- data/spec/aruba/aruba_path_spec.rb +0 -103
- data/spec/aruba/basic_configuration_spec.rb +0 -5
- data/spec/aruba/configuration_spec.rb +0 -5
- data/spec/aruba/hooks_spec.rb +0 -17
- data/spec/aruba/in_config_wrapper_spec.rb +0 -25
- data/spec/aruba/jruby_spec.rb +0 -55
- data/spec/aruba/matchers/command/have_output_size_spec.rb +0 -25
- data/spec/aruba/matchers/command_spec.rb +0 -174
- data/spec/aruba/matchers/deprecated_spec.rb +0 -120
- data/spec/aruba/matchers/directory_spec.rb +0 -57
- data/spec/aruba/matchers/file_spec.rb +0 -208
- data/spec/aruba/matchers/path_spec.rb +0 -58
- data/spec/aruba/platform/simple_table_spec.rb +0 -23
- data/spec/aruba/platform/windows_environment_variables_spec.rb +0 -500
- data/spec/aruba/platforms/unix_command_string_spec.rb +0 -17
- data/spec/aruba/platforms/windows_command_string_spec.rb +0 -22
- data/spec/aruba/rspec_spec.rb +0 -15
- data/spec/aruba/runtime_spec.rb +0 -29
- data/spec/aruba/spawn_process_spec.rb +0 -96
- data/spec/event_bus/name_resolver_spec.rb +0 -68
- data/spec/event_bus_spec.rb +0 -158
- data/spec/spec_helper.rb +0 -20
- data/spec/support/configs/.keep +0 -0
- data/spec/support/configs/aruba.rb +0 -5
- data/spec/support/configs/pry.rb +0 -3
- data/spec/support/configs/rspec.rb +0 -15
- data/spec/support/helpers/.keep +0 -0
- data/spec/support/helpers/reporting.rb +0 -44
- data/spec/support/matchers/.keep +0 -0
- data/spec/support/matchers/option.rb +0 -35
- data/spec/support/shared_contexts/.keep +0 -0
- data/spec/support/shared_contexts/aruba.rb +0 -49
- data/spec/support/shared_examples/.keep +0 -0
- data/spec/support/shared_examples/configuration.rb +0 -116
- data/spec/support/shared_examples/directory.rb +0 -7
- data/spec/support/shared_examples/file.rb +0 -7
- data/templates/css/console.css +0 -24
- data/templates/css/filesystem.css +0 -42
- data/templates/css/pygments-autumn.css +0 -59
- data/templates/files.erb +0 -14
- data/templates/images/LICENSE +0 -22
- data/templates/images/folder.png +0 -0
- data/templates/images/page_white.png +0 -0
- data/templates/images/page_white_gherkin.png +0 -0
- data/templates/images/page_white_ruby.png +0 -0
- data/templates/index.erb +0 -20
- data/templates/js/filesystem.js +0 -5
- data/templates/js/jquery-1.11.3.min.js +0 -5
- data/templates/main.erb +0 -34
|
@@ -1,485 +0,0 @@
|
|
|
1
|
-
Feature: Run commands in ruby process
|
|
2
|
-
Running a lot of scenarios where each scenario uses Aruba
|
|
3
|
-
to spawn a new ruby process can be time consuming.
|
|
4
|
-
|
|
5
|
-
Aruba lets you plug in your own process class that can
|
|
6
|
-
run a command in the same ruby process as Cucumber/Aruba.
|
|
7
|
-
|
|
8
|
-
We expect that the command supports the following API. It needs to accept:
|
|
9
|
-
argv, stdin, stdout, stderr and kernel on `#initialize` and it needs to have
|
|
10
|
-
an `execute!`-method.
|
|
11
|
-
|
|
12
|
-
```ruby
|
|
13
|
-
module Cli
|
|
14
|
-
module App
|
|
15
|
-
class Runner
|
|
16
|
-
def initialize(argv, stdin, stdout, stderr, kernel)
|
|
17
|
-
\@argv = argv
|
|
18
|
-
\@stdin = stdin
|
|
19
|
-
\@stdout = stdout
|
|
20
|
-
\@stderr = stderr
|
|
21
|
-
\@kernel = kernel
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def execute!
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
The switch to the working directory takes place around the `execute!`-method.
|
|
32
|
-
If needed make sure, that you determine the current working directory within
|
|
33
|
-
code called by the `execute!`-method or just use `Dir.getwd` during "runtime"
|
|
34
|
-
and not during "loadtime", when the `ruby`-interpreter reads in you class
|
|
35
|
-
files.
|
|
36
|
-
|
|
37
|
-
*Pros*:
|
|
38
|
-
* Very fast compared to spawning processes
|
|
39
|
-
* You can use libraries like
|
|
40
|
-
[simplecov](https://github.com/colszowka/simplecov) more easily, because
|
|
41
|
-
there is only one "process" which adds data to `simplecov`'s database
|
|
42
|
-
|
|
43
|
-
*Cons*:
|
|
44
|
-
* You might oversee some bugs: You might forget to require libraries in your
|
|
45
|
-
"production" code, because you have required them in your testing code
|
|
46
|
-
* Using `:in_process` interactively is not supported
|
|
47
|
-
|
|
48
|
-
**WARNING**: Using `:in_process` interactively is not supported
|
|
49
|
-
|
|
50
|
-
Background:
|
|
51
|
-
Given I use a fixture named "cli-app"
|
|
52
|
-
And a file named "features/support/cli_app.rb" with:
|
|
53
|
-
"""
|
|
54
|
-
require 'cli/app/runner'
|
|
55
|
-
"""
|
|
56
|
-
And a file named "features/support/in_proccess.rb" with:
|
|
57
|
-
"""
|
|
58
|
-
require 'aruba/cucumber'
|
|
59
|
-
|
|
60
|
-
Before('@in-process') do
|
|
61
|
-
aruba.config.command_launcher = :in_process
|
|
62
|
-
aruba.config.main_class = Cli::App::Runner
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
After('@in-process') do
|
|
66
|
-
aruba.config.command_launcher = :spawn
|
|
67
|
-
end
|
|
68
|
-
"""
|
|
69
|
-
|
|
70
|
-
Scenario: Run custom code
|
|
71
|
-
Given a file named "lib/cli/app/runner.rb" with:
|
|
72
|
-
"""
|
|
73
|
-
module Cli
|
|
74
|
-
module App
|
|
75
|
-
class Runner
|
|
76
|
-
def initialize(argv, stdin, stdout, stderr, kernel)
|
|
77
|
-
@argv = argv
|
|
78
|
-
@stdin = stdin
|
|
79
|
-
@stdout = stdout
|
|
80
|
-
@stderr = stderr
|
|
81
|
-
@kernel = kernel
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
def execute!
|
|
85
|
-
@stdout.puts(@argv.map(&:reverse).join(' '))
|
|
86
|
-
end
|
|
87
|
-
end
|
|
88
|
-
end
|
|
89
|
-
end
|
|
90
|
-
"""
|
|
91
|
-
And a file named "features/in_process.feature" with:
|
|
92
|
-
"""
|
|
93
|
-
Feature: Run a command in process
|
|
94
|
-
@in-process
|
|
95
|
-
Scenario: Run command
|
|
96
|
-
When I run `reverse.rb Hello World`
|
|
97
|
-
Then the output should contain:
|
|
98
|
-
\"\"\"
|
|
99
|
-
olleH dlroW
|
|
100
|
-
\"\"\"
|
|
101
|
-
"""
|
|
102
|
-
When I run `cucumber`
|
|
103
|
-
Then the features should all pass
|
|
104
|
-
|
|
105
|
-
Scenario: Mixing custom code and normal cli
|
|
106
|
-
Given an executable named "bin/cli" with:
|
|
107
|
-
"""
|
|
108
|
-
#!/bin/bash
|
|
109
|
-
echo $*
|
|
110
|
-
"""
|
|
111
|
-
And a file named "lib/cli/app/runner.rb" with:
|
|
112
|
-
"""
|
|
113
|
-
module Cli
|
|
114
|
-
module App
|
|
115
|
-
class Runner
|
|
116
|
-
def initialize(argv, stdin, stdout, stderr, kernel)
|
|
117
|
-
@argv = argv
|
|
118
|
-
@stdin = stdin
|
|
119
|
-
@stdout = stdout
|
|
120
|
-
@stderr = stderr
|
|
121
|
-
@kernel = kernel
|
|
122
|
-
end
|
|
123
|
-
|
|
124
|
-
def execute!
|
|
125
|
-
@stdout.puts(@argv.map(&:reverse).join(' '))
|
|
126
|
-
end
|
|
127
|
-
end
|
|
128
|
-
end
|
|
129
|
-
end
|
|
130
|
-
"""
|
|
131
|
-
And a file named "features/in_process.feature" with:
|
|
132
|
-
"""
|
|
133
|
-
Feature: Run a command in process
|
|
134
|
-
@in-process
|
|
135
|
-
Scenario: Run command in process
|
|
136
|
-
When I run `reverse.rb Hello World`
|
|
137
|
-
Then the output should contain:
|
|
138
|
-
\"\"\"
|
|
139
|
-
olleH dlroW
|
|
140
|
-
\"\"\"
|
|
141
|
-
|
|
142
|
-
Scenario: Run command
|
|
143
|
-
When I run `cli Hello World`
|
|
144
|
-
Then the output should contain:
|
|
145
|
-
\"\"\"
|
|
146
|
-
Hello World
|
|
147
|
-
\"\"\"
|
|
148
|
-
"""
|
|
149
|
-
When I run `cucumber`
|
|
150
|
-
Then the features should all pass
|
|
151
|
-
|
|
152
|
-
Scenario: The current working directory is changed as well
|
|
153
|
-
Given a file named "lib/cli/app/runner.rb" with:
|
|
154
|
-
"""
|
|
155
|
-
module Cli
|
|
156
|
-
module App
|
|
157
|
-
class Runner
|
|
158
|
-
def initialize(argv, stdin, stdout, stderr, kernel)
|
|
159
|
-
@argv = argv
|
|
160
|
-
@stdin = stdin
|
|
161
|
-
@stdout = stdout
|
|
162
|
-
@stderr = stderr
|
|
163
|
-
@kernel = kernel
|
|
164
|
-
end
|
|
165
|
-
|
|
166
|
-
def execute!
|
|
167
|
-
@stdout.puts("PWD-ENV is " + Dir.getwd)
|
|
168
|
-
end
|
|
169
|
-
end
|
|
170
|
-
end
|
|
171
|
-
end
|
|
172
|
-
"""
|
|
173
|
-
And a file named "features/in_process.feature" with:
|
|
174
|
-
"""
|
|
175
|
-
Feature: Run a command in process
|
|
176
|
-
@in-process
|
|
177
|
-
Scenario: Run command
|
|
178
|
-
When I run `pwd.rb`
|
|
179
|
-
Then the output should match %r<PWD-ENV.*tmp/aruba>
|
|
180
|
-
"""
|
|
181
|
-
When I run `cucumber`
|
|
182
|
-
Then the features should all pass
|
|
183
|
-
|
|
184
|
-
Scenario: The PWD environment is changed to current working directory
|
|
185
|
-
Given a file named "lib/cli/app/runner.rb" with:
|
|
186
|
-
"""
|
|
187
|
-
module Cli
|
|
188
|
-
module App
|
|
189
|
-
class Runner
|
|
190
|
-
def initialize(argv, stdin, stdout, stderr, kernel)
|
|
191
|
-
@argv = argv
|
|
192
|
-
@stdin = stdin
|
|
193
|
-
@stdout = stdout
|
|
194
|
-
@stderr = stderr
|
|
195
|
-
@kernel = kernel
|
|
196
|
-
end
|
|
197
|
-
|
|
198
|
-
def execute!
|
|
199
|
-
@stdout.puts("PWD-ENV is " + ENV['PWD'])
|
|
200
|
-
end
|
|
201
|
-
end
|
|
202
|
-
end
|
|
203
|
-
end
|
|
204
|
-
"""
|
|
205
|
-
And a file named "features/in_process.feature" with:
|
|
206
|
-
"""
|
|
207
|
-
Feature: Run a command in process
|
|
208
|
-
@in-process
|
|
209
|
-
Scenario: Run command
|
|
210
|
-
When I run `pwd.rb`
|
|
211
|
-
Then the output should match %r<PWD-ENV.*tmp/aruba>
|
|
212
|
-
"""
|
|
213
|
-
When I run `cucumber`
|
|
214
|
-
Then the features should all pass
|
|
215
|
-
|
|
216
|
-
Scenario: Set runner via "Aruba.process ="-method (deprecated)
|
|
217
|
-
Given a file named "features/support/in_proccess.rb" with:
|
|
218
|
-
"""
|
|
219
|
-
require 'aruba/cucumber'
|
|
220
|
-
require 'aruba/processes/in_process'
|
|
221
|
-
|
|
222
|
-
Before('@in-process') do
|
|
223
|
-
Aruba.process = Aruba::Processes::InProcess
|
|
224
|
-
Aruba.process.main_class = Cli::App::Runner
|
|
225
|
-
end
|
|
226
|
-
|
|
227
|
-
After('@in-process') do
|
|
228
|
-
Aruba.process = Aruba::Processes::SpawnProcess
|
|
229
|
-
end
|
|
230
|
-
"""
|
|
231
|
-
Given a file named "lib/cli/app/runner.rb" with:
|
|
232
|
-
"""
|
|
233
|
-
module Cli
|
|
234
|
-
module App
|
|
235
|
-
class Runner
|
|
236
|
-
def initialize(argv, stdin, stdout, stderr, kernel)
|
|
237
|
-
@argv = argv
|
|
238
|
-
@stdin = stdin
|
|
239
|
-
@stdout = stdout
|
|
240
|
-
@stderr = stderr
|
|
241
|
-
@kernel = kernel
|
|
242
|
-
end
|
|
243
|
-
|
|
244
|
-
def execute!
|
|
245
|
-
@stdout.puts(@argv.map(&:reverse).join(' '))
|
|
246
|
-
end
|
|
247
|
-
end
|
|
248
|
-
end
|
|
249
|
-
end
|
|
250
|
-
"""
|
|
251
|
-
And a file named "features/in_process.feature" with:
|
|
252
|
-
"""
|
|
253
|
-
Feature: Run a command in process
|
|
254
|
-
@in-process
|
|
255
|
-
Scenario: Run command
|
|
256
|
-
When I run `reverse.rb Hello World`
|
|
257
|
-
Then the output should contain:
|
|
258
|
-
\"\"\"
|
|
259
|
-
olleH dlroW
|
|
260
|
-
\"\"\"
|
|
261
|
-
"""
|
|
262
|
-
When I run `cucumber`
|
|
263
|
-
Then the features should all pass
|
|
264
|
-
|
|
265
|
-
Scenario: Set runner via "Aruba.process ="-method and use old class name Aruba::InProcess (deprecated)
|
|
266
|
-
Given a file named "features/support/in_proccess.rb" with:
|
|
267
|
-
"""
|
|
268
|
-
require 'aruba/cucumber'
|
|
269
|
-
require 'aruba/in_process'
|
|
270
|
-
require 'aruba/spawn_process'
|
|
271
|
-
|
|
272
|
-
Before('@in-process') do
|
|
273
|
-
Aruba.process = Aruba::InProcess
|
|
274
|
-
Aruba.process.main_class = Cli::App::Runner
|
|
275
|
-
end
|
|
276
|
-
|
|
277
|
-
After('@in-process') do
|
|
278
|
-
Aruba.process = Aruba::SpawnProcess
|
|
279
|
-
end
|
|
280
|
-
"""
|
|
281
|
-
Given a file named "lib/cli/app/runner.rb" with:
|
|
282
|
-
"""
|
|
283
|
-
module Cli
|
|
284
|
-
module App
|
|
285
|
-
class Runner
|
|
286
|
-
def initialize(argv, stdin, stdout, stderr, kernel)
|
|
287
|
-
@argv = argv
|
|
288
|
-
@stdin = stdin
|
|
289
|
-
@stdout = stdout
|
|
290
|
-
@stderr = stderr
|
|
291
|
-
@kernel = kernel
|
|
292
|
-
end
|
|
293
|
-
|
|
294
|
-
def execute!
|
|
295
|
-
@stdout.puts(@argv.map(&:reverse).join(' '))
|
|
296
|
-
end
|
|
297
|
-
end
|
|
298
|
-
end
|
|
299
|
-
end
|
|
300
|
-
"""
|
|
301
|
-
And a file named "features/in_process.feature" with:
|
|
302
|
-
"""
|
|
303
|
-
Feature: Run a command in process
|
|
304
|
-
@in-process
|
|
305
|
-
Scenario: Run command
|
|
306
|
-
When I run `reverse.rb Hello World`
|
|
307
|
-
Then the output should contain:
|
|
308
|
-
\"\"\"
|
|
309
|
-
olleH dlroW
|
|
310
|
-
\"\"\"
|
|
311
|
-
"""
|
|
312
|
-
When I run `cucumber`
|
|
313
|
-
Then the features should all pass
|
|
314
|
-
|
|
315
|
-
Scenario: Use $stderr, $stdout and $stdin to access IO
|
|
316
|
-
|
|
317
|
-
May may need/want to use the default `STDERR`, `STDOUT`, `STDIN`-constants
|
|
318
|
-
to access IO from within your script. Unfortunately this does not work with
|
|
319
|
-
the `:in_process`-command launcher. You need to use `$stderr`, `$stdout`
|
|
320
|
-
and `$stdin` instead.
|
|
321
|
-
|
|
322
|
-
For this example I chose `thor` to parse ARGV. Its `.start`-method accepts
|
|
323
|
-
an "Array" as ARGV and a "Hash" for some other options – `.start <ARGV>, <OPTIONS>`
|
|
324
|
-
|
|
325
|
-
Given a file named "lib/cli/app/runner.rb" with:
|
|
326
|
-
"""
|
|
327
|
-
require 'cli/app/cli_parser'
|
|
328
|
-
|
|
329
|
-
module Cli
|
|
330
|
-
module App
|
|
331
|
-
class Runner
|
|
332
|
-
def initialize(argv, stdin, stdout, stderr, kernel)
|
|
333
|
-
@argv = argv
|
|
334
|
-
$kernel = kernel
|
|
335
|
-
$stdin = stdin
|
|
336
|
-
$stdout = stdout
|
|
337
|
-
$stderr = stderr
|
|
338
|
-
end
|
|
339
|
-
|
|
340
|
-
def execute!
|
|
341
|
-
Cli::App::CliParser.start @argv
|
|
342
|
-
end
|
|
343
|
-
end
|
|
344
|
-
end
|
|
345
|
-
end
|
|
346
|
-
"""
|
|
347
|
-
And a file named "lib/cli/app/cli_parser.rb" with:
|
|
348
|
-
"""
|
|
349
|
-
require 'thor'
|
|
350
|
-
|
|
351
|
-
module Cli
|
|
352
|
-
module App
|
|
353
|
-
class CliParser < Thor
|
|
354
|
-
def self.exit_on_failure?
|
|
355
|
-
true
|
|
356
|
-
end
|
|
357
|
-
|
|
358
|
-
desc 'do_it', 'Reverse input'
|
|
359
|
-
def do_it(*args)
|
|
360
|
-
$stderr.puts 'Hey ya, Hey ya, check, check, check'
|
|
361
|
-
$stdout.puts(args.flatten.map(&:reverse).join(' '))
|
|
362
|
-
end
|
|
363
|
-
end
|
|
364
|
-
end
|
|
365
|
-
end
|
|
366
|
-
"""
|
|
367
|
-
And a file named "features/in_process.feature" with:
|
|
368
|
-
"""
|
|
369
|
-
Feature: Run a command in process
|
|
370
|
-
@in-process
|
|
371
|
-
Scenario: Run command
|
|
372
|
-
When I run `reverse.rb do_it Hello World`
|
|
373
|
-
Then the stdout should contain:
|
|
374
|
-
\"\"\"
|
|
375
|
-
olleH dlroW
|
|
376
|
-
\"\"\"
|
|
377
|
-
And the stderr should contain:
|
|
378
|
-
\"\"\"
|
|
379
|
-
Hey ya, Hey ya, check, check, check
|
|
380
|
-
\"\"\"
|
|
381
|
-
"""
|
|
382
|
-
When I run `cucumber`
|
|
383
|
-
Then the features should all pass
|
|
384
|
-
|
|
385
|
-
Scenario: Use $kernel to use Kernel to capture exit code
|
|
386
|
-
|
|
387
|
-
Ruby's `Kernel`-module provides some helper methods like `exit`.
|
|
388
|
-
Unfortunately running `#exit` with `:in_process` would make the whole ruby
|
|
389
|
-
interpreter exit. So you might want to use our `FakeKernel`-module module
|
|
390
|
-
instead which overwrites `#exit`. This will also make our tests for
|
|
391
|
-
checking the exit code work. This example also uses the `thor`-library.
|
|
392
|
-
|
|
393
|
-
Given a file named "lib/cli/app/runner.rb" with:
|
|
394
|
-
"""
|
|
395
|
-
require 'cli/app/cli_parser'
|
|
396
|
-
|
|
397
|
-
module Cli
|
|
398
|
-
module App
|
|
399
|
-
class Runner
|
|
400
|
-
def initialize(argv, stdin, stdout, stderr, kernel)
|
|
401
|
-
@argv = argv
|
|
402
|
-
$kernel = kernel
|
|
403
|
-
$stdin = stdin
|
|
404
|
-
$stdout = stdout
|
|
405
|
-
$stderr = stderr
|
|
406
|
-
end
|
|
407
|
-
|
|
408
|
-
def execute!
|
|
409
|
-
Cli::App::CliParser.start @argv
|
|
410
|
-
end
|
|
411
|
-
end
|
|
412
|
-
end
|
|
413
|
-
end
|
|
414
|
-
"""
|
|
415
|
-
And a file named "lib/cli/app/cli_parser.rb" with:
|
|
416
|
-
"""
|
|
417
|
-
require 'thor'
|
|
418
|
-
|
|
419
|
-
module Cli
|
|
420
|
-
module App
|
|
421
|
-
class CliParser < Thor
|
|
422
|
-
def self.exit_on_failure?
|
|
423
|
-
true
|
|
424
|
-
end
|
|
425
|
-
|
|
426
|
-
desc 'do_it', 'Reverse input'
|
|
427
|
-
def do_it(*args)
|
|
428
|
-
$kernel.exit 5
|
|
429
|
-
end
|
|
430
|
-
end
|
|
431
|
-
end
|
|
432
|
-
end
|
|
433
|
-
"""
|
|
434
|
-
And a file named "features/in_process.feature" with:
|
|
435
|
-
"""
|
|
436
|
-
Feature: Run a command in process
|
|
437
|
-
@in-process
|
|
438
|
-
Scenario: Run command
|
|
439
|
-
When I run `reverse.rb do_it`
|
|
440
|
-
Then the exit status should be 5
|
|
441
|
-
"""
|
|
442
|
-
When I run `cucumber`
|
|
443
|
-
Then the features should all pass
|
|
444
|
-
|
|
445
|
-
Scenario: Using `:in_process` interactively is not supported
|
|
446
|
-
|
|
447
|
-
Reading from STDIN blocks ruby from going on. But writing to STDIN - e.g.
|
|
448
|
-
type some letters on keyboard - can only appear later, but this point is
|
|
449
|
-
never reached, because ruby is blocked.
|
|
450
|
-
|
|
451
|
-
Given the default aruba exit timeout is 5 seconds
|
|
452
|
-
And a file named "lib/cli/app/runner.rb" with:
|
|
453
|
-
"""
|
|
454
|
-
module Cli
|
|
455
|
-
module App
|
|
456
|
-
class Runner
|
|
457
|
-
def initialize(argv, stdin, stdout, stderr, kernel)
|
|
458
|
-
@stdin = stdin
|
|
459
|
-
end
|
|
460
|
-
|
|
461
|
-
def execute!
|
|
462
|
-
while res = @stdin.gets.to_s.chomp
|
|
463
|
-
break if res == 'quit'
|
|
464
|
-
puts res.reverse
|
|
465
|
-
end
|
|
466
|
-
end
|
|
467
|
-
end
|
|
468
|
-
end
|
|
469
|
-
end
|
|
470
|
-
"""
|
|
471
|
-
And a file named "features/in_process.feature" with:
|
|
472
|
-
"""
|
|
473
|
-
Feature: Run a command in process
|
|
474
|
-
@in-process
|
|
475
|
-
Scenario: Run command
|
|
476
|
-
Given the default aruba exit timeout is 2 seconds
|
|
477
|
-
When I run `reverse.rb do_it` interactively
|
|
478
|
-
When I type "hello"
|
|
479
|
-
Then the output should contain:
|
|
480
|
-
\"\"\"
|
|
481
|
-
hello
|
|
482
|
-
\"\"\"
|
|
483
|
-
"""
|
|
484
|
-
When I run `cucumber`
|
|
485
|
-
Then the exit status should not be 0
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
Feature: Running an interactive command
|
|
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
|