From 7b58d7c4e3ad14ac3c60f1ea5d1032205a086e71 Mon Sep 17 00:00:00 2001 From: Tony Cook Date: Tue, 14 Jan 2014 09:24:40 +1100 Subject: [PATCH] [perl #118817] avoid using 2 handles to write to the debug output MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Previously the tests were run with the following config: NonStop=0 TTY=db.out LineInfo=db.out This meant that the debugger would write the prologue, command prompts and their results and the epilogue to one handle, and any line trace information to the second handle. Since those handles didn't share file a file position, the line trace info would overwrite the prologue, and the epilogue would overwrite part of the line trace info. When TTY=vt100 on Redhat systems, this made the epilogue just long enough to overwrite the line trace data that a test matched against, causing the test to fail. To fix this, I avoided setting LineInfo: NonStop=0 TTY=db.out and since LineInfo defaults to using the TTY handle, both type of content are written to db.out *without* overwriting each other. Unfortunately this broke some other tests, since now the command prompts which were overwritten by line trace information are mixed in with the line traces - I've modified the tests that failed to account for the included command lines. Signed-off-by: Petr Písař --- lib/perl5db.t | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/lib/perl5db.t b/lib/perl5db.t index 17fa744..95d2030 100644 --- a/lib/perl5db.t +++ b/lib/perl5db.t @@ -72,7 +72,7 @@ sub _out_contents rc( <<'EOF', -&parse_options("NonStop=0 ReadLine=0 TTY=db.out LineInfo=db.out"); +&parse_options("NonStop=0 ReadLine=0 TTY=db.out"); sub afterinit { push(@DB::typeahead, @@ -267,7 +267,7 @@ sub _quote sub _run { my $self = shift; - my $rc = qq{&parse_options("NonStop=0 TTY=db.out LineInfo=db.out");\n}; + my $rc = qq{&parse_options("NonStop=0 TTY=db.out");\n}; $rc .= join('', map { "$_\n"} @@ -1235,6 +1235,7 @@ DebugWrap->new({ $wrapper->contents_like( qr/ $line_out + auto\(-\d+\)\s+DB<\d+>\s+\.\n $line_out /msx, 'Test the "." command', @@ -2380,6 +2381,10 @@ DebugWrap->new({ $wrapper->contents_like(qr/ ^main::\([^:]+:28\):\n 28:\s+myfunc\(\);\n + auto\(-\d+\)\s+DB<1>\s+t\n + Trace\ =\ on\n + auto\(-\d+\)\s+DB<1>\s+b\ 18\n + auto\(-\d+\)\s+DB<2>\s+c\n main::myfunc\([^:]+:25\):\n 25:\s+bar\(\);\n /msx, @@ -2407,10 +2412,14 @@ DebugWrap->new({ $wrapper->contents_like(qr/ ^main::\([^:]+:28\):\n 28:\s+myfunc\(\);\n + auto\(-\d+\)\s+DB<1>\s+o\ AutoTrace\n + \s+AutoTrace\s+=\s+'1'\n + auto\(-\d+\)\s+DB<2>\s+b\ 18\n + auto\(-\d+\)\s+DB<3>\s+c\n main::myfunc\([^:]+:25\):\n 25:\s+bar\(\);\n /msx, - 'Test the t command with function calls.', + 'Test the o AutoTrace command with function calls.', ); } -- 1.8.4.2