did_you_mean 1.0.3 → 1.0.4

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cb27120266763f1d41479bb12b02ef1db0c8b7bd
4
- data.tar.gz: cebe5a510c5fa9863d38a4f91ea384a10cbf1b76
3
+ metadata.gz: 95c8a3e5873fe852e2de4de33e70ada6b4695bf5
4
+ data.tar.gz: ab23c8333c2fb0c3df66b804a1fc1274eb21674c
5
5
  SHA512:
6
- metadata.gz: 4bbab8b8a733acbb662684d9b631011920dec45e168c24274237a19f015f68db5aa49c5cec3833def7424c9066c4bf6efc76add22144f97c8b44d004fdff041f
7
- data.tar.gz: 83103bcfbd0eec01e78a53b71b751eaef25f914330a44aac9f7c7e02244af29e96cf5654f6a4542d256062a97b2daa8c073522d57a34822fc16f4ac40e804adf
6
+ metadata.gz: 7b1d6d10f8e658fa070c97752ff09b961b57b53f71a434546a81b522f87a32129c25a398efc55a3076ed617ac9b3a6414c0005d7c0492c89d55f1398de618c23
7
+ data.tar.gz: 47631c99fab406a57242310173b0f4154c00b70bc8ca113f665f0b93710625c3d3811f3e352e2d181a4ffd8ca89d855b792775919d98ffec68700b4dab5a40a0
@@ -20,11 +20,11 @@ module DidYouMean
20
20
  end
21
21
 
22
22
  def corrections
23
- spell_checker.corrections
23
+ @corrections ||= spell_checker.corrections
24
24
  end
25
25
 
26
26
  def spell_checker
27
- @spell_checker ||= SPELL_CHECKERS[self.class.to_s].new(self)
27
+ SPELL_CHECKERS[self.class.to_s].new(self)
28
28
  end
29
29
  end
30
30
  end
@@ -6,11 +6,14 @@ module DidYouMean
6
6
  attr_reader :class_name
7
7
 
8
8
  def initialize(exception)
9
- @class_name, @receiver = exception.name, exception.receiver
9
+ @class_name, @receiver, @original_message = exception.name, exception.receiver, exception.original_message
10
10
  end
11
11
 
12
12
  def corrections
13
- @corrections ||= SpellChecker.new(dictionary: class_names).correct(class_name).map(&:full_name)
13
+ @corrections ||= SpellChecker.new(dictionary: class_names)
14
+ .correct(class_name)
15
+ .map(&:full_name)
16
+ .reject {|qualified_name| @original_message.include?(qualified_name) }
14
17
  end
15
18
 
16
19
  def class_names
@@ -1,3 +1,3 @@
1
1
  module DidYouMean
2
- VERSION = "1.0.3"
2
+ VERSION = "1.0.4"
3
3
  end
@@ -20,7 +20,7 @@ class NameErrorExtensionTest < Minitest::Test
20
20
 
21
21
  def test_message
22
22
  message = <<~MESSAGE.chomp
23
- undefined local variable or method `doesnt_exist' for #{method(:to_s).super_method.call}
23
+ undefined local variable or method `doesnt_exist' for #{to_s}
24
24
  Did you mean? does_exist
25
25
  MESSAGE
26
26
 
@@ -36,6 +36,18 @@ class NameErrorExtensionTest < Minitest::Test
36
36
  error.to_s
37
37
  assert_equal 1, error.to_s.scan("Did you mean?").count
38
38
  end
39
+
40
+ def test_correctable_error_objects_are_dumpable
41
+ error = begin
42
+ File.open('/tmp/file').sizee
43
+ rescue NoMethodError => e
44
+ e
45
+ end
46
+
47
+ error.to_s
48
+
49
+ assert_equal "undefined method `sizee' for #<File:/tmp/file>", Marshal.load(Marshal.dump(error)).original_message
50
+ end
39
51
  end
40
52
 
41
53
  class IgnoreCallersTest < Minitest::Test
@@ -1,4 +1,3 @@
1
- # -*- coding: utf-8 -*-
2
1
  require 'test_helper'
3
2
 
4
3
  class JaroWinklerTest < Minitest::Test
@@ -0,0 +1,4 @@
1
+ class Book
2
+ class Cover
3
+ end
4
+ end
@@ -62,4 +62,16 @@ class ClassNameTest < Minitest::Test
62
62
  error = assert_raises(NameError) { ::Book::Page.new.tableof_contents }
63
63
  assert_correction "Book::TableOfContents", error.corrections
64
64
  end
65
+
66
+ def test_does_not_suggest_user_input
67
+ error = assert_raises(NameError) { ::Book::Cover }
68
+
69
+ # This is a weird require, but in a multi-threaded condition, a constant may
70
+ # be loaded between when a NameError occurred and when the spell checker
71
+ # attemps to find a possible suggestion. The manual require here simulates
72
+ # a race condition a single test.
73
+ require_relative '../fixtures/book'
74
+
75
+ assert_empty error.corrections
76
+ end
65
77
  end
@@ -7,7 +7,7 @@ class VerboseFormatterTest < Minitest::Test
7
7
 
8
8
  def test_message
9
9
  assert_equal <<~MESSAGE.chomp, @error.message
10
- undefined method `inspectt' for #{method(:to_s).super_method.call}
10
+ undefined method `inspectt' for #{to_s}
11
11
 
12
12
  Did you mean? inspect
13
13
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: did_you_mean
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yuki Nishijima
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-03-25 00:00:00.000000000 Z
11
+ date: 2019-03-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -102,6 +102,7 @@ files:
102
102
  - test/experimental/initializer_name_correction_test.rb
103
103
  - test/experimental/key_error_test.rb
104
104
  - test/experimental/method_name_checker_test.rb
105
+ - test/fixtures/book.rb
105
106
  - test/spell_checker_test.rb
106
107
  - test/spell_checking/class_name_test.rb
107
108
  - test/spell_checking/method_name_test.rb
@@ -109,6 +110,7 @@ files:
109
110
  - test/spell_checking/variable_name_test.rb
110
111
  - test/test_helper.rb
111
112
  - test/verbose_formatter_test.rb
113
+ - tmp/.keep
112
114
  homepage: https://github.com/yuki24/did_you_mean
113
115
  licenses:
114
116
  - MIT
@@ -129,7 +131,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
129
131
  version: '0'
130
132
  requirements: []
131
133
  rubyforge_project:
132
- rubygems_version: 2.6.8
134
+ rubygems_version: 2.5.2.3
133
135
  signing_key:
134
136
  specification_version: 4
135
137
  summary: '"Did you mean?" experience in Ruby'
@@ -140,6 +142,7 @@ test_files:
140
142
  - test/experimental/initializer_name_correction_test.rb
141
143
  - test/experimental/key_error_test.rb
142
144
  - test/experimental/method_name_checker_test.rb
145
+ - test/fixtures/book.rb
143
146
  - test/spell_checker_test.rb
144
147
  - test/spell_checking/class_name_test.rb
145
148
  - test/spell_checking/method_name_test.rb