ilm...@ilmari.org (Dagfinn Ilmari Mannsåker) writes: > Tom Lane <t...@sss.pgh.pa.us> writes: > >> Cool, I'll go commit a fix along those lines. Thanks for tracing >> this down! > > Here's one final style cleanup for the TAP test. > > - use like() for the banner test > - pass the regexes around as qr// objects, so they can be > syntax-highlighted properly, and don't need regex > metacharacter-escaping backslashes doubled. > - include the regex that didn't match in the diagnostic
This time with the actual attachment... - ilmari -- - Twitter seems more influential [than blogs] in the 'gets reported in the mainstream press' sense at least. - Matt McLeod - That'd be because the content of a tweet is easier to condense down to a mainstream media article. - Calle Dybedahl
>From 0307bdea0f95e47e9ed7cf9678c12d568006d772 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dagfinn=20Ilmari=20Manns=C3=A5ker?= <ilm...@ilmari.org> Date: Sun, 5 Jan 2020 13:20:10 +0000 Subject: [PATCH] Use qr// for passed-in regexes in tab-completion TAP test This lets editors syntax-highlight them as regexes, not just plain strings, and avoids having to double backslashes when escaping regex metacharacters like *. Also include the pattern that didn't match in the failure diagnostic, and use like() for the startup banner test. --- src/bin/psql/t/010_tab_completion.pl | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/src/bin/psql/t/010_tab_completion.pl b/src/bin/psql/t/010_tab_completion.pl index 9cfd7ec79c..bff954de24 100644 --- a/src/bin/psql/t/010_tab_completion.pl +++ b/src/bin/psql/t/010_tab_completion.pl @@ -58,7 +58,7 @@ my $timer = timer(5); my $h = $node->interactive_psql('postgres', \$in, \$out, $timer); -ok($out =~ /psql/, "print startup banner"); +like($out, qr/psql/, "print startup banner"); # Simple test case: type something and see if psql responds as expected sub check_completion @@ -75,13 +75,14 @@ sub check_completion # send the data to be sent $in .= $send; # wait ... - pump $h until ($out =~ m/$pattern/ || $timer->is_expired); - my $okay = ($out =~ m/$pattern/ && !$timer->is_expired); + pump $h until ($out =~ $pattern || $timer->is_expired); + my $okay = ($out =~ $pattern && !$timer->is_expired); ok($okay, $annotation); # for debugging, log actual output if it didn't match local $Data::Dumper::Terse = 1; local $Data::Dumper::Useqq = 1; - diag 'Actual output was ' . Dumper($out) . "\n" if !$okay; + diag 'Actual output was ' . Dumper($out) . + "Did not match $pattern\n" if !$okay; return; } @@ -89,20 +90,20 @@ sub check_completion # (won't work if we are inside a string literal!) sub clear_query { - check_completion("\\r\n", "postgres=# ", "\\r works"); + check_completion("\\r\n", qr/postgres=# /, "\\r works"); return; } # check basic command completion: SEL<tab> produces SELECT<space> -check_completion("SEL\t", "SELECT ", "complete SEL<tab> to SELECT"); +check_completion("SEL\t", qr/SELECT /, "complete SEL<tab> to SELECT"); clear_query(); # check case variation is honored -check_completion("sel\t", "select ", "complete sel<tab> to select"); +check_completion("sel\t", qr/select /, "complete sel<tab> to select"); # check basic table name completion -check_completion("* from t\t", "\\* from tab1 ", "complete t<tab> to tab1"); +check_completion("* from t\t", qr/\* from tab1 /, "complete t<tab> to tab1"); clear_query(); @@ -110,14 +111,14 @@ clear_query(); # note: readline might print a bell before the completion check_completion( "select * from my\t", - "select \\* from my\a?tab", + qr/select \* from my\a?tab/, "complete my<tab> to mytab when there are multiple choices"); # some versions of readline/libedit require two tabs here, some only need one -check_completion("\t\t", "mytab123 +mytab246", +check_completion("\t\t", qr/mytab123 +mytab246/, "offer multiple table choices"); -check_completion("2\t", "246 ", +check_completion("2\t", qr/246 /, "finish completion of one of multiple table choices"); clear_query(); @@ -125,7 +126,7 @@ clear_query(); # check case-sensitive keyword replacement # 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"); +check_completion("\\DRD\t", qr/\\drds /, "complete \\DRD<tab> to \\drds"); clear_query(); -- 2.22.0