Further fixes for tab-completion TAP tests.
Escape non-printable characters in failure reports, by using Data::Dumper in Useqq mode. Also, bump $Test::Builder::Level so the diagnostic references the calling line, and use diag() instad of note(), so it shows even in non-verbose mode (per request from Christoph Berg). Also, give up on trying to test for the specific way that readline chooses to overwrite existing text in the \DRD -> \drds test. There are too many variants, it seems, at least on the libedit side of things. Dagfinn Ilmari Mannsåker and Tom Lane Discussion: https://postgr.es/m/20200103110128.GA28967@msg.df7cb.de
This commit is contained in:
parent
ddd87d5645
commit
56a3921a2f
@ -5,6 +5,7 @@ use PostgresNode;
|
||||
use TestLib;
|
||||
use Test::More;
|
||||
use IPC::Run qw(pump finish timer);
|
||||
use Data::Dumper;
|
||||
|
||||
if (!defined($ENV{with_readline}) || $ENV{with_readline} ne 'yes')
|
||||
{
|
||||
@ -52,6 +53,9 @@ sub check_completion
|
||||
{
|
||||
my ($send, $pattern, $annotation) = @_;
|
||||
|
||||
# report test failures from caller location
|
||||
local $Test::Builder::Level = $Test::Builder::Level + 1;
|
||||
|
||||
# reset output collector
|
||||
$out = "";
|
||||
# restart per-command timer
|
||||
@ -63,7 +67,9 @@ sub check_completion
|
||||
my $okay = ($out =~ m/$pattern/ && !$timer->is_expired);
|
||||
ok($okay, $annotation);
|
||||
# for debugging, log actual output if it didn't match
|
||||
note 'Actual output was "' . $out . "\"\n" if !$okay;
|
||||
local $Data::Dumper::Terse = 1;
|
||||
local $Data::Dumper::Useqq = 1;
|
||||
diag 'Actual output was ' . Dumper($out) . "\n" if !$okay;
|
||||
return;
|
||||
}
|
||||
|
||||
@ -105,11 +111,9 @@ check_completion("2\t", "246 ",
|
||||
clear_query();
|
||||
|
||||
# check case-sensitive keyword replacement
|
||||
# XXX the output here might vary across readline versions
|
||||
check_completion(
|
||||
"\\DRD\t",
|
||||
"\\DRD\b\b\bdrds ",
|
||||
"complete \\DRD<tab> to \\drds");
|
||||
# note: various versions of readline/libedit handle backspacing
|
||||
# differently, so just check that the replacement comes out correctly
|
||||
check_completion("\\DRD\t", "drds ", "complete \\DRD<tab> to \\drds");
|
||||
|
||||
clear_query();
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user