aruba 2.2.0 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +77 -47
  3. data/CONTRIBUTING.md +0 -1
  4. data/LICENSE +19 -17
  5. data/README.md +2 -3
  6. data/exe/aruba +3 -2
  7. data/lib/aruba/api/bundler.rb +4 -2
  8. data/lib/aruba/api/commands.rb +10 -8
  9. data/lib/aruba/api/core.rb +33 -31
  10. data/lib/aruba/api/environment.rb +4 -2
  11. data/lib/aruba/api/filesystem.rb +16 -14
  12. data/lib/aruba/api/text.rb +5 -3
  13. data/lib/aruba/api.rb +13 -11
  14. data/lib/aruba/{platforms/aruba_logger.rb → aruba_logger.rb} +4 -2
  15. data/lib/aruba/aruba_path.rb +4 -2
  16. data/lib/aruba/basic_configuration/option.rb +2 -0
  17. data/lib/aruba/basic_configuration.rb +15 -13
  18. data/lib/aruba/cli.rb +10 -8
  19. data/lib/aruba/colorizer.rb +2 -0
  20. data/lib/aruba/command.rb +10 -6
  21. data/lib/aruba/{platforms/command_monitor.rb → command_monitor.rb} +7 -5
  22. data/lib/aruba/config/jruby.rb +11 -9
  23. data/lib/aruba/config_wrapper.rb +4 -2
  24. data/lib/aruba/configuration.rb +17 -15
  25. data/lib/aruba/console/help.rb +7 -5
  26. data/lib/aruba/console.rb +12 -11
  27. data/lib/aruba/contracts/absolute_path.rb +3 -1
  28. data/lib/aruba/contracts/enum.rb +3 -1
  29. data/lib/aruba/contracts/is_power_of_two.rb +4 -2
  30. data/lib/aruba/contracts/relative_path.rb +3 -1
  31. data/lib/aruba/cucumber/command.rb +107 -98
  32. data/lib/aruba/cucumber/environment.rb +9 -7
  33. data/lib/aruba/cucumber/file.rb +4 -2
  34. data/lib/aruba/cucumber/hooks.rb +31 -29
  35. data/lib/aruba/cucumber/parameter_types.rb +4 -1
  36. data/lib/aruba/cucumber/testing_frameworks.rb +20 -18
  37. data/lib/aruba/cucumber.rb +10 -8
  38. data/lib/aruba/errors.rb +2 -6
  39. data/lib/aruba/event_bus.rb +8 -47
  40. data/lib/aruba/events.rb +15 -7
  41. data/lib/aruba/file_size.rb +3 -1
  42. data/lib/aruba/generators/script_file.rb +4 -2
  43. data/lib/aruba/hooks.rb +2 -0
  44. data/lib/aruba/in_config_wrapper.rb +3 -1
  45. data/lib/aruba/initializer.rb +25 -42
  46. data/lib/aruba/matchers/base/message_indenter.rb +3 -1
  47. data/lib/aruba/matchers/command/be_successfully_executed.rb +6 -4
  48. data/lib/aruba/matchers/command/have_exit_status.rb +2 -0
  49. data/lib/aruba/matchers/command/have_finished_in_time.rb +2 -0
  50. data/lib/aruba/matchers/command/have_output.rb +3 -1
  51. data/lib/aruba/matchers/command/have_output_on_stderr.rb +2 -0
  52. data/lib/aruba/matchers/command/have_output_on_stdout.rb +2 -0
  53. data/lib/aruba/matchers/command/have_output_size.rb +21 -5
  54. data/lib/aruba/matchers/command.rb +3 -1
  55. data/lib/aruba/matchers/directory/be_an_existing_directory.rb +3 -1
  56. data/lib/aruba/matchers/directory/have_sub_directory.rb +4 -2
  57. data/lib/aruba/matchers/directory.rb +3 -1
  58. data/lib/aruba/matchers/environment.rb +3 -1
  59. data/lib/aruba/matchers/file/be_a_command_found_in_path.rb +4 -2
  60. data/lib/aruba/matchers/file/be_an_existing_executable.rb +3 -1
  61. data/lib/aruba/matchers/file/be_an_existing_file.rb +3 -1
  62. data/lib/aruba/matchers/file/have_file_content.rb +2 -0
  63. data/lib/aruba/matchers/file/have_file_size.rb +2 -0
  64. data/lib/aruba/matchers/file/have_same_file_content.rb +3 -1
  65. data/lib/aruba/matchers/file.rb +3 -1
  66. data/lib/aruba/matchers/path/a_path_matching_pattern.rb +2 -0
  67. data/lib/aruba/matchers/path/be_an_absolute_path.rb +2 -0
  68. data/lib/aruba/matchers/path/be_an_existing_path.rb +2 -0
  69. data/lib/aruba/matchers/path/have_permissions.rb +3 -1
  70. data/lib/aruba/matchers/path.rb +3 -1
  71. data/lib/aruba/matchers/string/include_output_string.rb +3 -1
  72. data/lib/aruba/matchers/string/match_output_string.rb +3 -1
  73. data/lib/aruba/matchers/string/output_string_eq.rb +3 -1
  74. data/lib/aruba/matchers/string.rb +3 -1
  75. data/lib/aruba/platform.rb +4 -2
  76. data/lib/aruba/platforms/announcer.rb +16 -14
  77. data/lib/aruba/platforms/aruba_file_creator.rb +2 -0
  78. data/lib/aruba/platforms/aruba_fixed_size_file_creator.rb +3 -1
  79. data/lib/aruba/platforms/determine_disk_usage.rb +3 -1
  80. data/lib/aruba/platforms/determine_file_size.rb +2 -0
  81. data/lib/aruba/platforms/filesystem_status.rb +3 -1
  82. data/lib/aruba/platforms/local_environment.rb +9 -1
  83. data/lib/aruba/platforms/simple_table.rb +4 -2
  84. data/lib/aruba/platforms/unix_command_string.rb +4 -2
  85. data/lib/aruba/platforms/unix_environment_variables.rb +4 -2
  86. data/lib/aruba/platforms/unix_platform.rb +28 -26
  87. data/lib/aruba/platforms/unix_which.rb +3 -1
  88. data/lib/aruba/platforms/windows_command_string.rb +2 -0
  89. data/lib/aruba/platforms/windows_environment_variables.rb +3 -1
  90. data/lib/aruba/platforms/windows_platform.rb +8 -6
  91. data/lib/aruba/platforms/windows_which.rb +7 -5
  92. data/lib/aruba/processes/basic_process.rb +4 -2
  93. data/lib/aruba/processes/debug_process.rb +8 -6
  94. data/lib/aruba/processes/in_process.rb +11 -8
  95. data/lib/aruba/processes/spawn_process.rb +18 -16
  96. data/lib/aruba/rspec.rb +8 -6
  97. data/lib/aruba/runtime.rb +9 -7
  98. data/lib/aruba/setup.rb +8 -6
  99. data/lib/aruba/version.rb +3 -1
  100. data/lib/aruba.rb +3 -1
  101. metadata +18 -45
  102. data/lib/aruba/event_bus/name_resolver.rb +0 -158
@@ -1,158 +0,0 @@
1
- require "aruba/errors"
2
-
3
- # Event notification library
4
- module Aruba
5
- # EventBus
6
- class EventBus
7
- # Resolve name to Event name
8
- class NameResolver
9
- # @private
10
- # Helpers for Resolvers
11
- module ResolveHelpers
12
- def camel_case(underscored_name)
13
- underscored_name.to_s.split("_").map { |word| word.upcase[0] + word[1..] }.join
14
- end
15
-
16
- # Thanks ActiveSupport
17
- # (Only needed to support Ruby 1.9.3 and JRuby)
18
- def constantize(camel_cased_word)
19
- names = camel_cased_word.split("::")
20
-
21
- # Trigger a built-in NameError exception including the ill-formed
22
- # constant in the message.
23
- Object.const_get(camel_cased_word) if names.empty?
24
-
25
- # Remove the first blank element in case of '::ClassName' notation.
26
- names.shift if names.size > 1 && names.first.empty?
27
-
28
- names.inject(Object) do |constant, name|
29
- if constant == Object
30
- constant.const_get(name)
31
- else
32
- candidate = constant.const_get(name)
33
-
34
- next candidate if constant.const_defined?(name, false)
35
-
36
- next candidate unless Object.const_defined?(name)
37
-
38
- # Go down the ancestors to check if it is owned directly. The check
39
- # stops when we reach Object or the end of ancestors tree.
40
- constant = constant.ancestors.inject do |const, ancestor|
41
- break const if ancestor == Object
42
- break ancestor if ancestor.const_defined?(name, false)
43
-
44
- const
45
- end
46
-
47
- # owner is in Object, so raise
48
- constant.const_get(name, false)
49
- end
50
- end
51
- end
52
- end
53
-
54
- # @private
55
- # Convert a class in to an event class
56
- class ClassResolver
57
- class << self
58
- def match?(event_id)
59
- event_id.is_a? Class
60
- end
61
-
62
- # Which types are supported
63
- def supports
64
- [Class]
65
- end
66
- end
67
-
68
- def transform(_, event_id)
69
- event_id
70
- end
71
- end
72
-
73
- # @private
74
- # Convert a string in to an event class
75
- class StringResolver
76
- include ResolveHelpers
77
-
78
- class << self
79
- def match?(event_id)
80
- event_id.is_a? String
81
- end
82
-
83
- # Which types are supported
84
- def supports
85
- [String]
86
- end
87
- end
88
-
89
- def transform(_, event_id)
90
- constantize(event_id)
91
- end
92
- end
93
-
94
- # @private
95
- # Convert a symbol in to an event class
96
- class SymbolResolver
97
- include ResolveHelpers
98
-
99
- class << self
100
- def match?(event_id)
101
- event_id.is_a? Symbol
102
- end
103
-
104
- # Which types are supported
105
- def supports
106
- [Symbol]
107
- end
108
- end
109
-
110
- def transform(default_namespace, event_id)
111
- constantize("#{default_namespace}::#{camel_case(event_id)}")
112
- end
113
- end
114
-
115
- # @private
116
- # Default failing resolver
117
- #
118
- # This comes into play if the user passes an invalid event type
119
- class FailingResolver
120
- class << self
121
- def match?(event_id)
122
- raise ArgumentError,
123
- %(Input type "#{event_id.class}" of event_id "#{event_id}" is invalid)
124
- end
125
-
126
- def supports
127
- []
128
- end
129
- end
130
- end
131
-
132
- protected
133
-
134
- attr_reader :resolvers, :default_namespace
135
-
136
- public
137
-
138
- def initialize(default_namespace)
139
- @default_namespace = default_namespace
140
-
141
- @resolvers = []
142
- @resolvers << ClassResolver
143
- @resolvers << StringResolver
144
- @resolvers << SymbolResolver
145
- @resolvers << FailingResolver
146
- end
147
-
148
- def transform(event_id)
149
- resolvers.find { |r| r.match? event_id }.new.transform(default_namespace, event_id)
150
- rescue StandardError => e
151
- types = @resolvers.map(&:supports).flatten.join(", ")
152
- message = "Transforming \"#{event_id}\" into an event class failed." \
153
- " Supported types are: #{types}. #{e.message}."
154
- raise EventNameResolveError, message, cause: e
155
- end
156
- end
157
- end
158
- end