aruba 0.9.0 → 0.10.0.pre

Sign up to get free protection for your applications and to get access to all the features.
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