Check for deprecated require for 'test_help'

This commit is contained in:
Jeremy McAnally 2010-02-03 10:58:52 -06:00
parent 28b809bc01
commit 23cf363cd5
2 changed files with 57 additions and 7 deletions

View File

@ -66,6 +66,29 @@ module Rails
end
end
# Check for deprecated test_help require
def check_test_help
files = []
# Hate to duplicate code, but we have to double quote this one...
lines = grep_for("\'test_help\'", "test/", true)
files += extract_filenames(lines) || []
lines = grep_for("\"test_help\"", "test/")
files += extract_filenames(lines) || []
files.uniq!
unless files.empty?
alert(
"Deprecated test_help path",
"You now must require 'rails/test_help' not just 'test_help'.",
"http://weblog.rubyonrails.org/2009/9/1/gem-packaging-best-practices",
files
)
end
end
# Check for old (pre-application.rb) environment.rb file
def check_environment
unless File.exist?("config/application.rb")
@ -181,14 +204,14 @@ module Rails
# depending on platform.
#
# TODO: Figure out if this works on Windows.
def grep_for(text, where = "./")
def grep_for(text, where = "./", double_quote = false)
# If they're on Windows, they probably don't have grep.
@probably_has_grep ||= (Config::CONFIG['host_os'].downcase =~ /mswin|windows|mingw/).nil?
if @probably_has_grep
find_with_grep(text, base_path + where)
find_with_grep(text, base_path + where, double_quote)
else
find_with_rak(text, base_path + where)
find_with_rak(text, base_path + where, double_quote)
end
end
@ -198,10 +221,16 @@ module Rails
end
# Use the grep utility to find a string in a set of files
def find_with_grep(text, where)
def find_with_grep(text, where, double_quote)
value = ""
Open3.popen3("grep -r '#{text}' #{where}") do |stdin, stdout, stderr|
# Specifically double quote for finding 'test_help'
command = if double_quote
"grep -r \"#{text}\" #{where}"
else
"grep -r '#{text}' #{where}"
end
Open3.popen3(command) do |stdin, stdout, stderr|
value = stdout.read
end
@ -209,7 +238,7 @@ module Rails
end
# Use the rak gem to grep the files (not yet implemented)
def find_with_rak(text, where)
def find_with_rak(text, where, double_quote)
value = ""
Open3.popen3("rak --nogroup -l '#{Regexp.escape(text)}' #{where}") do |stdin, stdout, stderr|

View File

@ -71,6 +71,27 @@ class ApplicationCheckerTest < ActiveSupport::TestCase
assert @checker.alerts.has_key?("Old router API")
end
def test_check_for_old_test_help
make_file("test/", "test_helper.rb", " require 'test_help'")
@checker.check_test_help
assert @checker.alerts.has_key?("Deprecated test_help path")
end
def test_check_for_old_test_help_with_double_quotes
make_file("test/", "test_helper.rb", " require \"test_help\"")
@checker.check_test_help
assert @checker.alerts.has_key?("Deprecated test_help path")
end
def test_check_for_old_test_help_doesnt_see_test_helper
make_file("test/", "test_helper.rb", " require 'test_helper'")
@checker.check_test_help
assert !@checker.alerts.has_key?("Deprecated test_help path")
end
def test_check_lack_of_app_dot_rb
@checker.check_environment