From 80001cc8c4602f15726a87e2423dd47cc0e18598 Mon Sep 17 00:00:00 2001 From: naruse Date: Sun, 28 Oct 2018 16:06:56 +0000 Subject: Add test for cause on pty git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65422 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- test/ruby/test_backtrace.rb | 49 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) (limited to 'test') diff --git a/test/ruby/test_backtrace.rb b/test/ruby/test_backtrace.rb index 0730b5d1c5..1a570c6d6e 100644 --- a/test/ruby/test_backtrace.rb +++ b/test/ruby/test_backtrace.rb @@ -1,6 +1,7 @@ # frozen_string_literal: false require 'test/unit' require 'tempfile' +require 'pty' class TestBacktrace < Test::Unit::TestCase def test_exception @@ -329,4 +330,52 @@ class TestBacktrace < Test::Unit::TestCase 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 `
': \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 `
'\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 `
'\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 `
'\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 + raise "bar!" + end + bar + end; + end end -- cgit v1.2.3