Doc: update testing recipe in src/test/perl/README.

The previous text didn't provide any clear explanation of our policy
around TAP test portability.  The recipe for using perlbrew had some
problems, too: it resulted in a non-shared libperl (preventing
testing of plperl) and it caused some modules to be updated to
current when the point of the recipe is to build an old environment.

Discussion: https://postgr.es/m/E1mYY6Z-0006OL-QN@gemulon.postgresql.org
This commit is contained in:
Tom Lane 2021-10-10 17:55:36 -04:00
parent 2ae5d72f00
commit 3eb1f4d097
1 changed files with 24 additions and 8 deletions

View File

@ -70,20 +70,36 @@ perldoc for the test modules, e.g.:
perldoc src/test/perl/PostgresNode.pm perldoc src/test/perl/PostgresNode.pm
Required Perl Portability
------------- -----------
Tests must run on perl 5.8.3 and newer. perlbrew is a good way to obtain such Avoid using any bleeding-edge Perl features. We have buildfarm animals
a Perl; see http://perlbrew.pl . running Perl versions as old as 5.8.3, so your tests will be expected
to pass on that.
Just install and Also, do not use any non-core Perl modules except IPC::Run. Or, if you
must do so for a particular test, arrange to skip the test when the needed
module isn't present. If unsure, you can consult Module::CoreList to find
out whether a given module is part of the Perl core, and which module
versions shipped with which Perl releases.
One way to test for compatibility with old Perl versions is to use
perlbrew; see http://perlbrew.pl . After installing that, do
export PERLBREW_CONFIGURE_FLAGS='-de -Duseshrplib'
perlbrew --force install 5.8.3 perlbrew --force install 5.8.3
perlbrew use 5.8.3 perlbrew use 5.8.3
perlbrew install-cpanm perlbrew install-cpanm
cpanm install IPC::Run cpanm install Test::Simple@0.87_01
cpanm install IPC::Run@0.79
cpanm install ExtUtils::MakeMaker@6.50 # downgrade
then re-run configure to ensure the correct Perl is used when running Then re-run Postgres' configure to ensure the correct Perl is used when
tests. To verify that the right Perl was found: running tests. To verify that the right Perl was found:
grep ^PERL= config.log grep ^PERL= config.log
Due to limitations of cpanm, this recipe doesn't exactly duplicate the
module list of older buildfarm animals. The discrepancies should seldom
matter, but if you want to be sure, bypass cpanm and instead manually
install the desired versions of Test::Simple and IPC::Run.