aruba-win-fix 0.14.2
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 +7 -0
- data/.document +5 -0
- data/.gitignore +37 -0
- data/.rspec +3 -0
- data/.rubocop.yml +188 -0
- data/.simplecov +34 -0
- data/.travis.yml +47 -0
- data/.yardopts +8 -0
- data/CONTRIBUTING.md +71 -0
- data/Gemfile +83 -0
- data/History.md +579 -0
- data/LICENSE +20 -0
- data/README.md +226 -0
- data/Rakefile +49 -0
- data/TODO.md +13 -0
- data/appveyor.yml +32 -0
- data/aruba.gemspec +48 -0
- data/bin/aruba +7 -0
- data/config/.gitignore +1 -0
- data/cucumber.yml +26 -0
- data/features/.nav +72 -0
- data/features/api/command/find_command.feature +83 -0
- data/features/api/command/last_command_started.feature +50 -0
- data/features/api/command/last_command_stopped.feature +89 -0
- data/features/api/command/run.feature +414 -0
- data/features/api/command/run_simple.feature +242 -0
- data/features/api/command/send_signal.feature +53 -0
- data/features/api/command/stderr.feature +46 -0
- data/features/api/command/stdout.feature +46 -0
- data/features/api/command/stop.feature +131 -0
- data/features/api/command/stop_all_commands.feature +53 -0
- data/features/api/command/terminate_all_commands.feature +53 -0
- data/features/api/command/which.feature +37 -0
- data/features/api/core/expand_path.feature +88 -0
- data/features/api/environment/append_environment_variable.feature +128 -0
- data/features/api/environment/delete_environment_variable.feature +63 -0
- data/features/api/environment/prepend_environment_variable.feature +128 -0
- data/features/api/environment/set_environment_variable.feature +376 -0
- data/features/api/filesystem/cd.feature +184 -0
- data/features/api/filesystem/create_directory.feature +57 -0
- data/features/api/filesystem/disk_usage.feature +152 -0
- data/features/api/filesystem/does_exist.feature +62 -0
- data/features/api/filesystem/fixtures.feature +104 -0
- data/features/api/filesystem/is_absolute.feature +48 -0
- data/features/api/filesystem/is_directory.feature +53 -0
- data/features/api/filesystem/is_file.feature +54 -0
- data/features/api/filesystem/is_relative.feature +48 -0
- data/features/api/filesystem/move.feature +119 -0
- data/features/api/text/extract_text.feature +87 -0
- data/features/api/text/replace_variables.feature +45 -0
- data/features/api/text/sanitize_text.feature +228 -0
- data/features/api/text/unescape_text.feature +127 -0
- data/features/cli/console.feature +52 -0
- data/features/cli/init.feature +79 -0
- data/features/configuration/activate_announcer_on_command_failure.feature +38 -0
- data/features/configuration/command_runtime_environment.feature +129 -0
- data/features/configuration/console_history_file.feature +38 -0
- data/features/configuration/exit_timeout.feature +52 -0
- data/features/configuration/fixtures_directories.feature +38 -0
- data/features/configuration/fixtures_path_prefix.feature +23 -0
- data/features/configuration/home_directory.feature +80 -0
- data/features/configuration/io_timeout.feature +30 -0
- data/features/configuration/keep_ansi.feature +30 -0
- data/features/configuration/log_level.feature +38 -0
- data/features/configuration/physical_block_size.feature +53 -0
- data/features/configuration/remove_ansi_escape_sequences.feature +38 -0
- data/features/configuration/root_directory.feature +30 -0
- data/features/configuration/startup_wait_time.feature +48 -0
- data/features/configuration/usage.feature +159 -0
- data/features/configuration/working_directory.feature +33 -0
- data/features/development/build.feature +15 -0
- data/features/development/test.feature +24 -0
- data/features/getting_started/cleanup.feature +67 -0
- data/features/getting_started/install.feature +8 -0
- data/features/getting_started/run_commands.feature +177 -0
- data/features/getting_started/supported_testing_frameworks.feature +104 -0
- data/features/getting_started/writing_good_feature_tests.feature +38 -0
- data/features/hooks/after/command.feature +44 -0
- data/features/hooks/before/command.feature +71 -0
- data/features/matchers/collection/include_an_object.feature +72 -0
- data/features/matchers/directory/have_sub_directory.feature +110 -0
- data/features/matchers/file/be_a_command_found_in_path.feature +115 -0
- data/features/matchers/file/be_existing_executable.feature +88 -0
- data/features/matchers/file/be_existing_file.feature +82 -0
- data/features/matchers/file/have_file_content.feature +123 -0
- data/features/matchers/file/have_file_size.feature +107 -0
- data/features/matchers/path/be_an_absolute_path.feature +74 -0
- data/features/matchers/path/be_an_existing_path.feature +97 -0
- data/features/matchers/path/have_permissions.feature +118 -0
- data/features/matchers/timeouts.feature +48 -0
- data/features/platforms/jruby.feature +14 -0
- data/features/rspec/integration.feature +179 -0
- data/features/step_definitions/aruba_dev_steps.rb +56 -0
- data/features/step_definitions/hooks.rb +96 -0
- data/features/steps/command/debug.feature +92 -0
- data/features/steps/command/exit_statuses.feature +136 -0
- data/features/steps/command/in_process.feature +485 -0
- data/features/steps/command/interactive.feature +90 -0
- data/features/steps/command/output.feature +588 -0
- data/features/steps/command/run.feature +66 -0
- data/features/steps/command/send_signal.feature +104 -0
- data/features/steps/command/shell.feature +155 -0
- data/features/steps/command/stderr.feature +68 -0
- data/features/steps/command/stdout.feature +109 -0
- data/features/steps/command/stop.feature +313 -0
- data/features/steps/core/announce.feature +283 -0
- data/features/steps/environment/append_environment_variable.feature +52 -0
- data/features/steps/environment/home_variable.feature +62 -0
- data/features/steps/environment/prepend_environment_variable.feature +52 -0
- data/features/steps/environment/set_environment_variable.feature +49 -0
- data/features/steps/filesystem/append_to_file.feature +45 -0
- data/features/steps/filesystem/cd_to_directory.feature +33 -0
- data/features/steps/filesystem/check_file_content.feature +61 -0
- data/features/steps/filesystem/check_permissions_of_file.feature +39 -0
- data/features/steps/filesystem/compare_files.feature +42 -0
- data/features/steps/filesystem/copy.feature +45 -0
- data/features/steps/filesystem/create_directory.feature +57 -0
- data/features/steps/filesystem/create_file.feature +76 -0
- data/features/steps/filesystem/existence_of_directory.feature +57 -0
- data/features/steps/filesystem/existence_of_file.feature +43 -0
- data/features/steps/filesystem/file_content.feature +86 -0
- data/features/steps/filesystem/fixtures.feature +64 -0
- data/features/steps/filesystem/move.feature +45 -0
- data/features/steps/filesystem/non_existence_of_directory.feature +69 -0
- data/features/steps/filesystem/non_existence_of_file.feature +80 -0
- data/features/steps/filesystem/overwrite_file.feature +72 -0
- data/features/steps/filesystem/remove_directory.feature +38 -0
- data/features/steps/filesystem/remove_file.feature +38 -0
- data/features/steps/filesystem/use_fixture.feature +77 -0
- data/features/steps/overview.feature +60 -0
- data/features/support/aruba.rb +7 -0
- data/features/support/env.rb +33 -0
- data/features/support/jruby.rb +5 -0
- data/features/support/simplecov_setup.rb +8 -0
- data/fixtures/cli-app/.gitignore +9 -0
- data/fixtures/cli-app/.rspec +2 -0
- data/fixtures/cli-app/README.md +39 -0
- data/fixtures/cli-app/Rakefile +1 -0
- data/fixtures/cli-app/bin/cli +6 -0
- data/fixtures/cli-app/cli-app.gemspec +26 -0
- data/fixtures/cli-app/features/support/env.rb +1 -0
- data/fixtures/cli-app/lib/cli/app.rb +13 -0
- data/fixtures/cli-app/lib/cli/app/suppress_simple_cov_output.rb +15 -0
- data/fixtures/cli-app/lib/cli/app/version.rb +5 -0
- data/fixtures/cli-app/script/console +14 -0
- data/fixtures/cli-app/spec/spec_helper.rb +9 -0
- data/fixtures/cli-app/spec/support/aruba.rb +1 -0
- data/fixtures/copy/file.txt +1 -0
- data/fixtures/empty-app/.gitignore +9 -0
- data/fixtures/empty-app/.rspec +2 -0
- data/fixtures/empty-app/README.md +24 -0
- data/fixtures/empty-app/Rakefile +1 -0
- data/fixtures/empty-app/cli-app.gemspec +26 -0
- data/fixtures/empty-app/lib/cli/app.rb +13 -0
- data/fixtures/empty-app/lib/cli/app/version.rb +5 -0
- data/fixtures/getting-started-app/.gitignore +4 -0
- data/fixtures/getting-started-app/Gemfile +4 -0
- data/fixtures/getting-started-app/README.md +3 -0
- data/fixtures/getting-started-app/features/support/env.rb +1 -0
- data/fixtures/spawn_process/stderr.sh +3 -0
- data/lib/aruba.rb +1 -0
- data/lib/aruba/api.rb +34 -0
- data/lib/aruba/api/command.rb +307 -0
- data/lib/aruba/api/core.rb +191 -0
- data/lib/aruba/api/deprecated.rb +897 -0
- data/lib/aruba/api/environment.rb +89 -0
- data/lib/aruba/api/filesystem.rb +392 -0
- data/lib/aruba/api/rvm.rb +44 -0
- data/lib/aruba/api/text.rb +56 -0
- data/lib/aruba/aruba_path.rb +133 -0
- data/lib/aruba/basic_configuration.rb +240 -0
- data/lib/aruba/basic_configuration/option.rb +32 -0
- data/lib/aruba/cli.rb +26 -0
- data/lib/aruba/colorizer.rb +108 -0
- data/lib/aruba/command.rb +74 -0
- data/lib/aruba/config.rb +108 -0
- data/lib/aruba/config/jruby.rb +17 -0
- data/lib/aruba/config_wrapper.rb +58 -0
- data/lib/aruba/console.rb +70 -0
- data/lib/aruba/console/help.rb +35 -0
- data/lib/aruba/contracts/absolute_path.rb +20 -0
- data/lib/aruba/contracts/enum.rb +26 -0
- data/lib/aruba/contracts/is_power_of_two.rb +22 -0
- data/lib/aruba/contracts/relative_path.rb +20 -0
- data/lib/aruba/cucumber.rb +13 -0
- data/lib/aruba/cucumber/command.rb +422 -0
- data/lib/aruba/cucumber/core.rb +5 -0
- data/lib/aruba/cucumber/environment.rb +42 -0
- data/lib/aruba/cucumber/file.rb +201 -0
- data/lib/aruba/cucumber/hooks.rb +160 -0
- data/lib/aruba/cucumber/rvm.rb +3 -0
- data/lib/aruba/cucumber/testing_frameworks.rb +95 -0
- data/lib/aruba/errors.rb +37 -0
- data/lib/aruba/event_bus.rb +59 -0
- data/lib/aruba/event_bus/name_resolver.rb +168 -0
- data/lib/aruba/events.rb +39 -0
- data/lib/aruba/extensions/string/strip.rb +25 -0
- data/lib/aruba/file_size.rb +63 -0
- data/lib/aruba/generators/script_file.rb +46 -0
- data/lib/aruba/hooks.rb +56 -0
- data/lib/aruba/in_config_wrapper.rb +24 -0
- data/lib/aruba/in_process.rb +14 -0
- data/lib/aruba/initializer.rb +222 -0
- data/lib/aruba/jruby.rb +4 -0
- data/lib/aruba/matchers/base/base_matcher.rb +96 -0
- data/lib/aruba/matchers/base/object_formatter.rb +114 -0
- data/lib/aruba/matchers/collection.rb +1 -0
- data/lib/aruba/matchers/collection/all.rb +11 -0
- data/lib/aruba/matchers/collection/include_an_object.rb +122 -0
- data/lib/aruba/matchers/command.rb +1 -0
- data/lib/aruba/matchers/command/be_successfully_executed.rb +34 -0
- data/lib/aruba/matchers/command/have_exit_status.rb +38 -0
- data/lib/aruba/matchers/command/have_finished_in_time.rb +37 -0
- data/lib/aruba/matchers/command/have_output.rb +36 -0
- data/lib/aruba/matchers/command/have_output_on_stderr.rb +32 -0
- data/lib/aruba/matchers/command/have_output_on_stdout.rb +32 -0
- data/lib/aruba/matchers/command/have_output_size.rb +28 -0
- data/lib/aruba/matchers/directory.rb +1 -0
- data/lib/aruba/matchers/directory/be_an_existing_directory.rb +38 -0
- data/lib/aruba/matchers/directory/have_sub_directory.rb +53 -0
- data/lib/aruba/matchers/environment.rb +1 -0
- data/lib/aruba/matchers/file.rb +1 -0
- data/lib/aruba/matchers/file/be_a_command_found_in_path.rb +36 -0
- data/lib/aruba/matchers/file/be_an_existing_executable.rb +37 -0
- data/lib/aruba/matchers/file/be_an_existing_file.rb +38 -0
- data/lib/aruba/matchers/file/have_file_content.rb +62 -0
- data/lib/aruba/matchers/file/have_file_size.rb +47 -0
- data/lib/aruba/matchers/file/have_same_file_content.rb +48 -0
- data/lib/aruba/matchers/path.rb +1 -0
- data/lib/aruba/matchers/path/a_path_matching_pattern.rb +25 -0
- data/lib/aruba/matchers/path/be_an_absolute_path.rb +36 -0
- data/lib/aruba/matchers/path/be_an_existing_path.rb +37 -0
- data/lib/aruba/matchers/path/have_permissions.rb +64 -0
- data/lib/aruba/matchers/path/match_path_pattern.rb +41 -0
- data/lib/aruba/matchers/rspec_matcher_include_regexp.rb +25 -0
- data/lib/aruba/matchers/string.rb +1 -0
- data/lib/aruba/matchers/string/include_output_string.rb +36 -0
- data/lib/aruba/matchers/string/match_output_string.rb +37 -0
- data/lib/aruba/matchers/string/output_string_eq.rb +35 -0
- data/lib/aruba/platform.rb +25 -0
- data/lib/aruba/platforms/announcer.rb +232 -0
- data/lib/aruba/platforms/aruba_file_creator.rb +35 -0
- data/lib/aruba/platforms/aruba_fixed_size_file_creator.rb +35 -0
- data/lib/aruba/platforms/aruba_logger.rb +81 -0
- data/lib/aruba/platforms/command_monitor.rb +229 -0
- data/lib/aruba/platforms/determine_disk_usage.rb +28 -0
- data/lib/aruba/platforms/determine_file_size.rb +22 -0
- data/lib/aruba/platforms/disk_usage_calculator.rb +20 -0
- data/lib/aruba/platforms/filesystem_status.rb +68 -0
- data/lib/aruba/platforms/local_environment.rb +29 -0
- data/lib/aruba/platforms/simple_table.rb +54 -0
- data/lib/aruba/platforms/unix_command_string.rb +27 -0
- data/lib/aruba/platforms/unix_environment_variables.rb +220 -0
- data/lib/aruba/platforms/unix_platform.rb +276 -0
- data/lib/aruba/platforms/unix_which.rb +85 -0
- data/lib/aruba/platforms/windows_command_string.rb +31 -0
- data/lib/aruba/platforms/windows_environment_variables.rb +89 -0
- data/lib/aruba/platforms/windows_platform.rb +42 -0
- data/lib/aruba/platforms/windows_which.rb +106 -0
- data/lib/aruba/processes/basic_process.rb +143 -0
- data/lib/aruba/processes/debug_process.rb +69 -0
- data/lib/aruba/processes/in_process.rb +125 -0
- data/lib/aruba/processes/spawn_process.rb +278 -0
- data/lib/aruba/reporting.rb +126 -0
- data/lib/aruba/rspec.rb +107 -0
- data/lib/aruba/runtime.rb +96 -0
- data/lib/aruba/setup.rb +90 -0
- data/lib/aruba/spawn_process.rb +11 -0
- data/lib/aruba/version.rb +3 -0
- data/script/bootstrap +28 -0
- data/script/console +16 -0
- data/script/test +3 -0
- data/spec/aruba/api/environment/restore_env_spec.rb +65 -0
- data/spec/aruba/api/environment/set_env_spec.rb +42 -0
- data/spec/aruba/api/filesystem/file_size_spec.rb +28 -0
- data/spec/aruba/api/runtime_spec.rb +28 -0
- data/spec/aruba/api_spec.rb +1209 -0
- data/spec/aruba/aruba_path_spec.rb +103 -0
- data/spec/aruba/basic_configuration_spec.rb +5 -0
- data/spec/aruba/configuration_spec.rb +5 -0
- data/spec/aruba/hooks_spec.rb +17 -0
- data/spec/aruba/in_config_wrapper_spec.rb +25 -0
- data/spec/aruba/jruby_spec.rb +55 -0
- data/spec/aruba/matchers/command/have_output_size_spec.rb +25 -0
- data/spec/aruba/matchers/command_spec.rb +174 -0
- data/spec/aruba/matchers/directory_spec.rb +57 -0
- data/spec/aruba/matchers/file_spec.rb +127 -0
- data/spec/aruba/matchers/path_spec.rb +88 -0
- data/spec/aruba/platform/simple_table_spec.rb +23 -0
- data/spec/aruba/platform/windows_environment_variables_spec.rb +500 -0
- data/spec/aruba/rspec_spec.rb +15 -0
- data/spec/aruba/runtime_spec.rb +29 -0
- data/spec/aruba/spawn_process_spec.rb +60 -0
- data/spec/event_bus/name_resolver_spec.rb +68 -0
- data/spec/event_bus_spec.rb +160 -0
- data/spec/spec_helper.rb +23 -0
- data/spec/support/configs/.keep +0 -0
- data/spec/support/configs/aruba.rb +5 -0
- data/spec/support/configs/pry.rb +3 -0
- data/spec/support/configs/rspec.rb +15 -0
- data/spec/support/helpers/.keep +0 -0
- data/spec/support/helpers/reporting.rb +44 -0
- data/spec/support/matchers/.keep +0 -0
- data/spec/support/matchers/option.rb +35 -0
- data/spec/support/shared_contexts/.keep +0 -0
- data/spec/support/shared_contexts/aruba.rb +48 -0
- data/spec/support/shared_examples/.keep +0 -0
- data/spec/support/shared_examples/configuration.rb +116 -0
- data/spec/support/shared_examples/directory.rb +7 -0
- data/spec/support/shared_examples/file.rb +7 -0
- data/templates/css/console.css +24 -0
- data/templates/css/filesystem.css +42 -0
- data/templates/css/pygments-autumn.css +59 -0
- data/templates/files.erb +14 -0
- data/templates/images/LICENSE +22 -0
- 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 +20 -0
- data/templates/js/filesystem.js +5 -0
- data/templates/js/jquery-1.11.3.min.js +5 -0
- data/templates/main.erb +34 -0
- metadata +629 -0
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
Feature: Supported Testing Frameworks
|
|
2
|
+
|
|
3
|
+
You can use `aruba` with all major testing frameworks from the Ruby World:
|
|
4
|
+
|
|
5
|
+
\* Cucumber
|
|
6
|
+
\* RSpec
|
|
7
|
+
\* Minitest
|
|
8
|
+
|
|
9
|
+
Background:
|
|
10
|
+
Given I use a fixture named "cli-app"
|
|
11
|
+
|
|
12
|
+
Scenario: Use "aruba" with "Cucumber"
|
|
13
|
+
Given a file named "features/support/env.rb" with:
|
|
14
|
+
"""
|
|
15
|
+
require 'aruba/cucumber'
|
|
16
|
+
"""
|
|
17
|
+
And a file named "features/use_aruba_with_cucumber.feature" with:
|
|
18
|
+
"""
|
|
19
|
+
Feature: Cucumber
|
|
20
|
+
Scenario: First Run
|
|
21
|
+
Given a file named "file.txt" with:
|
|
22
|
+
\"\"\"
|
|
23
|
+
Hello World
|
|
24
|
+
\"\"\"
|
|
25
|
+
Then the file "file.txt" should contain:
|
|
26
|
+
\"\"\"
|
|
27
|
+
Hello World
|
|
28
|
+
\"\"\"
|
|
29
|
+
"""
|
|
30
|
+
When I run `cucumber`
|
|
31
|
+
Then the features should all pass
|
|
32
|
+
|
|
33
|
+
Scenario: Use "aruba" with "RSpec"
|
|
34
|
+
Given a file named "spec/support/aruba.rb" with:
|
|
35
|
+
"""
|
|
36
|
+
require 'aruba/rspec'
|
|
37
|
+
"""
|
|
38
|
+
And a file named "spec/spec_helper.rb" with:
|
|
39
|
+
"""
|
|
40
|
+
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
|
|
41
|
+
|
|
42
|
+
if RUBY_VERSION < '1.9.3'
|
|
43
|
+
::Dir.glob(::File.expand_path('../support/**/*.rb', __FILE__)).each { |f| require File.join(File.dirname(f), File.basename(f, '.rb')) }
|
|
44
|
+
else
|
|
45
|
+
::Dir.glob(::File.expand_path('../support/**/*.rb', __FILE__)).each { |f| require_relative f }
|
|
46
|
+
end
|
|
47
|
+
"""
|
|
48
|
+
And a file named "spec/use_aruba_with_rspec_spec.rb" with:
|
|
49
|
+
"""
|
|
50
|
+
require 'spec_helper'
|
|
51
|
+
|
|
52
|
+
RSpec.describe 'First Run', :type => :aruba do
|
|
53
|
+
let(:file) { 'file.txt' }
|
|
54
|
+
let(:content) { 'Hello World' }
|
|
55
|
+
|
|
56
|
+
before(:each) { write_file file, content }
|
|
57
|
+
|
|
58
|
+
it { expect(read(file)).to eq [content] }
|
|
59
|
+
end
|
|
60
|
+
"""
|
|
61
|
+
When I run `rspec`
|
|
62
|
+
Then the specs should all pass
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
Scenario: Use "aruba" with "Minitest"
|
|
66
|
+
Given a file named "test/support/aruba.rb" with:
|
|
67
|
+
"""
|
|
68
|
+
require 'aruba/api'
|
|
69
|
+
"""
|
|
70
|
+
And a file named "test/test_helper.rb" with:
|
|
71
|
+
"""
|
|
72
|
+
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
|
|
73
|
+
|
|
74
|
+
if RUBY_VERSION < '1.9.3'
|
|
75
|
+
::Dir.glob(::File.expand_path('../support/**/*.rb', __FILE__)).each { |f| require File.join(File.dirname(f), File.basename(f, '.rb')) }
|
|
76
|
+
else
|
|
77
|
+
::Dir.glob(::File.expand_path('../support/**/*.rb', __FILE__)).each { |f| require_relative f }
|
|
78
|
+
end
|
|
79
|
+
"""
|
|
80
|
+
And a file named "test/use_aruba_with_minitest.rb" with:
|
|
81
|
+
"""
|
|
82
|
+
$LOAD_PATH.unshift File.expand_path('../test', __FILE__)
|
|
83
|
+
|
|
84
|
+
require 'test_helper'
|
|
85
|
+
require 'minitest/autorun'
|
|
86
|
+
|
|
87
|
+
class FirstRun < Minitest::Test
|
|
88
|
+
include Aruba::Api
|
|
89
|
+
|
|
90
|
+
def setup
|
|
91
|
+
aruba_setup
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
def getting_started_with_aruba
|
|
95
|
+
file = 'file.txt'
|
|
96
|
+
content = 'Hello World'
|
|
97
|
+
|
|
98
|
+
write_file file, content
|
|
99
|
+
read(file).must_equal [content]
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
"""
|
|
103
|
+
When I run `ruby -Ilib:test test/use_aruba_with_minitest.rb`
|
|
104
|
+
Then the tests should all pass
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
Feature: Writing good feature tests with aruba to create documentations
|
|
2
|
+
|
|
3
|
+
You can use Markdown within your feature tests. This is quite good to write a
|
|
4
|
+
living documentation.
|
|
5
|
+
|
|
6
|
+
There are some edge cases where Gherkin and Markdown don't agree. Bullet lists
|
|
7
|
+
using `*` is one example. The `*` is also an alias for step keywords in
|
|
8
|
+
Gherkin. Markdown headers (the kind starting with a `#`) is another example.
|
|
9
|
+
They are parsed as comments by Gherkin. To use either of these, just escape
|
|
10
|
+
them with a backslash. Alternatively just use the "-".
|
|
11
|
+
|
|
12
|
+
You'd write:
|
|
13
|
+
|
|
14
|
+
```gherkin
|
|
15
|
+
Scenario: Make tea
|
|
16
|
+
\## Making tea
|
|
17
|
+
\* Get a pot
|
|
18
|
+
\* And some hot water
|
|
19
|
+
|
|
20
|
+
Given...
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
This way Gherkin won't recognize these lines as special tokens, and the
|
|
24
|
+
reporter will render them as Markdown. (The reporter strips away any leading
|
|
25
|
+
the backslashes before handing it off to the Markdown parser).
|
|
26
|
+
|
|
27
|
+
Another option is to use alternative Markdown syntax and omit conflicts and
|
|
28
|
+
escaping altogether:
|
|
29
|
+
|
|
30
|
+
```gherkin
|
|
31
|
+
Scenario: Make tea
|
|
32
|
+
Making tea
|
|
33
|
+
----------
|
|
34
|
+
- Get a pot
|
|
35
|
+
- And some hot water
|
|
36
|
+
|
|
37
|
+
Given...
|
|
38
|
+
```
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
Feature: After command hooks
|
|
2
|
+
|
|
3
|
+
You can configure Aruba to run blocks of code after it has run
|
|
4
|
+
a command. The command will be passed to the block.
|
|
5
|
+
|
|
6
|
+
You can hook into Aruba's lifecycle just before it runs a command and after it has run the command:
|
|
7
|
+
|
|
8
|
+
```ruby
|
|
9
|
+
Aruba.configure do |config|
|
|
10
|
+
config.after :command do |cmd|
|
|
11
|
+
puts "After the run of '#{cmd}'"
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Background:
|
|
17
|
+
Given I use a fixture named "cli-app"
|
|
18
|
+
|
|
19
|
+
Scenario: Run a simple command with an "after(:command)"-hook
|
|
20
|
+
Given a file named "spec/support/hooks.rb" with:
|
|
21
|
+
"""
|
|
22
|
+
Aruba.configure do |config|
|
|
23
|
+
config.after :command do |cmd|
|
|
24
|
+
puts "after the run of `#{cmd.commandline}`"
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
"""
|
|
28
|
+
And a file named "spec/hook_spec.rb" with:
|
|
29
|
+
"""
|
|
30
|
+
require 'spec_helper'
|
|
31
|
+
|
|
32
|
+
RSpec.describe 'Hooks', :type => :aruba do
|
|
33
|
+
before(:each) { run_simple 'echo running' }
|
|
34
|
+
|
|
35
|
+
it { expect(last_command_started.stdout.chomp).to eq 'running' }
|
|
36
|
+
end
|
|
37
|
+
"""
|
|
38
|
+
When I run `rspec`
|
|
39
|
+
Then the specs should all pass
|
|
40
|
+
And the output should contain:
|
|
41
|
+
"""
|
|
42
|
+
after the run of `echo running`
|
|
43
|
+
"""
|
|
44
|
+
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
Feature: before_cmd hooks
|
|
2
|
+
|
|
3
|
+
You can configure Aruba to run blocks of code before it runs
|
|
4
|
+
each command.
|
|
5
|
+
|
|
6
|
+
The command will be passed to the block.
|
|
7
|
+
|
|
8
|
+
You can hook into Aruba's lifecycle just before it runs a command and after it has run the command:
|
|
9
|
+
|
|
10
|
+
```ruby
|
|
11
|
+
Aruba.configure do |config|
|
|
12
|
+
config.before :command do |cmd|
|
|
13
|
+
puts "About to run '#{cmd}'"
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Background:
|
|
19
|
+
Given I use a fixture named "cli-app"
|
|
20
|
+
|
|
21
|
+
Scenario: Run a simple command with a "before(:command)"-hook
|
|
22
|
+
Given a file named "spec/support/hooks.rb" with:
|
|
23
|
+
"""
|
|
24
|
+
Aruba.configure do |config|
|
|
25
|
+
config.before :command do |cmd|
|
|
26
|
+
puts "before the run of `#{cmd.commandline}`"
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
"""
|
|
30
|
+
And a file named "spec/hook_spec.rb" with:
|
|
31
|
+
"""
|
|
32
|
+
require 'spec_helper'
|
|
33
|
+
|
|
34
|
+
RSpec.describe 'Hooks', :type => :aruba do
|
|
35
|
+
before(:each) { run_simple 'echo running' }
|
|
36
|
+
|
|
37
|
+
it { expect(last_command_started.stdout.chomp).to eq 'running' }
|
|
38
|
+
end
|
|
39
|
+
"""
|
|
40
|
+
When I run `rspec`
|
|
41
|
+
Then the specs should all pass
|
|
42
|
+
And the output should contain:
|
|
43
|
+
"""
|
|
44
|
+
before the run of `echo running`
|
|
45
|
+
"""
|
|
46
|
+
|
|
47
|
+
Scenario: Run a simple command with a "before(:cmd)"-hook (deprecated)
|
|
48
|
+
Given a file named "spec/support/hooks.rb" with:
|
|
49
|
+
"""
|
|
50
|
+
Aruba.configure do |config|
|
|
51
|
+
config.before :cmd do |cmd|
|
|
52
|
+
puts "before the run of `#{cmd}`"
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
"""
|
|
56
|
+
And a file named "spec/hook_spec.rb" with:
|
|
57
|
+
"""
|
|
58
|
+
require 'spec_helper'
|
|
59
|
+
|
|
60
|
+
RSpec.describe 'Hooks', :type => :aruba do
|
|
61
|
+
before(:each) { run_simple 'echo running' }
|
|
62
|
+
|
|
63
|
+
it { expect(last_command_started.stdout.chomp).to eq 'running' }
|
|
64
|
+
end
|
|
65
|
+
"""
|
|
66
|
+
When I run `rspec`
|
|
67
|
+
Then the specs should all pass
|
|
68
|
+
And the output should contain:
|
|
69
|
+
"""
|
|
70
|
+
before the run of `echo running`
|
|
71
|
+
"""
|
|
@@ -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" |
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
Feature: Check if directory has given sub directories
|
|
2
|
+
|
|
3
|
+
If you need to check if a given directory has given sub dirctories, you can
|
|
4
|
+
use the `have_sub_directory`-matcher.
|
|
5
|
+
|
|
6
|
+
```ruby
|
|
7
|
+
require 'spec_helper'
|
|
8
|
+
|
|
9
|
+
RSpec.describe 'Check if directory has sub-directory', :type => :aruba do
|
|
10
|
+
let(:file) { 'file.txt' }
|
|
11
|
+
before(:each) { touch(file) }
|
|
12
|
+
|
|
13
|
+
it { expect(file).to be_an_existing_file }
|
|
14
|
+
end
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Background:
|
|
18
|
+
Given I use a fixture named "cli-app"
|
|
19
|
+
|
|
20
|
+
Scenario: Expect existing sub directory
|
|
21
|
+
Given a file named "spec/existing_file_spec.rb" with:
|
|
22
|
+
"""
|
|
23
|
+
require 'spec_helper'
|
|
24
|
+
|
|
25
|
+
RSpec.describe 'Check if directory has sub-directory', :type => :aruba do
|
|
26
|
+
let(:directory) { 'dir.d' }
|
|
27
|
+
let(:sub_directory) { 'sub-dir.d' }
|
|
28
|
+
|
|
29
|
+
before(:each) { create_directory(File.join(directory, sub_directory)) }
|
|
30
|
+
|
|
31
|
+
it { expect(directory).to have_sub_directory sub_directory }
|
|
32
|
+
end
|
|
33
|
+
"""
|
|
34
|
+
When I run `rspec`
|
|
35
|
+
Then the specs should all pass
|
|
36
|
+
|
|
37
|
+
Scenario: Expect multiple existing sub directories
|
|
38
|
+
Given a file named "spec/existing_file_spec.rb" with:
|
|
39
|
+
"""
|
|
40
|
+
require 'spec_helper'
|
|
41
|
+
|
|
42
|
+
RSpec.describe 'Check if directory has sub-directory', :type => :aruba do
|
|
43
|
+
let(:directory) { 'dir.d' }
|
|
44
|
+
let(:sub_directories) { %w(sub-dir1.d sub-dir2.d) }
|
|
45
|
+
|
|
46
|
+
before(:each) do
|
|
47
|
+
sub_directories.each { |d| create_directory(File.join(directory, d)) }
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
it { expect(directory).to have_sub_directory sub_directories }
|
|
51
|
+
end
|
|
52
|
+
"""
|
|
53
|
+
When I run `rspec`
|
|
54
|
+
Then the specs should all pass
|
|
55
|
+
|
|
56
|
+
Scenario: Expect non-existing sub directory
|
|
57
|
+
Given a file named "spec/existing_file_spec.rb" with:
|
|
58
|
+
"""
|
|
59
|
+
require 'spec_helper'
|
|
60
|
+
|
|
61
|
+
RSpec.describe 'Check if directory has sub-directory', :type => :aruba do
|
|
62
|
+
let(:directory) { 'dir.d' }
|
|
63
|
+
let(:sub_directory) { 'sub-dir.d' }
|
|
64
|
+
|
|
65
|
+
before(:each) { create_directory(directory) }
|
|
66
|
+
|
|
67
|
+
it { expect(directory).not_to have_sub_directory sub_directory }
|
|
68
|
+
end
|
|
69
|
+
"""
|
|
70
|
+
When I run `rspec`
|
|
71
|
+
Then the specs should all pass
|
|
72
|
+
|
|
73
|
+
Scenario: Expect multiple directories have sub directory
|
|
74
|
+
Given a file named "spec/existing_file_spec.rb" with:
|
|
75
|
+
"""
|
|
76
|
+
require 'spec_helper'
|
|
77
|
+
|
|
78
|
+
RSpec.describe 'Check if directory has sub-directory', :type => :aruba do
|
|
79
|
+
let(:directories) { %w(dir1.d dir2.d) }
|
|
80
|
+
let(:sub_directory) { 'sub-dir.d' }
|
|
81
|
+
|
|
82
|
+
before(:each) do
|
|
83
|
+
directories.each { |d| create_directory(File.join(d, sub_directory)) }
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
it { expect(directories).to all have_sub_directory sub_directory }
|
|
87
|
+
end
|
|
88
|
+
"""
|
|
89
|
+
When I run `rspec`
|
|
90
|
+
Then the specs should all pass
|
|
91
|
+
|
|
92
|
+
Scenario: Expect a least one directory has sub directory
|
|
93
|
+
Given a file named "spec/existing_file_spec.rb" with:
|
|
94
|
+
"""
|
|
95
|
+
require 'spec_helper'
|
|
96
|
+
|
|
97
|
+
RSpec.describe 'Check if directory has sub-directory', :type => :aruba do
|
|
98
|
+
let(:directories) { %w(dir1.d dir2.d) }
|
|
99
|
+
let(:sub_directory) { 'sub-dir.d' }
|
|
100
|
+
|
|
101
|
+
before(:each) do
|
|
102
|
+
create_directory(File.join(directories.first, sub_directory))
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
it { expect(directories).to include a_directory_having_sub_directory sub_directory }
|
|
106
|
+
end
|
|
107
|
+
"""
|
|
108
|
+
When I run `rspec`
|
|
109
|
+
Then the specs should all pass
|
|
110
|
+
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
Feature: Check if command can be found in PATH
|
|
2
|
+
|
|
3
|
+
If you need to check if a given command can be found in path, you can use the
|
|
4
|
+
`be_an_existing_executable`-matcher.
|
|
5
|
+
|
|
6
|
+
```ruby
|
|
7
|
+
require 'spec_helper'
|
|
8
|
+
|
|
9
|
+
RSpec.describe 'Check if command can be found in PATH', :type => :aruba do
|
|
10
|
+
let(:file) { 'file.sh' }
|
|
11
|
+
before(:each) { touch(file) }
|
|
12
|
+
before(:each) { chmod(0755, file) }
|
|
13
|
+
before(:each) { prepend_environment_variable('PATH', format('%s:', expand_path('.')) }
|
|
14
|
+
|
|
15
|
+
it { expect(file).to be_an_existing_executable }
|
|
16
|
+
end
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Background:
|
|
20
|
+
Given I use a fixture named "cli-app"
|
|
21
|
+
|
|
22
|
+
Scenario: Expect single existing executable file
|
|
23
|
+
Given a file named "spec/existing_executable_spec.rb" with:
|
|
24
|
+
"""
|
|
25
|
+
require 'spec_helper'
|
|
26
|
+
|
|
27
|
+
RSpec.describe 'Check if command can be found in PATH', :type => :aruba do
|
|
28
|
+
let(:file) { 'file.sh' }
|
|
29
|
+
|
|
30
|
+
before(:each) { touch(file) }
|
|
31
|
+
before(:each) { chmod(0755, file) }
|
|
32
|
+
before(:each) { prepend_environment_variable('PATH', format('%s:', expand_path('.'))) }
|
|
33
|
+
|
|
34
|
+
it { expect(file).to be_a_command_found_in_path }
|
|
35
|
+
end
|
|
36
|
+
"""
|
|
37
|
+
When I run `rspec`
|
|
38
|
+
Then the specs should all pass
|
|
39
|
+
|
|
40
|
+
Scenario: Expect single non-existing executable file
|
|
41
|
+
Given a file named "spec/existing_executable_spec.rb" with:
|
|
42
|
+
"""
|
|
43
|
+
require 'spec_helper'
|
|
44
|
+
|
|
45
|
+
RSpec.describe 'Check if command can be found in PATH', :type => :aruba do
|
|
46
|
+
let(:file) { 'file.sh' }
|
|
47
|
+
|
|
48
|
+
before(:each) { prepend_environment_variable('PATH', format('%s:', expand_path('.'))) }
|
|
49
|
+
|
|
50
|
+
it { expect(file).not_to be_a_command_found_in_path }
|
|
51
|
+
end
|
|
52
|
+
"""
|
|
53
|
+
When I run `rspec`
|
|
54
|
+
Then the specs should all pass
|
|
55
|
+
|
|
56
|
+
Scenario: Expect single non-executable file
|
|
57
|
+
Given a file named "spec/existing_executable_spec.rb" with:
|
|
58
|
+
"""
|
|
59
|
+
require 'spec_helper'
|
|
60
|
+
|
|
61
|
+
RSpec.describe 'Check if command can be found in PATH', :type => :aruba do
|
|
62
|
+
let(:file) { 'file.sh' }
|
|
63
|
+
|
|
64
|
+
before(:each) { touch(file) }
|
|
65
|
+
before(:each) { prepend_environment_variable('PATH', format('%s:', expand_path('.'))) }
|
|
66
|
+
|
|
67
|
+
it { expect(file).not_to be_a_command_found_in_path }
|
|
68
|
+
end
|
|
69
|
+
"""
|
|
70
|
+
When I run `rspec`
|
|
71
|
+
Then the specs should all pass
|
|
72
|
+
|
|
73
|
+
Scenario: Expect multiple existing executable files
|
|
74
|
+
Given a file named "spec/existing_executable_spec.rb" with:
|
|
75
|
+
"""
|
|
76
|
+
require 'spec_helper'
|
|
77
|
+
|
|
78
|
+
RSpec.describe 'Check if file exists and is an executable file', :type => :aruba do
|
|
79
|
+
let(:files) { %w(file1.sh file2.sh) }
|
|
80
|
+
|
|
81
|
+
before :each do
|
|
82
|
+
files.each do |f|
|
|
83
|
+
touch(f)
|
|
84
|
+
chmod(0755, f)
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
before(:each) { prepend_environment_variable('PATH', format('%s:', expand_path('.'))) }
|
|
89
|
+
|
|
90
|
+
it { expect(files).to all be_a_command_found_in_path }
|
|
91
|
+
end
|
|
92
|
+
"""
|
|
93
|
+
When I run `rspec`
|
|
94
|
+
Then the specs should all pass
|
|
95
|
+
|
|
96
|
+
Scenario: Expect a least one existing executable file
|
|
97
|
+
Given a file named "spec/existing_executable_spec.rb" with:
|
|
98
|
+
"""
|
|
99
|
+
require 'spec_helper'
|
|
100
|
+
|
|
101
|
+
RSpec.describe 'Check if file exists and is an executable file', :type => :aruba do
|
|
102
|
+
let(:files) { %w(file1.sh file2.sh) }
|
|
103
|
+
|
|
104
|
+
before :each do
|
|
105
|
+
touch(files.first)
|
|
106
|
+
chmod(0755, files.first)
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
before(:each) { prepend_environment_variable('PATH', format('%s:', expand_path('.'))) }
|
|
110
|
+
|
|
111
|
+
it { expect(files).to include a_command_found_in_path }
|
|
112
|
+
end
|
|
113
|
+
"""
|
|
114
|
+
When I run `rspec`
|
|
115
|
+
Then the specs should all pass
|