Subject: [PATCH 4/6] Remove the last vestiges of Exporter from PostgresNode

From: Andrew Dunstan <[email-masked]>
Date: Sun, 18 Jul 2021 11:41:03 -0400

Clients wanting to call get_free_port now need to do so via a qualified
name: PostgresNode::get_free_port().
---
 src/bin/pg_ctl/t/001_start_stop.pl |  2 +-
 src/test/kerberos/t/001_auth.pl    |  2 +-
 src/test/ldap/t/001_auth.pl        |  4 ++--
 src/test/perl/PostgresNode.pm      | 14 ++++++--------
 4 files changed, 10 insertions(+), 12 deletions(-)

diff --git a/src/bin/pg_ctl/t/001_start_stop.pl b/src/bin/pg_ctl/t/001_start_stop.pl
index 4bfc23b93d..1d8d6bbb70 100644
--- a/src/bin/pg_ctl/t/001_start_stop.pl
+++ b/src/bin/pg_ctl/t/001_start_stop.pl
@@ -25,7 +25,7 @@ command_ok([ 'pg_ctl', 'initdb', '-D', "$tempdir/data", '-o', '-N' ],
 	'pg_ctl initdb');
 command_ok([ $ENV{PG_REGRESS}, '--config-auth', "$tempdir/data" ],
 	'configure authentication');
-my $node_port = get_free_port();
+my $node_port = PostgresNode::get_free_port();
 open my $conf, '>>', "$tempdir/data/postgresql.conf";
 print $conf "fsync = off\n";
 print $conf "port = $node_port\n";
diff --git a/src/test/kerberos/t/001_auth.pl b/src/test/kerberos/t/001_auth.pl
index d6191498f0..34562045cb 100644
--- a/src/test/kerberos/t/001_auth.pl
+++ b/src/test/kerberos/t/001_auth.pl
@@ -74,7 +74,7 @@ my $kdc_conf    = "${TestLib::tmp_check}/kdc.conf";
 my $krb5_cache  = "${TestLib::tmp_check}/krb5cc";
 my $krb5_log    = "${TestLib::log_path}/krb5libs.log";
 my $kdc_log     = "${TestLib::log_path}/krb5kdc.log";
-my $kdc_port    = get_free_port();
+my $kdc_port    = PostgresNode::get_free_port();
 my $kdc_datadir = "${TestLib::tmp_check}/krb5kdc";
 my $kdc_pidfile = "${TestLib::tmp_check}/krb5kdc.pid";
 my $keytab      = "${TestLib::tmp_check}/krb5.keytab";
diff --git a/src/test/ldap/t/001_auth.pl b/src/test/ldap/t/001_auth.pl
index 553041baa2..1d1282f8dc 100644
--- a/src/test/ldap/t/001_auth.pl
+++ b/src/test/ldap/t/001_auth.pl
@@ -58,8 +58,8 @@ my $slapd_pidfile = "${TestLib::tmp_check}/slapd.pid";
 my $slapd_logfile = "${TestLib::log_path}/slapd.log";
 my $ldap_conf     = "${TestLib::tmp_check}/ldap.conf";
 my $ldap_server   = 'localhost';
-my $ldap_port     = get_free_port();
-my $ldaps_port    = get_free_port();
+my $ldap_port     = PostgresNode::get_free_port();
+my $ldaps_port    = PostgresNode::get_free_port();
 my $ldap_url      = "ldap://$ldap_server:$ldap_port";
 my $ldaps_url     = "ldaps://$ldap_server:$ldaps_port";
 my $ldap_basedn   = 'dc=example,dc=net';
diff --git a/src/test/perl/PostgresNode.pm b/src/test/perl/PostgresNode.pm
index 8889d26ff5..08519129d8 100644
--- a/src/test/perl/PostgresNode.pm
+++ b/src/test/perl/PostgresNode.pm
@@ -69,7 +69,7 @@ PostgresNode - class representing PostgreSQL server instance
   $node->stop('fast');
 
   # Find a free, unprivileged TCP port to bind some other service to
-  my $port = get_free_port();
+  my $port = PostgresNode::get_free_port();
 
 =head1 DESCRIPTION
 
@@ -93,7 +93,6 @@ use warnings;
 use Carp;
 use Config;
 use Cwd;
-use Exporter 'import';
 use Fcntl qw(:mode);
 use File::Basename;
 use File::Path qw(rmtree);
@@ -109,10 +108,6 @@ use TestLib ();
 use Time::HiRes qw(usleep);
 use Scalar::Util qw(blessed);
 
-our @EXPORT = qw(
-  get_free_port
-);
-
 our ($use_tcp, $test_localhost, $test_pghost, $last_host_assigned,
 	$last_port_assigned, @all_nodes, $died);
 
@@ -1381,8 +1376,8 @@ sub installed_command
 =item get_free_port()
 
 Locate an unprivileged (high) TCP port that's not currently bound to
-anything.  This is used by new(), and is also exported for use
-by test cases that need to start other, non-Postgres servers.
+anything.  This is used by C<new()>, and also by some test cases that need to
+start other, non-Postgres servers.
 
 Ports assigned to existing PostgresNode objects are automatically
 excluded, even if those servers are not currently running.
@@ -1390,6 +1385,9 @@ excluded, even if those servers are not currently running.
 XXX A port available now may become unavailable by the time we start
 the desired service.
 
+Note: this is not an instance method. As it's not exported it should be
+called from outside the module as C<PostgresNode::get_free_port()>.
+
 =cut
 
 sub get_free_port
-- 
2.25.4

--------------401D4E40781FC9847DEE78ED
Content-Type: text/x-patch; charset=UTF-8;
 name="0005-Add-PostgresVersion.pm-method-to-emit-the-major-vers.patch"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename*0="0005-Add-PostgresVersion.pm-method-to-emit-the-major-vers.pa";
 filename*1="tch"