cucumber 9.0.1 → 9.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +9 -13
  3. data/VERSION +1 -1
  4. data/lib/cucumber/cli/options.rb +8 -8
  5. data/lib/cucumber/deprecate.rb +1 -1
  6. data/lib/cucumber/errors.rb +2 -1
  7. data/lib/cucumber/events/envelope.rb +2 -0
  8. data/lib/cucumber/events/gherkin_source_parsed.rb +2 -0
  9. data/lib/cucumber/events/gherkin_source_read.rb +2 -0
  10. data/lib/cucumber/events/test_case_finished.rb +2 -0
  11. data/lib/cucumber/events/test_case_started.rb +2 -0
  12. data/lib/cucumber/events/test_step_finished.rb +2 -0
  13. data/lib/cucumber/events/test_step_started.rb +2 -0
  14. data/lib/cucumber/events/undefined_parameter_type.rb +2 -0
  15. data/lib/cucumber/file_specs.rb +1 -1
  16. data/lib/cucumber/formatter/console.rb +2 -5
  17. data/lib/cucumber/formatter/console_counts.rb +3 -1
  18. data/lib/cucumber/formatter/console_issues.rb +2 -0
  19. data/lib/cucumber/formatter/errors.rb +2 -0
  20. data/lib/cucumber/formatter/html.rb +2 -0
  21. data/lib/cucumber/formatter/http_io.rb +2 -0
  22. data/lib/cucumber/formatter/message_builder.rb +2 -0
  23. data/lib/cucumber/formatter/pretty.rb +1 -1
  24. data/lib/cucumber/formatter/publish_banner_printer.rb +0 -2
  25. data/lib/cucumber/formatter/query/hook_by_test_step.rb +2 -0
  26. data/lib/cucumber/formatter/query/pickle_by_test.rb +2 -0
  27. data/lib/cucumber/formatter/query/pickle_step_by_test_step.rb +2 -0
  28. data/lib/cucumber/formatter/query/step_definitions_by_test_step.rb +2 -0
  29. data/lib/cucumber/formatter/query/test_case_started_by_test_case.rb +2 -0
  30. data/lib/cucumber/formatter/unicode.rb +3 -3
  31. data/lib/cucumber/formatter/url_reporter.rb +2 -0
  32. data/lib/cucumber/gherkin/formatter/ansi_escapes.rb +4 -5
  33. data/lib/cucumber/glue/invoke_in_world.rb +1 -1
  34. data/lib/cucumber/glue/proto_world.rb +2 -2
  35. data/lib/cucumber/glue/registry_and_more.rb +2 -1
  36. data/lib/cucumber/glue/snippet.rb +4 -2
  37. data/lib/cucumber/glue/world_factory.rb +2 -0
  38. data/lib/cucumber/multiline_argument/data_table/diff_matrices.rb +2 -0
  39. data/lib/cucumber/multiline_argument/data_table.rb +2 -2
  40. data/lib/cucumber/platform.rb +11 -16
  41. data/lib/cucumber/runtime/meta_message_builder.rb +2 -0
  42. data/lib/cucumber/runtime.rb +3 -3
  43. data/lib/cucumber/step_match.rb +1 -1
  44. data/lib/cucumber/term/ansicolor.rb +1 -1
  45. data/lib/cucumber/term/banner.rb +2 -0
  46. metadata +89 -43
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ad3c44ae94fec4bd2debdacbc00a745da83659ca8f1580342c33da089137b7d1
4
- data.tar.gz: 4c62a3b49d680e3a79e7584e8a985a5c1fb327db9e4d9dcd227ea3c025129520
3
+ metadata.gz: 313150f1f463d99e105864744641cd87c56e55f5d4d7856a437214a8db79dbdd
4
+ data.tar.gz: 90cdd041c890ab05108d3951be679f424ae096bc2df09044b26320096074eee3
5
5
  SHA512:
6
- metadata.gz: 61a3cb620e77ea2f31e5261fa4c00e3051d812cad99795fe19ecd3374d4de8361e3312ad8bf9eae1e28ef103f399ab015188b0471530483c61665320c55d4b49
7
- data.tar.gz: 12dbf85b1b6e6e17b00746250ed00306b72b18e1e4bde4a3f559a650adb6a3be3998f8d28523cbe7db55b329643c7efb288e4874714cacd8c22a3d16bdea340a
6
+ metadata.gz: 76252cc34ed4bc38ba6e7c0cec30d31b5319d14cdc9745f3e589bad8abf4713c95ec27527095b969dfd983f59ecea57f27ef9d119b68f8c032a19143d332d549
7
+ data.tar.gz: bef2260cd88f77daa139256c03e68b1744849667d71a3a71931d6c57a4c546e437e996ef6e7aed157520d5ff7dc1b86d2c1a1041b9dd9747f20fe53fd61dec2a
data/README.md CHANGED
@@ -1,6 +1,4 @@
1
- <p align="center">
2
- <img src="./.github/img/cucumber-open-logo.png" alt="Cucumber Open - Supported by Smartbear" width="428" />
3
- </p>
1
+ <img src="docs/img/cucumber-open-logo.png" alt="Cucumber Open - Supported by Smartbear" width="428" />
4
2
 
5
3
  # Cucumber
6
4
 
@@ -18,9 +16,7 @@ written in plain language, they can be read by anyone on your team. Because they
18
16
  read by anyone, you can use them to help improve communication, collaboration and trust on
19
17
  your team.
20
18
 
21
- <p align="center">
22
- <img src="./.github/img/gherkin-example.png" alt="Cucumber Gherkin Example" width="728" />
23
- </p>
19
+ <img src="docs/img/gherkin-example.png" alt="Cucumber Gherkin Example" width="728" />
24
20
 
25
21
  This is the Ruby implementation of Cucumber. Cucumber is also available for [JavaScript](https://github.com/cucumber/cucumber-js),
26
22
  [Java](https://github.com/cucumber/cucumber-jvm), and a lot of other languages. You can find a list of implementations here: https://cucumber.io/docs/installation/.
@@ -56,8 +52,7 @@ Later in this document, bundler is considered being used so all commands are usi
56
52
  - Ruby 3.0
57
53
  - Ruby 2.7
58
54
  - TruffleRuby 22.0.0+
59
- - JRuby (with [some limitations](https://github.com/cucumber/cucumber-ruby/blob/main/docs/jruby-limitations.md))
60
- - 9.4
55
+ - JRuby 9.4+ (with [some limitations](https://github.com/cucumber/cucumber-ruby/blob/main/docs/jruby-limitations.md))
61
56
 
62
57
  ### Ruby on Rails
63
58
 
@@ -109,19 +104,20 @@ And a file named `steps.rb` in `features/step_definitions` with:
109
104
  ```ruby
110
105
  # features/step_definitions/steps.rb
111
106
 
112
- Given("this will pass") do
107
+ Given('this will pass') do
113
108
  @this_will_pass = true
114
109
  end
115
110
 
116
- Given("this will fail") do
111
+ Given('this will fail') do
117
112
  @this_will_pass = false
118
113
  end
119
114
 
120
- When("I do an action") do
115
+ When('I do an action') do
116
+ :no_op
121
117
  end
122
118
 
123
119
  Then("some results should be there") do
124
- expect(@this_will_pass)
120
+ expect(@this_will_pass).to be true
125
121
  end
126
122
  ```
127
123
 
@@ -135,7 +131,7 @@ To execute a single feature file:
135
131
 
136
132
  To execute a single example, indicates the line of the name of the example:
137
133
 
138
- $ bundle exec cucumber features/rule.feature:7
134
+ $ bundle exec cucumber features/rule.feature:5
139
135
 
140
136
  To summarize the results on the standard output, and writte a HTML report on disk:
141
137
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 9.0.1
1
+ 9.0.2
@@ -50,13 +50,13 @@ module Cucumber
50
50
  FORMAT_HELP = (BUILTIN_FORMATS.keys.sort.map do |key|
51
51
  " #{key}#{' ' * (max - key.length)} : #{BUILTIN_FORMATS[key][1]}"
52
52
  end) + FORMAT_HELP_MSG
53
- PROFILE_SHORT_FLAG = '-p'.freeze
54
- NO_PROFILE_SHORT_FLAG = '-P'.freeze
55
- PROFILE_LONG_FLAG = '--profile'.freeze
56
- NO_PROFILE_LONG_FLAG = '--no-profile'.freeze
57
- FAIL_FAST_FLAG = '--fail-fast'.freeze
58
- RETRY_FLAG = '--retry'.freeze
59
- RETRY_TOTAL_FLAG = '--retry-total'.freeze
53
+ PROFILE_SHORT_FLAG = '-p'
54
+ NO_PROFILE_SHORT_FLAG = '-P'
55
+ PROFILE_LONG_FLAG = '--profile'
56
+ NO_PROFILE_LONG_FLAG = '--no-profile'
57
+ FAIL_FAST_FLAG = '--fail-fast'
58
+ RETRY_FLAG = '--retry'
59
+ RETRY_TOTAL_FLAG = '--retry-total'
60
60
  OPTIONS_WITH_ARGS = [
61
61
  '-r', '--require', '--i18n-keywords', '-f', '--format', '-o',
62
62
  '--out', '-t', '--tags', '-n', '--name', '-e', '--exclude',
@@ -64,7 +64,7 @@ module Cucumber
64
64
  '-l', '--lines', '--port', '-I', '--snippet-type'
65
65
  ].freeze
66
66
  ORDER_TYPES = %w[defined random].freeze
67
- TAG_LIMIT_MATCHER = /(?<tag_name>@\w+):(?<limit>\d+)/x
67
+ TAG_LIMIT_MATCHER = /(?<tag_name>@\w+):(?<limit>\d+)/x.freeze
68
68
 
69
69
  def self.parse(args, out_stream, error_stream, options = {})
70
70
  new(out_stream, error_stream, options).parse!(args)
@@ -42,7 +42,7 @@ module Cucumber
42
42
 
43
43
  module ForDevelopers
44
44
  def self.call(_message, _method, remove_after_version)
45
- raise "This method is due for removal after version #{remove_after_version}" if Cucumber::VERSION >= remove_after_version
45
+ raise "This method is due for removal after version #{remove_after_version}" if remove_after_version <= Cucumber::VERSION
46
46
  end
47
47
  end
48
48
 
@@ -35,7 +35,8 @@ module Cucumber
35
35
  # Raised when a step matches 2 or more StepDefinitions
36
36
  class Ambiguous < StandardError
37
37
  def initialize(step_name, step_definitions, used_guess)
38
- message = String.new # rubocop:disable Style/EmptyLiteral
38
+ # TODO: [LH] - Just use a heredoc here to fix this up
39
+ message = String.new
39
40
  message << "Ambiguous match of \"#{step_name}\":\n\n"
40
41
  message << step_definitions.map(&:backtrace_line).join("\n")
41
42
  message << "\n\n"
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cucumber/core/events'
2
4
 
3
5
  module Cucumber
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cucumber/core/events'
2
4
 
3
5
  module Cucumber
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cucumber/core/events'
2
4
 
3
5
  module Cucumber
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cucumber/core/events'
2
4
 
3
5
  module Cucumber
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cucumber/core/events'
2
4
 
3
5
  module Cucumber
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cucumber/core/events'
2
4
 
3
5
  module Cucumber
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cucumber/core/events'
2
4
 
3
5
  module Cucumber
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cucumber/core/events'
2
4
 
3
5
  module Cucumber
@@ -5,7 +5,7 @@ require 'cucumber/core/test/location'
5
5
 
6
6
  module Cucumber
7
7
  class FileSpecs
8
- FILE_COLON_LINE_PATTERN = /^([\w\W]*?)(?::([\d:]+))?$/ # :nodoc:
8
+ FILE_COLON_LINE_PATTERN = /^([\w\W]*?)(?::([\d:]+))?$/.freeze # :nodoc:
9
9
 
10
10
  def initialize(file_specs)
11
11
  Cucumber.logger.debug("Features:\n")
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # rubocop:disable Metrics/ModuleLength
4
-
5
3
  require 'cucumber/formatter/ansicolor'
6
4
  require 'cucumber/formatter/duration'
7
5
  require 'cucumber/gherkin/i18n'
@@ -48,7 +46,7 @@ module Cucumber
48
46
  def format_string(o, status)
49
47
  fmt = format_for(status)
50
48
  o.to_s.split("\n").map do |line|
51
- if Proc == fmt.class
49
+ if fmt.instance_of?(Proc)
52
50
  fmt.call(line)
53
51
  else
54
52
  fmt % line
@@ -108,7 +106,7 @@ module Cucumber
108
106
 
109
107
  # http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/10655
110
108
  def linebreaks(msg, max)
111
- return msg unless max && max > 0
109
+ return msg unless max.positive?
112
110
 
113
111
  msg.gsub(/.{1,#{max}}(?:\s|\Z)/) do
114
112
  (Regexp.last_match(0) + 5.chr).gsub(/\n\005/, "\n").gsub(/\005/, "\n")
@@ -262,4 +260,3 @@ module Cucumber
262
260
  end
263
261
  end
264
262
  end
265
- # rubocop:enable Metrics/ModuleLength
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cucumber/formatter/console'
2
4
 
3
5
  module Cucumber
@@ -30,7 +32,7 @@ module Cucumber
30
32
 
31
33
  def status_counts(summary)
32
34
  counts = Core::Test::Result::TYPES.map { |status| [status, summary.total(status)] }
33
- counts = counts.select { |_status, count| count > 0 }
35
+ counts = counts.select { |_status, count| count.positive? }
34
36
  counts = counts.map { |status, count| format_string("#{count} #{status}", status) }
35
37
  "(#{counts.join(', ')})" if counts.any?
36
38
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cucumber/formatter/console'
2
4
 
3
5
  module Cucumber
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Cucumber
2
4
  module Formatter
3
5
  class TestCaseUnknownError < StandardError; end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cucumber/formatter/io'
2
4
  require 'cucumber/html_formatter'
3
5
  require 'cucumber/formatter/message_builder'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'net/http'
2
4
  require 'tempfile'
3
5
  require 'shellwords'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'base64'
2
4
  require 'cucumber/formatter/backtrace_filter'
3
5
  require 'cucumber/formatter/query/hook_by_test_step'
@@ -19,7 +19,7 @@ module Cucumber
19
19
  #
20
20
  # If the output is STDOUT (and not a file), there are bright colours to watch too.
21
21
  #
22
- class Pretty # rubocop:disable Metrics/ClassLength
22
+ class Pretty
23
23
  include FileUtils
24
24
  include Console
25
25
  include Io
@@ -15,7 +15,6 @@ module Cucumber
15
15
  end
16
16
  end
17
17
 
18
- # rubocop:disable Metrics/MethodLength
19
18
  def display_publish_ad(io)
20
19
  display_banner(
21
20
  [
@@ -59,7 +58,6 @@ module Cucumber
59
58
  io
60
59
  )
61
60
  end
62
- # rubocop:enable Metrics/MethodLength
63
61
 
64
62
  def highlight(text)
65
63
  [text, :cyan]
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cucumber/formatter/errors'
2
4
 
3
5
  module Cucumber
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cucumber/formatter/errors'
2
4
 
3
5
  module Cucumber
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cucumber/formatter/errors'
2
4
 
3
5
  module Cucumber
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cucumber/formatter/errors'
2
4
 
3
5
  module Cucumber
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cucumber/formatter/errors'
2
4
 
3
5
  module Cucumber
@@ -10,13 +10,13 @@ if Cucumber::WINDOWS
10
10
  Cucumber::CODEPAGE = ENV['CUCUMBER_OUTPUT_ENCODING']
11
11
  elsif `cmd /c chcp` =~ /(\d+)/
12
12
  if [65_000, 65_001].include? Regexp.last_match(1).to_i
13
- Cucumber::CODEPAGE = 'UTF-8'.freeze
13
+ Cucumber::CODEPAGE = 'UTF-8'
14
14
  ENV['ANSICON_API'] = 'ruby'
15
15
  else
16
- Cucumber::CODEPAGE = "cp#{Regexp.last_match(1).to_i}".freeze
16
+ Cucumber::CODEPAGE = "cp#{Regexp.last_match(1).to_i}"
17
17
  end
18
18
  else
19
- Cucumber::CODEPAGE = 'cp1252'.freeze
19
+ Cucumber::CODEPAGE = 'cp1252'
20
20
  $stderr.puts("WARNING: Couldn't detect your output codepage. Assuming it is 1252. You may have to chcp 1252 or SET CUCUMBER_OUTPUT_ENCODING=cp1252.")
21
21
  end
22
22
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Cucumber
2
4
  module Formatter
3
5
  class URLReporter
@@ -67,11 +67,10 @@ module Cucumber
67
67
  'tag' => 'cyan'
68
68
  )
69
69
 
70
- if ENV['GHERKIN_COLORS'] # Example: export GHERKIN_COLORS="passed=red:failed=yellow"
71
- ENV['GHERKIN_COLORS'].split(':').each do |pair|
72
- a = pair.split('=')
73
- ALIASES[a[0]] = a[1]
74
- end
70
+ # Example: export GHERKIN_COLORS="passed=red:failed=yellow"
71
+ ENV.fetch('GHERKIN_COLORS', '').split(':').each do |pair|
72
+ rule, colour = pair.split('=')
73
+ ALIASES[colour] = rule
75
74
  end
76
75
 
77
76
  ALIASES.each_key do |key|
@@ -28,7 +28,7 @@ module Cucumber
28
28
  if check_arity && !cucumber_compatible_arity?(args, block)
29
29
  world.instance_exec do
30
30
  ari = block.arity
31
- ari = ari < 0 ? "#{ari.abs - 1}+" : ari
31
+ ari = ari.negative? ? "#{ari.abs - 1}+" : ari
32
32
  s1 = ari == 1 ? '' : 's'
33
33
  s2 = args.length == 1 ? '' : 's'
34
34
  raise ArityMismatchError, "Your block takes #{ari} argument#{s1}, but the Regexp matched #{args.length} argument#{s2}."
@@ -26,7 +26,7 @@ module Cucumber
26
26
  # @example Passing a multiline string
27
27
  # step "the email should contain:", "Dear sir,\nYou've won a prize!\n"
28
28
  # @param [String] name The name of the step
29
- # @param [String,Cucumber::Test::DocString,Cucumber::Ast::Table] multiline_argument
29
+ # @param [String, Cucumber::Test::DocString, Cucumber::Ast::Table] multiline_argument
30
30
  def step(name, raw_multiline_arg = nil)
31
31
  super
32
32
  end
@@ -128,7 +128,7 @@ module Cucumber
128
128
 
129
129
  # Dynamially generate the API module, closuring the dependencies
130
130
  def self.for(runtime, language) # rubocop:disable Metrics/MethodLength,Metrics/AbcSize
131
- Module.new do # rubocop:disable Metrics/BlockLength
131
+ Module.new do
132
132
  def self.extended(object)
133
133
  # wrap the dynamically generated module so that we can document the methods
134
134
  # for yardoc, which doesn't like define_method.
@@ -29,7 +29,8 @@ module Cucumber
29
29
  # Raised if there are 2 or more World blocks.
30
30
  class MultipleWorld < StandardError
31
31
  def initialize(first_proc, second_proc)
32
- message = String.new # rubocop:disable Style/EmptyLiteral
32
+ # TODO: [LH] - Just use a heredoc here to fix this up
33
+ message = String.new
33
34
  message << "You can only pass a proc to #World once, but it's happening\n"
34
35
  message << "in 2 places:\n\n"
35
36
  message << Glue.backtrace_line(first_proc, 'World') << "\n"
@@ -61,7 +61,8 @@ module Cucumber
61
61
  end
62
62
 
63
63
  def do_block
64
- do_block = String.new # rubocop:disable Style/EmptyLiteral
64
+ # TODO: [LH] - Just use a heredoc here to fix this up
65
+ do_block = String.new
65
66
  do_block << "do#{parameters}\n"
66
67
  multiline_argument.append_comment_to(do_block)
67
68
  do_block << " pending # Write code here that turns the phrase above into concrete actions\n"
@@ -95,7 +96,8 @@ module Cucumber
95
96
  "#{prefix}#{code_keyword}('#{expr.source}') do#{parameters(expr)}"
96
97
  end.join("\n")
97
98
 
98
- body = String.new # rubocop:disable Style/EmptyLiteral
99
+ # TODO: [LH] - Just use a heredoc here to fix this up
100
+ body = String.new
99
101
  multiline_argument.append_comment_to(body)
100
102
  body << " pending # Write code here that turns the phrase above into concrete actions\n"
101
103
  body << 'end'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Cucumber
2
4
  module Glue
3
5
  class WorldFactory
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Cucumber
2
4
  module MultilineArgument
3
5
  class DataTable
@@ -506,7 +506,7 @@ module Cucumber
506
506
  end
507
507
 
508
508
  def ensure_table(table_or_array) # :nodoc:
509
- return table_or_array if DataTable == table_or_array.class
509
+ return table_or_array if table_or_array.instance_of?(DataTable)
510
510
 
511
511
  DataTable.from(table_or_array)
512
512
  end
@@ -591,7 +591,7 @@ module Cucumber
591
591
  end
592
592
 
593
593
  def ==(other)
594
- SurplusCell == other.class || value == other.value
594
+ other.class == SurplusCell || value == other.value
595
595
  end
596
596
 
597
597
  def eql?(other)
@@ -1,27 +1,22 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Detect the platform we're running on so we can tweak behaviour
4
- # in various places.
3
+ # Detect the platform we're running on so we can tweak behaviour in various places.
5
4
  require 'rbconfig'
6
5
  require 'cucumber/core/platform'
7
6
 
8
7
  module Cucumber
9
- unless defined?(Cucumber::VERSION)
10
- VERSION = File.read(File.expand_path('../../VERSION', __dir__)).strip
11
- BINARY = File.expand_path("#{File.dirname(__FILE__)}/../../bin/cucumber")
12
- LIBDIR = File.expand_path("#{File.dirname(__FILE__)}/../../lib")
13
- RAILS = defined?(Rails)
14
- RUBY_BINARY = File.join(RbConfig::CONFIG['bindir'], RbConfig::CONFIG['ruby_install_name'])
15
- RUBY = defined? RUBY_VERSION
8
+ VERSION = File.read(File.expand_path('../../VERSION', __dir__)).strip
9
+ BINARY = File.expand_path("#{File.dirname(__FILE__)}/../../bin/cucumber")
10
+ LIBDIR = File.expand_path("#{File.dirname(__FILE__)}/../../lib")
11
+ RUBY_BINARY = File.join(RbConfig::CONFIG['bindir'], RbConfig::CONFIG['ruby_install_name'])
16
12
 
17
- class << self
18
- attr_accessor :use_full_backtrace
13
+ class << self
14
+ attr_accessor :use_full_backtrace
19
15
 
20
- # @private
21
- def file_mode(mode, encoding = 'UTF-8')
22
- "#{mode}:#{encoding}"
23
- end
16
+ # @private
17
+ def file_mode(mode, encoding = 'UTF-8')
18
+ "#{mode}:#{encoding}"
24
19
  end
25
- self.use_full_backtrace = false
26
20
  end
21
+ self.use_full_backtrace = false
27
22
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cucumber/messages'
2
4
  require 'cucumber/ci_environment'
3
5
 
@@ -112,7 +112,7 @@ module Cucumber
112
112
 
113
113
  def failure?
114
114
  if @configuration.wip?
115
- summary_report.test_cases.total_passed > 0
115
+ summary_report.test_cases.total_passed.positive?
116
116
  else
117
117
  !summary_report.ok?(@configuration.strict)
118
118
  end
@@ -150,8 +150,8 @@ module Cucumber
150
150
  end
151
151
 
152
152
  class NormalisedEncodingFile
153
- COMMENT_OR_EMPTY_LINE_PATTERN = /^\s*#|^\s*$/ # :nodoc:
154
- ENCODING_PATTERN = /^\s*#\s*encoding\s*:\s*([^\s]+)/ # :nodoc:
153
+ COMMENT_OR_EMPTY_LINE_PATTERN = /^\s*#|^\s*$/.freeze # :nodoc:
154
+ ENCODING_PATTERN = /^\s*#\s*encoding\s*:\s*([^\s]+)/.freeze # :nodoc:
155
155
 
156
156
  def self.read(path)
157
157
  new(path).read
@@ -78,7 +78,7 @@ module Cucumber
78
78
 
79
79
  replacement = if block_given?
80
80
  yield(group.value)
81
- elsif Proc == format.class
81
+ elsif format.instance_of?(Proc)
82
82
  format.call(group.value)
83
83
  else
84
84
  format % group.value
@@ -63,7 +63,7 @@ module Cucumber
63
63
 
64
64
  # Regular expression that is used to scan for ANSI-sequences while
65
65
  # uncoloring strings.
66
- COLORED_REGEXP = /\e\[(?:[34][0-7]|[0-9])?m/
66
+ COLORED_REGEXP = /\e\[(?:[34][0-7]|[0-9])?m/.freeze
67
67
 
68
68
  @coloring = true
69
69
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cucumber/term/ansicolor'
2
4
 
3
5
  module Cucumber
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cucumber
3
3
  version: !ruby/object:Gem::Version
4
- version: 9.0.1
4
+ version: 9.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aslak Hellesøy
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2023-09-01 00:00:00.000000000 Z
13
+ date: 2023-09-11 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: builder
@@ -58,20 +58,20 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '11.0'
61
+ version: '11.1'
62
62
  - - ">="
63
63
  - !ruby/object:Gem::Version
64
- version: 11.0.0
64
+ version: 11.1.0
65
65
  type: :runtime
66
66
  prerelease: false
67
67
  version_requirements: !ruby/object:Gem::Requirement
68
68
  requirements:
69
69
  - - "~>"
70
70
  - !ruby/object:Gem::Version
71
- version: '11.0'
71
+ version: '11.1'
72
72
  - - ">="
73
73
  - !ruby/object:Gem::Version
74
- version: 11.0.0
74
+ version: 11.1.0
75
75
  - !ruby/object:Gem::Dependency
76
76
  name: cucumber-cucumber-expressions
77
77
  requirement: !ruby/object:Gem::Requirement
@@ -98,7 +98,7 @@ dependencies:
98
98
  requirements:
99
99
  - - ">="
100
100
  - !ruby/object:Gem::Version
101
- version: 23.0.1
101
+ version: '24'
102
102
  - - "<"
103
103
  - !ruby/object:Gem::Version
104
104
  version: 26.2.1
@@ -108,7 +108,7 @@ dependencies:
108
108
  requirements:
109
109
  - - ">="
110
110
  - !ruby/object:Gem::Version
111
- version: 23.0.1
111
+ version: '24'
112
112
  - - "<"
113
113
  - !ruby/object:Gem::Version
114
114
  version: 26.2.1
@@ -138,7 +138,7 @@ dependencies:
138
138
  requirements:
139
139
  - - ">="
140
140
  - !ruby/object:Gem::Version
141
- version: '18'
141
+ version: '19'
142
142
  - - "<"
143
143
  - !ruby/object:Gem::Version
144
144
  version: '23'
@@ -148,7 +148,7 @@ dependencies:
148
148
  requirements:
149
149
  - - ">="
150
150
  - !ruby/object:Gem::Version
151
- version: '18'
151
+ version: '19'
152
152
  - - "<"
153
153
  - !ruby/object:Gem::Version
154
154
  version: '23'
@@ -238,20 +238,14 @@ dependencies:
238
238
  requirements:
239
239
  - - "~>"
240
240
  - !ruby/object:Gem::Version
241
- version: '9.2'
242
- - - ">="
243
- - !ruby/object:Gem::Version
244
- version: 9.2.1
241
+ version: '10.0'
245
242
  type: :development
246
243
  prerelease: false
247
244
  version_requirements: !ruby/object:Gem::Requirement
248
245
  requirements:
249
246
  - - "~>"
250
247
  - !ruby/object:Gem::Version
251
- version: '9.2'
252
- - - ">="
253
- - !ruby/object:Gem::Version
254
- version: 9.2.1
248
+ version: '10.0'
255
249
  - !ruby/object:Gem::Dependency
256
250
  name: nokogiri
257
251
  requirement: !ruby/object:Gem::Requirement
@@ -336,21 +330,50 @@ dependencies:
336
330
  name: rubocop
337
331
  requirement: !ruby/object:Gem::Requirement
338
332
  requirements:
339
- - - '='
333
+ - - "~>"
334
+ - !ruby/object:Gem::Version
335
+ version: '1.56'
336
+ - - ">="
337
+ - !ruby/object:Gem::Version
338
+ version: 1.56.2
339
+ type: :development
340
+ prerelease: false
341
+ version_requirements: !ruby/object:Gem::Requirement
342
+ requirements:
343
+ - - "~>"
344
+ - !ruby/object:Gem::Version
345
+ version: '1.56'
346
+ - - ">="
347
+ - !ruby/object:Gem::Version
348
+ version: 1.56.2
349
+ - !ruby/object:Gem::Dependency
350
+ name: rubocop-capybara
351
+ requirement: !ruby/object:Gem::Requirement
352
+ requirements:
353
+ - - "~>"
354
+ - !ruby/object:Gem::Version
355
+ version: '2.18'
356
+ - - ">="
340
357
  - !ruby/object:Gem::Version
341
- version: 1.43.0
358
+ version: 2.18.0
342
359
  type: :development
343
360
  prerelease: false
344
361
  version_requirements: !ruby/object:Gem::Requirement
345
362
  requirements:
346
- - - '='
363
+ - - "~>"
364
+ - !ruby/object:Gem::Version
365
+ version: '2.18'
366
+ - - ">="
347
367
  - !ruby/object:Gem::Version
348
- version: 1.43.0
368
+ version: 2.18.0
349
369
  - !ruby/object:Gem::Dependency
350
370
  name: rubocop-packaging
351
371
  requirement: !ruby/object:Gem::Requirement
352
372
  requirements:
353
373
  - - "~>"
374
+ - !ruby/object:Gem::Version
375
+ version: '0.5'
376
+ - - ">="
354
377
  - !ruby/object:Gem::Version
355
378
  version: 0.5.2
356
379
  type: :development
@@ -358,8 +381,51 @@ dependencies:
358
381
  version_requirements: !ruby/object:Gem::Requirement
359
382
  requirements:
360
383
  - - "~>"
384
+ - !ruby/object:Gem::Version
385
+ version: '0.5'
386
+ - - ">="
361
387
  - !ruby/object:Gem::Version
362
388
  version: 0.5.2
389
+ - !ruby/object:Gem::Dependency
390
+ name: rubocop-rake
391
+ requirement: !ruby/object:Gem::Requirement
392
+ requirements:
393
+ - - "~>"
394
+ - !ruby/object:Gem::Version
395
+ version: '0.6'
396
+ - - ">="
397
+ - !ruby/object:Gem::Version
398
+ version: 0.6.0
399
+ type: :development
400
+ prerelease: false
401
+ version_requirements: !ruby/object:Gem::Requirement
402
+ requirements:
403
+ - - "~>"
404
+ - !ruby/object:Gem::Version
405
+ version: '0.6'
406
+ - - ">="
407
+ - !ruby/object:Gem::Version
408
+ version: 0.6.0
409
+ - !ruby/object:Gem::Dependency
410
+ name: rubocop-rspec
411
+ requirement: !ruby/object:Gem::Requirement
412
+ requirements:
413
+ - - "~>"
414
+ - !ruby/object:Gem::Version
415
+ version: '2.23'
416
+ - - ">="
417
+ - !ruby/object:Gem::Version
418
+ version: 2.23.2
419
+ type: :development
420
+ prerelease: false
421
+ version_requirements: !ruby/object:Gem::Requirement
422
+ requirements:
423
+ - - "~>"
424
+ - !ruby/object:Gem::Version
425
+ version: '2.23'
426
+ - - ">="
427
+ - !ruby/object:Gem::Version
428
+ version: 2.23.2
363
429
  - !ruby/object:Gem::Dependency
364
430
  name: simplecov
365
431
  requirement: !ruby/object:Gem::Requirement
@@ -440,26 +506,6 @@ dependencies:
440
506
  - - ">="
441
507
  - !ruby/object:Gem::Version
442
508
  version: 1.8.1
443
- - !ruby/object:Gem::Dependency
444
- name: octokit
445
- requirement: !ruby/object:Gem::Requirement
446
- requirements:
447
- - - "~>"
448
- - !ruby/object:Gem::Version
449
- version: '6.0'
450
- - - ">="
451
- - !ruby/object:Gem::Version
452
- version: 6.1.0
453
- type: :development
454
- prerelease: false
455
- version_requirements: !ruby/object:Gem::Requirement
456
- requirements:
457
- - - "~>"
458
- - !ruby/object:Gem::Version
459
- version: '6.0'
460
- - - ">="
461
- - !ruby/object:Gem::Version
462
- version: 6.1.0
463
509
  - !ruby/object:Gem::Dependency
464
510
  name: capybara
465
511
  requirement: !ruby/object:Gem::Requirement
@@ -689,5 +735,5 @@ requirements: []
689
735
  rubygems_version: 3.3.5
690
736
  signing_key:
691
737
  specification_version: 4
692
- summary: cucumber-9.0.1
738
+ summary: cucumber-9.0.2
693
739
  test_files: []