public
Description: Ruby on Rails
Homepage: http://rubyonrails.org
Clone URL: git://github.com/rails/rails.git
Fixed Dependencies so load errors are not masked behind a 'Expected x.rb to 
define X' message when mechanism is not set to :load [#87 state:resolved]
Signed-off-by: Joshua Peek <josh@joshpeek.com>
tomafro (author)
Sat May 31 13:33:38 -0700 2008
josh (committer)
Sat May 31 13:33:38 -0700 2008
commit  77e45352e7e947f1df1bfb8fe7d9e4e133224dd9
tree    c50f97186982012cfee3c566071bcec3b93c62a3
parent  f7015336f66d284cff8ecb89df9f430791ac57ea
...
82
83
84
85
86
87
 
 
 
 
88
89
90
...
95
96
97
98
99
100
 
 
 
101
102
103
104
 
 
 
105
106
107
...
82
83
84
 
 
 
85
86
87
88
89
90
91
...
96
97
98
 
 
 
99
100
101
102
 
 
 
103
104
105
106
107
108
0
@@ -82,9 +82,10 @@ module Dependencies #:nodoc:
0
     # infinite loop with mutual dependencies.
0
     loaded << expanded
0
 
0
-    if load?
0
-      log "loading #{file_name}"
0
-      begin
0
+    begin
0
+      if load?
0
+        log "loading #{file_name}"
0
+
0
         # Enable warnings iff this file has not been loaded before and
0
         # warnings_on_first_load is set.
0
         load_args = ["#{file_name}.rb"]
0
@@ -95,13 +96,13 @@ module Dependencies #:nodoc:
0
         else
0
           enable_warnings { result = load_file(*load_args) }
0
         end
0
-      rescue Exception
0
-        loaded.delete expanded
0
-        raise
0
+      else
0
+        log "requiring #{file_name}"
0
+        result = require file_name
0
       end
0
-    else
0
-      log "requiring #{file_name}"
0
-      result = require file_name
0
+    rescue Exception
0
+      loaded.delete expanded
0
+      raise
0
     end
0
 
0
     # Record history *after* loading so first load gets warnings.
...
673
674
675
676
 
677
678
679
...
686
687
688
689
 
690
691
692
693
 
 
 
 
 
 
 
 
 
694
695
696
...
714
715
716
717
 
718
719
720
...
724
725
726
727
 
728
729
730
...
737
738
739
740
 
741
742
743
...
753
754
755
756
757
...
673
674
675
 
676
677
678
679
...
686
687
688
 
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
...
723
724
725
 
726
727
728
729
...
733
734
735
 
736
737
738
739
...
746
747
748
 
749
750
751
752
...
762
763
764
 
765
0
@@ -673,7 +673,7 @@ class DependenciesTest < Test::Unit::TestCase
0
         assert !defined?(::RaisesNoMethodError), "::RaisesNoMethodError is defined but it should have failed!"
0
       end
0
     end
0
-  
0
+
0
   ensure
0
     Object.class_eval { remove_const :RaisesNoMethodError if const_defined?(:RaisesNoMethodError) }
0
   end
0
@@ -686,11 +686,20 @@ class DependenciesTest < Test::Unit::TestCase
0
         assert !defined?(::RaisesNoMethodError), "::RaisesNoMethodError is defined but it should have failed!"
0
       end
0
     end
0
-  
0
+
0
   ensure
0
     Object.class_eval { remove_const :RaisesNoMethodError if const_defined?(:RaisesNoMethodError) }
0
   end
0
 
0
+  def test_autoload_doesnt_shadow_error_when_mechanism_not_set_to_load
0
+    with_loading 'autoloading_fixtures' do
0
+      Dependencies.mechanism = :require
0
+      2.times do
0
+        assert_raise(NameError) {"RaisesNameError".constantize}
0
+      end
0
+    end
0
+  end
0
+
0
   def test_autoload_doesnt_shadow_name_error
0
     with_loading 'autoloading_fixtures' do
0
       assert !defined?(::RaisesNameError), "::RaisesNameError is defined but it hasn't been referenced yet!"
0
@@ -714,7 +723,7 @@ class DependenciesTest < Test::Unit::TestCase
0
   ensure
0
     Object.class_eval { remove_const :RaisesNoMethodError if const_defined?(:RaisesNoMethodError) }
0
   end
0
-  
0
+
0
   def test_remove_constant_handles_double_colon_at_start
0
     Object.const_set 'DeleteMe', Module.new
0
     DeleteMe.const_set 'OrMe', Module.new
0
@@ -724,7 +733,7 @@ class DependenciesTest < Test::Unit::TestCase
0
     Dependencies.remove_constant "::DeleteMe"
0
     assert ! defined?(DeleteMe)
0
   end
0
-  
0
+
0
   def test_load_once_constants_should_not_be_unloaded
0
     with_loading 'autoloading_fixtures' do
0
       Dependencies.load_once_paths = Dependencies.load_paths
0
@@ -737,7 +746,7 @@ class DependenciesTest < Test::Unit::TestCase
0
     Dependencies.load_once_paths = []
0
     Object.class_eval { remove_const :A if const_defined?(:A) }
0
   end
0
-  
0
+
0
   def test_load_once_paths_should_behave_when_recursively_loading
0
     with_loading 'dependencies', 'autoloading_fixtures' do
0
       Dependencies.load_once_paths = [Dependencies.load_paths.last]
0
@@ -753,5 +762,4 @@ class DependenciesTest < Test::Unit::TestCase
0
   ensure
0
     Dependencies.load_once_paths = []
0
   end
0
-  
0
 end

Comments