enhanced_errors 3.0.5 → 3.0.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -2
- data/enhanced_errors.gemspec +1 -1
- data/lib/enhanced_errors.rb +13 -4
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eecb34c7dc88e51c162183c3d2d2701c54fc42cffc69a30aa8d713b643fce9c9
|
4
|
+
data.tar.gz: 36942532b9f4f17f1b4987a92200bc30bee102f2759b75038adf2f299f6afed7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e349ac57c07ba4c554d229e5f60202b8381c1d8c952e345c905bece6cc5fd18f2941ecbd00d57bc1357ff2d895d9b0b9d931b0127673e84a356c2c504e78b6c0
|
7
|
+
data.tar.gz: 6fc1dea986b74c34f2bcb23b189e83298349b5273e18767256c047cbdfe875d7edce6dc0d42c86c62a87824ee8acf3ed99710309b719c09b8ed559a6601a677f
|
data/README.md
CHANGED
@@ -47,8 +47,8 @@ require 'awesome_print' # Optional, for better output
|
|
47
47
|
|
48
48
|
RSpec.configure do |config|
|
49
49
|
|
50
|
-
#
|
51
|
-
# Consider driving the config with an environment variable
|
50
|
+
# Add this config to RSpec to enhance your output
|
51
|
+
# Consider driving the config with an environment variable to make it configurable per-user or run:
|
52
52
|
# if ENV['enhanced_errors'] == 'true'
|
53
53
|
config.before(:example) do |_example|
|
54
54
|
EnhancedErrors.start_rspec_binding_capture
|
data/enhanced_errors.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |spec|
|
2
2
|
spec.name = "enhanced_errors"
|
3
|
-
spec.version = "3.0.
|
3
|
+
spec.version = "3.0.6"
|
4
4
|
spec.authors = ["Eric Beland"]
|
5
5
|
|
6
6
|
spec.summary = "Automatically enhance your errors with messages containing variable values from the moment they were raised."
|
data/lib/enhanced_errors.rb
CHANGED
@@ -9,7 +9,7 @@ module Enhanced; end
|
|
9
9
|
# Exceptions we could handle but overlook for other reasons. These class constants are not always loaded
|
10
10
|
# and generally are only be available when `required`, so we detect them by strings.
|
11
11
|
IGNORED_EXCEPTIONS = %w[RSpec::Expectations::ExpectationNotMetError RSpec::Matchers::BuiltIn::RaiseError
|
12
|
-
JSON::ParserError Zlib::Error OpenSSL::SSL::SSLError Psych::
|
12
|
+
JSON::ParserError Zlib::Error OpenSSL::SSL::SSLError Psych::BadAlias]
|
13
13
|
|
14
14
|
class EnhancedErrors
|
15
15
|
extend ::Enhanced
|
@@ -171,6 +171,7 @@ class EnhancedErrors
|
|
171
171
|
end
|
172
172
|
|
173
173
|
def override_exception_message(exception, binding_or_bindings)
|
174
|
+
return unless exception_is_handleable?(exception)
|
174
175
|
variable_str = EnhancedErrors.format(binding_or_bindings)
|
175
176
|
message_str = exception.message
|
176
177
|
exception.define_singleton_method(:unaltered_message) { message_str }
|
@@ -277,13 +278,14 @@ class EnhancedErrors
|
|
277
278
|
@rspec_tracepoint&.disable
|
278
279
|
@rspec_tracepoint = TracePoint.new(:raise) do |tp|
|
279
280
|
return unless exception_is_handleable?(tp.raised_exception)
|
280
|
-
|
281
|
-
case class_name
|
281
|
+
case tp.raised_exception.class.name
|
282
282
|
when 'RSpec::Expectations::ExpectationNotMetError'
|
283
283
|
start_rspec_binding_trap
|
284
284
|
else
|
285
285
|
handle_tracepoint_event(tp)
|
286
286
|
end
|
287
|
+
rescue => e
|
288
|
+
puts "Error in RSpec biding capture #{e} #{e.backtrace}"
|
287
289
|
end
|
288
290
|
end
|
289
291
|
@rspec_tracepoint&.enable
|
@@ -635,8 +637,11 @@ class EnhancedErrors
|
|
635
637
|
Thread.current[:enhanced_errors_processing] = false
|
636
638
|
end
|
637
639
|
|
640
|
+
# Specifically avoid psych, and system level libraries, or libraries where variable context isn't
|
641
|
+
# likely to be particularly helpful or relevant.
|
638
642
|
def ignored_exception?(exception)
|
639
|
-
|
643
|
+
name = exception.class.name
|
644
|
+
IGNORED_EXCEPTIONS.include?(name) || name =~ /^(Gem|Psych|Zlib|OpenSSL|DRb|Prism|Reline|Fiddle)::/
|
640
645
|
end
|
641
646
|
|
642
647
|
def test_name
|
@@ -822,6 +827,10 @@ class EnhancedErrors
|
|
822
827
|
end
|
823
828
|
|
824
829
|
def exception_is_handleable?(exception)
|
830
|
+
exception && processable_exception?(exception) && !ignored_exception?(exception)
|
831
|
+
end
|
832
|
+
|
833
|
+
def processable_exception?(exception)
|
825
834
|
case exception
|
826
835
|
when SystemExit, SignalException, SystemStackError, NoMemoryError
|
827
836
|
# Non-actionable: Ignore these exceptions
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: enhanced_errors
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eric Beland
|
8
8
|
bindir: bin
|
9
9
|
cert_chain: []
|
10
|
-
date: 2024-12-
|
10
|
+
date: 2024-12-26 00:00:00.000000000 Z
|
11
11
|
dependencies:
|
12
12
|
- !ruby/object:Gem::Dependency
|
13
13
|
name: awesome_print
|