@@ -766,7 +766,7 @@ def test_generate_bin_with_dangling_symlink
766766 def test_generate_plugins
767767 installer = util_setup_installer do |spec |
768768 write_file File . join ( @tempdir , "lib" , "rubygems_plugin.rb" ) do |io |
769- io . write "puts __FILE__ "
769+ io . write "# do nothing "
770770 end
771771
772772 spec . files += %w[ lib/rubygems_plugin.rb ]
@@ -853,11 +853,59 @@ def test_generate_plugins_with_build_root
853853 refute_includes File . read ( build_root_path ) , build_root
854854 end
855855
856+ class << self
857+ attr_accessor :plugin_loaded
858+ attr_accessor :post_install_is_called
859+ end
860+
861+ def test_use_plugin_immediately
862+ self . class . plugin_loaded = false
863+ self . class . post_install_is_called = false
864+ spec_version = nil
865+ plugin_path = nil
866+ installer = util_setup_installer do |spec |
867+ spec_version = spec . version
868+ plugin_path = File . join ( "lib" , "rubygems_plugin.rb" )
869+ write_file File . join ( @tempdir , plugin_path ) do |io |
870+ io . write <<-PLUGIN
871+ #{ self . class } .plugin_loaded = true
872+ Gem.post_install do
873+ #{ self . class } .post_install_is_called = true
874+ end
875+ PLUGIN
876+ end
877+ spec . files += [ plugin_path ]
878+ plugin_path = File . join ( spec . gem_dir , plugin_path )
879+ end
880+ build_rake_in do
881+ installer . install
882+ end
883+ assert self . class . plugin_loaded , "plugin is not loaded"
884+ assert self . class . post_install_is_called ,
885+ "post install hook registered by plugin is not called"
886+
887+ self . class . plugin_loaded = false
888+ $LOADED_FEATURES. delete ( plugin_path )
889+ installer_new = util_setup_installer do |spec_new |
890+ spec_new . version = spec_version . version . succ
891+ plugin_path = File . join ( "lib" , "rubygems_plugin.rb" )
892+ write_file File . join ( @tempdir , plugin_path ) do |io |
893+ io . write "#{ self . class } .plugin_loaded = true"
894+ end
895+ spec_new . files += [ plugin_path ]
896+ end
897+ build_rake_in do
898+ installer_new . install
899+ end
900+ assert !self . class . plugin_loaded ,
901+ "plugin is loaded even when old version is already loaded"
902+ end
903+
856904 def test_keeps_plugins_up_to_date
857905 # NOTE: version a-2 is already installed by setup hooks
858906
859907 write_file File . join ( @tempdir , "lib" , "rubygems_plugin.rb" ) do |io |
860- io . write "puts __FILE__ "
908+ io . write "# do nothing "
861909 end
862910
863911 build_rake_in do
0 commit comments