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,35 @@
|
|
|
1
|
+
# Aruba
|
|
2
|
+
module Aruba
|
|
3
|
+
# Platforms
|
|
4
|
+
module Platforms
|
|
5
|
+
# Create files with fixed size
|
|
6
|
+
#
|
|
7
|
+
# This class is not meant to be used directly by users.
|
|
8
|
+
#
|
|
9
|
+
# It uses a single null byte as content and really creates so called sparse
|
|
10
|
+
# files.
|
|
11
|
+
#
|
|
12
|
+
# @private
|
|
13
|
+
class ArubaFixedSizeFileCreator
|
|
14
|
+
# Write File
|
|
15
|
+
#
|
|
16
|
+
# @param [String] path
|
|
17
|
+
# The path to write content to
|
|
18
|
+
#
|
|
19
|
+
# @param [Numeric] size
|
|
20
|
+
# The size of the file
|
|
21
|
+
#
|
|
22
|
+
# @param [TrueClass, FalseClass] check_presence (false)
|
|
23
|
+
# Check if file exist
|
|
24
|
+
def call(path, size, check_presence)
|
|
25
|
+
fail "Expected #{path} to be present" if check_presence && !Aruba.platform.file?(path)
|
|
26
|
+
|
|
27
|
+
Aruba.platform.mkdir(File.dirname(path))
|
|
28
|
+
|
|
29
|
+
File.open(path, "wb"){ |f| f.seek(size - 1); f.write("\0") }
|
|
30
|
+
|
|
31
|
+
self
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
require 'logger'
|
|
2
|
+
|
|
3
|
+
# Aruba
|
|
4
|
+
module Aruba
|
|
5
|
+
# Logger
|
|
6
|
+
#
|
|
7
|
+
# @private
|
|
8
|
+
class ArubaLogger
|
|
9
|
+
attr_reader :mode
|
|
10
|
+
|
|
11
|
+
# Create logger
|
|
12
|
+
#
|
|
13
|
+
# @param [Logger] logger (::Logger.new( $stderr ))
|
|
14
|
+
# The logger with should be used to output data
|
|
15
|
+
def initialize(opts = {})
|
|
16
|
+
@mode = opts.fetch(:default_mode, :info)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
[:fatal, :warn, :debug, :info, :error, :unknown].each do |m|
|
|
20
|
+
define_method m do |msg|
|
|
21
|
+
if RUBY_VERSION < '1.9'
|
|
22
|
+
logger.send m, msg
|
|
23
|
+
else
|
|
24
|
+
logger.public_send m, msg
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# Create new logger on every invocation to make
|
|
30
|
+
# capturing $stderr possible
|
|
31
|
+
def logger
|
|
32
|
+
l = ::Logger.new($stderr)
|
|
33
|
+
|
|
34
|
+
case mode
|
|
35
|
+
when :debug
|
|
36
|
+
l.level = ::Logger::DEBUG
|
|
37
|
+
format_debug(l)
|
|
38
|
+
when :silent
|
|
39
|
+
l.level = 9_999
|
|
40
|
+
when :info
|
|
41
|
+
l.level = ::Logger::INFO
|
|
42
|
+
format_standard(l)
|
|
43
|
+
else
|
|
44
|
+
l.level = ::Logger::INFO
|
|
45
|
+
format_standard(l)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
l
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# Is mode?
|
|
52
|
+
#
|
|
53
|
+
# @param [String, Symbol] m
|
|
54
|
+
# Mode to compare with
|
|
55
|
+
def mode?(m)
|
|
56
|
+
mode == m.to_sym
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# Change mode of logger: :debug, ... + Change the output format
|
|
60
|
+
#
|
|
61
|
+
# @param [Symbol] m
|
|
62
|
+
# the mode: :debug, ...
|
|
63
|
+
def mode=(m)
|
|
64
|
+
@mode = m.to_sym
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
private
|
|
68
|
+
|
|
69
|
+
def format_debug(l)
|
|
70
|
+
l.formatter = proc { |severity, datetime, progname, msg|
|
|
71
|
+
format("%s %s %s: %s\n", datetime, severity, progname, msg)
|
|
72
|
+
}
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def format_standard(l)
|
|
76
|
+
l.formatter = proc { |severity, datetime, _, msg|
|
|
77
|
+
format("%s %s: %s\n", datetime, severity, msg)
|
|
78
|
+
}
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
require 'aruba/errors'
|
|
2
|
+
|
|
3
|
+
# Aruba
|
|
4
|
+
module Aruba
|
|
5
|
+
# The command monitor is part of the private API of Aruba.
|
|
6
|
+
#
|
|
7
|
+
# @private
|
|
8
|
+
class CommandMonitor
|
|
9
|
+
private
|
|
10
|
+
|
|
11
|
+
attr_reader :announcer
|
|
12
|
+
|
|
13
|
+
public
|
|
14
|
+
|
|
15
|
+
attr_reader :registered_commands, :last_command_started
|
|
16
|
+
|
|
17
|
+
class DefaultLastCommandStopped
|
|
18
|
+
def nil?
|
|
19
|
+
true
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def method_missing(*)
|
|
23
|
+
fail NoCommandHasBeenStoppedError, 'No last command stopped available'
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
class DefaultLastCommandStarted
|
|
28
|
+
def nil?
|
|
29
|
+
true
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def method_missing(*)
|
|
33
|
+
fail NoCommandHasBeenStartedError, 'No last command started available'
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# rubocop:disable Metrics/MethodLength
|
|
38
|
+
def initialize(opts = {})
|
|
39
|
+
@registered_commands = []
|
|
40
|
+
@announcer = opts.fetch(:announcer)
|
|
41
|
+
|
|
42
|
+
@last_command_stopped = DefaultLastCommandStopped.new
|
|
43
|
+
@last_command_started = DefaultLastCommandStarted.new
|
|
44
|
+
|
|
45
|
+
rescue KeyError => e
|
|
46
|
+
raise ArgumentError, e.message
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
if Aruba::VERSION < '1'
|
|
50
|
+
# Return the last command stopped
|
|
51
|
+
def last_command_stopped
|
|
52
|
+
return @last_command_stopped unless @last_command_stopped.nil?
|
|
53
|
+
|
|
54
|
+
registered_commands.each(&:stop)
|
|
55
|
+
|
|
56
|
+
@last_command_stopped
|
|
57
|
+
end
|
|
58
|
+
else
|
|
59
|
+
attr_reader :last_command_stopped
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
# Set last command started
|
|
63
|
+
#
|
|
64
|
+
# @param [String] cmd
|
|
65
|
+
# The commandline of the command
|
|
66
|
+
def last_command_started=(cmd)
|
|
67
|
+
@last_command_started = find(cmd)
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
# Set last command started
|
|
71
|
+
#
|
|
72
|
+
# @param [String] cmd
|
|
73
|
+
# The commandline of the command
|
|
74
|
+
def last_command_stopped=(cmd)
|
|
75
|
+
@last_command_stopped = find(cmd)
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
# Find command
|
|
79
|
+
#
|
|
80
|
+
# @yield [Command]
|
|
81
|
+
# This yields the found command
|
|
82
|
+
def find(cmd)
|
|
83
|
+
cmd = cmd.commandline if cmd.respond_to? :commandline
|
|
84
|
+
command = registered_commands.reverse.find { |c| c.commandline == cmd }
|
|
85
|
+
|
|
86
|
+
fail CommandNotFoundError, "No command named '#{cmd}' has been started" if command.nil?
|
|
87
|
+
|
|
88
|
+
command
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
# Clear list of known commands
|
|
92
|
+
def clear
|
|
93
|
+
registered_commands.each(&:terminate)
|
|
94
|
+
registered_commands.clear
|
|
95
|
+
|
|
96
|
+
self
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
# @deprecated
|
|
100
|
+
# Fetch output (stdout, stderr) from command
|
|
101
|
+
#
|
|
102
|
+
# @param [String] cmd
|
|
103
|
+
# The command
|
|
104
|
+
def output_from(cmd)
|
|
105
|
+
cmd = Utils.detect_ruby(cmd)
|
|
106
|
+
find(cmd).output
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
# @deprecated
|
|
110
|
+
# Fetch stdout from command
|
|
111
|
+
#
|
|
112
|
+
# @param [String] cmd
|
|
113
|
+
# The command
|
|
114
|
+
def stdout_from(cmd)
|
|
115
|
+
cmd = Utils.detect_ruby(cmd)
|
|
116
|
+
find(cmd).stdout
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
# @deprecated
|
|
120
|
+
# Fetch stderr from command
|
|
121
|
+
#
|
|
122
|
+
# @param [String] cmd
|
|
123
|
+
# The command
|
|
124
|
+
def stderr_from(cmd)
|
|
125
|
+
cmd = Utils.detect_ruby(cmd)
|
|
126
|
+
find(cmd).stderr
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
# @deprecated
|
|
130
|
+
# Get stdout of all commands
|
|
131
|
+
#
|
|
132
|
+
# @return [String]
|
|
133
|
+
# The stdout of all command which have run before
|
|
134
|
+
def all_stdout
|
|
135
|
+
registered_commands.each(&:stop)
|
|
136
|
+
|
|
137
|
+
if RUBY_VERSION < '1.9.3'
|
|
138
|
+
# rubocop:disable Style/EachWithObject
|
|
139
|
+
registered_commands.inject("") { |a, e| a << e.stdout; a }
|
|
140
|
+
# rubocop:enable Style/EachWithObject
|
|
141
|
+
else
|
|
142
|
+
registered_commands.each_with_object("") { |e, a| a << e.stdout }
|
|
143
|
+
end
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
# @deprecated
|
|
147
|
+
# Get stderr of all commands
|
|
148
|
+
#
|
|
149
|
+
# @return [String]
|
|
150
|
+
# The stderr of all command which have run before
|
|
151
|
+
def all_stderr
|
|
152
|
+
registered_commands.each(&:stop)
|
|
153
|
+
|
|
154
|
+
if RUBY_VERSION < '1.9.3'
|
|
155
|
+
# rubocop:disable Style/EachWithObject
|
|
156
|
+
registered_commands.inject("") { |a, e| a << e.stderr; a }
|
|
157
|
+
# rubocop:enable Style/EachWithObject
|
|
158
|
+
else
|
|
159
|
+
registered_commands.each_with_object("") { |e, a| a << e.stderr }
|
|
160
|
+
end
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
# @deprecated
|
|
164
|
+
# Get stderr and stdout of all commands
|
|
165
|
+
#
|
|
166
|
+
# @return [String]
|
|
167
|
+
# The stderr and stdout of all command which have run before
|
|
168
|
+
def all_output
|
|
169
|
+
all_stdout << all_stderr
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
# @deprecated
|
|
173
|
+
def last_exit_status
|
|
174
|
+
Aruba.platform.deprecated('The use of "#last_exit_status" is deprecated. Use "last_command_(started|stopped).exit_status" instead')
|
|
175
|
+
|
|
176
|
+
return @last_exit_status if @last_exit_status
|
|
177
|
+
registered_commands.each(&:stop)
|
|
178
|
+
@last_exit_status
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
# @deprecated
|
|
182
|
+
def stop_process(process)
|
|
183
|
+
@last_command_stopped = process
|
|
184
|
+
@last_exit_status = process.stop(announcer)
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
# @deprecated
|
|
188
|
+
def terminate_process!(process)
|
|
189
|
+
process.terminate
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
# @deprecated
|
|
193
|
+
def stop_processes!
|
|
194
|
+
Aruba.platform.deprecated('The use of "#stop_processes!" is deprecated.')
|
|
195
|
+
|
|
196
|
+
registered_commands.each(&:stop)
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
# @deprecated
|
|
200
|
+
# Terminate all running processes
|
|
201
|
+
def terminate_processes
|
|
202
|
+
Aruba.platform.deprecated('The use of "#terminate_processes" is deprecated.')
|
|
203
|
+
|
|
204
|
+
registered_commands.each(&:terminate)
|
|
205
|
+
end
|
|
206
|
+
|
|
207
|
+
# @deprecated
|
|
208
|
+
def only_processes
|
|
209
|
+
Aruba.platform.deprecated('The use of "#only_processes" is deprecated.')
|
|
210
|
+
|
|
211
|
+
registered_commands
|
|
212
|
+
end
|
|
213
|
+
|
|
214
|
+
# @deprecated
|
|
215
|
+
def get_process(wanted)
|
|
216
|
+
command = find(wanted)
|
|
217
|
+
raise ArgumentError.new("No process named '#{wanted}' has been started") unless command
|
|
218
|
+
|
|
219
|
+
command
|
|
220
|
+
end
|
|
221
|
+
|
|
222
|
+
# Register command to monitor
|
|
223
|
+
def register_command(cmd)
|
|
224
|
+
registered_commands << cmd
|
|
225
|
+
|
|
226
|
+
self
|
|
227
|
+
end
|
|
228
|
+
end
|
|
229
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
require 'aruba/platforms/disk_usage_calculator'
|
|
2
|
+
|
|
3
|
+
# Aruba
|
|
4
|
+
module Aruba
|
|
5
|
+
# Platforms
|
|
6
|
+
module Platforms
|
|
7
|
+
# Determinate disk usage
|
|
8
|
+
#
|
|
9
|
+
# @private
|
|
10
|
+
class DetermineDiskUsage
|
|
11
|
+
def call(*args)
|
|
12
|
+
args = args.flatten
|
|
13
|
+
|
|
14
|
+
physical_block_size = args.pop
|
|
15
|
+
paths = args
|
|
16
|
+
|
|
17
|
+
size = paths.flatten.map do |p|
|
|
18
|
+
DiskUsageCalculator.new.call(
|
|
19
|
+
p.blocks,
|
|
20
|
+
physical_block_size
|
|
21
|
+
)
|
|
22
|
+
end.inject(0, &:+)
|
|
23
|
+
|
|
24
|
+
FileSize.new(size)
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Aruba
|
|
2
|
+
module Aruba
|
|
3
|
+
# Platforms
|
|
4
|
+
module Platforms
|
|
5
|
+
# Determine size of a file
|
|
6
|
+
#
|
|
7
|
+
# @param [String] path
|
|
8
|
+
# The path to file
|
|
9
|
+
#
|
|
10
|
+
# @return [Integer]
|
|
11
|
+
# Returns size if exists. Returns -1 if path does not exist
|
|
12
|
+
class DetermineFileSize
|
|
13
|
+
def call(path)
|
|
14
|
+
return -1 unless File.file? path
|
|
15
|
+
|
|
16
|
+
FileSize.new(
|
|
17
|
+
File.size(path)
|
|
18
|
+
)
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
require 'aruba/file_size'
|
|
2
|
+
|
|
3
|
+
# Aruba
|
|
4
|
+
module Aruba
|
|
5
|
+
# Platforms
|
|
6
|
+
module Platforms
|
|
7
|
+
# Calculate disk usage
|
|
8
|
+
class DiskUsageCalculator
|
|
9
|
+
# Calc
|
|
10
|
+
#
|
|
11
|
+
# @param [Integer] blocks
|
|
12
|
+
# Count of blocks
|
|
13
|
+
# @param [Integer] block_size
|
|
14
|
+
# The size of a single block
|
|
15
|
+
def call(blocks, block_size)
|
|
16
|
+
Aruba::FileSize.new(blocks * block_size)
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
require 'forwardable'
|
|
2
|
+
|
|
3
|
+
module Aruba
|
|
4
|
+
module Platforms
|
|
5
|
+
# File System Status object
|
|
6
|
+
#
|
|
7
|
+
# This is a wrapper for File::Stat returning only a subset of information.
|
|
8
|
+
class FilesystemStatus
|
|
9
|
+
METHODS = [
|
|
10
|
+
:executable?,
|
|
11
|
+
:ctime,
|
|
12
|
+
:atime,
|
|
13
|
+
:mtime,
|
|
14
|
+
:size
|
|
15
|
+
].freeze
|
|
16
|
+
|
|
17
|
+
extend Forwardable
|
|
18
|
+
|
|
19
|
+
private
|
|
20
|
+
|
|
21
|
+
attr_reader :status
|
|
22
|
+
|
|
23
|
+
public
|
|
24
|
+
|
|
25
|
+
if RUBY_VERSION >= '1.9.3'
|
|
26
|
+
def_delegators :@status, *METHODS
|
|
27
|
+
else
|
|
28
|
+
def_delegators :@status, :executable?, :ctime, :atime, :mtime, :size
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def initialize(path)
|
|
32
|
+
@status = File::Stat.new(path)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# Return permissions
|
|
36
|
+
def mode
|
|
37
|
+
format("%o", status.mode)[-4,4].gsub(/^0*/, '')
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# Return owner
|
|
41
|
+
def owner
|
|
42
|
+
status.uid
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# Return owning group
|
|
46
|
+
def group
|
|
47
|
+
status.gid
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# Convert status to hash
|
|
51
|
+
#
|
|
52
|
+
# @return [Hash]
|
|
53
|
+
# A hash of values
|
|
54
|
+
def to_h
|
|
55
|
+
{
|
|
56
|
+
:owner => owner,
|
|
57
|
+
:group => group,
|
|
58
|
+
:mode => mode,
|
|
59
|
+
:executable => executable?,
|
|
60
|
+
:ctime => ctime,
|
|
61
|
+
:atime => atime,
|
|
62
|
+
:mtime => mtime,
|
|
63
|
+
:size => size
|
|
64
|
+
}
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|