ruby-changes:53207
From: naruse <ko1@a...>
Date: Mon, 29 Oct 2018 01:07:02 +0900 (JST)
Subject: [ruby-changes:53207] naruse:r65422 (trunk): Add test for cause on pty
naruse 2018-10-29 01:06:56 +0900 (Mon, 29 Oct 2018) New Revision: 65422 https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=65422 Log: Add test for cause on pty Modified files: trunk/test/ruby/test_backtrace.rb Index: test/ruby/test_backtrace.rb =================================================================== --- test/ruby/test_backtrace.rb (revision 65421) +++ test/ruby/test_backtrace.rb (revision 65422) @@ -1,6 +1,7 @@ https://github.com/ruby/ruby/blob/trunk/test/ruby/test_backtrace.rb#L1 # frozen_string_literal: false require 'test/unit' require 'tempfile' +require 'pty' class TestBacktrace < Test::Unit::TestCase def test_exception @@ -321,6 +322,54 @@ class TestBacktrace < Test::Unit::TestCa https://github.com/ruby/ruby/blob/trunk/test/ruby/test_backtrace.rb#L322 def foo raise "foo!" end + def bar + foo + rescue + raise "bar!" + end + bar + end; + end + + def assert_pty(args, test_stdin = "", dummy, expected) + actual = nil + PTY.spawn(EnvUtil.rubybin, *args) do |r, w, pid| + w.puts test_stdin + w.puts "__END__" + w.close + actual = r.read + end + expected = test_stdin.chomp + "\n__END__\n" + expected.to_s + expected.gsub!(/\n/, "\r\n") + assert_equal expected, actual + end + + def test_tty_backtrace + err = "\e[1mTraceback\e[m (most recent call last):\n" + + "-:1:in `<main>': \e[1m\e[1;4munhandled exception\e[m\n" + assert_pty([], "raise", [], err) + + err = "\e[1mTraceback\e[m (most recent call last):\n" + + "\t1: from -:4:in `<main>'\n" + + "-:2:in `foo': \e[1mfoo! (\e[1;4mRuntimeError\e[m\e[1m)\e[m\n" + assert_pty([], <<-"end;", [], err) + def foo + raise "foo!" + end + foo + end; + + err = "\e[1mTraceback\e[m (most recent call last):\n" + + "\t2: from -:9:in `<main>'\n" + + "\t1: from -:5:in `bar'\n" + + "-:2:in `foo': \e[1mfoo! (\e[1;4mRuntimeError\e[m\e[1m)\e[m\n" + + "\t2: from -:9:in `<main>'\n" + + "\t1: from -:4:in `bar'\n" + + "-:7:in `rescue in bar': \e[1mbar! (\e[1;4mRuntimeError\e[m\e[1m)\e[m\n" + assert_pty([], <<-"end;", [], err) + def foo + raise "foo!" + end def bar foo rescue -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/