File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -56,7 +56,21 @@ def [](task_name, scopes=nil)
5656 self . lookup ( task_name , scopes ) or
5757 enhance_with_matching_rule ( task_name ) or
5858 synthesize_file_task ( task_name ) or
59- fail "Don't know how to build task '#{ task_name } ' (see --tasks)"
59+ fail generate_message_for_undefined_task ( task_name )
60+ end
61+
62+ def generate_message_for_undefined_task ( task_name )
63+ message = "Don't know how to build task '#{ task_name } ' (see --tasks)"
64+
65+ suggestion_message = \
66+ if defined? ( ::DidYouMean ::SpellChecker ) && defined? ( ::DidYouMean ::Formatter )
67+ suggestions = ::DidYouMean ::SpellChecker . new ( dictionary : @tasks . keys ) . correct ( task_name . to_s )
68+ ::DidYouMean ::Formatter . new ( suggestions ) . to_s
69+ else
70+ ""
71+ end
72+
73+ message + suggestion_message
6074 end
6175
6276 def synthesize_file_task ( task_name ) # :nodoc:
Original file line number Diff line number Diff line change @@ -453,4 +453,15 @@ def test_source_is_first_prerequisite
453453 t = task t : [ "preqA" , "preqB" ]
454454 assert_equal "preqA" , t . source
455455 end
456- end
456+
457+ def test_suggests_valid_rake_task_names
458+ task :test
459+ error = assert_raises ( RuntimeError ) { Task [ :testt ] }
460+
461+ assert_match /Don\' t know how to build task \' testt\' / , error . message
462+
463+ if defined? ( ::DidYouMean ::SpellChecker ) && defined? ( ::DidYouMean ::Formatter )
464+ assert_match /Did you mean\? test/ , error . message
465+ end
466+ end
467+ end
You can’t perform that action at this time.
0 commit comments