From a862a65c464391339a45352a71ec0a95971f9b77 Mon Sep 17 00:00:00 2001 From: Sergii Glushchenko Date: Sun, 10 May 2026 21:34:44 +0200 Subject: [PATCH] contrib/oid2name: add TAP tests for object listing --- contrib/oid2name/t/002_actions.pl | 80 +++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 contrib/oid2name/t/002_actions.pl diff --git a/contrib/oid2name/t/002_actions.pl b/contrib/oid2name/t/002_actions.pl new file mode 100644 index 00000000000..343be26629f --- /dev/null +++ b/contrib/oid2name/t/002_actions.pl @@ -0,0 +1,80 @@ + +# Copyright (c) 2026, PostgreSQL Global Development Group + +# Do basic object listsing supported by oid2name using +# an initialized cluster. + +use strict; +use warnings FATAL => 'all'; +use PostgreSQL::Test::Cluster; +use PostgreSQL::Test::Utils; + +use Test::More; + +sub get_oid +{ + my $node = shift; + my $name = shift; + return + int($node->safe_psql('postgres', "SELECT to_regclass('$name')::oid")); +} + +my $node = PostgreSQL::Test::Cluster->new('mynode'); +$node->init; +$node->start; + +# Check default databases, tablespaces and system objects. +$node->command_like(['oid2name'], qr/postgres\s+pg_default\b/, + "successfuly shows default databases with no arguments"); + +$node->command_like([ 'oid2name', '--tablespaces' ], + qr/pg_default\b/, "successfuly shows default tablespaces"); + +$node->command_like([ 'oid2name', '--quiet', '--dbname' => 'postgres' ], + qr/^$/, "succeeds in quiet mode"); + +my $pg_class_oid = get_oid($node, 'pg_class'); +$node->command_like( + [ 'oid2name', '--system-objects', '--dbname' => 'postgres' ], + qr/${pg_class_oid}\s+pg_class\b/, + "successfuly shows a system object"); + +# Create a test table with index and sequence, and then list the objects. +my $table = 't1'; +my $index = "${table}_pkey"; +my $seq = "${table}_id_seq"; + +$node->safe_psql('postgres', "CREATE TABLE $table(id SERIAL PRIMARY KEY)"); + +my $table_oid = get_oid($node, $table); +my $index_oid = get_oid($node, $index); +my $seq_oid = get_oid($node, $seq); + +$node->command_like( + [ 'oid2name', '--dbname' => 'postgres', '--table' => $table ], + qr/${table_oid}\s+${table}\b/, "successfuly shows table $table"); + +$node->command_like([ 'oid2name', '--dbname' => 'postgres' ], + qr/${table_oid}\s+${table}\b/, + "successfuly shows table $table in the database output"); + +$node->command_like( + [ 'oid2name', '--dbname' => 'postgres', '--oid' => $table_oid ], + qr/${table_oid}\s+${table}\b/, + "successfuly shows table $table for oid $table_oid"); + +$node->command_like( + [ 'oid2name', '--dbname' => 'postgres', '--filenode' => $table_oid ], + qr/${table_oid}\s+${table}\b/, + "successfuly shows table $table for filenode $table_oid"); + +$node->command_like( + [ 'oid2name', '--dbname' => 'postgres', '--indexes' ], + qr/${index_oid}\s+${index}\b/, + "successfuly shows index $index in the output with indexes"); + +$node->command_like([ 'oid2name', '--dbname' => 'postgres', '--indexes' ], + qr/${seq_oid}\s+${seq}\b/, + "successfuly shows sequence $seq in the output with indexes"); + +done_testing(); -- 2.54.0