did_you_mean 1.3.1 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +48 -0
  3. data/CHANGELOG.md +75 -75
  4. data/Gemfile +2 -1
  5. data/README.md +2 -32
  6. data/Rakefile +4 -5
  7. data/appveyor.yml +25 -0
  8. data/did_you_mean.gemspec +6 -4
  9. data/documentation/CHANGELOG.md.erb +8 -0
  10. data/documentation/changelog_generator.rb +34 -0
  11. data/documentation/human_typo_api.md +20 -0
  12. data/documentation/tree_spell_algorithm.md +82 -0
  13. data/documentation/tree_spell_checker_api.md +24 -0
  14. data/lib/did_you_mean.rb +17 -16
  15. data/lib/did_you_mean/experimental.rb +2 -2
  16. data/lib/did_you_mean/experimental/initializer_name_correction.rb +1 -1
  17. data/lib/did_you_mean/experimental/ivar_name_correction.rb +3 -1
  18. data/lib/did_you_mean/levenshtein.rb +1 -1
  19. data/lib/did_you_mean/spell_checker.rb +7 -7
  20. data/lib/did_you_mean/spell_checkers/key_error_checker.rb +8 -2
  21. data/lib/did_you_mean/spell_checkers/method_name_checker.rb +14 -6
  22. data/lib/did_you_mean/spell_checkers/name_error_checkers.rb +2 -2
  23. data/lib/did_you_mean/spell_checkers/name_error_checkers/class_name_checker.rb +5 -5
  24. data/lib/did_you_mean/spell_checkers/name_error_checkers/variable_name_checker.rb +1 -1
  25. data/lib/did_you_mean/tree_spell_checker.rb +137 -0
  26. data/lib/did_you_mean/verbose.rb +2 -2
  27. data/lib/did_you_mean/version.rb +1 -1
  28. data/test/core_ext/test_name_error_extension.rb +48 -0
  29. data/test/edit_distance/{jaro_winkler_test.rb → test_jaro_winkler.rb} +2 -2
  30. data/test/fixtures/mini_dir.yml +15 -0
  31. data/test/fixtures/rspec_dir.yml +112 -0
  32. data/test/helper.rb +29 -0
  33. data/test/spell_checking/{class_name_check_test.rb → test_class_name_check.rb} +12 -10
  34. data/test/spell_checking/{key_name_check_test.rb → test_key_name_check.rb} +18 -8
  35. data/test/spell_checking/{method_name_check_test.rb → test_method_name_check.rb} +17 -15
  36. data/test/spell_checking/{uncorrectable_name_check_test.rb → test_uncorrectable_name_check.rb} +3 -3
  37. data/test/spell_checking/{variable_name_check_test.rb → test_variable_name_check.rb} +18 -16
  38. data/test/{spell_checker_test.rb → test_spell_checker.rb} +2 -2
  39. data/test/test_tree_spell_checker.rb +173 -0
  40. data/test/test_verbose_formatter.rb +21 -0
  41. data/test/tree_spell/change_word.rb +61 -0
  42. data/test/tree_spell/human_typo.rb +89 -0
  43. data/test/tree_spell/test_change_word.rb +38 -0
  44. data/test/tree_spell/test_explore.rb +128 -0
  45. data/test/tree_spell/test_human_typo.rb +24 -0
  46. metadata +47 -58
  47. data/.travis.yml +0 -23
  48. data/test/core_ext/name_error_extension_test.rb +0 -51
  49. data/test/experimental/initializer_name_correction_test.rb +0 -15
  50. data/test/experimental/method_name_checker_test.rb +0 -13
  51. data/test/test_helper.rb +0 -13
  52. data/test/verbose_formatter_test.rb +0 -22
@@ -1,23 +0,0 @@
1
- language: ruby
2
- script: bundle exec rake
3
- cache: bundler
4
- sudo: false
5
-
6
- before_install:
7
- - gem install bundler
8
-
9
- after_success:
10
- - bundle exec rake test:accuracy
11
- - bundle exec rake benchmark:memory
12
-
13
- rvm:
14
- - 2.5.3
15
- - 2.6.0
16
- - ruby-head
17
- - jruby-9.2.5.0
18
- - jruby-head
19
-
20
- matrix:
21
- allow_failures:
22
- - rvm: jruby-9.2.5.0
23
- - rvm: jruby-head
@@ -1,51 +0,0 @@
1
- require 'test_helper'
2
-
3
- class NameErrorExtensionTest < Minitest::Test
4
- SPELL_CHECKERS = DidYouMean::SPELL_CHECKERS
5
-
6
- class TestSpellChecker
7
- def initialize(*); end
8
- def corrections; ["does_exist"]; end
9
- end
10
-
11
- def setup
12
- @org, SPELL_CHECKERS['NameError'] = SPELL_CHECKERS['NameError'], TestSpellChecker
13
-
14
- @error = assert_raises(NameError){ doesnt_exist }
15
- end
16
-
17
- def teardown
18
- SPELL_CHECKERS['NameError'] = @org
19
- end
20
-
21
- def test_message
22
- message = <<~MESSAGE.chomp
23
- undefined local variable or method `doesnt_exist' for #{to_s}
24
- Did you mean? does_exist
25
- MESSAGE
26
-
27
- assert_equal message, @error.to_s
28
- assert_equal message, @error.message
29
- end
30
-
31
- def test_to_s_does_not_make_disruptive_changes_to_error_message
32
- error = assert_raises(NameError) do
33
- raise NameError, "uninitialized constant Object"
34
- end
35
-
36
- error.to_s
37
- assert_equal 1, error.to_s.scan("Did you mean?").count
38
- end
39
-
40
- def test_correctable_error_objects_are_dumpable
41
- error = begin
42
- File.open('did_you_mean.gemspec').sizee
43
- rescue NoMethodError => e
44
- e
45
- end
46
-
47
- error.to_s
48
-
49
- assert_equal "undefined method `sizee' for #<File:did_you_mean.gemspec>", Marshal.load(Marshal.dump(error)).original_message
50
- end
51
- end
@@ -1,15 +0,0 @@
1
- require 'test_helper'
2
-
3
- class InitializerNameCorrectionTest < Minitest::Test
4
- def test_corrects_wrong_initializer_name
5
- assert_output nil, "warning: intialize might be misspelled, perhaps you meant initialize?\n" do
6
- Class.new { def intialize; end }
7
- end
8
- end
9
-
10
- def test_does_not_correct_correct_initializer_name
11
- assert_output nil, "" do
12
- Class.new { def initialize; end }
13
- end
14
- end
15
- end
@@ -1,13 +0,0 @@
1
- require 'test_helper'
2
-
3
- class ExperimentalMethodNameCorrectionTest < Minitest::Test
4
- def test_corrects_incorrect_ivar_name
5
- @number = 1
6
- @nubmer = nil
7
- error = assert_raises(NoMethodError) { @nubmer.zero? }
8
- remove_instance_variable :@nubmer
9
-
10
- assert_correction :@number, error.corrections
11
- assert_match "Did you mean? @number", error.to_s
12
- end
13
- end
@@ -1,13 +0,0 @@
1
- require 'minitest/autorun'
2
- require 'minitest/pride'
3
- require 'did_you_mean'
4
-
5
- puts "DidYouMean version: #{DidYouMean::VERSION}"
6
-
7
- module DidYouMean::TestHelper
8
- def assert_correction(expected, array)
9
- assert_equal Array(expected), array, "Expected #{array.inspect} to only include #{expected.inspect}"
10
- end
11
- end
12
-
13
- MiniTest::Test.include(DidYouMean::TestHelper)
@@ -1,22 +0,0 @@
1
- require 'test_helper'
2
-
3
- class VerboseFormatterTest < Minitest::Test
4
- def setup
5
- require 'did_you_mean/verbose'
6
-
7
- @error = assert_raises(NameError){ 1.zeor? }
8
- end
9
-
10
- def teardown
11
- DidYouMean.formatter = DidYouMean::PlainFormatter.new
12
- end
13
-
14
- def test_message
15
- assert_equal <<~MESSAGE.chomp, @error.message
16
- undefined method `zeor?' for 1:Integer
17
-
18
- Did you mean? zero?
19
-
20
- MESSAGE
21
- end
22
- end