diff --git a/lib/application_checker.rb b/lib/application_checker.rb
index f4cef30..bbbf211 100644
--- a/lib/application_checker.rb
+++ b/lib/application_checker.rb
@@ -41,7 +41,7 @@ module Rails
lines = grep_for("named_scope", "app/models/")
files = extract_filenames(lines)
- if files
+ unless files.empty?
alert(
"named_scope is now just scope",
"The named_scope method has been renamed to just scope.",
@@ -173,9 +173,10 @@ module Rails
# Check for old-style config.gem calls
def check_gems
lines = grep_for("config.gem ", "config/*.rb")
+ lines += grep_for("config.gem ", "config/**/*.rb")
files = extract_filenames(lines)
- if files
+ unless files.empty?
alert(
"Old gem bundling (config.gems)",
"The old way of bundling is gone now. You need a Gemfile for bundler.",
@@ -191,7 +192,7 @@ module Rails
lines = grep_for("deliver_", "app/models/ #{base_path}app/controllers/ #{base_path}app/observers/")
files = extract_filenames(lines)
- if files
+ unless files.empty?
alert(
"Deprecated ActionMailer API",
"You're using the old ActionMailer API to send e-mails in a controller, model, or observer.",
@@ -225,7 +226,7 @@ module Rails
grep_for("def manifest", g).empty?
end.compact
- if !files.empty?
+ unless files.empty?
alert(
"Old Rails generator API",
"A plugin in the app is using the old generator API (a new one may be available at http://github.com/trydionel/rails3-generators).",
@@ -269,7 +270,7 @@ module Rails
files = extract_filenames(lines)
- if files
+ if !files.blank?
alert(
"Deprecated ERb helper calls",
"Block helpers that use concat (e.g., form_for) should use <%= instead of <%. The current form will continue to work for now, but you will get deprecation warnings since this form will go away in the future.",
@@ -303,7 +304,7 @@ module Rails
lines = grep_for("ActionController::Base.cookie_verifier_secret = ", "config/**/*")
files = extract_filenames(lines)
- if files
+ unless files.empty?
alert(
"Deprecated cookie secret setting",
"Previously, cookie secret was set directly on ActionController::Base; it's now config.secret_token.",
@@ -317,7 +318,7 @@ module Rails
lines = grep_for("ActionController::Base.session = {", "config/**/*")
files = extract_filenames(lines)
- if files
+ unless files.empty?
alert(
"Deprecated session secret setting",
"Previously, session secret was set directly on ActionController::Base; it's now config.secret_token.",
@@ -332,7 +333,7 @@ module Rails
lines = grep_for("ActionController::Base.session_store", "config/**/*")
files = extract_filenames(lines)
- if files
+ unless files.empty?
alert(
"Old session store setting",
"Previously, session store was set directly on ActionController::Base; it's now config.session_store :whatever.",
@@ -401,14 +402,18 @@ module Rails
# Extract the filenames from the grep output
def extract_filenames(output)
if @probably_has_grep
- extract_filenames_from_grep(output)
+ filenames = extract_filenames_from_grep(output)
else
- extract_filenames_from_rak(output)
+ filenames = extract_filenames_from_rak(output)
+ end
+
+ filenames.compact.map do |f|
+ f.gsub(base_path, "")
end
end
def extract_filenames_from_grep(output)
- return nil if output.empty?
+ return [] if output.empty?
output.split("\n").map do |fn|
if m = fn.match(/^(.+?):/)
@@ -418,7 +423,7 @@ module Rails
end
def extract_filenames_from_rak(output)
- return nil if output.empty?
+ return [] if output.empty?
output.split("\n").uniq
end
diff --git a/test/application_checker_test.rb b/test/application_checker_test.rb
index 155a9bd..66b56b7 100644
--- a/test/application_checker_test.rb
+++ b/test/application_checker_test.rb
@@ -15,7 +15,7 @@ FileUtils.mkdir_p BASE_ROOT
module Rails
module Upgrading
class ApplicationChecker
- attr_reader :alerts
+ attr_reader :alerts, :culprits
def base_path
BASE_ROOT + "/"
@@ -27,10 +27,12 @@ module Rails
def initialize
@alerts = {}
+ @culprits = {}
end
def alert(title, text, more_info_url, culprits)
- @alerts[title] = [text, more_info_url, culprits]
+ @alerts[title] = [text, more_info_url]
+ @culprits[title] = culprits
end
end
end
@@ -55,7 +57,9 @@ class ApplicationCheckerTest < ActiveSupport::TestCase
make_file("app/models", "post.rb", "Post.find(:all)")
@checker.check_ar_methods
- assert @checker.alerts.has_key?("Soon-to-be-deprecated ActiveRecord calls")
+ key = "Soon-to-be-deprecated ActiveRecord calls"
+ assert @checker.alerts.has_key?(key)
+ assert_equal "app/models/post.rb", @checker.culprits[key].first
end
def test_check_svn_subdirs_are_not_included
@@ -132,6 +136,18 @@ class ApplicationCheckerTest < ActiveSupport::TestCase
assert @checker.alerts.has_key?("Old gem bundling (config.gems)")
end
+
+ def test_check_gems_finds_nothing
+ @checker.check_gems
+
+ assert_equal false, @checker.alerts.has_key?("Old gem bundling (config.gems)")
+ end
+
+ def test_check_mailer_finds_nothing
+ @checker.check_mailers
+
+ assert_equal false, @checker.alerts.has_key?("Old ActionMailer class API")
+ end
def test_check_mailer_syntax
make_file("app/models/", "notifications.rb", "def signup\nrecipients @users\n end")
@@ -223,6 +239,11 @@ class ApplicationCheckerTest < ActiveSupport::TestCase
assert @checker.alerts.has_key?("Deprecated constant(s)")
end
+
+ def test_check_deprecated_cookie_finds_nothing
+ @checker.check_old_cookie_secret
+ assert_equal false, @checker.alerts.has_key?("Deprecated cookie secret setting")
+ end
def test_check_deprecated_cookie_settings
make_file("config/initializers/", "more_settings.rb", "ActionController::Base.cookie_verifier_secret = 'OMG'")
@@ -231,12 +252,22 @@ class ApplicationCheckerTest < ActiveSupport::TestCase
assert @checker.alerts.has_key?("Deprecated cookie secret setting")
end
+ def test_check_deprecated_session_finds_nothing
+ @checker.check_old_session_secret
+ assert_equal false, @checker.alerts.has_key?("Deprecated session secret setting")
+ end
+
def test_check_deprecated_session_secret
make_file("config/initializers/", "more_settings.rb", "ActionController::Base.session = {\n:whatever => 'woot'\n}")
@checker.check_old_session_secret
assert @checker.alerts.has_key?("Deprecated session secret setting")
end
+
+ def test_check_old_session_setting_finds_nothing
+ @checker.check_old_session_setting
+ assert_equal false, @checker.alerts.has_key?("Old session store setting")
+ end
def test_check_deprecated_session_settings
make_file("config/initializers/", "more_settings.rb", "ActionController::Base.session_store = :cookie\nthings.awesome(:whatever)")
@@ -264,7 +295,7 @@ class ApplicationCheckerTest < ActiveSupport::TestCase
make_file("app/views/users/", "another_test.html.erb", "blah blah blah<% @some_items.each do |item| %> <%= item %> <% end %>")
@checker.check_old_helpers
- assert_equal @checker.alerts.has_key?("Deprecated ERb helper calls"), false
+ assert_equal false, @checker.alerts.has_key?("Deprecated ERb helper calls")
end
def test_check_old_ajax_helpers
diff --git a/test/routes_upgrader_test.rb b/test/routes_upgrader_test.rb
index bd438e4..fad5843 100644
--- a/test/routes_upgrader_test.rb
+++ b/test/routes_upgrader_test.rb
@@ -158,19 +158,19 @@ end
def test_generates_code_for_delete_route
routes_code = %Q{
- ActionController::Routing::Routes.draw do |map|
- map.sign_out '/sign_out', :controller => 'sessions', :action => 'destroy', :method => :delete
- end
+ActionController::Routing::Routes.draw do |map|
+ map.sign_out '/sign_out', :controller => 'sessions', :action => 'destroy', :method => :delete
+end
}
new_routes_code = %Q{
- MyApplication::Application.routes.draw do
- match '/sign_out' => 'sessions#destroy', :as => :sign_out, :via => 'delete'
- end
+MyApplication::Application.routes.draw do
+ match '/sign_out' => 'sessions#destroy', :as => :sign_out, :via => 'delete'
+end
}
upgrader = Rails::Upgrading::RoutesUpgrader.new
upgrader.routes_code = routes_code
- assert_equal new_routes_code, upgrader.generate_new_routes
+ assert_equal new_routes_code.strip, upgrader.generate_new_routes.strip
end
end
\ No newline at end of file