cucumber 3.1.0 → 3.1.1
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +38 -2
- data/CONTRIBUTING.md +1 -0
- data/README.md +6 -7
- data/lib/autotest/cucumber.rb +1 -0
- data/lib/autotest/cucumber_mixin.rb +1 -0
- data/lib/autotest/cucumber_rails.rb +1 -0
- data/lib/autotest/cucumber_rails_rspec.rb +1 -0
- data/lib/autotest/cucumber_rails_rspec2.rb +1 -0
- data/lib/autotest/cucumber_rspec.rb +1 -0
- data/lib/autotest/cucumber_rspec2.rb +1 -0
- data/lib/autotest/discover.rb +1 -0
- data/lib/cucumber.rb +1 -0
- data/lib/cucumber/cli/configuration.rb +1 -0
- data/lib/cucumber/cli/main.rb +2 -2
- data/lib/cucumber/cli/options.rb +42 -40
- data/lib/cucumber/cli/profile_loader.rb +5 -7
- data/lib/cucumber/cli/rerun_file.rb +1 -0
- data/lib/cucumber/configuration.rb +1 -0
- data/lib/cucumber/constantize.rb +6 -5
- data/lib/cucumber/core_ext/string.rb +1 -0
- data/lib/cucumber/deprecate.rb +1 -1
- data/lib/cucumber/encoding.rb +2 -1
- data/lib/cucumber/errors.rb +1 -0
- data/lib/cucumber/events.rb +1 -1
- data/lib/cucumber/events/gherkin_source_read.rb +1 -4
- data/lib/cucumber/events/step_activated.rb +4 -5
- data/lib/cucumber/events/step_definition_registered.rb +4 -8
- data/lib/cucumber/events/test_case_finished.rb +0 -4
- data/lib/cucumber/events/test_case_started.rb +0 -4
- data/lib/cucumber/events/test_run_finished.rb +2 -3
- data/lib/cucumber/events/test_run_started.rb +2 -4
- data/lib/cucumber/events/test_step_finished.rb +0 -4
- data/lib/cucumber/events/test_step_started.rb +1 -5
- data/lib/cucumber/file_specs.rb +2 -1
- data/lib/cucumber/filters.rb +1 -0
- data/lib/cucumber/filters/activate_steps.rb +1 -1
- data/lib/cucumber/filters/apply_after_hooks.rb +1 -0
- data/lib/cucumber/filters/apply_after_step_hooks.rb +1 -0
- data/lib/cucumber/filters/apply_around_hooks.rb +1 -0
- data/lib/cucumber/filters/apply_before_hooks.rb +1 -0
- data/lib/cucumber/filters/broadcast_test_run_started_event.rb +2 -1
- data/lib/cucumber/filters/gated_receiver.rb +1 -2
- data/lib/cucumber/filters/prepare_world.rb +2 -5
- data/lib/cucumber/filters/quit.rb +2 -3
- data/lib/cucumber/filters/randomizer.rb +6 -7
- data/lib/cucumber/filters/retry.rb +2 -2
- data/lib/cucumber/filters/tag_limits.rb +2 -2
- data/lib/cucumber/filters/tag_limits/test_case_index.rb +1 -2
- data/lib/cucumber/filters/tag_limits/verifier.rb +1 -2
- data/lib/cucumber/formatter/ansicolor.rb +13 -12
- data/lib/cucumber/formatter/backtrace_filter.rb +1 -2
- data/lib/cucumber/formatter/console.rb +10 -11
- data/lib/cucumber/formatter/console_counts.rb +4 -4
- data/lib/cucumber/formatter/console_issues.rb +3 -3
- data/lib/cucumber/formatter/duration.rb +1 -0
- data/lib/cucumber/formatter/duration_extractor.rb +1 -1
- data/lib/cucumber/formatter/fail_fast.rb +9 -6
- data/lib/cucumber/formatter/fanout.rb +1 -3
- data/lib/cucumber/formatter/hook_query_visitor.rb +1 -0
- data/lib/cucumber/formatter/html.rb +27 -31
- data/lib/cucumber/formatter/html_builder.rb +2 -1
- data/lib/cucumber/formatter/ignore_missing_messages.rb +1 -2
- data/lib/cucumber/formatter/interceptor.rb +18 -5
- data/lib/cucumber/formatter/io.rb +1 -0
- data/lib/cucumber/formatter/json.rb +2 -1
- data/lib/cucumber/formatter/json_pretty.rb +1 -0
- data/lib/cucumber/formatter/junit.rb +16 -15
- data/lib/cucumber/formatter/pretty.rb +3 -2
- data/lib/cucumber/formatter/progress.rb +3 -2
- data/lib/cucumber/formatter/rerun.rb +1 -0
- data/lib/cucumber/formatter/stepdefs.rb +1 -0
- data/lib/cucumber/formatter/steps.rb +2 -2
- data/lib/cucumber/formatter/summary.rb +1 -1
- data/lib/cucumber/formatter/unicode.rb +2 -2
- data/lib/cucumber/formatter/usage.rb +21 -18
- data/lib/cucumber/gherkin/data_table_parser.rb +1 -0
- data/lib/cucumber/gherkin/formatter/ansi_escapes.rb +86 -85
- data/lib/cucumber/gherkin/formatter/escaping.rb +13 -12
- data/lib/cucumber/gherkin/i18n.rb +1 -0
- data/lib/cucumber/gherkin/steps_parser.rb +1 -0
- data/lib/cucumber/glue/dsl.rb +1 -0
- data/lib/cucumber/glue/hook.rb +1 -0
- data/lib/cucumber/glue/invoke_in_world.rb +3 -3
- data/lib/cucumber/glue/proto_world.rb +8 -9
- data/lib/cucumber/glue/registry_and_more.rb +13 -12
- data/lib/cucumber/glue/snippet.rb +1 -5
- data/lib/cucumber/glue/step_definition.rb +9 -9
- data/lib/cucumber/glue/world_factory.rb +0 -2
- data/lib/cucumber/hooks.rb +1 -3
- data/lib/cucumber/load_path.rb +1 -0
- data/lib/cucumber/multiline_argument.rb +2 -2
- data/lib/cucumber/multiline_argument/data_table.rb +10 -10
- data/lib/cucumber/multiline_argument/data_table/diff_matrices.rb +4 -7
- data/lib/cucumber/multiline_argument/doc_string.rb +1 -0
- data/lib/cucumber/platform.rb +2 -1
- data/lib/cucumber/project_initializer.rb +1 -1
- data/lib/cucumber/rake/task.rb +7 -4
- data/lib/cucumber/rspec/disable_option_parser.rb +1 -0
- data/lib/cucumber/rspec/doubles.rb +1 -0
- data/lib/cucumber/running_test_case.rb +2 -1
- data/lib/cucumber/runtime.rb +5 -5
- data/lib/cucumber/runtime/after_hooks.rb +1 -0
- data/lib/cucumber/runtime/before_hooks.rb +1 -0
- data/lib/cucumber/runtime/for_programming_languages.rb +8 -7
- data/lib/cucumber/runtime/step_hooks.rb +2 -0
- data/lib/cucumber/runtime/support_code.rb +3 -7
- data/lib/cucumber/runtime/user_interface.rb +2 -3
- data/lib/cucumber/step_argument.rb +1 -0
- data/lib/cucumber/step_definition_light.rb +2 -1
- data/lib/cucumber/step_definitions.rb +1 -0
- data/lib/cucumber/step_match.rb +5 -7
- data/lib/cucumber/step_match_search.rb +1 -2
- data/lib/cucumber/term/ansicolor.rb +30 -30
- data/lib/cucumber/unit.rb +1 -0
- data/lib/cucumber/version +1 -1
- data/lib/simplecov_setup.rb +1 -0
- metadata +61 -117
@@ -1,18 +1,19 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module Cucumber
|
3
|
-
module Gherkin
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
4
|
+
module Gherkin
|
5
|
+
module Formatter
|
6
|
+
module Escaping
|
7
|
+
# Escapes a pipes and backslashes:
|
8
|
+
#
|
9
|
+
# * | becomes \|
|
10
|
+
# * \ becomes \\
|
11
|
+
#
|
12
|
+
# This is used in the pretty formatter.
|
13
|
+
def escape_cell(s)
|
14
|
+
s.gsub(/\\(?!\|)/, '\\\\\\\\').gsub(/\n/, '\\n').gsub(/\|/, '\\|')
|
15
|
+
end
|
14
16
|
end
|
15
17
|
end
|
16
18
|
end
|
17
19
|
end
|
18
|
-
end
|
data/lib/cucumber/glue/dsl.rb
CHANGED
data/lib/cucumber/glue/hook.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'cucumber/platform'
|
3
4
|
module Cucumber
|
4
5
|
module Glue
|
@@ -17,7 +18,7 @@ module Cucumber
|
|
17
18
|
depth = backtrace.count { |line| line == instance_exec_invocation_line }
|
18
19
|
end_pos = depth > 1 ? instance_exec_pos : -1
|
19
20
|
|
20
|
-
backtrace[replacement_line+1..end_pos] = nil
|
21
|
+
backtrace[replacement_line + 1..end_pos] = nil
|
21
22
|
backtrace.compact!
|
22
23
|
end
|
23
24
|
end
|
@@ -27,7 +28,7 @@ module Cucumber
|
|
27
28
|
if check_arity && !cucumber_compatible_arity?(args, block)
|
28
29
|
world.instance_exec do
|
29
30
|
ari = block.arity
|
30
|
-
ari = ari < 0 ? (ari.abs-1).to_s+'+' : ari
|
31
|
+
ari = ari < 0 ? (ari.abs - 1).to_s + '+' : ari
|
31
32
|
s1 = ari == 1 ? '' : 's'
|
32
33
|
s2 = args.length == 1 ? '' : 's'
|
33
34
|
raise ArityMismatchError.new(
|
@@ -65,6 +66,5 @@ module Cucumber
|
|
65
66
|
# is different from the number of Proc arguments.
|
66
67
|
class ArityMismatchError < StandardError
|
67
68
|
end
|
68
|
-
|
69
69
|
end
|
70
70
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'cucumber/gherkin/formatter/ansi_escapes'
|
3
4
|
require 'cucumber/core/ast/data_table'
|
4
5
|
|
@@ -9,7 +10,6 @@ module Cucumber
|
|
9
10
|
# You can, and probably should, extend this API with your own methods that
|
10
11
|
# make sense in your domain. For more on that, see {Cucumber::Glue::Dsl#World}
|
11
12
|
module ProtoWorld
|
12
|
-
|
13
13
|
# Run a single Gherkin step
|
14
14
|
# @example Call another step
|
15
15
|
# step "I am logged in"
|
@@ -25,7 +25,7 @@ module Cucumber
|
|
25
25
|
# step "the email should contain:", "Dear sir,\nYou've won a prize!\n"
|
26
26
|
# @param [String] name The name of the step
|
27
27
|
# @param [String,Cucumber::Ast::DocString,Cucumber::Ast::Table] multiline_argument
|
28
|
-
def step(name, raw_multiline_arg=nil)
|
28
|
+
def step(name, raw_multiline_arg = nil)
|
29
29
|
super
|
30
30
|
end
|
31
31
|
|
@@ -67,7 +67,7 @@ module Cucumber
|
|
67
67
|
# %w{ CUC-101 Peeler 22 }
|
68
68
|
# ])
|
69
69
|
#
|
70
|
-
def table(text_or_table, file=nil, line=0)
|
70
|
+
def table(text_or_table, file = nil, line = 0)
|
71
71
|
location = !file ? Core::Ast::Location.of_caller : Core::Ast::Location.new(file, line)
|
72
72
|
MultilineArgument::DataTable.from(text_or_table, location)
|
73
73
|
end
|
@@ -84,12 +84,12 @@ module Cucumber
|
|
84
84
|
end
|
85
85
|
|
86
86
|
# Pause the tests and ask the operator for input
|
87
|
-
def ask(question, timeout_seconds=60)
|
87
|
+
def ask(question, timeout_seconds = 60)
|
88
88
|
super
|
89
89
|
end
|
90
90
|
|
91
91
|
# Embed an image in the output
|
92
|
-
def embed(file, mime_type, label='Screenshot')
|
92
|
+
def embed(file, mime_type, label = 'Screenshot')
|
93
93
|
super
|
94
94
|
end
|
95
95
|
|
@@ -138,7 +138,7 @@ module Cucumber
|
|
138
138
|
add_namespaced_modules!(namespaced_world_modules)
|
139
139
|
end
|
140
140
|
|
141
|
-
define_method(:step) do |name, raw_multiline_arg=nil|
|
141
|
+
define_method(:step) do |name, raw_multiline_arg = nil|
|
142
142
|
location = Core::Ast::Location.of_caller
|
143
143
|
runtime.invoke_dynamic_step(name, MultilineArgument.from(raw_multiline_arg, location))
|
144
144
|
end
|
@@ -159,11 +159,11 @@ module Cucumber
|
|
159
159
|
end
|
160
160
|
# rubocop:enable UnneededInterpolation
|
161
161
|
|
162
|
-
define_method(:ask) do |question, timeout_seconds=60|
|
162
|
+
define_method(:ask) do |question, timeout_seconds = 60|
|
163
163
|
runtime.ask(question, timeout_seconds)
|
164
164
|
end
|
165
165
|
|
166
|
-
define_method(:embed) do |file, mime_type, label='Screenshot'|
|
166
|
+
define_method(:embed) do |file, mime_type, label = 'Screenshot'|
|
167
167
|
runtime.embed(file, mime_type, label)
|
168
168
|
end
|
169
169
|
|
@@ -211,7 +211,6 @@ module Cucumber
|
|
211
211
|
def stringify_namespaced_modules
|
212
212
|
@__namespaced_modules.map { |k, v| "#{v.join(',')} (as #{k})" }.join('+')
|
213
213
|
end
|
214
|
-
|
215
214
|
end
|
216
215
|
end
|
217
216
|
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'cucumber/cucumber_expressions/parameter_type_registry'
|
3
4
|
require 'cucumber/cucumber_expressions/cucumber_expression'
|
4
5
|
require 'cucumber/cucumber_expressions/regular_expression'
|
@@ -62,12 +63,12 @@ module Cucumber
|
|
62
63
|
end
|
63
64
|
|
64
65
|
def step_matches(name_to_match)
|
65
|
-
@step_definitions.reduce([])
|
66
|
+
@step_definitions.reduce([]) do |result, step_definition|
|
66
67
|
if (arguments = step_definition.arguments_from(name_to_match))
|
67
68
|
result << StepMatch.new(step_definition, name_to_match, arguments)
|
68
69
|
end
|
69
70
|
result
|
70
|
-
|
71
|
+
end
|
71
72
|
end
|
72
73
|
|
73
74
|
def register_rb_hook(phase, tag_expressions, proc)
|
@@ -134,7 +135,7 @@ module Cucumber
|
|
134
135
|
end
|
135
136
|
|
136
137
|
def hooks_for(phase, scenario) #:nodoc:
|
137
|
-
hooks[phase.to_sym].select{|hook| scenario.accept_hook?(hook)}
|
138
|
+
hooks[phase.to_sym].select {|hook| scenario.accept_hook?(hook)}
|
138
139
|
end
|
139
140
|
|
140
141
|
def unmatched_step_definitions
|
@@ -155,6 +156,14 @@ module Cucumber
|
|
155
156
|
raise ArgumentError.new('Expression must be a String or Regexp')
|
156
157
|
end
|
157
158
|
|
159
|
+
def self.cli_snippet_type_options
|
160
|
+
registry = CucumberExpressions::ParameterTypeRegistry.new
|
161
|
+
cucumber_expression_generator = CucumberExpressions::CucumberExpressionGenerator.new(registry)
|
162
|
+
Snippet::SNIPPET_TYPES.keys.sort_by(&:to_s).map do |type|
|
163
|
+
Snippet::SNIPPET_TYPES[type].cli_option_string(type, cucumber_expression_generator)
|
164
|
+
end
|
165
|
+
end
|
166
|
+
|
158
167
|
private
|
159
168
|
|
160
169
|
def available_step_definition_hash
|
@@ -166,15 +175,7 @@ module Cucumber
|
|
166
175
|
end
|
167
176
|
|
168
177
|
def hooks
|
169
|
-
@hooks ||= Hash.new{|h,k| h[k] = []}
|
170
|
-
end
|
171
|
-
|
172
|
-
def self.cli_snippet_type_options
|
173
|
-
registry = CucumberExpressions::ParameterTypeRegistry.new
|
174
|
-
cucumber_expression_generator = CucumberExpressions::CucumberExpressionGenerator.new(registry)
|
175
|
-
Snippet::SNIPPET_TYPES.keys.sort_by(&:to_s).map do |type|
|
176
|
-
Snippet::SNIPPET_TYPES[type].cli_option_string(type, cucumber_expression_generator)
|
177
|
-
end
|
178
|
+
@hooks ||= Hash.new {|h, k| h[k] = []}
|
178
179
|
end
|
179
180
|
end
|
180
181
|
|
@@ -3,7 +3,6 @@
|
|
3
3
|
module Cucumber
|
4
4
|
module Glue
|
5
5
|
module Snippet
|
6
|
-
|
7
6
|
ARGUMENT_PATTERNS = ['"([^"]*)"', '(\d+)']
|
8
7
|
|
9
8
|
class Generator
|
@@ -26,7 +25,6 @@ module Cucumber
|
|
26
25
|
end
|
27
26
|
|
28
27
|
class BaseSnippet
|
29
|
-
|
30
28
|
def initialize(cucumber_expression_generator, code_keyword, step_name, multiline_argument)
|
31
29
|
@number_of_arguments = 0
|
32
30
|
@code_keyword = code_keyword
|
@@ -72,7 +70,7 @@ module Cucumber
|
|
72
70
|
end
|
73
71
|
|
74
72
|
def parameters
|
75
|
-
block_args = (0...number_of_arguments).map { |n| "arg#{n+1}" }
|
73
|
+
block_args = (0...number_of_arguments).map { |n| "arg#{n + 1}" }
|
76
74
|
multiline_argument.append_block_parameter_to(block_args)
|
77
75
|
block_args.empty? ? '' : " |#{block_args.join(", ")}|"
|
78
76
|
end
|
@@ -80,7 +78,6 @@ module Cucumber
|
|
80
78
|
def self.example(cucumber_expression_generator)
|
81
79
|
new(cucumber_expression_generator, 'Given', 'I have 2 cukes', MultilineArgument::None.new).step
|
82
80
|
end
|
83
|
-
|
84
81
|
end
|
85
82
|
|
86
83
|
class CucumberExpression < BaseSnippet
|
@@ -151,7 +148,6 @@ module Cucumber
|
|
151
148
|
}
|
152
149
|
|
153
150
|
module MultilineArgumentSnippet
|
154
|
-
|
155
151
|
def self.new(multiline_argument)
|
156
152
|
builder = Builder.new
|
157
153
|
multiline_argument.describe_to(builder)
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'cucumber/step_match'
|
3
4
|
require 'cucumber/step_argument'
|
4
5
|
require 'cucumber/core_ext/string'
|
@@ -17,7 +18,6 @@ module Cucumber
|
|
17
18
|
# end
|
18
19
|
#
|
19
20
|
class StepDefinition
|
20
|
-
|
21
21
|
class MissingProc < StandardError
|
22
22
|
def message
|
23
23
|
'Step definitions must always have a proc or symbol'
|
@@ -71,7 +71,7 @@ module Cucumber
|
|
71
71
|
# @registry.available_step_definition(regexp_source, location)
|
72
72
|
end
|
73
73
|
|
74
|
-
#
|
74
|
+
# @api private
|
75
75
|
def to_hash
|
76
76
|
type = expression.is_a?(CucumberExpressions::RegularExpression) ? 'regular expression' : 'cucumber expression'
|
77
77
|
regexp = expression.regexp
|
@@ -91,19 +91,19 @@ module Cucumber
|
|
91
91
|
}
|
92
92
|
end
|
93
93
|
|
94
|
-
#
|
94
|
+
# @api private
|
95
95
|
def ==(step_definition)
|
96
96
|
expression.source == step_definition.expression.source
|
97
97
|
end
|
98
98
|
|
99
|
-
#
|
99
|
+
# @api private
|
100
100
|
def arguments_from(step_name)
|
101
101
|
args = @expression.match(step_name)
|
102
102
|
# @registry.invoked_step_definition(regexp_source, location) if args
|
103
103
|
args
|
104
104
|
end
|
105
105
|
|
106
|
-
#
|
106
|
+
# @api private
|
107
107
|
# TODO: inline this and step definition just be a value object
|
108
108
|
def invoke(args)
|
109
109
|
begin
|
@@ -114,12 +114,12 @@ module Cucumber
|
|
114
114
|
end
|
115
115
|
end
|
116
116
|
|
117
|
-
#
|
117
|
+
# @api private
|
118
118
|
def backtrace_line
|
119
119
|
"#{location}:in `#{@expression}'"
|
120
120
|
end
|
121
121
|
|
122
|
-
#
|
122
|
+
# @api private
|
123
123
|
def file_colon_line
|
124
124
|
case @proc
|
125
125
|
when Proc
|
@@ -129,12 +129,12 @@ module Cucumber
|
|
129
129
|
end
|
130
130
|
end
|
131
131
|
|
132
|
-
# The source location where the step
|
132
|
+
# The source location where the step definition can be found
|
133
133
|
def location
|
134
134
|
@location ||= Cucumber::Core::Ast::Location.from_source_location(*@proc.source_location)
|
135
135
|
end
|
136
136
|
|
137
|
-
#
|
137
|
+
# @api private
|
138
138
|
def file
|
139
139
|
@file ||= location.file
|
140
140
|
end
|
data/lib/cucumber/hooks.rb
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'pathname'
|
3
4
|
require 'cucumber/core/ast/location'
|
4
5
|
require 'cucumber/core/test/around_hook'
|
5
6
|
|
6
7
|
module Cucumber
|
7
|
-
|
8
8
|
# Hooks quack enough like `Cucumber::Core::Ast` source nodes that we can use them as
|
9
9
|
# source for test steps
|
10
10
|
module Hooks
|
11
|
-
|
12
11
|
class << self
|
13
12
|
def before_hook(source, location, &block)
|
14
13
|
build_hook_step(source, location, block, BeforeHook, Core::Test::UnskippableAction)
|
@@ -107,6 +106,5 @@ module Cucumber
|
|
107
106
|
visitor.after_step_hook(self, *args)
|
108
107
|
end
|
109
108
|
end
|
110
|
-
|
111
109
|
end
|
112
110
|
end
|
data/lib/cucumber/load_path.rb
CHANGED
@@ -1,17 +1,17 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'delegate'
|
3
4
|
require 'cucumber/multiline_argument/data_table'
|
4
5
|
require 'cucumber/multiline_argument/doc_string'
|
5
6
|
|
6
7
|
module Cucumber
|
7
8
|
module MultilineArgument
|
8
|
-
|
9
9
|
class << self
|
10
10
|
def from_core(node)
|
11
11
|
builder.wrap(node)
|
12
12
|
end
|
13
13
|
|
14
|
-
def from(argument, location=nil, content_type=nil)
|
14
|
+
def from(argument, location = nil, content_type = nil)
|
15
15
|
location ||= Core::Ast::Location.of_caller
|
16
16
|
case argument
|
17
17
|
when String
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'forwardable'
|
3
4
|
require 'cucumber/gherkin/data_table_parser'
|
4
5
|
require 'cucumber/gherkin/formatter/escaping'
|
@@ -74,8 +75,7 @@ module Cucumber
|
|
74
75
|
end
|
75
76
|
end
|
76
77
|
|
77
|
-
|
78
|
-
NULL_CONVERSIONS = Hash.new({ :strict => false, :proc => lambda{ |cell_value| cell_value } }).freeze
|
78
|
+
NULL_CONVERSIONS = Hash.new({ :strict => false, :proc => lambda { |cell_value| cell_value } }).freeze
|
79
79
|
|
80
80
|
# @param data [Core::Ast::DataTable] the data for the table
|
81
81
|
# @param conversion_procs [Hash] see map_columns!
|
@@ -161,7 +161,7 @@ module Cucumber
|
|
161
161
|
def symbolic_hashes
|
162
162
|
@symbolic_hashes ||=
|
163
163
|
self.hashes.map do |string_hash|
|
164
|
-
Hash[string_hash.map{ |a,b| [symbolize_key(a), b] }]
|
164
|
+
Hash[string_hash.map { |a, b| [symbolize_key(a), b] }]
|
165
165
|
end
|
166
166
|
end
|
167
167
|
|
@@ -260,7 +260,7 @@ module Cucumber
|
|
260
260
|
# table.hashes.keys
|
261
261
|
# # => ['phone number', 'ADDRESS']
|
262
262
|
#
|
263
|
-
def map_headers!(mappings={}, &block)
|
263
|
+
def map_headers!(mappings = {}, &block)
|
264
264
|
# TODO: Remove this method for 2.0
|
265
265
|
clear_cache!
|
266
266
|
@header_mappings = mappings
|
@@ -268,7 +268,7 @@ module Cucumber
|
|
268
268
|
end
|
269
269
|
|
270
270
|
# Returns a new Table where the headers are redefined. See #map_headers!
|
271
|
-
def map_headers(mappings={}, &block)
|
271
|
+
def map_headers(mappings = {}, &block)
|
272
272
|
self.class.new(Core::Ast::DataTable.new(raw, location), @conversion_procs.dup, mappings, block)
|
273
273
|
end
|
274
274
|
|
@@ -284,14 +284,14 @@ module Cucumber
|
|
284
284
|
# end
|
285
285
|
# end
|
286
286
|
#
|
287
|
-
def map_column!(column_name, strict=true, &conversion_proc)
|
287
|
+
def map_column!(column_name, strict = true, &conversion_proc)
|
288
288
|
# TODO: Remove this method for 2.0
|
289
289
|
@conversion_procs[column_name.to_s] = { :strict => strict, :proc => conversion_proc }
|
290
290
|
self
|
291
291
|
end
|
292
292
|
|
293
293
|
# Returns a new Table with an additional column mapping. See #map_column!
|
294
|
-
def map_column(column_name, strict=true, &conversion_proc)
|
294
|
+
def map_column(column_name, strict = true, &conversion_proc)
|
295
295
|
conversion_procs = @conversion_procs.dup
|
296
296
|
conversion_procs[column_name.to_s] = { :strict => strict, :proc => conversion_proc }
|
297
297
|
self.class.new(Core::Ast::DataTable.new(raw, location), conversion_procs, @header_mappings.dup, @header_conversion_proc)
|
@@ -333,7 +333,7 @@ module Cucumber
|
|
333
333
|
# Calling this method is particularly useful in <tt>Then</tt> steps that take
|
334
334
|
# a Table argument, if you want to compare that table to some actual values.
|
335
335
|
#
|
336
|
-
def diff!(other_table, options={})
|
336
|
+
def diff!(other_table, options = {})
|
337
337
|
other_table = ensure_table(other_table)
|
338
338
|
other_table.convert_headers!
|
339
339
|
other_table.convert_columns!
|
@@ -375,7 +375,7 @@ module Cucumber
|
|
375
375
|
end
|
376
376
|
|
377
377
|
def has_text?(text) #:nodoc:
|
378
|
-
raw.flatten.compact.detect{|cell_value| cell_value.index(text)}
|
378
|
+
raw.flatten.compact.detect {|cell_value| cell_value.index(text)}
|
379
379
|
end
|
380
380
|
|
381
381
|
def cells_rows #:nodoc:
|
@@ -554,7 +554,7 @@ module Cucumber
|
|
554
554
|
end
|
555
555
|
|
556
556
|
def width
|
557
|
-
map{|cell| cell.value ? escape_cell(cell.value.to_s).unpack('U*').length : 0}.max
|
557
|
+
map {|cell| cell.value ? escape_cell(cell.value.to_s).unpack('U*').length : 0}.max
|
558
558
|
end
|
559
559
|
end
|
560
560
|
|