diff options
Diffstat (limited to 'spec/ruby/security/cve_2019_8325_spec.rb')
-rw-r--r-- | spec/ruby/security/cve_2019_8325_spec.rb | 58 |
1 files changed, 33 insertions, 25 deletions
diff --git a/spec/ruby/security/cve_2019_8325_spec.rb b/spec/ruby/security/cve_2019_8325_spec.rb index 935f127d7f..bbddb3a6ce 100644 --- a/spec/ruby/security/cve_2019_8325_spec.rb +++ b/spec/ruby/security/cve_2019_8325_spec.rb @@ -3,36 +3,44 @@ require_relative '../spec_helper' require 'rubygems' require 'rubygems/command_manager' -platform_is_not :darwin do # frequent timeout/hang on macOS - describe "CVE-2019-8325 is resisted by" do - describe "sanitising error message components" do - it "for the 'while executing' message" do - manager = Gem::CommandManager.new - def manager.process_args(args, build_args) - raise StandardError, "\e]2;nyan\a" - end - def manager.terminate_interaction(n) - end - manager.should_receive(:alert_error).with("While executing gem ... (StandardError)\n .]2;nyan.") - manager.run nil, nil +describe "CVE-2019-8325 is resisted by" do + describe "sanitising error message components" do + before :each do + @ui = Gem::SilentUI.new + end + + after :each do + @ui.close + end + + it "for the 'while executing' message" do + manager = Gem::CommandManager.new + manager.ui = @ui + def manager.process_args(args, build_args) + raise StandardError, "\e]2;nyan\a" end + def manager.terminate_interaction(n) + end + manager.should_receive(:alert_error).with("While executing gem ... (StandardError)\n .]2;nyan.") + manager.run nil, nil + end - it "for the 'invalid option' message" do - manager = Gem::CommandManager.new - def manager.terminate_interaction(n) - end - manager.should_receive(:alert_error).with("Invalid option: --.]2;nyan.. See 'gem --help'.") - manager.process_args ["--\e]2;nyan\a"], nil + it "for the 'invalid option' message" do + manager = Gem::CommandManager.new + def manager.terminate_interaction(n) end + manager.should_receive(:alert_error).with("Invalid option: --.]2;nyan.. See 'gem --help'.") + manager.process_args ["--\e]2;nyan\a"], nil + end - it "for the 'loading command' message" do - manager = Gem::CommandManager.new - def manager.require(x) - raise 'foo' - end - manager.should_receive(:alert_error).with("Loading command: .]2;nyan. (RuntimeError)\n\tfoo") - manager.send :load_and_instantiate, "\e]2;nyan\a" + it "for the 'loading command' message" do + manager = Gem::CommandManager.new + manager.ui = @ui + def manager.require(x) + raise 'foo' end + manager.should_receive(:alert_error).with("Loading command: .]2;nyan. (RuntimeError)\n\tfoo") + manager.send :load_and_instantiate, "\e]2;nyan\a" end end end |