escort 0.1.0 → 0.2.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 (86) hide show
  1. checksums.yaml +8 -8
  2. data/.travis.yml +8 -0
  3. data/README.md +365 -14
  4. data/TODO.md +157 -44
  5. data/escort.gemspec +1 -0
  6. data/examples/{1_1_basic.rb → attic/1_1_basic.rb} +0 -0
  7. data/examples/{1_2_basic_requires_arguments.rb → attic/1_2_basic_requires_arguments.rb} +0 -0
  8. data/examples/{2_2_command.rb → attic/2_2_command.rb} +0 -0
  9. data/examples/{2_2_command_requires_arguments.rb → attic/2_2_command_requires_arguments.rb} +0 -0
  10. data/examples/{2_3_nested_commands.rb → attic/2_3_nested_commands.rb} +0 -0
  11. data/examples/{3_validations.rb → attic/3_validations.rb} +0 -0
  12. data/examples/{4_1_config_file.rb → attic/4_1_config_file.rb} +0 -0
  13. data/examples/{argument_handling → attic/argument_handling}/basic.rb +0 -0
  14. data/examples/{argument_handling → attic/argument_handling}/basic_command.rb +0 -0
  15. data/examples/{argument_handling → attic/argument_handling}/no_arguments.rb +0 -0
  16. data/examples/{argument_handling → attic/argument_handling}/no_arguments_command.rb +0 -0
  17. data/examples/{command_aliases → attic/command_aliases}/app.rb +0 -0
  18. data/examples/{config_file → attic/config_file}/.apprc2 +0 -0
  19. data/examples/{config_file → attic/config_file}/app.rb +0 -0
  20. data/examples/{config_file → attic/config_file}/sub_commands.rb +0 -0
  21. data/examples/{default_command → attic/default_command}/app.rb +0 -0
  22. data/examples/{sub_commands → attic/sub_commands}/app.rb +0 -0
  23. data/examples/{validation_basic → attic/validation_basic}/app.rb +0 -0
  24. data/examples/basic +10 -0
  25. data/examples/basic_conflicts +17 -0
  26. data/examples/basic_depends_on +25 -0
  27. data/examples/basic_flags +15 -0
  28. data/examples/basic_options +14 -0
  29. data/examples/basic_options_multi +15 -0
  30. data/examples/basic_require_arguments +17 -0
  31. data/examples/basic_texts +21 -0
  32. data/examples/basic_validations +21 -0
  33. data/examples/command +19 -0
  34. data/examples/commands/example_command.rb +13 -0
  35. data/lib/escort/action_command/base.rb +4 -0
  36. data/lib/escort/app.rb +33 -11
  37. data/lib/escort/formatter/borderless_table.rb +4 -0
  38. data/lib/escort/formatter/command.rb +87 -0
  39. data/lib/escort/formatter/commands.rb +36 -0
  40. data/lib/escort/formatter/default_help_formatter.rb +68 -73
  41. data/lib/escort/formatter/global_command.rb +17 -0
  42. data/lib/escort/formatter/option.rb +138 -0
  43. data/lib/escort/formatter/options.rb +17 -3
  44. data/lib/escort/formatter/shell_command_executor.rb +49 -0
  45. data/lib/escort/formatter/terminal.rb +17 -9
  46. data/lib/escort/formatter/terminal_formatter.rb +6 -0
  47. data/lib/escort/logger.rb +4 -4
  48. data/lib/escort/option_dependency_validator.rb +83 -0
  49. data/lib/escort/option_parser.rb +11 -1
  50. data/lib/escort/setup/configuration/reader.rb +0 -2
  51. data/lib/escort/setup/configuration/writer.rb +0 -2
  52. data/lib/escort/setup/dsl/command.rb +2 -7
  53. data/lib/escort/setup/dsl/global.rb +2 -9
  54. data/lib/escort/setup/dsl/options.rb +56 -0
  55. data/lib/escort/setup_accessor.rb +23 -6
  56. data/lib/escort/trollop.rb +4 -3
  57. data/lib/escort/validator.rb +4 -1
  58. data/lib/escort/version.rb +1 -1
  59. data/lib/escort.rb +8 -1
  60. data/spec/integration/basic_conflicts_spec.rb +47 -0
  61. data/spec/integration/basic_depends_on_spec.rb +275 -0
  62. data/spec/integration/basic_options_spec.rb +9 -21
  63. data/spec/integration/basic_options_with_multi_spec.rb +30 -0
  64. data/spec/integration/basic_spec.rb +5 -6
  65. data/spec/integration/basic_validations_spec.rb +77 -0
  66. data/spec/integration/basic_with_arguments_spec.rb +33 -0
  67. data/spec/integration/basic_with_text_fields_spec.rb +21 -0
  68. data/spec/lib/escort/formatter/command_spec.rb +238 -0
  69. data/spec/lib/escort/formatter/global_command_spec.rb +50 -0
  70. data/spec/lib/escort/formatter/option_spec.rb +300 -0
  71. data/spec/lib/escort/formatter/shell_command_executor_spec.rb +59 -0
  72. data/spec/lib/escort/formatter/string_splitter_spec.rb +12 -0
  73. data/spec/lib/escort/formatter/terminal_spec.rb +19 -0
  74. data/spec/lib/escort/setup_accessor_spec.rb +1 -0
  75. data/spec/spec_helper.rb +9 -3
  76. data/spec/support/integration_helpers.rb +2 -0
  77. data/spec/{helpers/execute_action_matcher.rb → support/matchers/execute_action_for_command_matcher.rb} +3 -3
  78. data/spec/support/matchers/execute_action_with_arguments_matcher.rb +25 -0
  79. data/spec/support/matchers/execute_action_with_options_matcher.rb +29 -0
  80. data/spec/support/matchers/exit_with_code_matcher.rb +29 -0
  81. data/spec/support/shared_contexts/integration_setup.rb +34 -0
  82. metadata +86 -28
  83. data/examples/basic/app.rb +0 -16
  84. data/lib/escort/formatter/common.rb +0 -58
  85. data/spec/helpers/exit_with_code_matcher.rb +0 -21
  86. data/spec/helpers/give_option_to_action_with_value_matcher.rb +0 -22
data/spec/spec_helper.rb CHANGED
@@ -1,8 +1,12 @@
1
1
  require 'escort'
2
+
3
+
4
+ Dir[File.join(File.dirname(__FILE__), 'support', '**', "*.rb").to_s].each {|file| require file }
5
+
2
6
  #helpers
3
- require 'helpers/exit_with_code_matcher'
4
- require 'helpers/execute_action_matcher'
5
- require 'helpers/give_option_to_action_with_value_matcher'
7
+ #require 'helpers/exit_with_code_matcher'
8
+ #require 'helpers/execute_action_matcher'
9
+ #require 'helpers/give_option_to_action_with_value_matcher'
6
10
  # This file was generated by the `rspec --init` command. Conventionally, all
7
11
  # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
8
12
  # Require this file using `require "spec_helper"` to ensure that it is only
@@ -14,6 +18,8 @@ RSpec.configure do |config|
14
18
  config.run_all_when_everything_filtered = true
15
19
  config.filter_run :focus
16
20
 
21
+ config.include IntegrationHelpers, :integration => true
22
+
17
23
  # Run specs in random order to surface order dependencies. If you find an
18
24
  # order dependency and want to debug it, you can fix the order by providing
19
25
  # the seed, which is printed after each run.
@@ -0,0 +1,2 @@
1
+ module IntegrationHelpers
2
+ end
@@ -1,14 +1,14 @@
1
- RSpec::Matchers.define :execute_action do |command_name, result|
1
+ RSpec::Matchers.define :execute_action_for_command do |result, command_name|
2
2
  match do |block|
3
3
  begin
4
4
  block.call
5
5
  rescue SystemExit => e
6
6
  end
7
- result.first == command_name
7
+ result[:command_name] == command_name
8
8
  end
9
9
 
10
10
  failure_message_for_should do |block|
11
- "'#{command_name}' action should have been executed as a result of block, but instead '#{result.first}' was executed"
11
+ "'#{command_name}' action should have been executed as a result of block, but instead '#{result[:command_name]}' was executed"
12
12
  end
13
13
 
14
14
  failure_message_for_should_not do |block|
@@ -0,0 +1,25 @@
1
+ RSpec::Matchers.define :execute_action_with_arguments do |result, expected_arguments|
2
+ match do |block|
3
+ begin
4
+ block.call
5
+ rescue SystemExit => e
6
+ end
7
+ successful_match?(result, expected_arguments)
8
+ end
9
+
10
+ def successful_match?(result, expected_arguments)
11
+ result[:arguments] == expected_arguments
12
+ end
13
+
14
+ failure_message_for_should do |block|
15
+ "'#{expected_arguments}' should have been passed to action, but we got '#{result[:arguments]}'"
16
+ end
17
+
18
+ failure_message_for_should_not do |block|
19
+ "'#{expected_arguments}' should not have been passed to action"
20
+ end
21
+
22
+ description do
23
+ "'#{expected_arguments}' should have been passed to action"
24
+ end
25
+ end
@@ -0,0 +1,29 @@
1
+ RSpec::Matchers.define :execute_action_with_options do |result, expected_options|
2
+ match do |block|
3
+ begin
4
+ block.call
5
+ rescue SystemExit => e
6
+ end
7
+ successful_match?(result, expected_options)
8
+ end
9
+
10
+ def successful_match?(result, expected_options)
11
+ options = result[:command_options]
12
+ expected_options.keys.each do |key|
13
+ return false unless options[key] == expected_options[key]
14
+ end
15
+ true
16
+ end
17
+
18
+ failure_message_for_should do |block|
19
+ "'#{expected_options}' should have been passed to action, but we got '#{result[:command_options]}'"
20
+ end
21
+
22
+ failure_message_for_should_not do |block|
23
+ "'#{expected_options}' should not have been passed to action"
24
+ end
25
+
26
+ description do
27
+ "'#{expected_options}' should have been passed to action"
28
+ end
29
+ end
@@ -0,0 +1,29 @@
1
+ RSpec::Matchers.define :exit_with_code do |*expected_code|
2
+ actual = nil
3
+ match do |block|
4
+ begin
5
+ block.call
6
+ rescue SystemExit => e
7
+ actual = e.status
8
+ end
9
+ has_expected_exit_code?(actual, *expected_code)
10
+ #actual && actual == expected_code
11
+ end
12
+
13
+ def has_expected_exit_code?(actual, *expected_code)
14
+ expected_code.each do |code|
15
+ return true if actual && actual == code
16
+ end
17
+ false
18
+ end
19
+
20
+ failure_message_for_should do |block|
21
+ "expected block to call exit(#{expected_code}) but exit #{actual.nil? ? "not called" : "(#{actual}) was called"}"
22
+ end
23
+ failure_message_for_should_not do |block|
24
+ "expected block not to call exit(#{expected_code})"
25
+ end
26
+ description do
27
+ "expect block to call exit(#{expected_code})"
28
+ end
29
+ end
@@ -0,0 +1,34 @@
1
+ shared_context "integration test setup", :integration => true do
2
+ let(:result) { {} }
3
+
4
+ before do
5
+ empty_argv
6
+ #$stderr = StringIO.new
7
+ #$stdout = StringIO.new
8
+ $stdin = StringIO.new
9
+ end
10
+
11
+ after do
12
+ $stderr = STDERR
13
+ $stdout = STDOUT
14
+ $stdin = STDIN
15
+ end
16
+
17
+ module Escort
18
+ class IntegrationTestCommand < ::Escort::ActionCommand::Base
19
+ def execute(result)
20
+ result[:command_name] = command_name
21
+ result[:command_options] = command_options
22
+ result[:options] = options
23
+ result[:arguments] = arguments
24
+ result[:config] = config if config
25
+ end
26
+ end
27
+ end
28
+
29
+ def empty_argv
30
+ while !ARGV.empty? do
31
+ ARGV.delete_at(0)
32
+ end
33
+ end
34
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: escort
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alan Skorkin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-02-28 00:00:00.000000000 Z
11
+ date: 2013-03-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - ! '>='
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: travis-lint
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ! '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
55
69
  description: Writing even complex command-line apps should be quick, easy and fun.
56
70
  Escort takes the excellent Trollop option parser and adds a whole bunch of awesome
57
71
  features to produce a library you will always want to turn to when a 'quick script'
@@ -66,31 +80,42 @@ files:
66
80
  - .irbrc
67
81
  - .rspec
68
82
  - .rvmrc
83
+ - .travis.yml
69
84
  - Gemfile
70
85
  - LICENSE.txt
71
86
  - README.md
72
87
  - Rakefile
73
88
  - TODO.md
74
89
  - escort.gemspec
75
- - examples/1_1_basic.rb
76
- - examples/1_2_basic_requires_arguments.rb
77
- - examples/2_2_command.rb
78
- - examples/2_2_command_requires_arguments.rb
79
- - examples/2_3_nested_commands.rb
80
- - examples/3_validations.rb
81
- - examples/4_1_config_file.rb
82
- - examples/argument_handling/basic.rb
83
- - examples/argument_handling/basic_command.rb
84
- - examples/argument_handling/no_arguments.rb
85
- - examples/argument_handling/no_arguments_command.rb
86
- - examples/basic/app.rb
87
- - examples/command_aliases/app.rb
88
- - examples/config_file/.apprc2
89
- - examples/config_file/app.rb
90
- - examples/config_file/sub_commands.rb
91
- - examples/default_command/app.rb
92
- - examples/sub_commands/app.rb
93
- - examples/validation_basic/app.rb
90
+ - examples/attic/1_1_basic.rb
91
+ - examples/attic/1_2_basic_requires_arguments.rb
92
+ - examples/attic/2_2_command.rb
93
+ - examples/attic/2_2_command_requires_arguments.rb
94
+ - examples/attic/2_3_nested_commands.rb
95
+ - examples/attic/3_validations.rb
96
+ - examples/attic/4_1_config_file.rb
97
+ - examples/attic/argument_handling/basic.rb
98
+ - examples/attic/argument_handling/basic_command.rb
99
+ - examples/attic/argument_handling/no_arguments.rb
100
+ - examples/attic/argument_handling/no_arguments_command.rb
101
+ - examples/attic/command_aliases/app.rb
102
+ - examples/attic/config_file/.apprc2
103
+ - examples/attic/config_file/app.rb
104
+ - examples/attic/config_file/sub_commands.rb
105
+ - examples/attic/default_command/app.rb
106
+ - examples/attic/sub_commands/app.rb
107
+ - examples/attic/validation_basic/app.rb
108
+ - examples/basic
109
+ - examples/basic_conflicts
110
+ - examples/basic_depends_on
111
+ - examples/basic_flags
112
+ - examples/basic_options
113
+ - examples/basic_options_multi
114
+ - examples/basic_require_arguments
115
+ - examples/basic_texts
116
+ - examples/basic_validations
117
+ - examples/command
118
+ - examples/commands/example_command.rb
94
119
  - lib/escort.rb
95
120
  - lib/escort/action_command/base.rb
96
121
  - lib/escort/action_command/escort_utility_command.rb
@@ -99,14 +124,19 @@ files:
99
124
  - lib/escort/auto_options.rb
100
125
  - lib/escort/error/error.rb
101
126
  - lib/escort/formatter/borderless_table.rb
102
- - lib/escort/formatter/common.rb
127
+ - lib/escort/formatter/command.rb
128
+ - lib/escort/formatter/commands.rb
103
129
  - lib/escort/formatter/default_help_formatter.rb
130
+ - lib/escort/formatter/global_command.rb
131
+ - lib/escort/formatter/option.rb
104
132
  - lib/escort/formatter/options.rb
133
+ - lib/escort/formatter/shell_command_executor.rb
105
134
  - lib/escort/formatter/string_splitter.rb
106
135
  - lib/escort/formatter/terminal.rb
107
136
  - lib/escort/formatter/terminal_formatter.rb
108
137
  - lib/escort/global_pre_parser.rb
109
138
  - lib/escort/logger.rb
139
+ - lib/escort/option_dependency_validator.rb
110
140
  - lib/escort/option_parser.rb
111
141
  - lib/escort/setup/configuration/generator.rb
112
142
  - lib/escort/setup/configuration/instance.rb
@@ -127,15 +157,29 @@ files:
127
157
  - lib/escort/utils.rb
128
158
  - lib/escort/validator.rb
129
159
  - lib/escort/version.rb
130
- - spec/helpers/execute_action_matcher.rb
131
- - spec/helpers/exit_with_code_matcher.rb
132
- - spec/helpers/give_option_to_action_with_value_matcher.rb
160
+ - spec/integration/basic_conflicts_spec.rb
161
+ - spec/integration/basic_depends_on_spec.rb
133
162
  - spec/integration/basic_options_spec.rb
163
+ - spec/integration/basic_options_with_multi_spec.rb
134
164
  - spec/integration/basic_spec.rb
165
+ - spec/integration/basic_validations_spec.rb
166
+ - spec/integration/basic_with_arguments_spec.rb
167
+ - spec/integration/basic_with_text_fields_spec.rb
168
+ - spec/lib/escort/formatter/command_spec.rb
169
+ - spec/lib/escort/formatter/global_command_spec.rb
170
+ - spec/lib/escort/formatter/option_spec.rb
171
+ - spec/lib/escort/formatter/shell_command_executor_spec.rb
135
172
  - spec/lib/escort/formatter/string_splitter_spec.rb
173
+ - spec/lib/escort/formatter/terminal_spec.rb
136
174
  - spec/lib/escort/setup_accessor_spec.rb
137
175
  - spec/lib/escort/utils_spec.rb
138
176
  - spec/spec_helper.rb
177
+ - spec/support/integration_helpers.rb
178
+ - spec/support/matchers/execute_action_for_command_matcher.rb
179
+ - spec/support/matchers/execute_action_with_arguments_matcher.rb
180
+ - spec/support/matchers/execute_action_with_options_matcher.rb
181
+ - spec/support/matchers/exit_with_code_matcher.rb
182
+ - spec/support/shared_contexts/integration_setup.rb
139
183
  homepage: https://github.com/skorks/escort
140
184
  licenses: []
141
185
  metadata: {}
@@ -161,12 +205,26 @@ specification_version: 4
161
205
  summary: A library that makes building command line apps in ruby so easy, you'll feel
162
206
  like an expert is guiding you through it
163
207
  test_files:
164
- - spec/helpers/execute_action_matcher.rb
165
- - spec/helpers/exit_with_code_matcher.rb
166
- - spec/helpers/give_option_to_action_with_value_matcher.rb
208
+ - spec/integration/basic_conflicts_spec.rb
209
+ - spec/integration/basic_depends_on_spec.rb
167
210
  - spec/integration/basic_options_spec.rb
211
+ - spec/integration/basic_options_with_multi_spec.rb
168
212
  - spec/integration/basic_spec.rb
213
+ - spec/integration/basic_validations_spec.rb
214
+ - spec/integration/basic_with_arguments_spec.rb
215
+ - spec/integration/basic_with_text_fields_spec.rb
216
+ - spec/lib/escort/formatter/command_spec.rb
217
+ - spec/lib/escort/formatter/global_command_spec.rb
218
+ - spec/lib/escort/formatter/option_spec.rb
219
+ - spec/lib/escort/formatter/shell_command_executor_spec.rb
169
220
  - spec/lib/escort/formatter/string_splitter_spec.rb
221
+ - spec/lib/escort/formatter/terminal_spec.rb
170
222
  - spec/lib/escort/setup_accessor_spec.rb
171
223
  - spec/lib/escort/utils_spec.rb
172
224
  - spec/spec_helper.rb
225
+ - spec/support/integration_helpers.rb
226
+ - spec/support/matchers/execute_action_for_command_matcher.rb
227
+ - spec/support/matchers/execute_action_with_arguments_matcher.rb
228
+ - spec/support/matchers/execute_action_with_options_matcher.rb
229
+ - spec/support/matchers/exit_with_code_matcher.rb
230
+ - spec/support/shared_contexts/integration_setup.rb
@@ -1,16 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require File.expand_path(File.join(File.expand_path(__FILE__), "..", "..", "..", "lib", "escort"))
3
-
4
- Escort::App.create do |app|
5
- #app.version "0.2.4"
6
- #app.format_help_with(:default_formatter)
7
-
8
- app.options do
9
- opt :global_option, "Global option", :short => '-g', :long => '--global', :type => :string, :default => "global"
10
- opt :multi_option, "Option that can be specified multiple times alksjdfh lakjdfh adf alksdfh alkdfjh alsdfjhaskdjfh alsdkfjh alksfdjh akdfjh alkdsjf alksdjfh alksdfjh asdfjklh aslkdfhj aslkdfjh adfjkhl", :short => '-m', :long => '--multi', :type => :string, :multi => true
11
- end
12
-
13
- app.action do |options, arguments|
14
- puts "Action for my_command\nglobal options: #{options} \narguments: #{arguments}"
15
- end
16
- end
@@ -1,58 +0,0 @@
1
- module Escort
2
- module Formatter
3
- module Common
4
- def option_output_strings(parser)
5
- options = {}
6
- parser.specs.each do |name, spec|
7
- options[name] = "--#{spec[:long]}" +
8
- (spec[:type] == :flag && spec[:default] ? ", --no-#{spec[:long]}" : "") +
9
- (spec[:short] && spec[:short] != :none ? ", -#{spec[:short]}" : "") +
10
- case spec[:type]
11
- when :flag; ""
12
- when :int; " <i>"
13
- when :ints; " <i+>"
14
- when :string; " <s>"
15
- when :strings; " <s+>"
16
- when :float; " <f>"
17
- when :floats; " <f+>"
18
- when :io; " <filename/uri>"
19
- when :ios; " <filename/uri+>"
20
- when :date; " <date>"
21
- when :dates; " <date+>"
22
- end
23
- end
24
-
25
- parser.order.each do |what, opt|
26
- if what == :text
27
- next
28
- end
29
- spec = parser.specs[opt]
30
- desc = spec[:desc] + begin
31
- default_s = case spec[:default]
32
- when $stdout; "<stdout>"
33
- when $stdin; "<stdin>"
34
- when $stderr; "<stderr>"
35
- when Array
36
- spec[:default].join(", ")
37
- else
38
- spec[:default].to_s
39
- end
40
-
41
- if spec[:default]
42
- if spec[:desc] =~ /\.$/
43
- " (Default: #{default_s})"
44
- else
45
- " (default: #{default_s})"
46
- end
47
- else
48
- ""
49
- end
50
- end
51
- options[opt] = {:string => options[opt]}
52
- options[opt][:desc] = desc
53
- end
54
- options
55
- end
56
- end
57
- end
58
- end
@@ -1,21 +0,0 @@
1
- RSpec::Matchers.define :exit_with_code do |exp_code|
2
- actual = nil
3
- match do |block|
4
- begin
5
- block.call
6
- rescue SystemExit => e
7
- actual = e.status
8
- end
9
- actual and actual == exp_code
10
- end
11
- failure_message_for_should do |block|
12
- "expected block to call exit(#{exp_code}) but exit" +
13
- (actual.nil? ? " not called" : "(#{actual}) was called")
14
- end
15
- failure_message_for_should_not do |block|
16
- "expected block not to call exit(#{exp_code})"
17
- end
18
- description do
19
- "expect block to call exit(#{exp_code})"
20
- end
21
- end
@@ -1,22 +0,0 @@
1
- RSpec::Matchers.define :give_option_to_action_with_value do |option_name, expected_value, result|
2
- match do |block|
3
- begin
4
- block.call
5
- rescue SystemExit => e
6
- end
7
- options = result[1] || {}
8
- options.keys.include?(option_name) && options[option_name] == expected_value
9
- end
10
-
11
- failure_message_for_should do |block|
12
- "'#{option_name}' should have been passed to action with value '#{expected_value}', but instead we got '#{(result[1] || {})[option_name]}'"
13
- end
14
-
15
- failure_message_for_should_not do |block|
16
- "'#{option_name}' should not have been passed to action with value '#{expected_value}'"
17
- end
18
-
19
- description do
20
- "'#{option_name}' should have been passed to action with value '#{expected_value}'"
21
- end
22
- end