aruba 2.4.1 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +87 -7
  3. data/CONTRIBUTING.md +55 -33
  4. data/README.md +11 -9
  5. data/lib/aruba/api/bundler.rb +1 -5
  6. data/lib/aruba/api/commands.rb +29 -40
  7. data/lib/aruba/api/core.rb +2 -13
  8. data/lib/aruba/api/filesystem.rb +24 -44
  9. data/lib/aruba/api/text.rb +5 -2
  10. data/lib/aruba/aruba_logger.rb +3 -6
  11. data/lib/aruba/basic_configuration/option.rb +1 -7
  12. data/lib/aruba/basic_configuration.rb +7 -13
  13. data/lib/aruba/cli.rb +0 -6
  14. data/lib/aruba/command.rb +16 -16
  15. data/lib/aruba/command_monitor.rb +2 -4
  16. data/lib/aruba/configuration.rb +32 -20
  17. data/lib/aruba/cucumber/command.rb +32 -119
  18. data/lib/aruba/cucumber/environment.rb +0 -4
  19. data/lib/aruba/cucumber/file.rb +10 -10
  20. data/lib/aruba/cucumber/hooks.rb +12 -15
  21. data/lib/aruba/cucumber.rb +0 -1
  22. data/lib/aruba/events.rb +50 -14
  23. data/lib/aruba/generators/script_file.rb +5 -5
  24. data/lib/aruba/initializer.rb +7 -2
  25. data/lib/aruba/matchers/command/have_output.rb +1 -1
  26. data/lib/aruba/matchers/command/have_output_on_stderr.rb +1 -1
  27. data/lib/aruba/matchers/command/have_output_on_stdout.rb +1 -1
  28. data/lib/aruba/matchers/command/have_output_size.rb +7 -20
  29. data/lib/aruba/matchers/string/match_output_string.rb +0 -2
  30. data/lib/aruba/platforms/unix_platform.rb +3 -3
  31. data/lib/aruba/platforms/unix_which.rb +2 -4
  32. data/lib/aruba/platforms/windows_which.rb +2 -4
  33. data/lib/aruba/processes/basic_process.rb +4 -4
  34. data/lib/aruba/processes/debug_process.rb +2 -1
  35. data/lib/aruba/processes/in_process.rb +3 -1
  36. data/lib/aruba/processes/spawn_process.rb +32 -21
  37. data/lib/aruba/rspec.rb +18 -25
  38. data/lib/aruba/runtime.rb +39 -21
  39. data/lib/aruba/setup.rb +20 -21
  40. data/lib/aruba/version.rb +1 -1
  41. metadata +76 -63
  42. data/lib/aruba/console/help.rb +0 -34
  43. data/lib/aruba/console.rb +0 -67
  44. data/lib/aruba/contracts/absolute_path.rb +0 -22
  45. data/lib/aruba/contracts/enum.rb +0 -29
  46. data/lib/aruba/contracts/is_power_of_two.rb +0 -24
  47. data/lib/aruba/contracts/relative_path.rb +0 -22
  48. data/lib/aruba/cucumber/testing_frameworks.rb +0 -219
  49. data/lib/aruba/matchers/string/include_output_string.rb +0 -36
  50. data/lib/aruba/matchers/string/output_string_eq.rb +0 -35
data/lib/aruba/setup.rb CHANGED
@@ -2,40 +2,39 @@
2
2
 
3
3
  module Aruba
4
4
  class Setup
5
- private
6
-
7
- attr_reader :runtime
8
-
9
- public
10
-
11
5
  def initialize(runtime)
12
6
  @runtime = runtime
13
7
  end
14
8
 
15
- def call(clobber = true)
16
- return if runtime.setup_already_done?
17
-
18
- working_directory(clobber)
9
+ def setup
10
+ create_workspace
19
11
  register_event_handlers
12
+ end
20
13
 
21
- runtime.setup_done
22
-
23
- self
14
+ def teardown
15
+ destroy_workspace
24
16
  end
25
17
 
18
+ attr_reader :workspace_directory
19
+
26
20
  private
27
21
 
28
- def working_directory(clobber = true)
29
- if clobber
30
- Aruba.platform.rm File.join(runtime.config.root_directory,
31
- runtime.config.working_directory),
32
- force: true
33
- end
34
- Aruba.platform.mkdir File.join(runtime.config.root_directory,
35
- runtime.config.working_directory)
22
+ attr_reader :runtime
23
+
24
+ def create_workspace
25
+ workspace_base = File.join(runtime.config.root_directory, 'tmp')
26
+ prefix = "#{runtime.config.working_directory_suffix}-"
27
+
28
+ Aruba.platform.mkdir workspace_base
29
+ @workspace_directory = Dir.mktmpdir(prefix, workspace_base)
30
+
36
31
  Aruba.platform.chdir runtime.config.root_directory
37
32
  end
38
33
 
34
+ def destroy_workspace
35
+ Aruba.platform.rm workspace_directory, force: true
36
+ end
37
+
39
38
  def handle_command_started(event)
40
39
  runtime.announcer.announce(:command) { event.entity.commandline }
41
40
  runtime.announcer.announce(:timeout, 'exit') { event.entity.exit_timeout }
data/lib/aruba/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Aruba
4
- VERSION = '2.4.1'
4
+ VERSION = '3.0.0'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aruba
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.1
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aslak Hellesøy, Matt Wynne and other Aruba Contributors
@@ -15,14 +15,14 @@ dependencies:
15
15
  requirements:
16
16
  - - ">="
17
17
  - !ruby/object:Gem::Version
18
- version: '1.17'
18
+ version: 2.20.0
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - ">="
24
24
  - !ruby/object:Gem::Version
25
- version: '1.17'
25
+ version: 2.20.0
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: contracts
28
28
  requirement: !ruby/object:Gem::Requirement
@@ -44,39 +44,45 @@ dependencies:
44
44
  - !ruby/object:Gem::Version
45
45
  version: 0.18.0
46
46
  - !ruby/object:Gem::Dependency
47
- name: cucumber
47
+ name: cucumber-core
48
48
  requirement: !ruby/object:Gem::Requirement
49
49
  requirements:
50
50
  - - ">="
51
51
  - !ruby/object:Gem::Version
52
- version: '8.0'
52
+ version: '16.0'
53
53
  - - "<"
54
54
  - !ruby/object:Gem::Version
55
- version: '12.0'
55
+ version: '21.0'
56
56
  type: :runtime
57
57
  prerelease: false
58
58
  version_requirements: !ruby/object:Gem::Requirement
59
59
  requirements:
60
60
  - - ">="
61
61
  - !ruby/object:Gem::Version
62
- version: '8.0'
62
+ version: '16.0'
63
63
  - - "<"
64
64
  - !ruby/object:Gem::Version
65
- version: '12.0'
65
+ version: '21.0'
66
66
  - !ruby/object:Gem::Dependency
67
- name: irb
67
+ name: marcel
68
68
  requirement: !ruby/object:Gem::Requirement
69
69
  requirements:
70
- - - "~>"
70
+ - - ">="
71
71
  - !ruby/object:Gem::Version
72
- version: '1.16'
72
+ version: '1.2'
73
+ - - "<"
74
+ - !ruby/object:Gem::Version
75
+ version: '3.0'
73
76
  type: :runtime
74
77
  prerelease: false
75
78
  version_requirements: !ruby/object:Gem::Requirement
76
79
  requirements:
77
- - - "~>"
80
+ - - ">="
78
81
  - !ruby/object:Gem::Version
79
- version: '1.16'
82
+ version: '1.2'
83
+ - - "<"
84
+ - !ruby/object:Gem::Version
85
+ version: '3.0'
80
86
  - !ruby/object:Gem::Dependency
81
87
  name: rspec-expectations
82
88
  requirement: !ruby/object:Gem::Requirement
@@ -97,6 +103,20 @@ dependencies:
97
103
  - - "<"
98
104
  - !ruby/object:Gem::Version
99
105
  version: '5.0'
106
+ - !ruby/object:Gem::Dependency
107
+ name: tempfile
108
+ requirement: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - "~>"
111
+ - !ruby/object:Gem::Version
112
+ version: 0.3.1
113
+ type: :runtime
114
+ prerelease: false
115
+ version_requirements: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - "~>"
118
+ - !ruby/object:Gem::Version
119
+ version: 0.3.1
100
120
  - !ruby/object:Gem::Dependency
101
121
  name: thor
102
122
  requirement: !ruby/object:Gem::Requirement
@@ -125,6 +145,26 @@ dependencies:
125
145
  - - "~>"
126
146
  - !ruby/object:Gem::Version
127
147
  version: '2.4'
148
+ - !ruby/object:Gem::Dependency
149
+ name: cucumber
150
+ requirement: !ruby/object:Gem::Requirement
151
+ requirements:
152
+ - - ">="
153
+ - !ruby/object:Gem::Version
154
+ version: '11.0'
155
+ - - "<"
156
+ - !ruby/object:Gem::Version
157
+ version: '13.0'
158
+ type: :development
159
+ prerelease: false
160
+ version_requirements: !ruby/object:Gem::Requirement
161
+ requirements:
162
+ - - ">="
163
+ - !ruby/object:Gem::Version
164
+ version: '11.0'
165
+ - - "<"
166
+ - !ruby/object:Gem::Version
167
+ version: '13.0'
128
168
  - !ruby/object:Gem::Dependency
129
169
  name: diff-lcs
130
170
  requirement: !ruby/object:Gem::Requirement
@@ -140,19 +180,19 @@ dependencies:
140
180
  - !ruby/object:Gem::Version
141
181
  version: '1.6'
142
182
  - !ruby/object:Gem::Dependency
143
- name: json
183
+ name: irb
144
184
  requirement: !ruby/object:Gem::Requirement
145
185
  requirements:
146
186
  - - "~>"
147
187
  - !ruby/object:Gem::Version
148
- version: '2.1'
188
+ version: '1.16'
149
189
  type: :development
150
190
  prerelease: false
151
191
  version_requirements: !ruby/object:Gem::Requirement
152
192
  requirements:
153
193
  - - "~>"
154
194
  - !ruby/object:Gem::Version
155
- version: '2.1'
195
+ version: '1.16'
156
196
  - !ruby/object:Gem::Dependency
157
197
  name: kramdown
158
198
  requirement: !ruby/object:Gem::Requirement
@@ -171,42 +211,30 @@ dependencies:
171
211
  name: minitest
172
212
  requirement: !ruby/object:Gem::Requirement
173
213
  requirements:
174
- - - ">="
175
- - !ruby/object:Gem::Version
176
- version: '5.26'
177
- - - "<"
214
+ - - "~>"
178
215
  - !ruby/object:Gem::Version
179
- version: '7.0'
216
+ version: '6.0'
180
217
  type: :development
181
218
  prerelease: false
182
219
  version_requirements: !ruby/object:Gem::Requirement
183
220
  requirements:
184
- - - ">="
185
- - !ruby/object:Gem::Version
186
- version: '5.26'
187
- - - "<"
221
+ - - "~>"
188
222
  - !ruby/object:Gem::Version
189
- version: '7.0'
223
+ version: '6.0'
190
224
  - !ruby/object:Gem::Dependency
191
225
  name: rake
192
226
  requirement: !ruby/object:Gem::Requirement
193
227
  requirements:
194
- - - ">="
195
- - !ruby/object:Gem::Version
196
- version: '12.0'
197
- - - "<"
228
+ - - "~>"
198
229
  - !ruby/object:Gem::Version
199
- version: '14.0'
230
+ version: '13.0'
200
231
  type: :development
201
232
  prerelease: false
202
233
  version_requirements: !ruby/object:Gem::Requirement
203
234
  requirements:
204
- - - ">="
205
- - !ruby/object:Gem::Version
206
- version: '12.0'
207
- - - "<"
235
+ - - "~>"
208
236
  - !ruby/object:Gem::Version
209
- version: '14.0'
237
+ version: '13.0'
210
238
  - !ruby/object:Gem::Dependency
211
239
  name: rake-manifest
212
240
  requirement: !ruby/object:Gem::Requirement
@@ -247,14 +275,14 @@ dependencies:
247
275
  requirements:
248
276
  - - "~>"
249
277
  - !ruby/object:Gem::Version
250
- version: '1.80'
278
+ version: '1.92'
251
279
  type: :development
252
280
  prerelease: false
253
281
  version_requirements: !ruby/object:Gem::Requirement
254
282
  requirements:
255
283
  - - "~>"
256
284
  - !ruby/object:Gem::Version
257
- version: '1.80'
285
+ version: '1.92'
258
286
  - !ruby/object:Gem::Dependency
259
287
  name: rubocop-packaging
260
288
  requirement: !ruby/object:Gem::Requirement
@@ -275,48 +303,42 @@ dependencies:
275
303
  requirements:
276
304
  - - "~>"
277
305
  - !ruby/object:Gem::Version
278
- version: '1.26'
306
+ version: '1.27'
279
307
  type: :development
280
308
  prerelease: false
281
309
  version_requirements: !ruby/object:Gem::Requirement
282
310
  requirements:
283
311
  - - "~>"
284
312
  - !ruby/object:Gem::Version
285
- version: '1.26'
313
+ version: '1.27'
286
314
  - !ruby/object:Gem::Dependency
287
315
  name: rubocop-rspec
288
316
  requirement: !ruby/object:Gem::Requirement
289
317
  requirements:
290
318
  - - "~>"
291
319
  - !ruby/object:Gem::Version
292
- version: '3.7'
320
+ version: '3.10'
293
321
  type: :development
294
322
  prerelease: false
295
323
  version_requirements: !ruby/object:Gem::Requirement
296
324
  requirements:
297
325
  - - "~>"
298
326
  - !ruby/object:Gem::Version
299
- version: '3.7'
327
+ version: '3.10'
300
328
  - !ruby/object:Gem::Dependency
301
329
  name: simplecov
302
330
  requirement: !ruby/object:Gem::Requirement
303
331
  requirements:
304
- - - ">="
305
- - !ruby/object:Gem::Version
306
- version: 0.18.0
307
- - - "<"
332
+ - - "~>"
308
333
  - !ruby/object:Gem::Version
309
- version: 0.23.0
334
+ version: '1.1'
310
335
  type: :development
311
336
  prerelease: false
312
337
  version_requirements: !ruby/object:Gem::Requirement
313
338
  requirements:
314
- - - ">="
315
- - !ruby/object:Gem::Version
316
- version: 0.18.0
317
- - - "<"
339
+ - - "~>"
318
340
  - !ruby/object:Gem::Version
319
- version: 0.23.0
341
+ version: '1.1'
320
342
  description: |
321
343
  Extension for popular TDD and BDD frameworks like "Cucumber", "RSpec" and "Minitest",
322
344
  to make testing command line applications meaningful, easy and fun.
@@ -354,19 +376,12 @@ files:
354
376
  - lib/aruba/config/jruby.rb
355
377
  - lib/aruba/config_wrapper.rb
356
378
  - lib/aruba/configuration.rb
357
- - lib/aruba/console.rb
358
- - lib/aruba/console/help.rb
359
- - lib/aruba/contracts/absolute_path.rb
360
- - lib/aruba/contracts/enum.rb
361
- - lib/aruba/contracts/is_power_of_two.rb
362
- - lib/aruba/contracts/relative_path.rb
363
379
  - lib/aruba/cucumber.rb
364
380
  - lib/aruba/cucumber/command.rb
365
381
  - lib/aruba/cucumber/environment.rb
366
382
  - lib/aruba/cucumber/file.rb
367
383
  - lib/aruba/cucumber/hooks.rb
368
384
  - lib/aruba/cucumber/parameter_types.rb
369
- - lib/aruba/cucumber/testing_frameworks.rb
370
385
  - lib/aruba/errors.rb
371
386
  - lib/aruba/event_bus.rb
372
387
  - lib/aruba/events.rb
@@ -401,9 +416,7 @@ files:
401
416
  - lib/aruba/matchers/path/be_an_existing_path.rb
402
417
  - lib/aruba/matchers/path/have_permissions.rb
403
418
  - lib/aruba/matchers/string.rb
404
- - lib/aruba/matchers/string/include_output_string.rb
405
419
  - lib/aruba/matchers/string/match_output_string.rb
406
- - lib/aruba/matchers/string/output_string_eq.rb
407
420
  - lib/aruba/platform.rb
408
421
  - lib/aruba/platforms/announcer.rb
409
422
  - lib/aruba/platforms/aruba_file_creator.rb
@@ -449,14 +462,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
449
462
  requirements:
450
463
  - - ">="
451
464
  - !ruby/object:Gem::Version
452
- version: 3.0.0
465
+ version: 3.2.0
453
466
  required_rubygems_version: !ruby/object:Gem::Requirement
454
467
  requirements:
455
468
  - - ">="
456
469
  - !ruby/object:Gem::Version
457
470
  version: '0'
458
471
  requirements: []
459
- rubygems_version: 4.0.10
472
+ rubygems_version: 4.0.16
460
473
  specification_version: 4
461
474
  summary: Test command line applications with Cucumber, RSpec or Minitest
462
475
  test_files: []
@@ -1,34 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'aruba/api'
4
-
5
- # Aruba
6
- module Aruba
7
- # Consule
8
- class Console
9
- # Helpers for Aruba::Console
10
- module Help
11
- # Output help information
12
- def aruba_help
13
- puts "Aruba Version: #{Aruba::VERSION}"
14
- puts 'Issue Tracker: https://github.com/cucumber/aruba/issues'
15
- puts 'Documentation:'
16
- puts '* http://www.rubydoc.info/gems/aruba'
17
- puts
18
-
19
- nil
20
- end
21
-
22
- # List available methods in aruba
23
- def aruba_methods
24
- ms = (Aruba::Api.instance_methods - Module.instance_methods)
25
- .each_with_object([]) { |e, a| a << format('* %s', e) }
26
- .sort
27
-
28
- puts "Available Methods:\n#{ms.join("\n")}"
29
-
30
- nil
31
- end
32
- end
33
- end
34
- end
data/lib/aruba/console.rb DELETED
@@ -1,67 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'irb'
4
-
5
- require 'aruba/api'
6
- require 'aruba/console/help'
7
-
8
- # Aruba
9
- module Aruba
10
- # Consule
11
- class Console
12
- # Start the aruba console
13
- #
14
- def start
15
- # Start IRB with current context:
16
- # http://stackoverflow.com/questions/4189818/how-to-run-irb-start-in-context-of-current-class
17
- ARGV.clear
18
- IRB.setup nil
19
-
20
- IRB.conf[:IRB_NAME] = 'aruba'
21
-
22
- IRB.conf[:PROMPT] = {}
23
- IRB.conf[:PROMPT][:ARUBA] = {
24
- PROMPT_I: '%N:%03n:%i> ',
25
- PROMPT_S: '%N:%03n:%i%l ',
26
- PROMPT_C: '%N:%03n:%i* ',
27
- RETURN: "# => %s\n"
28
- }
29
- IRB.conf[:PROMPT_MODE] = :ARUBA
30
-
31
- IRB.conf[:RC] = false
32
-
33
- require 'irb/completion'
34
- IRB.conf[:READLINE] = true
35
- IRB.conf[:SAVE_HISTORY] = 1000
36
- IRB.conf[:HISTORY_FILE] = Aruba.config.console_history_file
37
-
38
- context = Class.new do
39
- include Aruba::Api
40
- include Aruba::Console::Help
41
-
42
- def initialize
43
- setup_aruba
44
- end
45
-
46
- def inspect
47
- 'aruba console'
48
- end
49
- end
50
-
51
- irb = IRB::Irb.new(IRB::WorkSpace.new(context.new))
52
- IRB.conf[:MAIN_CONTEXT] = irb.context
53
-
54
- trap('SIGINT') do
55
- irb.signal_handle
56
- end
57
-
58
- begin
59
- catch(:IRB_EXIT) do
60
- irb.eval_input
61
- end
62
- ensure
63
- IRB.irb_at_exit
64
- end
65
- end
66
- end
67
- end
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'aruba/platform'
4
-
5
- # Aruba
6
- module Aruba
7
- # Contracts
8
- module Contracts
9
- # Check if path is absolute
10
- class AbsolutePath
11
- # Check
12
- #
13
- # @param [Object] value
14
- # The value to be checked
15
- def self.valid?(value)
16
- Aruba.platform.absolute_path? value
17
- rescue StandardError
18
- false
19
- end
20
- end
21
- end
22
- end
@@ -1,29 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'contracts'
4
-
5
- # Aruba
6
- module Aruba
7
- # Contracts
8
- module Contracts
9
- # Enum
10
- class Enum < ::Contracts::CallableClass
11
- private
12
-
13
- attr_reader :vals
14
-
15
- public
16
-
17
- # Create contract
18
- def initialize(*vals)
19
- super()
20
- @vals = vals
21
- end
22
-
23
- # Check if value is part of array
24
- def valid?(val)
25
- vals.include? val
26
- end
27
- end
28
- end
29
- end
@@ -1,24 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'aruba/aruba_path'
4
-
5
- # Aruba
6
- module Aruba
7
- # Contracts
8
- module Contracts
9
- # Is value power of two
10
- class IsPowerOfTwo
11
- # Check value
12
- #
13
- # @param [Integer] value
14
- # The value to be checked
15
- def self.valid?(value)
16
- # explanation for algorithm can be found here:
17
- # http://www.exploringbinary.com/ten-ways-to-check-if-an-integer-is-a-power-of-two-in-c/
18
- value.positive? && value.nobits?(value - 1)
19
- rescue StandardError
20
- false
21
- end
22
- end
23
- end
24
- end
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'aruba/platform'
4
-
5
- # Aruba
6
- module Aruba
7
- # Contracts
8
- module Contracts
9
- # Is value relative path
10
- class RelativePath
11
- # Check
12
- #
13
- # @param [String] value
14
- # The path to be checked
15
- def self.valid?(value)
16
- Aruba.platform.relative_path? value
17
- rescue StandardError
18
- false
19
- end
20
- end
21
- end
22
- end