cucumber 9.0.0 → 9.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +9 -13
  3. data/VERSION +1 -0
  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 +169 -96
  47. data/CHANGELOG.old.md +0 -3371
  48. data/CONTRIBUTING.md +0 -246
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b92466073710d2c5abde6889abd9b33ab63e177d7230b997cd9cee4345f08954
4
- data.tar.gz: 35f103db8e96aa79682f0334bb7342c69ccc12aeaceac64ee4415d75ece5408d
3
+ metadata.gz: 313150f1f463d99e105864744641cd87c56e55f5d4d7856a437214a8db79dbdd
4
+ data.tar.gz: 90cdd041c890ab05108d3951be679f424ae096bc2df09044b26320096074eee3
5
5
  SHA512:
6
- metadata.gz: 382b18a67b7166a43e6fe44e1182e5f483cf927946e8cf284e1a4313334865340ec1c94b7655045f533180dbc5a8ebcb98484b12ed8d3a373b29a438b26647ff
7
- data.tar.gz: fe8af8ff9e2310f606b7200bfe9f1f92a66ed778133eda23d74f02568b52c13b39b7293c68c7f43b406fe189c94b15ff19f9a82be55d26133aa88676ddf6ef12
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 ADDED
@@ -0,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