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,24 @@
|
|
|
1
|
+
# Aruba
|
|
2
|
+
module Aruba
|
|
3
|
+
# In config wrapper
|
|
4
|
+
#
|
|
5
|
+
# Used to make the configuration read only if one needs to access an
|
|
6
|
+
# configuration option from with `Aruba::Config`.
|
|
7
|
+
#
|
|
8
|
+
# @private
|
|
9
|
+
class InConfigWrapper
|
|
10
|
+
attr_reader :config
|
|
11
|
+
private :config
|
|
12
|
+
|
|
13
|
+
def initialize(config)
|
|
14
|
+
@config = config.dup
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def method_missing(name, *args)
|
|
18
|
+
fail ArgumentError, 'Options take no argument' if args.count > 0
|
|
19
|
+
fail UnknownOptionError, %(Option "#{name}" is unknown. Please use only earlier defined options) unless config.key? name
|
|
20
|
+
|
|
21
|
+
config[name]
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
require 'aruba/processes/in_process'
|
|
2
|
+
require 'aruba/platform'
|
|
3
|
+
|
|
4
|
+
# Aruba
|
|
5
|
+
module Aruba
|
|
6
|
+
# @deprecated
|
|
7
|
+
class InProcess < Aruba::Processes::InProcess
|
|
8
|
+
def initialize(*args)
|
|
9
|
+
Aruba.platform.deprecated('The use of "Aruba::InProcess" is deprecated. Use "Aruba::Processes::InProcess" instead.')
|
|
10
|
+
|
|
11
|
+
super
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
require 'thor/group'
|
|
2
|
+
require 'thor/actions'
|
|
3
|
+
|
|
4
|
+
# Aruba
|
|
5
|
+
module Aruba
|
|
6
|
+
# Initializers
|
|
7
|
+
#
|
|
8
|
+
# Initialize project with aruba configuration files
|
|
9
|
+
module Initializers
|
|
10
|
+
# Common initializer
|
|
11
|
+
#
|
|
12
|
+
# @private
|
|
13
|
+
class CommonInitializer < Thor::Group
|
|
14
|
+
include Thor::Actions
|
|
15
|
+
|
|
16
|
+
# Add gem to gemfile
|
|
17
|
+
def add_gem
|
|
18
|
+
file = 'Gemfile'
|
|
19
|
+
creator = if File.exist? file
|
|
20
|
+
:append_to_file
|
|
21
|
+
else
|
|
22
|
+
:create_file
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
content = if File.exist? file
|
|
26
|
+
%(gem 'aruba', '~> #{Aruba::VERSION}')
|
|
27
|
+
else
|
|
28
|
+
%(source 'https://rubygems.org'\ngem 'aruba', '~> #{Aruba::VERSION}'\n)
|
|
29
|
+
end
|
|
30
|
+
send creator, file, content
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# Aruba
|
|
37
|
+
module Aruba
|
|
38
|
+
# Initializers
|
|
39
|
+
module Initializers
|
|
40
|
+
# Default Initializer
|
|
41
|
+
#
|
|
42
|
+
# This handles invalid values for initializer.
|
|
43
|
+
#
|
|
44
|
+
# @private
|
|
45
|
+
class FailingInitializer
|
|
46
|
+
class << self
|
|
47
|
+
def match?(*)
|
|
48
|
+
true
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def start(*)
|
|
52
|
+
fail ArgumentError, %(Unknown test framework. Please use one of :rspec, :cucumber or :minitest)
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# Aruba
|
|
60
|
+
module Aruba
|
|
61
|
+
# Initializer
|
|
62
|
+
module Initializers
|
|
63
|
+
# Add aruba + rspec to project
|
|
64
|
+
#
|
|
65
|
+
# @private
|
|
66
|
+
class RSpecInitializer < Thor::Group
|
|
67
|
+
include Thor::Actions
|
|
68
|
+
|
|
69
|
+
no_commands do
|
|
70
|
+
def self.match?(framework)
|
|
71
|
+
:rspec == framework.downcase.to_sym
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def create_helper
|
|
76
|
+
file = 'spec/spec_helper.rb'
|
|
77
|
+
creator = if File.exist? file
|
|
78
|
+
:append_to_file
|
|
79
|
+
else
|
|
80
|
+
:create_file
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
send creator, file, <<-EOS
|
|
84
|
+
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
|
|
85
|
+
|
|
86
|
+
if RUBY_VERSION < '1.9.3'
|
|
87
|
+
::Dir.glob(::File.expand_path('../support/*.rb', __FILE__)).each { |f| require File.join(File.dirname(f), File.basename(f, '.rb')) }
|
|
88
|
+
::Dir.glob(::File.expand_path('../support/**/*.rb', __FILE__)).each { |f| require File.join(File.dirname(f), File.basename(f, '.rb')) }
|
|
89
|
+
else
|
|
90
|
+
::Dir.glob(::File.expand_path('../support/*.rb', __FILE__)).each { |f| require_relative f }
|
|
91
|
+
::Dir.glob(::File.expand_path('../support/**/*.rb', __FILE__)).each { |f| require_relative f }
|
|
92
|
+
end
|
|
93
|
+
EOS
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
def create_support_file
|
|
97
|
+
create_file 'spec/support/aruba.rb', <<-EOS
|
|
98
|
+
require 'aruba/rspec'
|
|
99
|
+
EOS
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
# Aruba
|
|
106
|
+
module Aruba
|
|
107
|
+
# Initializer
|
|
108
|
+
module Initializers
|
|
109
|
+
# Add aruba + aruba to project
|
|
110
|
+
#
|
|
111
|
+
# @private
|
|
112
|
+
class CucumberInitializer < Thor::Group
|
|
113
|
+
include Thor::Actions
|
|
114
|
+
|
|
115
|
+
no_commands do
|
|
116
|
+
def self.match?(framework)
|
|
117
|
+
:cucumber == framework.downcase.to_sym
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
def create_support_file
|
|
122
|
+
create_file 'features/support/aruba.rb', <<-EOS
|
|
123
|
+
require 'aruba/cucumber'
|
|
124
|
+
EOS
|
|
125
|
+
end
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
# Aruba
|
|
131
|
+
module Aruba
|
|
132
|
+
# Initializer
|
|
133
|
+
module Initializers
|
|
134
|
+
# Add aruba + minitest to project
|
|
135
|
+
#
|
|
136
|
+
# @private
|
|
137
|
+
class MiniTestInitializer < Thor::Group
|
|
138
|
+
include Thor::Actions
|
|
139
|
+
|
|
140
|
+
no_commands do
|
|
141
|
+
def self.match?(framework)
|
|
142
|
+
:minitest == framework.downcase.to_sym
|
|
143
|
+
end
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
def create_helper
|
|
147
|
+
file = 'test/test_helper.rb'
|
|
148
|
+
creator = if File.exist? file
|
|
149
|
+
:append_to_file
|
|
150
|
+
else
|
|
151
|
+
:create_file
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
send creator, file, <<-EOS
|
|
155
|
+
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
|
|
156
|
+
|
|
157
|
+
if RUBY_VERSION < '1.9.3'
|
|
158
|
+
::Dir.glob(::File.expand_path('../support/*.rb', __FILE__)).each { |f| require File.join(File.dirname(f), File.basename(f, '.rb')) }
|
|
159
|
+
::Dir.glob(::File.expand_path('../support/**/*.rb', __FILE__)).each { |f| require File.join(File.dirname(f), File.basename(f, '.rb')) }
|
|
160
|
+
else
|
|
161
|
+
::Dir.glob(::File.expand_path('../support/*.rb', __FILE__)).each { |f| require_relative f }
|
|
162
|
+
::Dir.glob(::File.expand_path('../support/**/*.rb', __FILE__)).each { |f| require_relative f }
|
|
163
|
+
end
|
|
164
|
+
EOS
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
def create_example
|
|
168
|
+
create_file 'test/use_aruba_with_minitest.rb', <<-EOS
|
|
169
|
+
$LOAD_PATH.unshift File.expand_path('../test', __FILE__)
|
|
170
|
+
|
|
171
|
+
require 'test_helper'
|
|
172
|
+
require 'minitest/autorun'
|
|
173
|
+
require 'aruba/api'
|
|
174
|
+
|
|
175
|
+
class FirstRun < Minitest::Test
|
|
176
|
+
include Aruba::Api
|
|
177
|
+
|
|
178
|
+
def setup
|
|
179
|
+
aruba_setup
|
|
180
|
+
end
|
|
181
|
+
end
|
|
182
|
+
EOS
|
|
183
|
+
end
|
|
184
|
+
end
|
|
185
|
+
end
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
# Aruba
|
|
189
|
+
module Aruba
|
|
190
|
+
# The whole initializer
|
|
191
|
+
#
|
|
192
|
+
# This one uses the specific initializers to generate the needed files.
|
|
193
|
+
#
|
|
194
|
+
# @private
|
|
195
|
+
class Initializer
|
|
196
|
+
private
|
|
197
|
+
|
|
198
|
+
attr_reader :initializers
|
|
199
|
+
|
|
200
|
+
public
|
|
201
|
+
|
|
202
|
+
def initialize
|
|
203
|
+
@initializers = []
|
|
204
|
+
@initializers << Initializers::RSpecInitializer
|
|
205
|
+
@initializers << Initializers::CucumberInitializer
|
|
206
|
+
@initializers << Initializers::MiniTestInitializer
|
|
207
|
+
@initializers << Initializers::FailingInitializer
|
|
208
|
+
end
|
|
209
|
+
|
|
210
|
+
# Create files etc.
|
|
211
|
+
def call(test_framework)
|
|
212
|
+
begin
|
|
213
|
+
initializers.find { |i| i.match? test_framework }.start [], {}
|
|
214
|
+
rescue ArgumentError => e
|
|
215
|
+
$stderr.puts e.message
|
|
216
|
+
exit 0
|
|
217
|
+
end
|
|
218
|
+
|
|
219
|
+
Initializers::CommonInitializer.start [], {}
|
|
220
|
+
end
|
|
221
|
+
end
|
|
222
|
+
end
|
data/lib/aruba/jruby.rb
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
require 'aruba/matchers/base/object_formatter'
|
|
2
|
+
|
|
3
|
+
# Aruba
|
|
4
|
+
module Aruba
|
|
5
|
+
# Matchers
|
|
6
|
+
module Matchers
|
|
7
|
+
# Base Matcher
|
|
8
|
+
class BaseMatcher
|
|
9
|
+
# @api private
|
|
10
|
+
# Used to detect when no arg is passed to `initialize`.
|
|
11
|
+
# `nil` cannot be used because it's a valid value to pass.
|
|
12
|
+
UNDEFINED = Object.new.freeze
|
|
13
|
+
|
|
14
|
+
# @private
|
|
15
|
+
attr_reader :actual, :expected, :rescued_exception
|
|
16
|
+
|
|
17
|
+
def initialize(expected = UNDEFINED)
|
|
18
|
+
@expected = expected unless UNDEFINED.equal?(expected)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# @api private
|
|
22
|
+
# Indicates if the match is successful. Delegates to `match`, which
|
|
23
|
+
# should be defined on a subclass. Takes care of consistently
|
|
24
|
+
# initializing the `actual` attribute.
|
|
25
|
+
def matches?(actual)
|
|
26
|
+
@actual = actual
|
|
27
|
+
match(expected, actual)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def iterable?
|
|
31
|
+
@actual.respond_to?(:each_with_index)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# @private
|
|
35
|
+
module HashFormatting
|
|
36
|
+
# `{ :a => 5, :b => 2 }.inspect` produces:
|
|
37
|
+
#
|
|
38
|
+
# {:a=>5, :b=>2}
|
|
39
|
+
#
|
|
40
|
+
# ...but it looks much better as:
|
|
41
|
+
#
|
|
42
|
+
# {:a => 5, :b => 2}
|
|
43
|
+
#
|
|
44
|
+
# This is idempotent and safe to run on a string multiple times.
|
|
45
|
+
def improve_hash_formatting(inspect_string)
|
|
46
|
+
inspect_string.gsub(/(\S)=>(\S)/, '\1 => \2')
|
|
47
|
+
end
|
|
48
|
+
module_function :improve_hash_formatting
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
include HashFormatting
|
|
52
|
+
|
|
53
|
+
# @api private
|
|
54
|
+
# Provides default implementations of failure messages, based on the `description`.
|
|
55
|
+
module DefaultFailureMessages
|
|
56
|
+
# @api private
|
|
57
|
+
# Provides a good generic failure message. Based on `description`.
|
|
58
|
+
# When subclassing, if you are not satisfied with this failure message
|
|
59
|
+
# you often only need to override `description`.
|
|
60
|
+
# @return [String]
|
|
61
|
+
def failure_message
|
|
62
|
+
"expected #{description_of @actual} to #{description}"
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
# @api private
|
|
66
|
+
# Provides a good generic negative failure message. Based on `description`.
|
|
67
|
+
# When subclassing, if you are not satisfied with this failure message
|
|
68
|
+
# you often only need to override `description`.
|
|
69
|
+
# @return [String]
|
|
70
|
+
def failure_message_when_negated
|
|
71
|
+
"expected #{description_of @actual} not to #{description}"
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
# @private
|
|
75
|
+
# rubocop:disable Style/PredicateName
|
|
76
|
+
def self.has_default_failure_messages?(matcher)
|
|
77
|
+
matcher.method(:failure_message).owner == self &&
|
|
78
|
+
matcher.method(:failure_message_when_negated).owner == self
|
|
79
|
+
rescue NameError
|
|
80
|
+
false
|
|
81
|
+
end
|
|
82
|
+
# rubocop:enable Style/PredicateName
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
include DefaultFailureMessages
|
|
86
|
+
|
|
87
|
+
# Returns the description of the given object in a way that is
|
|
88
|
+
# aware of composed matchers. If the object is a matcher with
|
|
89
|
+
# a `description` method, returns the description; otherwise
|
|
90
|
+
# returns `object.inspect`.
|
|
91
|
+
def description_of(object)
|
|
92
|
+
Aruba::Matchers::ObjectFormatter.format(object)
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
end
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# Aruba
|
|
2
|
+
module Aruba
|
|
3
|
+
# Matchers
|
|
4
|
+
module Matchers
|
|
5
|
+
# Provide additional output details beyond what `inspect` provides when
|
|
6
|
+
# printing Time, DateTime, or BigDecimal
|
|
7
|
+
#
|
|
8
|
+
# @private
|
|
9
|
+
module ObjectFormatter
|
|
10
|
+
# @api private
|
|
11
|
+
def self.format(object)
|
|
12
|
+
prepare_for_inspection(object).inspect
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# rubocop:disable MethodLength
|
|
16
|
+
# rubocop:disable Metrics/CyclomaticComplexity
|
|
17
|
+
|
|
18
|
+
# @private
|
|
19
|
+
# Prepares the provided object to be formatted by wrapping it as needed
|
|
20
|
+
# in something that, when `inspect` is called on it, will produce the
|
|
21
|
+
# desired output.
|
|
22
|
+
#
|
|
23
|
+
# This allows us to apply the desired formatting to hash/array data structures
|
|
24
|
+
# at any level of nesting, simply by walking that structure and replacing items
|
|
25
|
+
# with custom items that have `inspect` defined to return the desired output
|
|
26
|
+
# for that item. Then we can just use `Array#inspect` or `Hash#inspect` to
|
|
27
|
+
# format the entire thing.
|
|
28
|
+
def self.prepare_for_inspection(object)
|
|
29
|
+
case object
|
|
30
|
+
when Array
|
|
31
|
+
return object.map { |o| prepare_for_inspection(o) }
|
|
32
|
+
when Hash
|
|
33
|
+
return prepare_hash(object)
|
|
34
|
+
when Time
|
|
35
|
+
inspection = format_time(object)
|
|
36
|
+
else
|
|
37
|
+
if defined?(DateTime) && DateTime === object
|
|
38
|
+
inspection = format_date_time(object)
|
|
39
|
+
elsif defined?(BigDecimal) && BigDecimal === object
|
|
40
|
+
inspection = "#{object.to_s 'F'} (#{object.inspect})"
|
|
41
|
+
elsif RSpec::Support.is_a_matcher?(object) && object.respond_to?(:description)
|
|
42
|
+
inspection = object.description
|
|
43
|
+
else
|
|
44
|
+
return DelegatingInspector.new(object)
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
InspectableItem.new(inspection)
|
|
49
|
+
end
|
|
50
|
+
# rubocop:enable Metrics/CyclomaticComplexity
|
|
51
|
+
# rubocop:enable MethodLength
|
|
52
|
+
|
|
53
|
+
# @private
|
|
54
|
+
def self.prepare_hash(input)
|
|
55
|
+
input.each_with_object({}) do |(k, v), hash|
|
|
56
|
+
hash[prepare_for_inspection(k)] = prepare_for_inspection(v)
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
TIME_FORMAT = "%Y-%m-%d %H:%M:%S".freeze
|
|
61
|
+
|
|
62
|
+
if Time.method_defined?(:nsec)
|
|
63
|
+
# @private
|
|
64
|
+
def self.format_time(time)
|
|
65
|
+
time.strftime("#{TIME_FORMAT}.#{format('%09d', time.nsec)} %z")
|
|
66
|
+
end
|
|
67
|
+
else # for 1.8.7
|
|
68
|
+
# @private
|
|
69
|
+
def self.format_time(time)
|
|
70
|
+
time.strftime("#{TIME_FORMAT}.#{format('%06d', time.usec)} %z")
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
DATE_TIME_FORMAT = "%a, %d %b %Y %H:%M:%S.%N %z".freeze
|
|
75
|
+
|
|
76
|
+
# ActiveSupport sometimes overrides inspect. If `ActiveSupport` is
|
|
77
|
+
# defined use a custom format string that includes more time precision.
|
|
78
|
+
# @private
|
|
79
|
+
def self.format_date_time(date_time)
|
|
80
|
+
if defined?(ActiveSupport)
|
|
81
|
+
date_time.strftime(DATE_TIME_FORMAT)
|
|
82
|
+
else
|
|
83
|
+
date_time.inspect
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
# @private
|
|
88
|
+
InspectableItem = Struct.new(:inspection) do
|
|
89
|
+
def inspect
|
|
90
|
+
inspection
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
def pretty_print(pp)
|
|
94
|
+
pp.text inspection
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
# @private
|
|
99
|
+
DelegatingInspector = Struct.new(:object) do
|
|
100
|
+
def inspect
|
|
101
|
+
if defined?(::Delegator) && ::Delegator === object
|
|
102
|
+
"#<#{object.class}(#{ObjectFormatter.format(object.__getobj__)})>"
|
|
103
|
+
else
|
|
104
|
+
object.inspect
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def pretty_print(pp)
|
|
109
|
+
pp.text inspect
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
end
|