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