exception_handling 2.6.1 → 2.7.0.pre.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (33) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -1
  3. data/.jenkins/Jenkinsfile +8 -24
  4. data/CHANGELOG.md +8 -1
  5. data/Gemfile +4 -4
  6. data/Gemfile.lock +19 -29
  7. data/Rakefile +6 -7
  8. data/lib/exception_handling/log_stub_error.rb +1 -2
  9. data/lib/exception_handling/logging_methods.rb +33 -0
  10. data/lib/exception_handling/methods.rb +6 -53
  11. data/lib/exception_handling/testing.rb +20 -10
  12. data/lib/exception_handling/version.rb +1 -1
  13. data/lib/exception_handling.rb +2 -2
  14. data/{spec → test}/helpers/controller_helpers.rb +0 -0
  15. data/{spec → test}/helpers/exception_helpers.rb +2 -2
  16. data/{spec → test}/rake_test_warning_false.rb +0 -0
  17. data/{spec/spec_helper.rb → test/test_helper.rb} +39 -50
  18. data/test/unit/exception_handling/exception_catalog_test.rb +85 -0
  19. data/test/unit/exception_handling/exception_description_test.rb +82 -0
  20. data/{spec/unit/exception_handling/exception_info_spec.rb → test/unit/exception_handling/exception_info_test.rb} +107 -105
  21. data/{spec/unit/exception_handling/honeybadger_callbacks_spec.rb → test/unit/exception_handling/honeybadger_callbacks_test.rb} +20 -20
  22. data/{spec/unit/exception_handling/log_error_stub_spec.rb → test/unit/exception_handling/log_error_stub_test.rb} +22 -38
  23. data/test/unit/exception_handling/logging_methods_test.rb +37 -0
  24. data/{spec/unit/exception_handling/mailer_spec.rb → test/unit/exception_handling/mailer_test.rb} +17 -17
  25. data/test/unit/exception_handling/methods_test.rb +105 -0
  26. data/test/unit/exception_handling/sensu_test.rb +52 -0
  27. data/{spec/unit/exception_handling_spec.rb → test/unit/exception_handling_test.rb} +329 -325
  28. metadata +36 -34
  29. data/.rspec +0 -3
  30. data/spec/unit/exception_handling/exception_catalog_spec.rb +0 -85
  31. data/spec/unit/exception_handling/exception_description_spec.rb +0 -82
  32. data/spec/unit/exception_handling/methods_spec.rb +0 -84
  33. data/spec/unit/exception_handling/sensu_spec.rb +0 -51
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e775cff5b73e955140fcc3a5492564e565567e8de147424da3602b83ad2e3b55
4
- data.tar.gz: 35fa446e469e356ae600c5b24860ec8ff73dda25a72df59d5954be0748aac6bd
3
+ metadata.gz: 3794611262e09346bab80e7a683f4ce1d78d6ba04b46fa15fa4bc84ac087e41e
4
+ data.tar.gz: 36f96bed7f2b3375df4730d35ee5ec96cdf70e7c07f4ba589e187c75275c1736
5
5
  SHA512:
6
- metadata.gz: d3486a507210596be078ae1953105859d9d2e556b5794f9e1b01bbee21b34e6cd04be115429548a02cce1c6fec80ea680f990ba8b83d07c9594fed5c7de712d5
7
- data.tar.gz: e19c845b8d8332f5118c0668c4520cabf00bf88c94117111ee2801d5320f2af2cc620224d79e3dc2e4daef62c4c7cb4115e3cc010cf56e8292cf9dcfef49f974
6
+ metadata.gz: 2d1dad10749b867696c0f4dcacedcfb4af466ba792fa0c98ae307ee4bbeda10657f172fc95ff3c9b0162d1787d39c3c2a15a220fa6c6f4a7f7b10d857dad5eec
7
+ data.tar.gz: 8b28f2829a1e34787d7de51fdee4d0fe5a39356584d6d910c106edac2fe5d8ebcf0f3f5f1e9e1b7e4e7b0c36dd62035885214248072e47a7fdec7d1e4a854f94
data/.gitignore CHANGED
@@ -1,6 +1,6 @@
1
1
  .idea
2
2
  .DS_Store
3
3
  .rubocop-http*
4
- spec/reports/*
4
+ test/reports/*
5
5
  gemfiles/*.lock
6
6
  pkg/
data/.jenkins/Jenkinsfile CHANGED
@@ -36,58 +36,42 @@ pipeline {
36
36
  stage('Appraisals') {
37
37
  parallel {
38
38
  stage('Current') {
39
- environment {
40
- JUNIT_OUTPUT = 'spec/reports/current'
41
- }
42
-
43
39
  steps {
44
- sh "bundle exec rspec --format RspecJunitFormatter --out ${JUNIT_OUTPUT}/rspec.xml"
40
+ sh 'JUNIT_OUTPUT_DIR=test/reports/current bundle exec rake'
45
41
  }
46
42
 
47
43
  post {
48
- always { junit "${JUNIT_OUTPUT}/*.xml" }
44
+ always { junit '*/reports/current/*.xml' }
49
45
  }
50
46
  }
51
47
 
52
48
  stage('Rails 4') {
53
- environment {
54
- JUNIT_OUTPUT = 'spec/reports/rails-4'
55
- }
56
-
57
49
  steps {
58
- sh "bundle exec appraisal rails-4 rspec --format RspecJunitFormatter --out ${JUNIT_OUTPUT}/rspec.xml"
50
+ sh 'JUNIT_OUTPUT_DIR=test/reports/rails-4 bundle exec appraisal rails-4 rake'
59
51
  }
60
52
 
61
53
  post {
62
- always { junit "${JUNIT_OUTPUT}/*.xml" }
54
+ always { junit '*/reports/rails-4/*.xml' }
63
55
  }
64
56
  }
65
57
 
66
58
  stage('Rails 5') {
67
- environment {
68
- JUNIT_OUTPUT = 'spec/reports/rails-5'
69
- }
70
-
71
59
  steps {
72
- sh "bundle exec appraisal rails-5 rspec --format RspecJunitFormatter --out ${JUNIT_OUTPUT}/rspec.xml"
60
+ sh 'JUNIT_OUTPUT_DIR=test/reports/rails-5 bundle exec appraisal rails-5 rake'
73
61
  }
74
62
 
75
63
  post {
76
- always { junit "${JUNIT_OUTPUT}/*.xml" }
64
+ always { junit '*/reports/rails-5/*.xml' }
77
65
  }
78
66
  }
79
67
 
80
68
  stage('Rails 6') {
81
- environment {
82
- JUNIT_OUTPUT = 'spec/reports/rails-6'
83
- }
84
-
85
69
  steps {
86
- sh "bundle exec appraisal rails-6 rspec --format RspecJunitFormatter --out ${JUNIT_OUTPUT}/rspec.xml"
70
+ sh 'JUNIT_OUTPUT_DIR=test/reports/rails-6 bundle exec appraisal rails-6 rake'
87
71
  }
88
72
 
89
73
  post {
90
- always { junit "${JUNIT_OUTPUT}/*.xml" }
74
+ always { junit '*/reports/rails-6/*.xml' }
91
75
  }
92
76
  }
93
77
  }
data/CHANGELOG.md CHANGED
@@ -4,7 +4,13 @@ Inspired by [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
4
4
 
5
5
  Note: this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
- ## [2.6.1] - 2020-10-14
7
+ ## [2.7.0] - Unreleased
8
+ ### Added
9
+ - Added `LoggingMethods` as a replacement for `Methods` without setting controller or checking for long controller action.
10
+ ### Deprecated
11
+ - Deprecated `Methods` in favor of `LoggingMethods`.
12
+
13
+ ## [2.6.1] - Unreleased
8
14
  ### Fixed
9
15
  - Fixed honeybadger_context_data to always merge `current_context_for_thread`, even if `log_context:` is passed as `nil`.
10
16
 
@@ -46,6 +52,7 @@ Note: this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0
46
52
  ### Changed
47
53
  - No longer depends on hobo_support. Uses invoca-utils 0.3 instead.
48
54
 
55
+ [2.7.0]: https://github.com/Invoca/exception_handling/compare/v2.6.1...v2.7.0
49
56
  [2.6.1]: https://github.com/Invoca/exception_handling/compare/v2.6.0...v2.6.1
50
57
  [2.6.0]: https://github.com/Invoca/exception_handling/compare/v2.5.0...v2.6.0
51
58
  [2.5.0]: https://github.com/Invoca/exception_handling/compare/v2.4.4...v2.5.0
data/Gemfile CHANGED
@@ -6,10 +6,10 @@ gemspec
6
6
 
7
7
  gem 'appraisal', '~> 2.2'
8
8
  gem 'honeybadger', '3.3.1-1', git: 'git@github.com:Invoca/honeybadger-ruby', ref: 'bb5f2b8a86e4147c38a6270d39ad610fab4dd5e6'
9
+ gem "minitest"
10
+ gem "minitest-reporters"
9
11
  gem 'pry'
10
- gem 'pry-byebug'
11
12
  gem 'rake'
12
- gem 'rspec'
13
- gem 'rspec_junit_formatter'
13
+ gem 'rr'
14
14
  gem 'rubocop'
15
- gem 'test-unit'
15
+ gem 'shoulda'
data/Gemfile.lock CHANGED
@@ -8,7 +8,7 @@ GIT
8
8
  PATH
9
9
  remote: .
10
10
  specs:
11
- exception_handling (2.6.1)
11
+ exception_handling (2.7.0.pre.1)
12
12
  actionmailer (>= 4.2, < 7.0)
13
13
  actionpack (>= 4.2, < 7.0)
14
14
  activesupport (>= 4.2, < 7.0)
@@ -46,20 +46,19 @@ GEM
46
46
  minitest (~> 5.1)
47
47
  thread_safe (~> 0.3, >= 0.3.4)
48
48
  tzinfo (~> 1.1)
49
+ ansi (1.5.0)
49
50
  appraisal (2.2.0)
50
51
  bundler
51
52
  rake
52
53
  thor (>= 0.14.0)
53
54
  ast (2.4.0)
54
55
  builder (3.2.3)
55
- byebug (11.1.3)
56
56
  coderay (1.1.2)
57
57
  concurrent-ruby (1.1.5)
58
- contextual_logger (0.10.0)
58
+ contextual_logger (0.11.0)
59
59
  activesupport
60
60
  json
61
61
  crass (1.0.6)
62
- diff-lcs (1.4.4)
63
62
  erubis (2.7.0)
64
63
  eventmachine (1.2.7)
65
64
  globalid (0.4.2)
@@ -78,18 +77,19 @@ GEM
78
77
  mini_mime (1.0.2)
79
78
  mini_portile2 (2.4.0)
80
79
  minitest (5.11.3)
80
+ minitest-reporters (1.0.20)
81
+ ansi
82
+ builder
83
+ minitest (>= 5.0)
84
+ ruby-progressbar
81
85
  nokogiri (1.10.10)
82
86
  mini_portile2 (~> 2.4.0)
83
87
  parallel (1.17.0)
84
88
  parser (2.6.3.0)
85
89
  ast (~> 2.4.0)
86
- power_assert (1.2.0)
87
90
  pry (0.12.2)
88
91
  coderay (~> 1.1.0)
89
92
  method_source (~> 0.9.0)
90
- pry-byebug (3.8.0)
91
- byebug (~> 11.0)
92
- pry (~> 0.10)
93
93
  rack (1.6.13)
94
94
  rack-test (0.6.3)
95
95
  rack (>= 1.0)
@@ -103,21 +103,7 @@ GEM
103
103
  loofah (~> 2.3)
104
104
  rainbow (3.0.0)
105
105
  rake (13.0.1)
106
- rspec (3.9.0)
107
- rspec-core (~> 3.9.0)
108
- rspec-expectations (~> 3.9.0)
109
- rspec-mocks (~> 3.9.0)
110
- rspec-core (3.9.2)
111
- rspec-support (~> 3.9.3)
112
- rspec-expectations (3.9.2)
113
- diff-lcs (>= 1.2.0, < 2.0)
114
- rspec-support (~> 3.9.0)
115
- rspec-mocks (3.9.1)
116
- diff-lcs (>= 1.2.0, < 2.0)
117
- rspec-support (~> 3.9.0)
118
- rspec-support (3.9.3)
119
- rspec_junit_formatter (0.4.1)
120
- rspec-core (>= 2, < 4, != 2.12.0)
106
+ rr (1.2.1)
121
107
  rubocop (0.74.0)
122
108
  jaro_winkler (~> 1.5.1)
123
109
  parallel (~> 1.10)
@@ -126,8 +112,12 @@ GEM
126
112
  ruby-progressbar (~> 1.7)
127
113
  unicode-display_width (>= 1.4.0, < 1.7)
128
114
  ruby-progressbar (1.10.1)
129
- test-unit (3.3.6)
130
- power_assert
115
+ shoulda (3.6.0)
116
+ shoulda-context (~> 1.0, >= 1.0.1)
117
+ shoulda-matchers (~> 3.0)
118
+ shoulda-context (1.2.2)
119
+ shoulda-matchers (3.1.3)
120
+ activesupport (>= 4.0.0)
131
121
  thor (1.0.1)
132
122
  thread_safe (0.3.6)
133
123
  tzinfo (1.2.5)
@@ -141,13 +131,13 @@ DEPENDENCIES
141
131
  appraisal (~> 2.2)
142
132
  exception_handling!
143
133
  honeybadger (= 3.3.1.pre.1)!
134
+ minitest
135
+ minitest-reporters
144
136
  pry
145
- pry-byebug
146
137
  rake
147
- rspec
148
- rspec_junit_formatter
138
+ rr
149
139
  rubocop
150
- test-unit
140
+ shoulda
151
141
 
152
142
  BUNDLED WITH
153
143
  1.17.3
data/Rakefile CHANGED
@@ -1,15 +1,14 @@
1
1
  #!/usr/bin/env rake
2
2
  # frozen_string_literal: true
3
3
 
4
- require 'rake/testtask'
5
4
  require "bundler/gem_tasks"
5
+ require 'rake/testtask'
6
+
7
+ require_relative 'test/rake_test_warning_false'
6
8
 
7
- require_relative 'spec/rake_test_warning_false'
9
+ task default: :test
8
10
 
9
- desc "run rspec unit tests"
10
- begin
11
- require 'rspec/core/rake_task'
12
- RSpec::Core::RakeTask.new(:rspec)
11
+ Rake::TestTask.new do |t|
12
+ t.pattern = "test/**/*_test.rb"
13
13
  end
14
14
 
15
- task default: :rspec
@@ -1,8 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  #
4
- # Test Helper that supports Minitest::Test and Test::Unit
5
- # Used by tests in the consumers of this gem to track exceptions.
4
+ # Used by functional tests to track exceptions.
6
5
  #
7
6
 
8
7
  module LogErrorStub
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_support/concern'
4
+ require 'active_support/core_ext/module/delegation.rb'
5
+
6
+ module ExceptionHandling
7
+ module LoggingMethods # included on models and controllers
8
+ extend ActiveSupport::Concern
9
+
10
+ protected
11
+
12
+ delegate :log_error_rack, :log_warning, :log_info, :log_debug, :escalate_error, :escalate_warning, :ensure_escalation, :alert_warning, to: ExceptionHandling
13
+
14
+ # TODO: delegate log_error as well
15
+ def log_error(exception_or_string, exception_context = '')
16
+ controller = self if respond_to?(:request) && respond_to?(:session)
17
+ ExceptionHandling.log_error(exception_or_string, exception_context, controller)
18
+ end
19
+
20
+ def ensure_safe(exception_context = "")
21
+ yield
22
+ rescue => ex
23
+ log_error ex, exception_context
24
+ nil
25
+ end
26
+
27
+ def ensure_alert(*args)
28
+ ExceptionHandling.ensure_alert(*args) do
29
+ yield
30
+ end
31
+ end
32
+ end
33
+ end
@@ -1,65 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'active_support/concern'
4
+ require_relative 'logging_methods'
4
5
 
5
6
  module ExceptionHandling
6
7
  module Methods # included on models and controllers
7
8
  extend ActiveSupport::Concern
9
+ include ExceptionHandling::LoggingMethods
8
10
 
9
11
  protected
10
12
 
11
- def log_error(exception_or_string, exception_context = '')
12
- controller = self if respond_to?(:request) && respond_to?(:session)
13
- ExceptionHandling.log_error(exception_or_string, exception_context, controller)
14
- end
15
-
16
- def log_error_rack(exception_or_string, exception_context = '', rack_filter = '')
17
- ExceptionHandling.log_error_rack(exception_or_string, exception_context, rack_filter)
18
- end
19
-
20
- def log_warning(message)
21
- ExceptionHandling.log_warning(message)
22
- end
23
-
24
- def log_info(message)
25
- ExceptionHandling.logger.info(message)
26
- end
27
-
28
- def log_debug(message)
29
- ExceptionHandling.logger.debug(message)
30
- end
31
-
32
- def ensure_safe(exception_context = "")
33
- yield
34
- rescue => ex
35
- log_error ex, exception_context
36
- nil
37
- end
38
-
39
- def escalate_error(exception_or_string, email_subject)
40
- ExceptionHandling.escalate_error(exception_or_string, email_subject)
41
- end
42
-
43
- def escalate_warning(message, email_subject)
44
- ExceptionHandling.escalate_warning(message, email_subject)
45
- end
46
-
47
- def ensure_escalation(*args)
48
- ExceptionHandling.ensure_escalation(*args) do
49
- yield
50
- end
51
- end
52
-
53
- def alert_warning(*args)
54
- ExceptionHandling.alert_warning(*args)
55
- end
56
-
57
- def ensure_alert(*args)
58
- ExceptionHandling.ensure_alert(*args) do
59
- yield
60
- end
61
- end
62
-
63
13
  def long_controller_action_timeout
64
14
  if defined?(Rails) && Rails.respond_to?(:env) && Rails.env == 'test'
65
15
  300
@@ -88,7 +38,10 @@ module ExceptionHandling
88
38
  end
89
39
 
90
40
  included do
91
- around_filter :set_current_controller if respond_to? :around_filter
41
+ Deprecation3_0.deprecation_warning('ExceptionHandling::Methods', 'include LoggingMethods; in controllers, set your own around_filter to set logging context')
42
+ if respond_to? :around_filter
43
+ around_filter :set_current_controller
44
+ end
92
45
  end
93
46
 
94
47
  class_methods do
@@ -4,7 +4,7 @@
4
4
 
5
5
  module ExceptionHandling
6
6
  module Testing
7
- class ControllerStub
7
+ class ControllerStubBase
8
8
 
9
9
  class Request
10
10
  attr_accessor :parameters, :protocol, :host, :request_uri, :env, :session_options
@@ -25,7 +25,7 @@ module ExceptionHandling
25
25
  attr_accessor :around_filter_method
26
26
 
27
27
  def around_filter(method)
28
- ControllerStub.around_filter_method = method
28
+ self.around_filter_method = method
29
29
  end
30
30
  end
31
31
 
@@ -44,14 +44,6 @@ module ExceptionHandling
44
44
  end
45
45
  end
46
46
 
47
- def simulate_around_filter(&block)
48
- set_current_controller(&block)
49
- end
50
-
51
- def controller_name
52
- "ControllerStub"
53
- end
54
-
55
47
  def action_name
56
48
  "test_action"
57
49
  end
@@ -59,9 +51,27 @@ module ExceptionHandling
59
51
  def complete_request_uri
60
52
  "#{@request.protocol}#{@request.host}#{@request.request_uri}"
61
53
  end
54
+ end
55
+
56
+ class LoggingMethodsControllerStub < ControllerStubBase
57
+ include ExceptionHandling::LoggingMethods
58
+
59
+ def controller_name
60
+ "LoggingMethodsControllerStub"
61
+ end
62
+ end
62
63
 
64
+ class MethodsControllerStub < ControllerStubBase
63
65
  include ExceptionHandling::Methods
64
66
  set_long_controller_action_timeout 2
67
+
68
+ def simulate_around_filter(&block)
69
+ set_current_controller(&block)
70
+ end
71
+
72
+ def controller_name
73
+ "MethodsControllerStub"
74
+ end
65
75
  end
66
76
  end
67
77
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ExceptionHandling
4
- VERSION = '2.6.1'
4
+ VERSION = '2.7.0.pre.1'
5
5
  end
@@ -29,6 +29,8 @@ module ExceptionHandling # never included
29
29
  AUTHENTICATION_HEADERS = ['HTTP_AUTHORIZATION', 'X-HTTP_AUTHORIZATION', 'X_HTTP_AUTHORIZATION', 'REDIRECT_X_HTTP_AUTHORIZATION'].freeze
30
30
  HONEYBADGER_STATUSES = [:success, :failure, :skipped].freeze
31
31
 
32
+ Deprecation3_0 = ActiveSupport::Deprecation.new('3.0', 'exception_handling')
33
+
32
34
  class << self
33
35
 
34
36
  #
@@ -54,8 +56,6 @@ module ExceptionHandling # never included
54
56
  @logger or raise ArgumentError, "You must assign a value to #{name}.logger"
55
57
  end
56
58
 
57
- Deprecation3_0 = ActiveSupport::Deprecation.new('3.0', 'exception_handling')
58
-
59
59
  def logger=(logger)
60
60
  @logger = if logger.nil? || logger.is_a?(ContextualLogger::LoggerMixin)
61
61
  logger
File without changes
@@ -7,7 +7,7 @@ module ExceptionHelpers
7
7
 
8
8
  def exception_with_nil_message
9
9
  exception_with_nil_message = RuntimeError.new(nil)
10
- allow(exception_with_nil_message).to receive(:message).and_return(nil)
10
+ stub(exception_with_nil_message).message { nil }
11
11
  exception_with_nil_message
12
12
  end
13
13
 
@@ -15,6 +15,6 @@ module ExceptionHelpers
15
15
 
16
16
  def capture_notifications
17
17
  @sent_notifications = []
18
- allow(ExceptionHandling).to receive(:send_exception_to_honeybadger).with(anything) { |exception_info| @sent_notifications << exception_info }
18
+ stub(ExceptionHandling).send_exception_to_honeybadger(anything) { |exception_info| @sent_notifications << exception_info }
19
19
  end
20
20
  end
File without changes
@@ -1,8 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'rspec'
4
- require 'rspec/mocks'
5
- require 'rspec_junit_formatter'
3
+ require 'active_support'
4
+ require 'active_support/time'
5
+ require 'active_support/test_case'
6
+ require 'action_mailer'
7
+ require 'action_dispatch'
8
+ require 'shoulda'
9
+ require 'rr'
10
+ require 'minitest/autorun'
11
+ require "minitest/reporters"
12
+
13
+ junit_ouptut_dir = ENV["JUNIT_OUTPUT_DIR"].presence || "test/reports"
14
+ Minitest::Reporters.use!([Minitest::Reporters::DefaultReporter.new, Minitest::Reporters::JUnitReporter.new(junit_ouptut_dir)])
6
15
 
7
16
  require 'pry'
8
17
  require 'honeybadger'
@@ -11,6 +20,8 @@ require 'contextual_logger'
11
20
  require 'exception_handling'
12
21
  require 'exception_handling/testing'
13
22
 
23
+ ActiveSupport::TestCase.test_order = :sorted
24
+
14
25
  class LoggerStub
15
26
  include ContextualLogger::LoggerMixin
16
27
  attr_accessor :logged, :level
@@ -76,17 +87,27 @@ end
76
87
 
77
88
  ActionMailer::Base.delivery_method = :test
78
89
 
90
+ _ = ActiveSupport
91
+ _ = ActiveSupport::TestCase
79
92
 
80
- module TestHelper
81
- @constant_overrides = []
82
- class << self
83
- attr_accessor :constant_overrides
84
- end
93
+ class ActiveSupport::TestCase
94
+ @@constant_overrides = []
85
95
 
96
+ setup do
97
+ unless @@constant_overrides.nil? || @@constant_overrides.empty?
98
+ raise "Uh-oh! constant_overrides left over: #{@@constant_overrides.inspect}"
99
+ end
86
100
 
87
- def setup_constant_overrides
88
- unless TestHelper.constant_overrides.nil? || TestHelper.constant_overrides.empty?
89
- raise "Uh-oh! constant_overrides left over: #{TestHelper.constant_overrides.inspect}"
101
+ unless defined?(Rails) && defined?(Rails.env)
102
+ module ::Rails
103
+ class << self
104
+ attr_writer :env
105
+
106
+ def env
107
+ @env ||= 'test'
108
+ end
109
+ end
110
+ end
90
111
  end
91
112
 
92
113
  Time.now_override = nil
@@ -106,8 +127,8 @@ module TestHelper
106
127
  ExceptionHandling.sensu_prefix = ""
107
128
  end
108
129
 
109
- def teardown_constant_overrides
110
- TestHelper.constant_overrides&.reverse&.each do |parent_module, k, v|
130
+ teardown do
131
+ @@constant_overrides&.reverse&.each do |parent_module, k, v|
111
132
  ExceptionHandling.ensure_safe "constant cleanup #{k.inspect}, #{parent_module}(#{parent_module.class})::#{v.inspect}(#{v.class})" do
112
133
  silence_warnings do
113
134
  if v == :never_defined
@@ -118,7 +139,7 @@ module TestHelper
118
139
  end
119
140
  end
120
141
  end
121
- TestHelper.constant_overrides = []
142
+ @@constant_overrides = []
122
143
  end
123
144
 
124
145
  def set_test_const(const_name, value)
@@ -138,7 +159,7 @@ module TestHelper
138
159
  end
139
160
  end
140
161
 
141
- TestHelper.constant_overrides << [final_parent_module, final_const_name, original_value]
162
+ @@constant_overrides << [final_parent_module, final_const_name, original_value]
142
163
 
143
164
  silence_warnings { final_parent_module.const_set(final_const_name, value) }
144
165
  end
@@ -150,15 +171,15 @@ module TestHelper
150
171
  else
151
172
  original_count = 0
152
173
  end
153
- expect(ActionMailer::Base.deliveries.size - original_count).to eq(expected), "wrong number of emails#{': ' + message.to_s if message}"
174
+ assert_equal expected, ActionMailer::Base.deliveries.size - original_count, "wrong number of emails#{': ' + message.to_s if message}"
154
175
  end
155
176
  end
156
177
 
157
178
  def assert_equal_with_diff(arg1, arg2, msg = '')
158
179
  if arg1 == arg2
159
- expect(true).to be_truthy # To keep the assertion count accurate
180
+ assert true # To keep the assertion count accurate
160
181
  else
161
- expect(arg1).to eq(arg2), "#{msg}\n#{Diff.compare(arg1, arg2)}"
182
+ assert_equal arg1, arg2, "#{msg}\n#{Diff.compare(arg1, arg2)}"
162
183
  end
163
184
  end
164
185
 
@@ -189,35 +210,3 @@ class Time
189
210
  end
190
211
  end
191
212
  end
192
-
193
- RSpec.configure do |config|
194
- config.add_formatter(RspecJunitFormatter, 'spec/reports/rspec.xml')
195
- config.include TestHelper
196
-
197
- config.before(:each) do
198
- setup_constant_overrides
199
- unless defined?(Rails) && defined?(Rails.env)
200
- module Rails
201
- class << self
202
- attr_writer :env
203
-
204
- def env
205
- @env ||= 'test'
206
- end
207
- end
208
- end
209
- end
210
- end
211
-
212
- config.after(:each) do
213
- teardown_constant_overrides
214
- end
215
-
216
- config.mock_with :rspec do |mocks|
217
- mocks.verify_partial_doubles = true
218
- end
219
-
220
- config.expect_with(:rspec, :test_unit)
221
-
222
- RSpec::Support::ObjectFormatter.default_instance.max_formatted_output_length = 2_000
223
- end