exception_handling 2.5.0 → 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -1
  3. data/.jenkins/Jenkinsfile +24 -8
  4. data/.rspec +3 -0
  5. data/CHANGELOG.md +18 -0
  6. data/Gemfile +4 -4
  7. data/Gemfile.lock +67 -58
  8. data/Rakefile +7 -6
  9. data/gemfiles/rails_4.gemfile +4 -4
  10. data/gemfiles/rails_5.gemfile +4 -4
  11. data/gemfiles/rails_6.gemfile +4 -4
  12. data/lib/exception_handling.rb +9 -3
  13. data/lib/exception_handling/exception_info.rb +3 -6
  14. data/lib/exception_handling/log_stub_error.rb +2 -1
  15. data/lib/exception_handling/logging_methods.rb +27 -0
  16. data/lib/exception_handling/methods.rb +6 -53
  17. data/lib/exception_handling/testing.rb +20 -10
  18. data/lib/exception_handling/version.rb +1 -1
  19. data/{test → spec}/helpers/controller_helpers.rb +0 -0
  20. data/{test → spec}/helpers/exception_helpers.rb +2 -2
  21. data/{test → spec}/rake_test_warning_false.rb +0 -0
  22. data/{test/test_helper.rb → spec/spec_helper.rb} +57 -42
  23. data/spec/unit/exception_handling/exception_catalog_spec.rb +85 -0
  24. data/spec/unit/exception_handling/exception_description_spec.rb +82 -0
  25. data/{test/unit/exception_handling/exception_info_test.rb → spec/unit/exception_handling/exception_info_spec.rb} +118 -99
  26. data/{test/unit/exception_handling/honeybadger_callbacks_test.rb → spec/unit/exception_handling/honeybadger_callbacks_spec.rb} +20 -20
  27. data/{test/unit/exception_handling/log_error_stub_test.rb → spec/unit/exception_handling/log_error_stub_spec.rb} +38 -22
  28. data/spec/unit/exception_handling/logging_methods_spec.rb +38 -0
  29. data/{test/unit/exception_handling/mailer_test.rb → spec/unit/exception_handling/mailer_spec.rb} +17 -17
  30. data/spec/unit/exception_handling/methods_spec.rb +105 -0
  31. data/spec/unit/exception_handling/sensu_spec.rb +51 -0
  32. data/{test/unit/exception_handling_test.rb → spec/unit/exception_handling_spec.rb} +349 -319
  33. metadata +35 -31
  34. data/test/unit/exception_handling/exception_catalog_test.rb +0 -85
  35. data/test/unit/exception_handling/exception_description_test.rb +0 -82
  36. data/test/unit/exception_handling/methods_test.rb +0 -84
  37. data/test/unit/exception_handling/sensu_test.rb +0 -52
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7b8df9043df9ecc580c8ea91495410cf37316c113acf43ac7f28dfeb885e235d
4
- data.tar.gz: 84f2a6eac09d7388f3c9ffd2e58a4211231aff7ccfe8869b1e307c51e9b02788
3
+ metadata.gz: afa095c443e845d5430949250d3322dd48aaecafe82fe4c9c2d5ccc7f5564152
4
+ data.tar.gz: '084ccae5591206c295baada42941ec9c30e27f251de8a5c92724508f0cceda54'
5
5
  SHA512:
6
- metadata.gz: 958f9994d47ff6ab87082ed04411c62af377e5e317c8f8669c349d4d7d38f4c7d0a88f6119a2c2a83882ed1be8624baf6e4c67e5fe0bedaeeebcfea7921558e5
7
- data.tar.gz: c412244a874549ce99d8e0645ceb6b56a59b9b8b92ddba6cbfab8eb83e5159954d13e5e96e119519e4c9e97e5786412f9f3d60ebef66f4bd5aa5c71dbd70901c
6
+ metadata.gz: 4818cdf704d8fc2c002fbb7d5d0bfa5a5b8ffeeaef5d75304b6bf383ef59b7249894232ba6ea85abb6e0baa84bf758e18cf4415ead62c9e570685825215ec616
7
+ data.tar.gz: 32b87f2c3ef26d7c7ac830ae7368337141336acdf7e6885df0ab8eb8b9796a1c4ba7c8398947b7f5dcb0d7ea3b4d21878ff11c4484cd9f67aaf85dd4b045bf23
data/.gitignore CHANGED
@@ -1,6 +1,6 @@
1
1
  .idea
2
2
  .DS_Store
3
3
  .rubocop-http*
4
- test/reports/*
4
+ spec/reports/*
5
5
  gemfiles/*.lock
6
6
  pkg/
@@ -36,42 +36,58 @@ pipeline {
36
36
  stage('Appraisals') {
37
37
  parallel {
38
38
  stage('Current') {
39
+ environment {
40
+ JUNIT_OUTPUT = 'spec/reports/current'
41
+ }
42
+
39
43
  steps {
40
- sh 'JUNIT_OUTPUT_DIR=test/reports/current bundle exec rake'
44
+ sh "bundle exec rspec --format RspecJunitFormatter --out ${JUNIT_OUTPUT}/rspec.xml"
41
45
  }
42
46
 
43
47
  post {
44
- always { junit '*/reports/current/*.xml' }
48
+ always { junit "${JUNIT_OUTPUT}/*.xml" }
45
49
  }
46
50
  }
47
51
 
48
52
  stage('Rails 4') {
53
+ environment {
54
+ JUNIT_OUTPUT = 'spec/reports/rails-4'
55
+ }
56
+
49
57
  steps {
50
- sh 'JUNIT_OUTPUT_DIR=test/reports/rails-4 bundle exec appraisal rails-4 rake'
58
+ sh "bundle exec appraisal rails-4 rspec --format RspecJunitFormatter --out ${JUNIT_OUTPUT}/rspec.xml"
51
59
  }
52
60
 
53
61
  post {
54
- always { junit '*/reports/rails-4/*.xml' }
62
+ always { junit "${JUNIT_OUTPUT}/*.xml" }
55
63
  }
56
64
  }
57
65
 
58
66
  stage('Rails 5') {
67
+ environment {
68
+ JUNIT_OUTPUT = 'spec/reports/rails-5'
69
+ }
70
+
59
71
  steps {
60
- sh 'JUNIT_OUTPUT_DIR=test/reports/rails-5 bundle exec appraisal rails-5 rake'
72
+ sh "bundle exec appraisal rails-5 rspec --format RspecJunitFormatter --out ${JUNIT_OUTPUT}/rspec.xml"
61
73
  }
62
74
 
63
75
  post {
64
- always { junit '*/reports/rails-5/*.xml' }
76
+ always { junit "${JUNIT_OUTPUT}/*.xml" }
65
77
  }
66
78
  }
67
79
 
68
80
  stage('Rails 6') {
81
+ environment {
82
+ JUNIT_OUTPUT = 'spec/reports/rails-6'
83
+ }
84
+
69
85
  steps {
70
- sh 'JUNIT_OUTPUT_DIR=test/reports/rails-6 bundle exec appraisal rails-6 rake'
86
+ sh "bundle exec appraisal rails-6 rspec --format RspecJunitFormatter --out ${JUNIT_OUTPUT}/rspec.xml"
71
87
  }
72
88
 
73
89
  post {
74
- always { junit '*/reports/rails-6/*.xml' }
90
+ always { junit "${JUNIT_OUTPUT}/*.xml" }
75
91
  }
76
92
  }
77
93
  }
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --require spec_helper
2
+ --format progress
3
+ --color
@@ -4,6 +4,21 @@ 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.7.0] - 2020-10-14
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] - 2020-10-14
14
+ ### Fixed
15
+ - Fixed honeybadger_context_data to always merge `current_context_for_thread`, even if `log_context:` is passed as `nil`.
16
+
17
+ ## [2.6.0] - 2020-08-26
18
+ ### Changed
19
+ - Calling `log_warning` will now log with Severity::WARNING rather than FATAL.
20
+ - Reordered the logging to put the exception class next to the message.
21
+
7
22
  ## [2.5.0] - 2020-08-19
8
23
  ### Added
9
24
  - The `**log_context` passed to `log_error`/`log_warning`/`log_info` is now
@@ -37,6 +52,9 @@ Note: this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0
37
52
  ### Changed
38
53
  - No longer depends on hobo_support. Uses invoca-utils 0.3 instead.
39
54
 
55
+ [2.7.0]: https://github.com/Invoca/exception_handling/compare/v2.6.1...v2.7.0
56
+ [2.6.1]: https://github.com/Invoca/exception_handling/compare/v2.6.0...v2.6.1
57
+ [2.6.0]: https://github.com/Invoca/exception_handling/compare/v2.5.0...v2.6.0
40
58
  [2.5.0]: https://github.com/Invoca/exception_handling/compare/v2.4.4...v2.5.0
41
59
  [2.4.4]: https://github.com/Invoca/exception_handling/compare/v2.4.3...v2.4.4
42
60
  [2.4.3]: https://github.com/Invoca/exception_handling/compare/v2.4.2...v2.4.3
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"
11
9
  gem 'pry'
10
+ gem 'pry-byebug'
12
11
  gem 'rake'
13
- gem 'rr'
12
+ gem 'rspec'
13
+ gem 'rspec_junit_formatter'
14
14
  gem 'rubocop'
15
- gem 'shoulda'
15
+ gem 'test-unit'
@@ -8,7 +8,7 @@ GIT
8
8
  PATH
9
9
  remote: .
10
10
  specs:
11
- exception_handling (2.5.0)
11
+ exception_handling (2.7.0)
12
12
  actionmailer (>= 4.2, < 7.0)
13
13
  actionpack (>= 4.2, < 7.0)
14
14
  activesupport (>= 4.2, < 7.0)
@@ -19,56 +19,58 @@ PATH
19
19
  GEM
20
20
  remote: https://rubygems.org/
21
21
  specs:
22
- actionmailer (4.2.11.1)
23
- actionpack (= 4.2.11.1)
24
- actionview (= 4.2.11.1)
25
- activejob (= 4.2.11.1)
22
+ actionmailer (6.0.3.4)
23
+ actionpack (= 6.0.3.4)
24
+ actionview (= 6.0.3.4)
25
+ activejob (= 6.0.3.4)
26
26
  mail (~> 2.5, >= 2.5.4)
27
- rails-dom-testing (~> 1.0, >= 1.0.5)
28
- actionpack (4.2.11.1)
29
- actionview (= 4.2.11.1)
30
- activesupport (= 4.2.11.1)
31
- rack (~> 1.6)
32
- rack-test (~> 0.6.2)
33
- rails-dom-testing (~> 1.0, >= 1.0.5)
34
- rails-html-sanitizer (~> 1.0, >= 1.0.2)
35
- actionview (4.2.11.1)
36
- activesupport (= 4.2.11.1)
27
+ rails-dom-testing (~> 2.0)
28
+ actionpack (6.0.3.4)
29
+ actionview (= 6.0.3.4)
30
+ activesupport (= 6.0.3.4)
31
+ rack (~> 2.0, >= 2.0.8)
32
+ rack-test (>= 0.6.3)
33
+ rails-dom-testing (~> 2.0)
34
+ rails-html-sanitizer (~> 1.0, >= 1.2.0)
35
+ actionview (6.0.3.4)
36
+ activesupport (= 6.0.3.4)
37
37
  builder (~> 3.1)
38
- erubis (~> 2.7.0)
39
- rails-dom-testing (~> 1.0, >= 1.0.5)
40
- rails-html-sanitizer (~> 1.0, >= 1.0.3)
41
- activejob (4.2.11.1)
42
- activesupport (= 4.2.11.1)
43
- globalid (>= 0.3.0)
44
- activesupport (4.2.11.1)
45
- i18n (~> 0.7)
38
+ erubi (~> 1.4)
39
+ rails-dom-testing (~> 2.0)
40
+ rails-html-sanitizer (~> 1.1, >= 1.2.0)
41
+ activejob (6.0.3.4)
42
+ activesupport (= 6.0.3.4)
43
+ globalid (>= 0.3.6)
44
+ activesupport (6.0.3.4)
45
+ concurrent-ruby (~> 1.0, >= 1.0.2)
46
+ i18n (>= 0.7, < 2)
46
47
  minitest (~> 5.1)
47
- thread_safe (~> 0.3, >= 0.3.4)
48
48
  tzinfo (~> 1.1)
49
- ansi (1.5.0)
49
+ zeitwerk (~> 2.2, >= 2.2.2)
50
50
  appraisal (2.2.0)
51
51
  bundler
52
52
  rake
53
53
  thor (>= 0.14.0)
54
54
  ast (2.4.0)
55
- builder (3.2.3)
55
+ builder (3.2.4)
56
+ byebug (11.1.3)
56
57
  coderay (1.1.2)
57
- concurrent-ruby (1.1.5)
58
- contextual_logger (0.9.1)
58
+ concurrent-ruby (1.1.7)
59
+ contextual_logger (0.11.0)
59
60
  activesupport
60
61
  json
61
62
  crass (1.0.6)
62
- erubis (2.7.0)
63
+ diff-lcs (1.4.4)
64
+ erubi (1.9.0)
63
65
  eventmachine (1.2.7)
64
66
  globalid (0.4.2)
65
67
  activesupport (>= 4.2.0)
66
- i18n (0.9.5)
68
+ i18n (1.8.5)
67
69
  concurrent-ruby (~> 1.0)
68
70
  invoca-utils (0.4.1)
69
71
  jaro_winkler (1.5.3)
70
72
  json (2.3.1)
71
- loofah (2.6.0)
73
+ loofah (2.7.0)
72
74
  crass (~> 1.0.2)
73
75
  nokogiri (>= 1.5.9)
74
76
  mail (2.7.1)
@@ -76,34 +78,44 @@ GEM
76
78
  method_source (0.9.2)
77
79
  mini_mime (1.0.2)
78
80
  mini_portile2 (2.4.0)
79
- minitest (5.11.3)
80
- minitest-reporters (1.0.20)
81
- ansi
82
- builder
83
- minitest (>= 5.0)
84
- ruby-progressbar
81
+ minitest (5.14.2)
85
82
  nokogiri (1.10.10)
86
83
  mini_portile2 (~> 2.4.0)
87
84
  parallel (1.17.0)
88
85
  parser (2.6.3.0)
89
86
  ast (~> 2.4.0)
87
+ power_assert (1.2.0)
90
88
  pry (0.12.2)
91
89
  coderay (~> 1.1.0)
92
90
  method_source (~> 0.9.0)
93
- rack (1.6.13)
94
- rack-test (0.6.3)
95
- rack (>= 1.0)
96
- rails-deprecated_sanitizer (1.0.3)
97
- activesupport (>= 4.2.0.alpha)
98
- rails-dom-testing (1.0.9)
99
- activesupport (>= 4.2.0, < 5.0)
100
- nokogiri (~> 1.6)
101
- rails-deprecated_sanitizer (>= 1.0.1)
91
+ pry-byebug (3.8.0)
92
+ byebug (~> 11.0)
93
+ pry (~> 0.10)
94
+ rack (2.2.3)
95
+ rack-test (1.1.0)
96
+ rack (>= 1.0, < 3)
97
+ rails-dom-testing (2.0.3)
98
+ activesupport (>= 4.2.0)
99
+ nokogiri (>= 1.6)
102
100
  rails-html-sanitizer (1.3.0)
103
101
  loofah (~> 2.3)
104
102
  rainbow (3.0.0)
105
103
  rake (13.0.1)
106
- rr (1.2.1)
104
+ rspec (3.9.0)
105
+ rspec-core (~> 3.9.0)
106
+ rspec-expectations (~> 3.9.0)
107
+ rspec-mocks (~> 3.9.0)
108
+ rspec-core (3.9.2)
109
+ rspec-support (~> 3.9.3)
110
+ rspec-expectations (3.9.2)
111
+ diff-lcs (>= 1.2.0, < 2.0)
112
+ rspec-support (~> 3.9.0)
113
+ rspec-mocks (3.9.1)
114
+ diff-lcs (>= 1.2.0, < 2.0)
115
+ rspec-support (~> 3.9.0)
116
+ rspec-support (3.9.3)
117
+ rspec_junit_formatter (0.4.1)
118
+ rspec-core (>= 2, < 4, != 2.12.0)
107
119
  rubocop (0.74.0)
108
120
  jaro_winkler (~> 1.5.1)
109
121
  parallel (~> 1.10)
@@ -112,17 +124,14 @@ GEM
112
124
  ruby-progressbar (~> 1.7)
113
125
  unicode-display_width (>= 1.4.0, < 1.7)
114
126
  ruby-progressbar (1.10.1)
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)
127
+ test-unit (3.3.6)
128
+ power_assert
121
129
  thor (1.0.1)
122
130
  thread_safe (0.3.6)
123
- tzinfo (1.2.5)
131
+ tzinfo (1.2.7)
124
132
  thread_safe (~> 0.1)
125
133
  unicode-display_width (1.6.0)
134
+ zeitwerk (2.4.0)
126
135
 
127
136
  PLATFORMS
128
137
  ruby
@@ -131,13 +140,13 @@ DEPENDENCIES
131
140
  appraisal (~> 2.2)
132
141
  exception_handling!
133
142
  honeybadger (= 3.3.1.pre.1)!
134
- minitest
135
- minitest-reporters
136
143
  pry
144
+ pry-byebug
137
145
  rake
138
- rr
146
+ rspec
147
+ rspec_junit_formatter
139
148
  rubocop
140
- shoulda
149
+ test-unit
141
150
 
142
151
  BUNDLED WITH
143
152
  1.17.3
data/Rakefile CHANGED
@@ -1,14 +1,15 @@
1
1
  #!/usr/bin/env rake
2
2
  # frozen_string_literal: true
3
3
 
4
- require "bundler/gem_tasks"
5
4
  require 'rake/testtask'
5
+ require "bundler/gem_tasks"
6
6
 
7
- require_relative 'test/rake_test_warning_false'
8
-
9
- task default: :test
7
+ require_relative 'spec/rake_test_warning_false'
10
8
 
11
- Rake::TestTask.new do |t|
12
- t.pattern = "test/**/*_test.rb"
9
+ desc "run rspec unit tests"
10
+ begin
11
+ require 'rspec/core/rake_task'
12
+ RSpec::Core::RakeTask.new(:rspec)
13
13
  end
14
14
 
15
+ task default: :rspec
@@ -4,13 +4,13 @@ source "https://rubygems.org"
4
4
 
5
5
  gem "appraisal", "~> 2.2"
6
6
  gem "honeybadger", "3.3.1-1", git: "git@github.com:Invoca/honeybadger-ruby", ref: "bb5f2b8a86e4147c38a6270d39ad610fab4dd5e6"
7
- gem "minitest"
8
- gem "minitest-reporters"
9
7
  gem "pry"
8
+ gem "pry-byebug"
10
9
  gem "rake"
11
- gem "rr"
10
+ gem "rspec"
11
+ gem "rspec_junit_formatter"
12
12
  gem "rubocop"
13
- gem "shoulda"
13
+ gem "test-unit"
14
14
  gem "actionmailer", "~> 4.2"
15
15
  gem "actionpack", "~> 4.2"
16
16
  gem "activesupport", "~> 4.2"
@@ -4,13 +4,13 @@ source "https://rubygems.org"
4
4
 
5
5
  gem "appraisal", "~> 2.2"
6
6
  gem "honeybadger", "3.3.1-1", git: "git@github.com:Invoca/honeybadger-ruby", ref: "bb5f2b8a86e4147c38a6270d39ad610fab4dd5e6"
7
- gem "minitest"
8
- gem "minitest-reporters"
9
7
  gem "pry"
8
+ gem "pry-byebug"
10
9
  gem "rake"
11
- gem "rr"
10
+ gem "rspec"
11
+ gem "rspec_junit_formatter"
12
12
  gem "rubocop"
13
- gem "shoulda"
13
+ gem "test-unit"
14
14
  gem "actionmailer", "~> 5.2"
15
15
  gem "actionpack", "~> 5.2"
16
16
  gem "activesupport", "~> 5.2"
@@ -4,13 +4,13 @@ source "https://rubygems.org"
4
4
 
5
5
  gem "appraisal", "~> 2.2"
6
6
  gem "honeybadger", "3.3.1-1", git: "git@github.com:Invoca/honeybadger-ruby", ref: "bb5f2b8a86e4147c38a6270d39ad610fab4dd5e6"
7
- gem "minitest"
8
- gem "minitest-reporters"
9
7
  gem "pry"
8
+ gem "pry-byebug"
10
9
  gem "rake"
11
- gem "rr"
10
+ gem "rspec"
11
+ gem "rspec_junit_formatter"
12
12
  gem "rubocop"
13
- gem "shoulda"
13
+ gem "test-unit"
14
14
  gem "actionmailer", "~> 6.0"
15
15
  gem "actionpack", "~> 6.0"
16
16
  gem "activesupport", "~> 6.0"
@@ -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
@@ -222,7 +222,13 @@ module ExceptionHandling # never included
222
222
  #
223
223
  def write_exception_to_log(ex, exception_context, timestamp, log_context = {})
224
224
  ActiveSupport::Deprecation.silence do
225
- ExceptionHandling.logger.fatal("\nExceptionHandlingError (Error:#{timestamp}) #{ex.class} #{exception_context} (#{encode_utf8(ex.message.to_s)}):\n " + clean_backtrace(ex).join("\n ") + "\n\n", log_context)
225
+ log_message = "#{exception_context}\n#{ex.class}: (#{encode_utf8(ex.message.to_s)}):\n " + clean_backtrace(ex).join("\n ") + "\n\n"
226
+
227
+ if ex.is_a?(Warning)
228
+ ExceptionHandling.logger.warn("\nExceptionHandlingWarning (Warning:#{timestamp}) #{log_message}", log_context)
229
+ else
230
+ ExceptionHandling.logger.fatal("\nExceptionHandlingError (Error:#{timestamp}) #{log_message}", log_context)
231
+ end
226
232
  end
227
233
  end
228
234