From 4728cab3e39f7994b8b6dd41787cac90b5cb64f6 Mon Sep 17 00:00:00 2001 From: Atsushi Torikoshi Date: Thu, 31 Aug 2023 16:22:39 +0900 Subject: [PATCH v2] Make --help output fit within 80 columns per line Outputs of --help output of some commands fit into 80 columns per line, while others do not. For the consistency and for 80-column terminal, this patch makes them fit within 80 columns per line. Also this patch adds a test which checks if --help outputs fit within 80 columns per line. --- contrib/vacuumlo/vacuumlo.c | 3 ++- src/bin/initdb/initdb.c | 6 ++++-- src/bin/pg_amcheck/pg_amcheck.c | 21 ++++++++++++------- src/bin/pg_archivecleanup/pg_archivecleanup.c | 3 ++- src/bin/pg_basebackup/pg_receivewal.c | 12 +++++++---- src/bin/pg_basebackup/pg_recvlogical.c | 18 ++++++++++------ src/bin/pg_checksums/pg_checksums.c | 3 ++- src/bin/pg_dump/pg_dump.c | 3 ++- src/bin/pg_dump/pg_dumpall.c | 3 ++- src/bin/pg_dump/pg_restore.c | 6 ++++-- src/bin/pg_upgrade/option.c | 9 +++++--- src/bin/pgbench/pgbench.c | 6 ++++-- src/bin/pgbench/t/002_pgbench_no_server.pl | 1 + src/bin/psql/help.c | 9 +++++--- src/bin/scripts/createdb.c | 3 ++- src/bin/scripts/pg_isready.c | 3 ++- src/bin/scripts/vacuumdb.c | 21 ++++++++++++------- src/interfaces/ecpg/Makefile | 1 + src/interfaces/ecpg/t/001_basic.pl | 14 +++++++++++++ src/test/perl/PostgreSQL/Test/Utils.pm | 10 +++++++++ 20 files changed, 112 insertions(+), 43 deletions(-) create mode 100644 src/interfaces/ecpg/t/001_basic.pl diff --git a/contrib/vacuumlo/vacuumlo.c b/contrib/vacuumlo/vacuumlo.c index 8941262731..39c1238802 100644 --- a/contrib/vacuumlo/vacuumlo.c +++ b/contrib/vacuumlo/vacuumlo.c @@ -417,7 +417,8 @@ usage(const char *progname) printf("Usage:\n %s [OPTION]... DBNAME...\n\n", progname); printf("Options:\n"); printf(" -l, --limit=LIMIT commit after removing each LIMIT large objects\n"); - printf(" -n, --dry-run don't remove large objects, just show what would be done\n"); + printf(" -n, --dry-run don't remove large objects, just show what would be\n" + " done\n"); printf(" -v, --verbose write a lot of progress messages\n"); printf(" -V, --version output version information, then exit\n"); printf(" -?, --help show this help, then exit\n"); diff --git a/src/bin/initdb/initdb.c b/src/bin/initdb/initdb.c index 905b979947..42e9e19265 100644 --- a/src/bin/initdb/initdb.c +++ b/src/bin/initdb/initdb.c @@ -2434,8 +2434,10 @@ usage(const char *progname) printf(_(" %s [OPTION]... [DATADIR]\n"), progname); printf(_("\nOptions:\n")); printf(_(" -A, --auth=METHOD default authentication method for local connections\n")); - printf(_(" --auth-host=METHOD default authentication method for local TCP/IP connections\n")); - printf(_(" --auth-local=METHOD default authentication method for local-socket connections\n")); + printf(_(" --auth-host=METHOD default authentication method for local TCP/IP\n" + " connections\n")); + printf(_(" --auth-local=METHOD default authentication method for local-socket\n" + " connections\n")); printf(_(" [-D, --pgdata=]DATADIR location for this database cluster\n")); printf(_(" -E, --encoding=ENCODING set default encoding for new databases\n")); printf(_(" -g, --allow-group-access allow group read/execute on data directory\n")); diff --git a/src/bin/pg_amcheck/pg_amcheck.c b/src/bin/pg_amcheck/pg_amcheck.c index 57df14bc1e..606383ae0b 100644 --- a/src/bin/pg_amcheck/pg_amcheck.c +++ b/src/bin/pg_amcheck/pg_amcheck.c @@ -1150,17 +1150,23 @@ help(const char *progname) printf(_(" -S, --exclude-schema=PATTERN do NOT check matching schema(s)\n")); printf(_(" -t, --table=PATTERN check matching table(s)\n")); printf(_(" -T, --exclude-table=PATTERN do NOT check matching table(s)\n")); - printf(_(" --no-dependent-indexes do NOT expand list of relations to include indexes\n")); - printf(_(" --no-dependent-toast do NOT expand list of relations to include TOAST tables\n")); + printf(_(" --no-dependent-indexes do NOT expand list of relations to include\n" + " indexes\n")); + printf(_(" --no-dependent-toast do NOT expand list of relations to include\n" + " TOAST tables\n")); printf(_(" --no-strict-names do NOT require patterns to match objects\n")); printf(_("\nTable checking options:\n")); printf(_(" --exclude-toast-pointers do NOT follow relation TOAST pointers\n")); printf(_(" --on-error-stop stop checking at end of first corrupt page\n")); - printf(_(" --skip=OPTION do NOT check \"all-frozen\" or \"all-visible\" blocks\n")); - printf(_(" --startblock=BLOCK begin checking table(s) at the given block number\n")); - printf(_(" --endblock=BLOCK check table(s) only up to the given block number\n")); + printf(_(" --skip=OPTION do NOT check \"all-frozen\" or \"all-visible\"\n" + " blocks\n")); + printf(_(" --startblock=BLOCK begin checking table(s) at the given block\n" + " number\n")); + printf(_(" --endblock=BLOCK check table(s) only up to the given block\n" + " number\n")); printf(_("\nB-tree index checking options:\n")); - printf(_(" --heapallindexed check that all heap tuples are found within indexes\n")); + printf(_(" --heapallindexed check that all heap tuples are found within\n" + " indexes\n")); printf(_(" --parent-check check index parent/child relationships\n")); printf(_(" --rootdescend search from root page to refind tuples\n")); printf(_("\nConnection options:\n")); @@ -1172,7 +1178,8 @@ help(const char *progname) printf(_(" --maintenance-db=DBNAME alternate maintenance database\n")); printf(_("\nOther options:\n")); printf(_(" -e, --echo show the commands being sent to the server\n")); - printf(_(" -j, --jobs=NUM use this many concurrent connections to the server\n")); + printf(_(" -j, --jobs=NUM use this many concurrent connections to the\n" + " server\n")); printf(_(" -P, --progress show progress information\n")); printf(_(" -v, --verbose write a lot of output\n")); printf(_(" -V, --version output version information, then exit\n")); diff --git a/src/bin/pg_archivecleanup/pg_archivecleanup.c b/src/bin/pg_archivecleanup/pg_archivecleanup.c index 2c3b301f3b..6f62d4661f 100644 --- a/src/bin/pg_archivecleanup/pg_archivecleanup.c +++ b/src/bin/pg_archivecleanup/pg_archivecleanup.c @@ -276,7 +276,8 @@ usage(void) printf(_("\n" "Or for use as a standalone archive cleaner:\n" "e.g.\n" - " pg_archivecleanup /mnt/server/archiverdir 000000010000000000000010.00000020.backup\n")); + " pg_archivecleanup /mnt/server/archiverdir\n" + " 000000010000000000000010.00000020.backup\n")); printf(_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT); printf(_("%s home page: <%s>\n"), PACKAGE_NAME, PACKAGE_URL); } diff --git a/src/bin/pg_basebackup/pg_receivewal.c b/src/bin/pg_basebackup/pg_receivewal.c index d0a4079d50..39a40d525e 100644 --- a/src/bin/pg_basebackup/pg_receivewal.c +++ b/src/bin/pg_basebackup/pg_receivewal.c @@ -81,11 +81,13 @@ usage(void) printf(_("\nOptions:\n")); printf(_(" -D, --directory=DIR receive write-ahead log files into this directory\n")); printf(_(" -E, --endpos=LSN exit after receiving the specified LSN\n")); - printf(_(" --if-not-exists do not error if slot already exists when creating a slot\n")); + printf(_(" --if-not-exists do not error if slot already exists when creating a\n" + " slot\n")); printf(_(" -n, --no-loop do not loop on connection lost\n")); printf(_(" --no-sync do not wait for changes to be written safely to disk\n")); printf(_(" -s, --status-interval=SECS\n" - " time between status packets sent to server (default: %d)\n"), (standby_message_timeout / 1000)); + " time between status packets sent to server\n" + " (default: %d)\n"), (standby_message_timeout / 1000)); printf(_(" -S, --slot=SLOTNAME replication slot to use\n")); printf(_(" --synchronous flush write-ahead log immediately after writing\n")); printf(_(" -v, --verbose output verbose messages\n")); @@ -101,8 +103,10 @@ usage(void) printf(_(" -w, --no-password never prompt for password\n")); printf(_(" -W, --password force password prompt (should happen automatically)\n")); printf(_("\nOptional actions:\n")); - printf(_(" --create-slot create a new replication slot (for the slot's name see --slot)\n")); - printf(_(" --drop-slot drop the replication slot (for the slot's name see --slot)\n")); + printf(_(" --create-slot create a new replication slot (for the slot's name see\n" + " --slot)\n")); + printf(_(" --drop-slot drop the replication slot (for the slot's name see\n" + " --slot)\n")); printf(_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT); printf(_("%s home page: <%s>\n"), PACKAGE_NAME, PACKAGE_URL); } diff --git a/src/bin/pg_basebackup/pg_recvlogical.c b/src/bin/pg_basebackup/pg_recvlogical.c index 9fe4ac8126..e2f3d19fca 100644 --- a/src/bin/pg_basebackup/pg_recvlogical.c +++ b/src/bin/pg_basebackup/pg_recvlogical.c @@ -86,15 +86,19 @@ usage(void) printf(_("Usage:\n")); printf(_(" %s [OPTION]...\n"), progname); printf(_("\nAction to be performed:\n")); - printf(_(" --create-slot create a new replication slot (for the slot's name see --slot)\n")); - printf(_(" --drop-slot drop the replication slot (for the slot's name see --slot)\n")); - printf(_(" --start start streaming in a replication slot (for the slot's name see --slot)\n")); + printf(_(" --create-slot create a new replication slot (for the slot's name see\n" + " --slot)\n")); + printf(_(" --drop-slot drop the replication slot (for the slot's name see\n" + " --slot)\n")); + printf(_(" --start start streaming in a replication slot (for the slot's\n" + " name see --slot)\n")); printf(_("\nOptions:\n")); printf(_(" -E, --endpos=LSN exit after receiving the specified LSN\n")); printf(_(" -f, --file=FILE receive log into this file, - for stdout\n")); printf(_(" -F --fsync-interval=SECS\n" " time between fsyncs to the output file (default: %d)\n"), (fsync_interval / 1000)); - printf(_(" --if-not-exists do not error if slot already exists when creating a slot\n")); + printf(_(" --if-not-exists do not error if slot already exists when creating a\n" + " slot\n")); printf(_(" -I, --startpos=LSN where in an existing slot should the streaming start\n")); printf(_(" -n, --no-loop do not loop on connection lost\n")); printf(_(" -o, --option=NAME[=VALUE]\n" @@ -102,9 +106,11 @@ usage(void) " output plugin\n")); printf(_(" -P, --plugin=PLUGIN use output plugin PLUGIN (default: %s)\n"), plugin); printf(_(" -s, --status-interval=SECS\n" - " time between status packets sent to server (default: %d)\n"), (standby_message_timeout / 1000)); + " time between status packets sent to server\n" + " (default: %d)\n"), (standby_message_timeout / 1000)); printf(_(" -S, --slot=SLOTNAME name of the logical replication slot\n")); - printf(_(" -t, --two-phase enable decoding of prepared transactions when creating a slot\n")); + printf(_(" -t, --two-phase enable decoding of prepared transactions when creating\n" + " a slot\n")); printf(_(" -v, --verbose output verbose messages\n")); printf(_(" -V, --version output version information, then exit\n")); printf(_(" -?, --help show this help, then exit\n")); diff --git a/src/bin/pg_checksums/pg_checksums.c b/src/bin/pg_checksums/pg_checksums.c index 19eb67e485..2b42ab7e0a 100644 --- a/src/bin/pg_checksums/pg_checksums.c +++ b/src/bin/pg_checksums/pg_checksums.c @@ -76,7 +76,8 @@ static pg_time_t last_progress_report = 0; static void usage(void) { - printf(_("%s enables, disables, or verifies data checksums in a PostgreSQL database cluster.\n\n"), progname); + printf(_("%s enables, disables, or verifies data checksums in a PostgreSQL\n" + "database cluster.\n\n"), progname); printf(_("Usage:\n")); printf(_(" %s [OPTION]... [DATADIR]\n"), progname); printf(_("\nOptions:\n")); diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c index 65f64c282d..bf72f2c436 100644 --- a/src/bin/pg_dump/pg_dump.c +++ b/src/bin/pg_dump/pg_dump.c @@ -1067,7 +1067,8 @@ help(const char *progname) printf(_(" -Z, --compress=METHOD[:DETAIL]\n" " compress as specified\n")); printf(_(" --lock-wait-timeout=TIMEOUT fail after waiting TIMEOUT for a table lock\n")); - printf(_(" --no-sync do not wait for changes to be written safely to disk\n")); + printf(_(" --no-sync do not wait for changes to be written safely to\n" + " disk\n")); printf(_(" -?, --help show this help, then exit\n")); printf(_("\nOptions controlling the output content:\n")); diff --git a/src/bin/pg_dump/pg_dumpall.c b/src/bin/pg_dump/pg_dumpall.c index e2a9733d34..683056852c 100644 --- a/src/bin/pg_dump/pg_dumpall.c +++ b/src/bin/pg_dump/pg_dumpall.c @@ -661,7 +661,8 @@ help(void) printf(_(" --no-role-passwords do not dump passwords for roles\n")); printf(_(" --no-security-labels do not dump security label assignments\n")); printf(_(" --no-subscriptions do not dump subscriptions\n")); - printf(_(" --no-sync do not wait for changes to be written safely to disk\n")); + printf(_(" --no-sync do not wait for changes to be written safely to\n" + " disk\n")); printf(_(" --no-table-access-method do not dump table access methods\n")); printf(_(" --no-tablespaces do not dump tablespace assignments\n")); printf(_(" --no-toast-compression do not dump TOAST compression methods\n")); diff --git a/src/bin/pg_dump/pg_restore.c b/src/bin/pg_dump/pg_restore.c index 049a100634..fbbb9f93f8 100644 --- a/src/bin/pg_dump/pg_restore.c +++ b/src/bin/pg_dump/pg_restore.c @@ -459,7 +459,8 @@ usage(const char *progname) printf(_(" -S, --superuser=NAME superuser user name to use for disabling triggers\n")); printf(_(" -t, --table=NAME restore named relation (table, view, etc.)\n")); printf(_(" -T, --trigger=NAME restore named trigger\n")); - printf(_(" -x, --no-privileges skip restoration of access privileges (grant/revoke)\n")); + printf(_(" -x, --no-privileges skip restoration of access privileges\n" + " (grant/revoke)\n")); printf(_(" -1, --single-transaction restore as a single transaction\n")); printf(_(" --disable-triggers disable triggers during data-only restore\n")); printf(_(" --enable-row-security enable row security\n")); @@ -472,7 +473,8 @@ usage(const char *progname) printf(_(" --no-subscriptions do not restore subscriptions\n")); printf(_(" --no-table-access-method do not restore table access methods\n")); printf(_(" --no-tablespaces do not restore tablespace assignments\n")); - printf(_(" --section=SECTION restore named section (pre-data, data, or post-data)\n")); + printf(_(" --section=SECTION restore named section (pre-data, data, or\n" + " post-data)\n")); printf(_(" --strict-names require table and/or schema include patterns to\n" " match at least one entity each\n")); printf(_(" --use-set-session-authorization\n" diff --git a/src/bin/pg_upgrade/option.c b/src/bin/pg_upgrade/option.c index 640361009e..58c86309a1 100644 --- a/src/bin/pg_upgrade/option.c +++ b/src/bin/pg_upgrade/option.c @@ -275,9 +275,11 @@ usage(void) printf(_(" -c, --check check clusters only, don't change any data\n")); printf(_(" -d, --old-datadir=DATADIR old cluster data directory\n")); printf(_(" -D, --new-datadir=DATADIR new cluster data directory\n")); - printf(_(" -j, --jobs=NUM number of simultaneous processes or threads to use\n")); + printf(_(" -j, --jobs=NUM number of simultaneous processes or threads to\n" + " use\n")); printf(_(" -k, --link link instead of copying files to new cluster\n")); - printf(_(" -N, --no-sync do not wait for changes to be written safely to disk\n")); + printf(_(" -N, --no-sync do not wait for changes to be written safely to\n" + " disk\n")); printf(_(" -o, --old-options=OPTIONS old cluster options to pass to the server\n")); printf(_(" -O, --new-options=OPTIONS new cluster options to pass to the server\n")); printf(_(" -p, --old-port=PORT old cluster port number (default %d)\n"), old_cluster.port); @@ -303,7 +305,8 @@ usage(void) " the \"bin\" directory for the new version (-B BINDIR)\n")); printf(_("\n" "For example:\n" - " pg_upgrade -d oldCluster/data -D newCluster/data -b oldCluster/bin -B newCluster/bin\n" + " pg_upgrade -d oldCluster/data -D newCluster/data\n" + " -b oldCluster/bin -B newCluster/bin\n" "or\n")); #ifndef WIN32 printf(_(" $ export PGDATAOLD=oldCluster/data\n" diff --git a/src/bin/pgbench/pgbench.c b/src/bin/pgbench/pgbench.c index 713e8a06bb..b7ef127758 100644 --- a/src/bin/pgbench/pgbench.c +++ b/src/bin/pgbench/pgbench.c @@ -882,8 +882,10 @@ usage(void) " --index-tablespace=TABLESPACE\n" " create indexes in the specified tablespace\n" " --partition-method=(range|hash)\n" - " partition pgbench_accounts with this method (default: range)\n" - " --partitions=NUM partition pgbench_accounts into NUM parts (default: 0)\n" + " partition pgbench_accounts with this method\n" + " (default: range)\n" + " --partitions=NUM partition pgbench_accounts into NUM parts\n" + " (default: 0)\n" " --tablespace=TABLESPACE create tables in the specified tablespace\n" " --unlogged-tables create tables as unlogged tables\n" "\nOptions to select what to run:\n" diff --git a/src/bin/pgbench/t/002_pgbench_no_server.pl b/src/bin/pgbench/t/002_pgbench_no_server.pl index ffc8c772ae..932e80e465 100644 --- a/src/bin/pgbench/t/002_pgbench_no_server.pl +++ b/src/bin/pgbench/t/002_pgbench_no_server.pl @@ -234,6 +234,7 @@ for my $o (@options) } # Help +program_help_ok('pgbench'); pgbench( '--help', 0, [ diff --git a/src/bin/psql/help.c b/src/bin/psql/help.c index 38c165a627..b335cea8be 100644 --- a/src/bin/psql/help.c +++ b/src/bin/psql/help.c @@ -118,19 +118,22 @@ usage(unsigned short int pager) HELP0(" -H, --html HTML table output mode\n"); HELP0(" -P, --pset=VAR[=ARG] set printing option VAR to ARG (see \\pset command)\n"); HELP0(" -R, --record-separator=STRING\n" - " record separator for unaligned output (default: newline)\n"); + " record separator for unaligned output\n" + " (default: newline)\n"); HELP0(" -t, --tuples-only print rows only\n"); HELP0(" -T, --table-attr=TEXT set HTML table tag attributes (e.g., width, border)\n"); HELP0(" -x, --expanded turn on expanded table output\n"); HELP0(" -z, --field-separator-zero\n" " set field separator for unaligned output to zero byte\n"); HELP0(" -0, --record-separator-zero\n" - " set record separator for unaligned output to zero byte\n"); + " set record separator for unaligned output to zero\n" + " byte\n"); HELP0("\nConnection options:\n"); /* Display default host */ env = getenv("PGHOST"); - HELPN(" -h, --host=HOSTNAME database server host or socket directory (default: \"%s\")\n", + HELPN(" -h, --host=HOSTNAME database server host or socket directory\n" + " (default: \"%s\")\n", env ? env : _("local socket")); /* Display default port */ env = getenv("PGPORT"); diff --git a/src/bin/scripts/createdb.c b/src/bin/scripts/createdb.c index 9ca86a3e53..fa1f6d95e5 100644 --- a/src/bin/scripts/createdb.c +++ b/src/bin/scripts/createdb.c @@ -297,7 +297,8 @@ help(const char *progname) printf(_(" --icu-locale=LOCALE ICU locale setting for the database\n")); printf(_(" --icu-rules=RULES ICU rules setting for the database\n")); printf(_(" --locale-provider={libc|icu}\n" - " locale provider for the database's default collation\n")); + " locale provider for the database's default\n" + " collation\n")); printf(_(" -O, --owner=OWNER database user to own the new database\n")); printf(_(" -S, --strategy=STRATEGY database creation strategy wal_log or file_copy\n")); printf(_(" -T, --template=TEMPLATE template database to copy\n")); diff --git a/src/bin/scripts/pg_isready.c b/src/bin/scripts/pg_isready.c index 64bbffb0b2..a5e617ba1b 100644 --- a/src/bin/scripts/pg_isready.c +++ b/src/bin/scripts/pg_isready.c @@ -235,7 +235,8 @@ help(const char *progname) printf(_("\nConnection options:\n")); printf(_(" -h, --host=HOSTNAME database server host or socket directory\n")); printf(_(" -p, --port=PORT database server port\n")); - printf(_(" -t, --timeout=SECS seconds to wait when attempting connection, 0 disables (default: %s)\n"), DEFAULT_CONNECT_TIMEOUT); + printf(_(" -t, --timeout=SECS seconds to wait when attempting connection,\n" + " 0 disables (default: %s)\n"), DEFAULT_CONNECT_TIMEOUT); printf(_(" -U, --username=USERNAME user name to connect as\n")); printf(_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT); printf(_("%s home page: <%s>\n"), PACKAGE_NAME, PACKAGE_URL); diff --git a/src/bin/scripts/vacuumdb.c b/src/bin/scripts/vacuumdb.c index f03d5b1c6c..275b8ccea1 100644 --- a/src/bin/scripts/vacuumdb.c +++ b/src/bin/scripts/vacuumdb.c @@ -1134,19 +1134,26 @@ help(const char *progname) printf(_(" -e, --echo show the commands being sent to the server\n")); printf(_(" -f, --full do full vacuuming\n")); printf(_(" -F, --freeze freeze row transaction information\n")); - printf(_(" --force-index-cleanup always remove index entries that point to dead tuples\n")); + printf(_(" --force-index-cleanup always remove index entries that point to dead\n" + " tuples\n")); printf(_(" -j, --jobs=NUM use this many concurrent connections to vacuum\n")); printf(_(" --min-mxid-age=MXID_AGE minimum multixact ID age of tables to vacuum\n")); printf(_(" --min-xid-age=XID_AGE minimum transaction ID age of tables to vacuum\n")); - printf(_(" --no-index-cleanup don't remove index entries that point to dead tuples\n")); + printf(_(" --no-index-cleanup don't remove index entries that point to dead\n" + " tuples\n")); printf(_(" --no-process-main skip the main relation\n")); - printf(_(" --no-process-toast skip the TOAST table associated with the table to vacuum\n")); - printf(_(" --no-truncate don't truncate empty pages at the end of the table\n")); + printf(_(" --no-process-toast skip the TOAST table associated with the table\n" + " to vacuum\n")); + printf(_(" --no-truncate don't truncate empty pages at the end of the\n" + " table\n")); printf(_(" -n, --schema=PATTERN vacuum tables in the specified schema(s) only\n")); - printf(_(" -N, --exclude-schema=PATTERN do not vacuum tables in the specified schema(s)\n")); - printf(_(" -P, --parallel=PARALLEL_WORKERS use this many background workers for vacuum, if available\n")); + printf(_(" -N, --exclude-schema=PATTERN do not vacuum tables in the specified\n" + " schema(s)\n")); + printf(_(" -P, --parallel=PARALLEL_WORKERS use this many background workers for vacuum,\n" + " if available\n")); printf(_(" -q, --quiet don't write any messages\n")); - printf(_(" --skip-locked skip relations that cannot be immediately locked\n")); + printf(_(" --skip-locked skip relations that cannot be immediately\n" + " locked\n")); printf(_(" -t, --table='TABLE[(COLUMNS)]' vacuum specific table(s) only\n")); printf(_(" -v, --verbose write a lot of output\n")); printf(_(" -V, --version output version information, then exit\n")); diff --git a/src/interfaces/ecpg/Makefile b/src/interfaces/ecpg/Makefile index e4bbf7b8a8..43ef654e50 100644 --- a/src/interfaces/ecpg/Makefile +++ b/src/interfaces/ecpg/Makefile @@ -29,3 +29,4 @@ clean distclean maintainer-clean: checktcp: | temp-install check checktcp installcheck: $(MAKE) -C test $@ + $(prove_check) diff --git a/src/interfaces/ecpg/t/001_basic.pl b/src/interfaces/ecpg/t/001_basic.pl new file mode 100644 index 0000000000..7d54a0da73 --- /dev/null +++ b/src/interfaces/ecpg/t/001_basic.pl @@ -0,0 +1,14 @@ + +# Copyright (c) 2021-2023, PostgreSQL Global Development Group + +use strict; +use warnings; + +use PostgreSQL::Test::Utils; +use Test::More; + +program_help_ok('ecpg'); +program_version_ok('ecpg'); +program_options_handling_ok('ecpg'); + +done_testing(); diff --git a/src/test/perl/PostgreSQL/Test/Utils.pm b/src/test/perl/PostgreSQL/Test/Utils.pm index 617caa022f..9a721e7bcd 100644 --- a/src/test/perl/PostgreSQL/Test/Utils.pm +++ b/src/test/perl/PostgreSQL/Test/Utils.pm @@ -843,6 +843,16 @@ sub program_help_ok ok($result, "$cmd --help exit code 0"); isnt($stdout, '', "$cmd --help goes to stdout"); is($stderr, '', "$cmd --help nothing to stderr"); + foreach my $line (split /\n/, $stdout) + { + if (length($line) > 80) + { + # Ignore embedded PGHOST, which can be long length + $line =~ s/$ENV{PGHOST}//; + } + ok(length($line) <= 80, + "$cmd --help outputs fit within 80 columns per line"); + } return; } -- 2.39.2