Re: plperl error format vs plpgsql error format vs pgTAP - Mailing list pgsql-hackers

From Andrew Dunstan
Subject Re: plperl error format vs plpgsql error format vs pgTAP
Date
Msg-id 4A1EE5E8.2010402@dunslane.net
Whole thread Raw
In response to plperl error format vs plpgsql error format vs pgTAP  (Kevin Field <kevinjamesfield@gmail.com>)
List pgsql-hackers

Kevin Field wrote:
> I use pgTAP to make sure my functions produce the correct errors using
> throws_ok().  So when I get an error from a plpgsql function, it looks
> like this:
>
> ERROR:  upper bound of FOR loop cannot be null
> CONTEXT:  PL/pgSQL function "foo" line 35 at FOR with integer loop
> variable
>
> ...which I can then test using throws_ok by giving it the string
> 'upper bound of FOR loop cannot be null'.  However, in a plperl
> function, errors come out in this format:
>
> error from Perl function "check_no_loop": Loops not allowed!  Node 1
> cannot be part of node 3 at line 13.
>
> Unfortunately, I can't test for this without including the line
> number, which means that changing any plperl function that I have such
> a test for pretty much guarantees that I'll need to change the test to
> reflect the new line numbers the errors would be thrown from in the
> function.
>
> Is it possible to unify the error reporting format, so pgTAP can test
> them without needing line numbers from plperl functions?
>
>   

This is under perl's control, not ours. The perl docco says:
   If the last element of LIST does not end in a newline, the current   script line number and input line number (if
any)are also printed   and a newline is supplied.
 

Can pgTap check for a regex instead if just a string?

cheers

andrew


pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: plperl error format vs plpgsql error format vs pgTAP
Next
From: Andrew Dunstan
Date:
Subject: Re: search_path vs extensions