On 4/22/21 11:46 AM, Mark Dilger wrote: > >> On Apr 22, 2021, at 8:09 AM, Alvaro Herrera <alvhe...@alvh.no-ip.org> wrote: >> >>> + # Accept standard formats, in case caller has handed us the output of a >>> + # postgres command line tool >>> + $arg = $1 >>> + if ($arg =~ m/\(?PostgreSQL\)? (\d+(?:\.\d+)*(?:devel)?)/); >>> + >>> + # Split into an array >>> + my @result = split(/\./, $arg); >>> + >>> + # Treat development versions as having a minor/micro version one less >>> than >>> + # the first released version of that branch. >>> + if ($result[$#result] =~ m/^(\d+)devel$/) >>> + { >>> + pop(@result); >>> + push(@result, $1, -1); >>> + } >> It's a bit weird to parse the "devel" bit twice. Would it work to leave >> (?:devel)? out of the capturing parens that becomes $1 in the first >> regex and make it capturing itself, so you get "devel" in $2, and decide >> based on its presence/absence? Then you don't have to pop and push a -1. > The first regex should match things like "12", "12.1", "14devel", or those > same things prefixed with "(PostgreSQL) ", and strip off the "(PostgreSQL)" > part if it exists. But the code should also BAIL_OUT if the regex completely > fails to match. >
Not quite. PostgresVersion doesn't know about Test::More. It could die (or croak) and we could catch it in an eval. cheers andrew -- Andrew Dunstan EDB: https://www.enterprisedb.com