cucumber 3.1.0 → 3.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +29 -3
- 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 +54 -52
- data/lib/cucumber/cli/profile_loader.rb +5 -7
- data/lib/cucumber/cli/rerun_file.rb +1 -0
- data/lib/cucumber/configuration.rb +8 -7
- 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_parsed.rb~ +14 -0
- 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/ast_lookup.rb~ +9 -0
- data/lib/cucumber/formatter/backtrace_filter.rb +1 -2
- data/lib/cucumber/formatter/console.rb +11 -12
- 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 +3 -2
- data/lib/cucumber/formatter/json_pretty.rb +1 -0
- data/lib/cucumber/formatter/junit.rb +16 -15
- data/lib/cucumber/formatter/pretty.rb +4 -3
- 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 +22 -19
- 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 +7 -10
- 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 +8 -5
- 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 +6 -6
- 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 +7 -8
- 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 +64 -118
@@ -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
|
|