diff --git a/Library/Homebrew/test/test_formula.rb b/Library/Homebrew/test/test_formula.rb
index ebbd308b83b124057b207b9ec218601fafad30a0..588ba203d5b160ae2e8576ddcb73007417fa34f7 100644
--- a/Library/Homebrew/test/test_formula.rb
+++ b/Library/Homebrew/test/test_formula.rb
@@ -40,6 +40,28 @@ class FormulaTests < Homebrew::TestCase
     f.rack.rmtree
   end
 
+  def test_migration_needed
+    f = Testball.new("newname")
+    f.instance_variable_set(:@oldname, "oldname")
+    f.instance_variable_set(:@tap, CoreTap.instance)
+
+    oldname_prefix = HOMEBREW_CELLAR/"oldname/2.20"
+    oldname_prefix.mkpath
+    oldname_tab = Tab.empty
+    oldname_tab.tabfile = oldname_prefix.join("INSTALL_RECEIPT.json")
+    oldname_tab.write
+
+    refute_predicate f, :migration_needed?
+
+    oldname_tab.tabfile.unlink
+    oldname_tab.source["tap"] = "homebrew/core"
+    oldname_tab.write
+
+    assert_predicate f, :migration_needed?
+  ensure
+    oldname_prefix.parent.rmtree
+  end
+
   def test_installed?
     f = Testball.new
     f.stubs(:installed_prefix).returns(stub(:directory? => false))