escort 0.1.0 → 0.2.0

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