use v5.36; use Test::More; plan skip_all => $@ if !eval { require FU::PG; } && $@ =~ /Unable to load libpq/; plan skip_all => 'Please set FU_TEST_DB to a PostgreSQL connection string to run these tests' if !$ENV{FU_TEST_DB}; sub okerr($sev, $act, $msg) { is ref $@, 'FU::PG::error'; is $@->{severity}, $sev; is $@->{action}, $act; like "$@", $msg; } ok !eval { FU::PG->connect("invalid") }; okerr FATAL => connect => qr/missing "=" after "invalid"/; ok FU::PG::lib_version() > 100000; my $conn = FU::PG->connect($ENV{FU_TEST_DB}); is ref $conn, 'FU::PG::conn'; ok $conn->server_version() > 100000; is $conn->lib_version(), FU::PG::lib_version(); ok !eval { $conn->exec('COPY (SELECT 1) TO STDOUT'); }; okerr FATAL => exec => qr/unexpected status code/; ok !eval { $conn->exec('SELEXT'); }; okerr ERROR => exec => qr/syntax error/; ok !defined $conn->exec(''); is $conn->exec('SELECT 1'), 1; done_testing;