aruba 0.9.0 → 0.10.0.pre

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 (54) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +6 -0
  3. data/Gemfile +2 -0
  4. data/History.md +23 -1
  5. data/README.md +2 -2
  6. data/aruba.gemspec +1 -1
  7. data/cucumber.yml +4 -0
  8. data/features/api/command/run.feature +18 -0
  9. data/features/api/environment/remove_environment_variable.feature +63 -0
  10. data/features/api/environment/set_environment_variable.feature +47 -10
  11. data/features/api/{command → text}/extract_text.feature +4 -24
  12. data/features/api/text/sanitize_text.feature +228 -0
  13. data/features/api/{command → text}/unescape_text.feature +9 -13
  14. data/features/cli/init.feature +79 -0
  15. data/features/commands/output/all_output.feature +1 -0
  16. data/features/getting_started/supported_testing_frameworks.feature +104 -0
  17. data/features/output.feature +3 -2
  18. data/features/step_definitions/aruba_dev_steps.rb +1 -60
  19. data/features/step_definitions/hooks.rb +6 -0
  20. data/fixtures/empty-app/README.md +1 -11
  21. data/lib/aruba/api.rb +2 -0
  22. data/lib/aruba/api/command.rb +0 -19
  23. data/lib/aruba/api/deprecated.rb +6 -3
  24. data/lib/aruba/api/environment.rb +18 -0
  25. data/lib/aruba/api/filesystem.rb +1 -1
  26. data/lib/aruba/api/text.rb +41 -0
  27. data/lib/aruba/cli.rb +11 -0
  28. data/lib/aruba/console.rb +3 -2
  29. data/lib/aruba/cucumber.rb +1 -0
  30. data/lib/aruba/cucumber/command.rb +44 -88
  31. data/lib/aruba/cucumber/environment.rb +7 -3
  32. data/lib/aruba/cucumber/file.rb +14 -17
  33. data/lib/aruba/cucumber/hooks.rb +1 -0
  34. data/lib/aruba/cucumber/testing_frameworks.rb +95 -0
  35. data/lib/aruba/initializer.rb +185 -0
  36. data/lib/aruba/matchers/collection/all.rb +9 -0
  37. data/lib/aruba/matchers/command/have_output.rb +1 -2
  38. data/lib/aruba/matchers/command/have_output_on_stderr.rb +1 -2
  39. data/lib/aruba/matchers/command/have_output_on_stdout.rb +1 -2
  40. data/lib/aruba/matchers/string.rb +1 -0
  41. data/lib/aruba/matchers/string/include_output_string.rb +36 -0
  42. data/lib/aruba/matchers/string/match_output_string.rb +37 -0
  43. data/lib/aruba/matchers/string/output_string_eq.rb +35 -0
  44. data/lib/aruba/platforms/local_environment.rb +2 -0
  45. data/lib/aruba/platforms/unix_environment_variables.rb +10 -0
  46. data/lib/aruba/platforms/unix_platform.rb +3 -1
  47. data/lib/aruba/platforms/windows_environment_variables.rb +4 -0
  48. data/lib/aruba/processes/spawn_process.rb +6 -2
  49. data/lib/aruba/version.rb +1 -1
  50. metadata +28 -16
  51. data/fixtures/empty-app/bin/cli +0 -6
  52. data/fixtures/empty-app/script/console +0 -14
  53. data/fixtures/empty-app/spec/spec_helper.rb +0 -9
  54. data/lib/aruba/matchers/collection/all_objects.rb +0 -2
@@ -0,0 +1,37 @@
1
+ # @!method match_output_string(string)
2
+ # This matchers checks if the output string of a command matches regular expression.
3
+ #
4
+ # @param [Integer] status
5
+ # The value of the exit status
6
+ #
7
+ # @return [TrueClass, FalseClass] The result
8
+ #
9
+ # false:
10
+ # * if the output string does not match regex
11
+ # true:
12
+ # * if the output string matches regex
13
+ #
14
+ # @example Use matcher
15
+ #
16
+ # RSpec.describe do
17
+ # it { expect(last_command_started).to have_output an_output_string_matching regex) }
18
+ # it { expect(last_command_started).to have_output match_output_string regex) }
19
+ # end
20
+ RSpec::Matchers.define :match_output_string do |expected|
21
+ match do |actual|
22
+ @expected = Regexp.new(unescape_text(expected), Regexp::MULTILINE)
23
+ @actual = sanitize_text(actual)
24
+
25
+ values_match? @expected, @actual
26
+ end
27
+
28
+ diffable
29
+
30
+ description { "output string matches: #{description_of expected}" }
31
+ end
32
+
33
+ if RSpec::Expectations::Version::STRING >= '3.0'
34
+ RSpec::Matchers.alias_matcher :an_output_string_matching, :match_output_string
35
+ RSpec::Matchers.alias_matcher :a_file_name_matching, :match_output_string
36
+ RSpec::Matchers.alias_matcher :file_content_matching, :match_output_string
37
+ end
@@ -0,0 +1,35 @@
1
+ # @!method output_string_eq(string)
2
+ # This matchers checks if the output string of a command includes string.
3
+ #
4
+ # @param [Integer] status
5
+ # The value of the exit status
6
+ #
7
+ # @return [TrueClass, FalseClass] The result
8
+ #
9
+ # false:
10
+ # * if the output string does not include string
11
+ # true:
12
+ # * if the output string includes string
13
+ #
14
+ # @example Use matcher
15
+ #
16
+ # RSpec.describe do
17
+ # it { expect(last_command_started).to have_output output_string_eq string) }
18
+ # it { expect(last_command_started).to have_output an_output_string_begin_eq string) }
19
+ # end
20
+ RSpec::Matchers.define :output_string_eq do |expected|
21
+ match do |actual|
22
+ @expected = sanitize_text(expected.to_s)
23
+ @actual = sanitize_text(actual.to_s)
24
+
25
+ values_match? @expected, @actual
26
+ end
27
+
28
+ diffable
29
+
30
+ description { "output string is eq: #{description_of expected}" }
31
+ end
32
+
33
+ if RSpec::Expectations::Version::STRING >= '3.0'
34
+ RSpec::Matchers.alias_matcher :an_output_string_being_eq, :output_string_eq
35
+ end
@@ -3,6 +3,8 @@ module Aruba
3
3
  class LocalEnvironment
4
4
  def call(env, &block)
5
5
  old_env = ENV.to_hash.dup
6
+
7
+ ENV.clear
6
8
  ENV.update env
7
9
 
8
10
  block.call if block_given?
@@ -107,6 +107,16 @@ module Aruba
107
107
  self
108
108
  end
109
109
 
110
+ # Delete variable
111
+ #
112
+ # @param [#to_s] name
113
+ # The name of the variable
114
+ def delete(name)
115
+ env.delete name.to_s
116
+
117
+ self
118
+ end
119
+
110
120
  # Convert to hash
111
121
  #
112
122
  # @return [Hash]
@@ -217,7 +217,9 @@ module Aruba
217
217
  # @return
218
218
  # The string stripped from escape sequences
219
219
  def unescape(string, keep_ansi = true)
220
- deprecated('The use of "Aruba.platform.unescape" is deprecated. Please use "#unescape_text" and "#extract_text" instead')
220
+ # rubocop:disable Metrics/LineLength
221
+ deprecated('The use of "Aruba.platform.unescape" is deprecated. Please use "#unescape_text" and "#sanitize_text" instead. But be aware it uses a different implementation')
222
+ # rubocop:enable Metrics/LineLength
221
223
 
222
224
  string = string.gsub('\n', "\n").gsub('\"', '"').gsub('\e', "\e")
223
225
  string = string.gsub(/\e\[\d+(?>(;\d+)*)m/, '') unless keep_ansi
@@ -78,6 +78,10 @@ module Aruba
78
78
  def prepend(name, value)
79
79
  super(name.upcase, value)
80
80
  end
81
+
82
+ def delete(name, value)
83
+ super(name.upcase, value)
84
+ end
81
85
  end
82
86
  end
83
87
  end
@@ -53,8 +53,12 @@ module Aruba
53
53
  cmd = Aruba.platform.command_string.new(cmd)
54
54
 
55
55
  @process = ChildProcess.build(*[cmd.to_a, arguments].flatten)
56
- @stdout_file = Tempfile.new("aruba-stdout")
57
- @stderr_file = Tempfile.new("aruba-stderr")
56
+ @stdout_file = Tempfile.new("aruba-stdout-")
57
+ @stderr_file = Tempfile.new("aruba-stderr-")
58
+
59
+ @stdout_file.sync = true
60
+ @stderr_file.sync = true
61
+
58
62
  @exit_status = nil
59
63
  @duplex = true
60
64
 
data/lib/aruba/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Aruba
2
- VERSION = '0.9.0'
2
+ VERSION = '0.10.0.pre'
3
3
  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: 0.9.0
4
+ version: 0.10.0.pre
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aslak Hellesøy
@@ -13,7 +13,7 @@ authors:
13
13
  autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
- date: 2015-08-18 00:00:00.000000000 Z
16
+ date: 2015-10-17 00:00:00.000000000 Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: cucumber
@@ -113,8 +113,8 @@ dependencies:
113
113
  - - "~>"
114
114
  - !ruby/object:Gem::Version
115
115
  version: 1.10.2
116
- description: Extension for popular TDD and BDD frameworks like "Cucumber" and "RSpec"
117
- to make testing commandline applications meaningful, easy and fun.
116
+ description: Extension for popular TDD and BDD frameworks like "Cucumber", "RSpec"
117
+ and "Minitest" to make testing commandline applications meaningful, easy and fun.
118
118
  email: cukes@googlegroups.com
119
119
  executables:
120
120
  - aruba
@@ -143,15 +143,14 @@ files:
143
143
  - doc/dependency_decisions.yml
144
144
  - features/.nav
145
145
  - features/announce.feature
146
- - features/api/command/extract_text.feature
147
146
  - features/api/command/run.feature
148
147
  - features/api/command/stop_all_commands.feature
149
148
  - features/api/command/terminate_all_commands.feature
150
- - features/api/command/unescape_text.feature
151
149
  - features/api/command/which.feature
152
150
  - features/api/core/expand_path.feature
153
151
  - features/api/environment/append_environment_variable.feature
154
152
  - features/api/environment/prepend_environment_variable.feature
153
+ - features/api/environment/remove_environment_variable.feature
155
154
  - features/api/environment/set_environment_variable.feature
156
155
  - features/api/filesystem/cd.feature
157
156
  - features/api/filesystem/create_directory.feature
@@ -162,7 +161,11 @@ files:
162
161
  - features/api/filesystem/is_file.feature
163
162
  - features/api/filesystem/is_relative.feature
164
163
  - features/api/filesystem/move.feature
164
+ - features/api/text/extract_text.feature
165
+ - features/api/text/sanitize_text.feature
166
+ - features/api/text/unescape_text.feature
165
167
  - features/cli/console.feature
168
+ - features/cli/init.feature
166
169
  - features/commands/debug_command.feature
167
170
  - features/commands/environment_variables.feature
168
171
  - features/commands/flushing.feature
@@ -187,6 +190,7 @@ files:
187
190
  - features/development/test.feature
188
191
  - features/file_system_commands.feature
189
192
  - features/getting_started/supported_programming_languages.feature
193
+ - features/getting_started/supported_testing_frameworks.feature
190
194
  - features/hooks/after/command.feature
191
195
  - features/hooks/before/command.feature
192
196
  - features/integration/rspec/getting_started.feature
@@ -238,12 +242,9 @@ files:
238
242
  - fixtures/empty-app/.rspec
239
243
  - fixtures/empty-app/README.md
240
244
  - fixtures/empty-app/Rakefile
241
- - fixtures/empty-app/bin/cli
242
245
  - fixtures/empty-app/cli-app.gemspec
243
246
  - fixtures/empty-app/lib/cli/app.rb
244
247
  - fixtures/empty-app/lib/cli/app/version.rb
245
- - fixtures/empty-app/script/console
246
- - fixtures/empty-app/spec/spec_helper.rb
247
248
  - fixtures/fixtures-app/test.txt
248
249
  - fixtures/getting-started-app/.gitignore
249
250
  - fixtures/getting-started-app/Gemfile
@@ -259,6 +260,7 @@ files:
259
260
  - lib/aruba/api/environment.rb
260
261
  - lib/aruba/api/filesystem.rb
261
262
  - lib/aruba/api/rvm.rb
263
+ - lib/aruba/api/text.rb
262
264
  - lib/aruba/aruba_logger.rb
263
265
  - lib/aruba/aruba_path.rb
264
266
  - lib/aruba/basic_configuration.rb
@@ -281,15 +283,17 @@ files:
281
283
  - lib/aruba/cucumber/file.rb
282
284
  - lib/aruba/cucumber/hooks.rb
283
285
  - lib/aruba/cucumber/rvm.rb
286
+ - lib/aruba/cucumber/testing_frameworks.rb
284
287
  - lib/aruba/errors.rb
285
288
  - lib/aruba/extensions/string/strip.rb
286
289
  - lib/aruba/file_size.rb
287
290
  - lib/aruba/hooks.rb
288
291
  - lib/aruba/in_process.rb
292
+ - lib/aruba/initializer.rb
289
293
  - lib/aruba/jruby.rb
290
294
  - lib/aruba/matchers/base/base_matcher.rb
291
295
  - lib/aruba/matchers/collection.rb
292
- - lib/aruba/matchers/collection/all_objects.rb
296
+ - lib/aruba/matchers/collection/all.rb
293
297
  - lib/aruba/matchers/collection/include_an_object.rb
294
298
  - lib/aruba/matchers/command.rb
295
299
  - lib/aruba/matchers/command/be_successfully_executed.rb
@@ -316,6 +320,10 @@ files:
316
320
  - lib/aruba/matchers/path/match_path_pattern.rb
317
321
  - lib/aruba/matchers/rspec.rb
318
322
  - lib/aruba/matchers/rspec_matcher_include_regexp.rb
323
+ - lib/aruba/matchers/string.rb
324
+ - lib/aruba/matchers/string/include_output_string.rb
325
+ - lib/aruba/matchers/string/match_output_string.rb
326
+ - lib/aruba/matchers/string/output_string_eq.rb
319
327
  - lib/aruba/platform.rb
320
328
  - lib/aruba/platforms/aruba_file_creator.rb
321
329
  - lib/aruba/platforms/aruba_fixed_size_file_creator.rb
@@ -415,26 +423,25 @@ required_ruby_version: !ruby/object:Gem::Requirement
415
423
  version: 1.8.7
416
424
  required_rubygems_version: !ruby/object:Gem::Requirement
417
425
  requirements:
418
- - - ">="
426
+ - - ">"
419
427
  - !ruby/object:Gem::Version
420
- version: '0'
428
+ version: 1.3.1
421
429
  requirements: []
422
430
  rubyforge_project:
423
- rubygems_version: 2.4.5
431
+ rubygems_version: 2.4.5.1
424
432
  signing_key:
425
433
  specification_version: 4
426
- summary: aruba-0.9.0
434
+ summary: aruba-0.10.0.pre
427
435
  test_files:
428
436
  - features/announce.feature
429
- - features/api/command/extract_text.feature
430
437
  - features/api/command/run.feature
431
438
  - features/api/command/stop_all_commands.feature
432
439
  - features/api/command/terminate_all_commands.feature
433
- - features/api/command/unescape_text.feature
434
440
  - features/api/command/which.feature
435
441
  - features/api/core/expand_path.feature
436
442
  - features/api/environment/append_environment_variable.feature
437
443
  - features/api/environment/prepend_environment_variable.feature
444
+ - features/api/environment/remove_environment_variable.feature
438
445
  - features/api/environment/set_environment_variable.feature
439
446
  - features/api/filesystem/cd.feature
440
447
  - features/api/filesystem/create_directory.feature
@@ -445,7 +452,11 @@ test_files:
445
452
  - features/api/filesystem/is_file.feature
446
453
  - features/api/filesystem/is_relative.feature
447
454
  - features/api/filesystem/move.feature
455
+ - features/api/text/extract_text.feature
456
+ - features/api/text/sanitize_text.feature
457
+ - features/api/text/unescape_text.feature
448
458
  - features/cli/console.feature
459
+ - features/cli/init.feature
449
460
  - features/commands/debug_command.feature
450
461
  - features/commands/environment_variables.feature
451
462
  - features/commands/flushing.feature
@@ -470,6 +481,7 @@ test_files:
470
481
  - features/development/test.feature
471
482
  - features/file_system_commands.feature
472
483
  - features/getting_started/supported_programming_languages.feature
484
+ - features/getting_started/supported_testing_frameworks.feature
473
485
  - features/hooks/after/command.feature
474
486
  - features/hooks/before/command.feature
475
487
  - features/integration/rspec/getting_started.feature
@@ -1,6 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- $LOAD_PATH << File.expand_path('../../lib', __FILE__)
4
- require 'cli/app'
5
-
6
- exit 0
@@ -1,14 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'bundler/setup'
4
- require 'cli/app'
5
-
6
- # You can add fixtures and/or initialization code here to make experimenting
7
- # with your gem easier. You can also use a different console, if you like.
8
-
9
- # (If you use this, don't forget to add pry to your Gemfile!)
10
- # require "pry"
11
- # Pry.start
12
-
13
- require 'irb'
14
- IRB.start
@@ -1,9 +0,0 @@
1
- $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
2
-
3
- require 'cli/app'
4
-
5
- if RUBY_VERSION < '1.9.3'
6
- ::Dir.glob(::File.expand_path('../support/**/*.rb', __FILE__)).each { |f| require File.join(File.dirname(f), File.basename(f, '.rb')) }
7
- else
8
- ::Dir.glob(::File.expand_path('../support/**/*.rb', __FILE__)).each { |f| require_relative f }
9
- end
@@ -1,2 +0,0 @@
1
- # Let's alias :all to have a name which has no conflicts with other libraries
2
- RSpec::Matchers.alias_matcher :all_objects, :all