summaryrefslogtreecommitdiffstats
path: root/gnu/usr.bin/perl/t/porting
diff options
context:
space:
mode:
authorafresh1 <afresh1@openbsd.org>2019-02-13 21:15:00 +0000
committerafresh1 <afresh1@openbsd.org>2019-02-13 21:15:00 +0000
commit9f11ffb7133c203312a01e4b986886bc88c7d74b (patch)
tree6618511204c614b20256e4ef9dea39a7b311d638 /gnu/usr.bin/perl/t/porting
parentImport perl-5.28.1 (diff)
downloadwireguard-openbsd-9f11ffb7133c203312a01e4b986886bc88c7d74b.tar.xz
wireguard-openbsd-9f11ffb7133c203312a01e4b986886bc88c7d74b.zip
Fix merge issues, remove excess files - match perl-5.28.1 dist
looking good sthen@, Great! bluhm@
Diffstat (limited to 'gnu/usr.bin/perl/t/porting')
-rw-r--r--gnu/usr.bin/perl/t/porting/cmp_version.t10
-rw-r--r--gnu/usr.bin/perl/t/porting/customized.dat207
-rw-r--r--gnu/usr.bin/perl/t/porting/customized.t7
-rwxr-xr-xgnu/usr.bin/perl/t/porting/diag.t9
-rw-r--r--gnu/usr.bin/perl/t/porting/dual-life.t12
-rw-r--r--gnu/usr.bin/perl/t/porting/globvar.t11
-rw-r--r--gnu/usr.bin/perl/t/porting/known_pod_issues.dat33
-rwxr-xr-xgnu/usr.bin/perl/t/porting/manifest.t7
-rw-r--r--gnu/usr.bin/perl/t/porting/pod_rules.t2
-rwxr-xr-xgnu/usr.bin/perl/t/porting/podcheck.t717
-rw-r--r--gnu/usr.bin/perl/t/porting/readme.t2
-rw-r--r--gnu/usr.bin/perl/t/porting/regen.t27
-rw-r--r--gnu/usr.bin/perl/t/porting/utils.t2
13 files changed, 595 insertions, 451 deletions
diff --git a/gnu/usr.bin/perl/t/porting/cmp_version.t b/gnu/usr.bin/perl/t/porting/cmp_version.t
index 55b40035298..0573e2f81d1 100644
--- a/gnu/usr.bin/perl/t/porting/cmp_version.t
+++ b/gnu/usr.bin/perl/t/porting/cmp_version.t
@@ -9,14 +9,22 @@
# AND you should probably also nudge the upstream maintainer for
# example by filing a bug, with a patch attached and linking to
# the core change.
+#
+# This test script works by finding the last non-RC tagged commit,
+# which it assumes was the last release, then for each module:
+# if it has changed since that commit, but its version number is still the
+# same as that commit, report it.
+#
+# There's also a module exclusion list in Porting/cmpVERSION.pl.
BEGIN {
@INC = '..' if -f '../TestInit.pm';
+ @INC = '.' if -f './TestInit.pm';
}
use TestInit qw(T A); # T is chdir to the top level, A makes paths absolute
use strict;
-require 't/test.pl';
+require './t/test.pl';
my $source = find_git_or_skip('all');
chdir $source or die "Can't chdir to $source: $!";
diff --git a/gnu/usr.bin/perl/t/porting/customized.dat b/gnu/usr.bin/perl/t/porting/customized.dat
index 09b833d4380..70722d55317 100644
--- a/gnu/usr.bin/perl/t/porting/customized.dat
+++ b/gnu/usr.bin/perl/t/porting/customized.dat
@@ -1,183 +1,32 @@
-Digest::MD5 cpan/Digest-MD5/t/files.t f8fe234035918d3b7324eba05f73e7e903a45ca0
-Archive::Tar cpan/Archive-Tar/bin/ptar 5e9f3c6f565114193d98847ed8569cd0010c229c
-Archive::Tar cpan/Archive-Tar/bin/ptardiff 5a9f4c01a0390bf98da7e63f1c0bbf5bc74d12c7
-Archive::Tar cpan/Archive-Tar/bin/ptargrep eb74056c434acf314ac5a122e33bdd2ef99e6edb
-Archive::Tar cpan/Archive-Tar/lib/Archive/Tar.pm b7e13134a5bcabe8c33fb0729d2f2f80e924059a
-Archive::Tar cpan/Archive-Tar/lib/Archive/Tar/Constant.pm 18af3e90665fcf2ab40c5b02c10ba0ea3ac34d0e
-Archive::Tar cpan/Archive-Tar/lib/Archive/Tar/File.pm c0b849aa3d164305d7cb084ba3adf8d505971d6b
-CPAN cpan/CPAN/lib/App/Cpan.pm b2a9928c41083c82e884f6dc6d4b7043a2b0e351
-CPAN cpan/CPAN/lib/CPAN.pm 27f0f5c41a81aba89dfc895e7671719716522544
-CPAN cpan/CPAN/scripts/cpan c43050c8c63153a205e4385e118e906d1ecadf06
+# Regenerate this file using:
+# cd t
+# ./perl -I../lib porting/customized.t --regen
+Devel::PPPort dist/Devel-PPPort/parts/embed.fnc e030719d9c6921810554a8e2d398543348b4878c
Digest cpan/Digest/Digest.pm 43f7f544cb11842b2f55c73e28930da50774e081
-Digest::SHA cpan/Digest-SHA/lib/Digest/SHA.pm 5841fcf70f7290e07befdd16f05093664c618a96
-Digest::SHA cpan/Digest-SHA/shasum f92faa37afc098e2a825e4ecda1097890492d957
-Encode cpan/Encode/bin/enc2xs 7bbd4ca8d81e0189b87d703aa058b95a837b97d3
-Encode cpan/Encode/bin/encguess f1e7a130995c4bad53bb6d3034dae625cfe61e32
-Encode cpan/Encode/bin/piconv 80ea7f9afff580e41c4b29f5ab214ed378274b49
-Encode cpan/Encode/bin/ucmlint 495862125269a60536b78fd0a7910d024c4d21fe
-Encode cpan/Encode/bin/unidump 715f47c2fcc661268f3c6cd3de0d27c72b745cd2
-Encode cpan/Encode/Encode.pm e146861ff2e6aaa62defa4887eade68dd7b17c8e
-Encode cpan/Encode/encoding.pm 51c19efc9bfe8467d6ae12a4654f6e7f980715bf
-ExtUtils::Constant cpan/ExtUtils-Constant/t/Constant.t a0369c919e216fb02767a637666bb4577ad79b02
-ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/bin/instmodsh 5bc04a0173b8b787f465271b6186220326ae8eef
-ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/Command.pm e3a372e07392179711ea9972087c1105a2780fad
-ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/Command/MM.pm b72721bd6aa9bf7ec328bda99a8fdb63cac6114d
-ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist.pm 0e1e4c25eddb999fec6c4dc66593f76db34cfd16
-ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm bfd2aa00ca4ed251f342e1d1ad704abbaf5a615e
-ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm 5529ae3064365eafd99536621305d52f4ab31b45
-ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Config.pm bc88b275af73b8faac6abd59a9aad3f625925810
-ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/FAQ.pod 062e5d14a803fbbec8d61803086a3d7997e8a473
-ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Tutorial.pod a8a9cab7d67922ed3d6883c864e1fe29aaa6ad89
-ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/version.pm 0c970778ac7b437d9363b314dd0ab85b7d83c8cb
-ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/version/regex.pm 987b7b5567b95a085a69037a7fa99af2b9bdf4df
-ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mkbootstrap.pm 412e95c37fa10f007f3137e9e142ac30f3427d9f
-ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mksymlists.pm 8559ef191b4371d0c381472464856a8a73825b2a
-ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM.pm 09d579ed9daea95c3bf47de2e0b8fe3aa0ff6447
-ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_AIX.pm f720c13748293b792f7073aa96e7daecb590b183
-ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm 243649a399d293ae7ad0f26b7eab2668aa864ce8
-ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_BeOS.pm b63c90129303b2c17d084fb828aa2c02a2ad85b8
-ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Cygwin.pm cabd1c97eaa427067811d92807e34c17940c7350
-ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Darwin.pm 6a185d897a600c34615a6073f4de0ac2f54fef3e
-ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_DOS.pm fcf2f8e3461deb32e4b3f37a00002477bc8e976e
-ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_MacOS.pm 1f5eb772eedfce56434161e2ff080e0cb03ee260
-ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_NW5.pm de777d7809c0d73e5d4622a29921731c7e5dff48
-ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_OS2.pm 01e8f08a82b5304009574e3ac0892b4066ff7639
-ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_QNX.pm 5340052b58557a6764f5ac9f8b807fefec404a06
-ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm 20a9e08add92f04ee97084dbc48876c18622613b
-ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_UWIN.pm 40397f4cd2d49700b80b4ef490da98add24c5b37
-ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VMS.pm 147e97fbabb74841f0733dbd5d1b9f3fa51f87c1
-ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VOS.pm 3f13ed7045ff3443bcb4dd6c95c98b9bd705820f
-ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win32.pm 10b2a0651d14ec8b1367e986288533a40bac8380
-ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win95.pm 48e8a2fe1763ba0228a12a8d363af8d033817ba9
-ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MY.pm 6fefe99045b64459905d4721f3a494d8d50f7ab9
-ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/testlib.pm 172778ad21c065a89cd270668eb9f99a7364b41c
-ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/t/cd.t 0a71fbd646a7be8358b07b6f64f838243cc0aef4
-ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/t/echo.t 37aec8f794c52e037540757eb5b2556f79419ff7
-ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/NoXS.pm 371cdff1b2375017907cfbc9c8f4a31f5ad10582
-ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/t/prereq.t 53bda2c549fd13a6b6c13a070ca6bc79883081c0
-ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/t/vstrings.t 90035a2bdbf45f15b9c3196d072d7cba7e662871
-File::Fetch cpan/File-Fetch/lib/File/Fetch.pm bd0b64a1d8ee2ffac39e017f9fa9f78f95514b4d
-File::Path cpan/File-Path/lib/File/Path.pm 7837c0a6c26609714b4fad0deeb82808409b83fe
-File::Path cpan/File-Path/t/Path_win32.t bec8cc294d10f141ecdb7f165ef297a2dc27ba2f
-HTTP::Tiny cpan/HTTP-Tiny/lib/HTTP/Tiny.pm 3c899ab6938b588f6a2823a6aa59edc81fc2a387
-IO-Compress cpan/IO-Compress/bin/zipdetails 381ba2a6ae5bd21c8d2e994316e3e13f2f0a4f41
-IO-Compress cpan/IO-Compress/lib/Compress/Zlib.pm 58ddedd36889463706d4060589d0c5e6dc497b86
-IO-Compress cpan/IO-Compress/lib/IO/Compress/Adapter/Bzip2.pm 871432b8a9ab1ec0535c17a3f2b8cd49ad657e38
-IO-Compress cpan/IO-Compress/lib/IO/Compress/Adapter/Deflate.pm 8f17ecfcd34ff4bec15cc505133dccddd63023ea
-IO-Compress cpan/IO-Compress/lib/IO/Compress/Adapter/Identity.pm fe231e107be84089a16d4890baa306ba1b033fb1
-IO-Compress cpan/IO-Compress/lib/IO/Compress/Base.pm 908f2264231c5f3b9a946f01c76b9498414a8100
-IO-Compress cpan/IO-Compress/lib/IO/Compress/Base/Common.pm 7773ccaf2d4202dff720f31315f5cec92e021803
-IO-Compress cpan/IO-Compress/lib/IO/Compress/Bzip2.pm fc5a19657c3a4ba5c4fff5cfb0236f7fb7130bd7
-IO-Compress cpan/IO-Compress/lib/IO/Compress/Deflate.pm d41b030df81327d595357353e44ef0bd19569c41
-IO-Compress cpan/IO-Compress/lib/IO/Compress/Gzip.pm 723dd26824de6a777645a5d5f010f033ad07301e
-IO-Compress cpan/IO-Compress/lib/IO/Compress/Gzip/Constants.pm a4779d16ba73ae8917ceb3886449d4d132c87175
-IO-Compress cpan/IO-Compress/lib/IO/Compress/RawDeflate.pm 4cd31ab73417c3c17574770c2bbd58238aaf214e
-IO-Compress cpan/IO-Compress/lib/IO/Compress/Zip.pm 84fe2c1c8f4f5b7d3adbe84994b2b4e7f21252cc
-IO-Compress cpan/IO-Compress/lib/IO/Compress/Zip/Constants.pm 253cedf65b9ece96cca1f5c0797aa08cbb26d009
-IO-Compress cpan/IO-Compress/lib/IO/Compress/Zlib/Constants.pm 68e6adf8e5f806a1620b510810343a3816d70e40
-IO-Compress cpan/IO-Compress/lib/IO/Compress/Zlib/Extra.pm 078a4ed7258530d11a13abafa84791f7c3c26518
-IO-Compress cpan/IO-Compress/lib/IO/Uncompress/Adapter/Bunzip2.pm 49d0acc3b95eefcfe3842f4a4b10bb85d676bfe5
-IO-Compress cpan/IO-Compress/lib/IO/Uncompress/Adapter/Identity.pm 29347c2d945b2ddbb67cf640d89aa23f34edce48
-IO-Compress cpan/IO-Compress/lib/IO/Uncompress/Adapter/Inflate.pm f6d7ae62136ef37bf27a47bf072105d601dd8a9b
-IO-Compress cpan/IO-Compress/lib/IO/Uncompress/AnyInflate.pm 8c3de66922bcdd5b70a14737860d1ffe97883fed
-IO-Compress cpan/IO-Compress/lib/IO/Uncompress/AnyUncompress.pm d53e94d5da3462bb979c4f46c5c7ec62775775c2
-IO-Compress cpan/IO-Compress/lib/IO/Uncompress/Base.pm 0e512c2c6c1863760f4ea795a823d43018903391
-IO-Compress cpan/IO-Compress/lib/IO/Uncompress/Bunzip2.pm 7fda33207940bdabb0a2c43d4db7a09ad6686e33
-IO-Compress cpan/IO-Compress/lib/IO/Uncompress/Gunzip.pm eb220d4b455b509a1e3864e476baf4b2cd0bbc60
-IO-Compress cpan/IO-Compress/lib/IO/Uncompress/Inflate.pm 4ed964c2df4116a43c637eab339a051af6f5ac45
-IO-Compress cpan/IO-Compress/lib/IO/Uncompress/RawInflate.pm 9d8231e49631c2a2860ba4c6b724872409d3b034
-IO-Compress cpan/IO-Compress/lib/IO/Uncompress/Unzip.pm 78a9b534f1c400073c27b433c21afbd440922b26
-IPC::Cmd cpan/IPC-Cmd/lib/IPC/Cmd.pm d76a3537902c2a3097c07e41242e2c01fa8f3288
-IPC::SysV cpan/IPC-SysV/lib/IPC/Msg.pm 88865a2c7a06351cf10e08addd077bbdea02fb60
-IPC::SysV cpan/IPC-SysV/lib/IPC/Semaphore.pm 04f0d11b7d0babf8e41ccc917cccecc4a3ff9050
-IPC::SysV cpan/IPC-SysV/lib/IPC/SharedMem.pm 85dea09a5bb625fc1fdda433909633fda05ea831
-IPC::SysV cpan/IPC-SysV/lib/IPC/SysV.pm 9a0d1c3dcd67321ef1322f29102a1bc7eb91c61c
-IPC::SysV cpan/IPC-SysV/t/ipcsysv.t ee2c95e846ea201afe13c9ec53b09cef62c8ac68
-JSON::PP cpan/JSON-PP/bin/json_pp 22e1b3760ec2b2cfd7ff0d2165f6e88907b94c70
-JSON::PP cpan/JSON-PP/lib/JSON/PP.pm 817730a21b9be855d844e4d26023758960039e99
+Encode cpan/Encode/t/truncated_utf8.t 36e6780c20f1d22ed7c97b1a388a63629617451f
Locale::Maketext::Simple cpan/Locale-Maketext-Simple/lib/Locale/Maketext/Simple.pm 57ed38905791a17c150210cd6f42ead22a7707b6
-Math::BigRat cpan/Math-BigRat/lib/Math/BigRat.pm 6eabc68e04f67694f6fe523e64eb013fc337ca5b
+Math::Complex cpan/Math-Complex/lib/Math/Complex.pm 198ea6c6c584f5ea79a0fd7e9d411d0878f3b2af
+Math::Complex cpan/Math-Complex/t/Complex.t 4f307ed6fc59f1e5fb0e6b11103fc631b6bdb335
+Math::Complex cpan/Math-Complex/t/Trig.t 2682526e23a161d54732c2a66393fe4a234d1865
Memoize cpan/Memoize/Memoize.pm 902092ff91cdec9c7b4bd06202eb179e1ce26ca2
-Parse::CPAN::Meta cpan/Parse-CPAN-Meta/lib/Parse/CPAN/Meta.pm 2de9f411463eda2bd5f57163c12edab9a00dc598
-Parse::CPAN::Meta cpan/Parse-CPAN-Meta/t/02_api.t a692c9a7e52b08a14a954d6c405a22c0dab1cd43
-Pod::Perldoc cpan/Pod-Perldoc/lib/Pod/Perldoc.pm ba3072a6af793b410b02594ed8fe109ac16a1d43
-Scalar-List-Utils cpan/Scalar-List-Utils/lib/List/Util.pm 3b501b7332480b34929bc4df5d48581df3307267
-Scalar-List-Utils cpan/Scalar-List-Utils/lib/List/Util/XS.pm ebd169113d3df79d31ad5535dbd7a538a8c14fd2
-Scalar-List-Utils cpan/Scalar-List-Utils/lib/Scalar/Util.pm def601405bac7a4d6690b8c4207e0f05d65eb4ca
-Scalar-List-Utils cpan/Scalar-List-Utils/lib/Sub/Util.pm 1187d6cd9bccf1264bd53b3a65ea96fad7520068
-Scalar-List-Utils cpan/Scalar-List-Utils/ListUtil.xs 6128584ecb0ae69bb21b16b22daceeffc92df9d9
-Scalar-List-Utils cpan/Scalar-List-Utils/t/product.t 99bf424804f055b99ff2a18b7dcf25bb8b6d2463
-Socket cpan/Socket/Socket.pm 98e38176d745c38282907f391c077298f5a3d0ba
-Socket cpan/Socket/Socket.xs edd4fed212785f11c5c2095a75941dad27d586d9
-Sys::Syslog cpan/Sys-Syslog/Syslog.pm 181d7541a6aa2a0a4d15f5beec32d16c17c76caf
-Test::Harness cpan/Test-Harness/bin/prove 9b2866928cb1125de2c68f9773b25723e02c54c0
-Test::Harness cpan/Test-Harness/lib/App/Prove.pm a312bbbc97860d5051f06056eb30b985b15ee57c
-Test::Harness cpan/Test-Harness/lib/App/Prove/State.pm f4f7d11878eae1fd81d9c3d82097ddfd43b679a1
-Test::Harness cpan/Test-Harness/lib/App/Prove/State/Result.pm 374f5be770e2709c744ddf77927b73ab0f644219
-Test::Harness cpan/Test-Harness/lib/App/Prove/State/Result/Test.pm d3a2ef3916946e0880ffd00356b3ed0feb589029
-Test::Harness cpan/Test-Harness/lib/TAP/Base.pm 38c1bbc33e1e28919dd905ee7f416c2f1cd2014b
-Test::Harness cpan/Test-Harness/lib/TAP/Formatter/Base.pm 92783e20c15f982a25025c1fd7dc512071aa2671
-Test::Harness cpan/Test-Harness/lib/TAP/Formatter/Color.pm f4f02b5a4f8f11c0e9fa95d06e9bc8f14a172555
-Test::Harness cpan/Test-Harness/lib/TAP/Formatter/Console.pm 36fec1e9ca70e359cf1cf110cbdf86040686e635
-Test::Harness cpan/Test-Harness/lib/TAP/Formatter/Console/ParallelSession.pm 579df1507c22c5a6c8116943ba7b084dd557a2a3
-Test::Harness cpan/Test-Harness/lib/TAP/Formatter/Console/Session.pm 98f620cadecbe7529b62addf35e16be72b066bcf
-Test::Harness cpan/Test-Harness/lib/TAP/Formatter/File.pm 531f646edd5d5768a02728be5c3c1786df17a328
-Test::Harness cpan/Test-Harness/lib/TAP/Formatter/File/Session.pm cb8b1dd0039381c41b11ba186ed25969fd33b654
-Test::Harness cpan/Test-Harness/lib/TAP/Formatter/Session.pm ce57cb909e8e9b1a8263939da1b4eac6ac5df6e5
-Test::Harness cpan/Test-Harness/lib/TAP/Harness.pm dbbeef74569163d00c8befccf9f2670bafa2dc2f
-Test::Harness cpan/Test-Harness/lib/TAP/Harness/Env.pm 7743d40504d23867fe5f6b3967f7c907c530074f
-Test::Harness cpan/Test-Harness/lib/TAP/Object.pm 19b27d7e30f6e69c3ffaec939418978ba7b0bc7c
-Test::Harness cpan/Test-Harness/lib/TAP/Parser.pm a97c90c41959194ad828511a2b5f6ad068fd2f23
-Test::Harness cpan/Test-Harness/lib/TAP/Parser/Aggregator.pm bf32f2c834f5242af1db2b5f02419451e87c3b68
-Test::Harness cpan/Test-Harness/lib/TAP/Parser/Grammar.pm 2626f555bcf238e4c6a5a0e07eb016f38520d705
-Test::Harness cpan/Test-Harness/lib/TAP/Parser/Iterator.pm 6b2729f8883718683b0a2d7cd75d734501360e7b
-Test::Harness cpan/Test-Harness/lib/TAP/Parser/Iterator/Array.pm c4ebe427ef24bfbcfcf74459cb74249bf84ec92a
-Test::Harness cpan/Test-Harness/lib/TAP/Parser/Iterator/Process.pm 43c08c6ba2a2e599f503cfec086f8ac9b2b8a8f1
-Test::Harness cpan/Test-Harness/lib/TAP/Parser/Iterator/Stream.pm f28ccf211ebdb527b558a83d6969d96ba13414af
-Test::Harness cpan/Test-Harness/lib/TAP/Parser/IteratorFactory.pm 561ba7be34786134f70b67e73e604de1c934f9bb
-Test::Harness cpan/Test-Harness/lib/TAP/Parser/Multiplexer.pm 7417eede2c1554b94dfbbbce5a90dc6e4d8bbbe6
-Test::Harness cpan/Test-Harness/lib/TAP/Parser/Result.pm be74c62222a90404d2d6586f77a4f66bafee2879
-Test::Harness cpan/Test-Harness/lib/TAP/Parser/Result/Bailout.pm 89a3c49f5b03501813b5a6133ca2ca3fa25f8648
-Test::Harness cpan/Test-Harness/lib/TAP/Parser/Result/Comment.pm e49dde84304dc1a034fd1a5c38f18bed99c1b4d4
-Test::Harness cpan/Test-Harness/lib/TAP/Parser/Result/Plan.pm cf334e85a8e77fe6f830744f70e4c9c1a24c36a5
-Test::Harness cpan/Test-Harness/lib/TAP/Parser/Result/Pragma.pm b1587f903cc7937190789b1de8bdf20d6e30ff28
-Test::Harness cpan/Test-Harness/lib/TAP/Parser/Result/Test.pm dff1422b7cc8ea0c24aedef020fc2266144eb1ea
-Test::Harness cpan/Test-Harness/lib/TAP/Parser/Result/Unknown.pm 0959ff5602d340f92be31f01ee2f890028784a8d
-Test::Harness cpan/Test-Harness/lib/TAP/Parser/Result/Version.pm 8491bba7a07568374cafd8fc40cb08d9b4458e9b
-Test::Harness cpan/Test-Harness/lib/TAP/Parser/Result/YAML.pm 7dc7b96d882dce5e20696305705f4f0e7462d8bc
-Test::Harness cpan/Test-Harness/lib/TAP/Parser/ResultFactory.pm 1f64e8390990ad99eea3d0fb202487ba973e9a2d
-Test::Harness cpan/Test-Harness/lib/TAP/Parser/Scheduler.pm 471ea7d1db535364dd86ab106771c652742c0c05
-Test::Harness cpan/Test-Harness/lib/TAP/Parser/Scheduler/Job.pm 3d7ee9db8277b50fcebcf239898a8023791b8654
-Test::Harness cpan/Test-Harness/lib/TAP/Parser/Scheduler/Spinner.pm 1c04e88f45719f92961821d9ed65e80800986893
-Test::Harness cpan/Test-Harness/lib/TAP/Parser/Source.pm c820d95e2a4797893eb717c07b72742e6e0a1542
-Test::Harness cpan/Test-Harness/lib/TAP/Parser/SourceHandler.pm b25f8e7d1a9f2215175618a989df39d78a878df5
-Test::Harness cpan/Test-Harness/lib/TAP/Parser/SourceHandler/Executable.pm 5f542b39c98ebe3ee6d906e38b8944abbac5188b
-Test::Harness cpan/Test-Harness/lib/TAP/Parser/SourceHandler/File.pm 6aa5762461cb06f3db57d13de0fc771d5563c871
-Test::Harness cpan/Test-Harness/lib/TAP/Parser/SourceHandler/Handle.pm edc91794e1fbefbbf8e919658fe7a5bbd7c84916
-Test::Harness cpan/Test-Harness/lib/TAP/Parser/SourceHandler/Perl.pm 809d6d6779c2aed829a9a087ecb219fbcc7fbfb5
-Test::Harness cpan/Test-Harness/lib/TAP/Parser/SourceHandler/RawTAP.pm d01e1e2a87733ab45f387e34803f821ed184e5cc
-Test::Harness cpan/Test-Harness/lib/TAP/Parser/YAMLish/Reader.pm 76771092dd2b87a2adb7ff20b7ae77cbae7d0563
-Test::Harness cpan/Test-Harness/lib/TAP/Parser/YAMLish/Writer.pm bf1fbfff9720330886651f183959a5db56daeea0
-Test::Harness cpan/Test-Harness/lib/Test/Harness.pm da2d76ba673372da129060c9d0adb8cf0d91f9f7
+NEXT cpan/NEXT/lib/NEXT.pm 2c83d03ee361816e53ccb931137d314ab878d19f
+NEXT cpan/NEXT/t/next.t 66fd60eb0f75b6f3eea95d1dee745f9a7a348146
+Net::Ping dist/Net-Ping/t/000_load.t deff5dc2ca54dae28cb19d3631427db127279ac2
+Net::Ping dist/Net-Ping/t/001_new.t 90c9d63509b3efc8941449fbd1ca8b807fa42040
+Net::Ping dist/Net-Ping/t/500_ping_icmp.t a003daa5eaf215e58234786bb1fbfbebf669bf44
+Pod::Checker cpan/Pod-Checker/t/pod/contains_bad_pod.xr 73538fd80dfe6e19ad561fe034009b44460208f6
+Pod::Checker cpan/Pod-Checker/t/pod/selfcheck.t 8ce3cfd38e4b9bcf5bc7fe7f2a14195e49aed7d8
+Pod::Checker cpan/Pod-Checker/t/pod/testcmp.pl a0cd5c8eca775c7753f4464eee96fa916e3d8a16
+Pod::Checker cpan/Pod-Checker/t/pod/testpchk.pl b2072c7f4379fd050e15424175d7cac5facf5b3b
+Pod::Perldoc cpan/Pod-Perldoc/lib/Pod/Perldoc.pm 582be34c077c9ff44d99914724a0cc2140bcd48c
+autodie cpan/autodie/lib/autodie/exception.pm b99e4e35a9ed36de94d54437888822ced4936207
+autodie cpan/autodie/lib/autodie/hints.pm e1998fec61fb4e82fe46585bd82c73200be6f262
+autodie cpan/autodie/t/exceptions.t ad315a208f875e06b0964012ce8d65daa438c036
+autodie cpan/autodie/t/lib/Hints_pod_examples.pm 6944c218e9754b3613c8d0c90a5ae8aceccb5c99
autodie cpan/autodie/t/mkdir.t 9e70d2282a3cc7d76a78bf8144fccba20fb37dac
-bignum cpan/bignum/lib/bigint.pm 56330354995409dab5073ea92d749f8727e265db
-version vutil.c 45ff345c3d8424ba63e130a223848f5b336bd87b
-bignum cpan/bignum/lib/bignum.pm e999973f78e6be12282c11bb6328246b31a9576b
-bignum cpan/bignum/lib/bigrat.pm 7fccc9df30e43dbbae6e5ea91b26c8046545c9a9
-bignum cpan/bignum/lib/Math/BigFloat/Trace.pm a6b4b995e18f4083252e6dc72e9bef69671893dd
-bignum cpan/bignum/lib/Math/BigInt/Trace.pm d9596963673760cae3eeeb752c1eeeec50bb2290
-libnet cpan/libnet/lib/Net/Cmd.pm a44a10c939a4c35f923c4638054178c32f1d283a
-libnet cpan/libnet/lib/Net/Config.pm 9bd49bf4de0dc438bceee0ef4baf8ba7a6633327
-libnet cpan/libnet/lib/Net/Domain.pm 1bbed50f70fd1ff3e1cdf087b19a9349cddfaced
-libnet cpan/libnet/lib/Net/FTP.pm 40dba553c8d44e1530daec2d07a6e50910401f2e
-libnet cpan/libnet/lib/Net/FTP/A.pm c570b10730b168990034dcf9cb00e305a100f336
-libnet cpan/libnet/lib/Net/FTP/dataconn.pm ebb554781e74b37dbd57883cff3b668f436dcfe4
-libnet cpan/libnet/lib/Net/FTP/E.pm 1ec473a8601f7c8d1584c833202f90744b471f41
-libnet cpan/libnet/lib/Net/FTP/I.pm b1d50346092915ca177af988917dbae54b1bd000
-libnet cpan/libnet/lib/Net/FTP/L.pm ac1599c775faee0474710e4f75051c8949f13df2
-libnet cpan/libnet/lib/Net/Netrc.pm 009cfc08f8a5bf247257acb64a21e1b6ad8b2c9c
-libnet cpan/libnet/lib/Net/NNTP.pm 6325fc05fd9ef81dc8d461a77b2a3f56ad1ae114
-libnet cpan/libnet/lib/Net/POP3.pm 2d8065646df80061dae5a9e3465a36a6557165fd
-libnet cpan/libnet/lib/Net/SMTP.pm f3ed7a177b49ee0ba65ac1c414de797cdbbe6886
-libnet cpan/libnet/lib/Net/Time.pm b3df8bbaa3bc253fbf77e8386c59a1b2aae13627
-version cpan/version/lib/version.pm ff75e2076be10bd4c05133cd979fda0b38ca8653
+experimental cpan/experimental/t/basic.t a073ea03ccc98dec496569f3648ab01a5fe1c7a0
+perlfaq cpan/perlfaq/lib/perlfaq5.pod bcc1b6af3b6dff3973643acf8d5e741463374123
+perlfaq cpan/perlfaq/lib/perlfaq8.pod bffbc0c8fa828aead24e0891a5e789369a8e0743
+podlators pod/perlpodstyle.pod c6500c9950b46e8228d4adbc09a3ee2ef23de2d0
+version cpan/version/lib/version.pm a61f969d55dd73ae2d7a604f2c9bbef1ea82b820
+version vxs.inc f26c23f0279fb64c77ad814af906c04930cff81c
diff --git a/gnu/usr.bin/perl/t/porting/customized.t b/gnu/usr.bin/perl/t/porting/customized.t
index 45fcafb1009..d425e5b775a 100644
--- a/gnu/usr.bin/perl/t/porting/customized.t
+++ b/gnu/usr.bin/perl/t/porting/customized.t
@@ -13,6 +13,7 @@ BEGIN {
@INC = qw(lib Porting t);
require 'test.pl';
skip_all("pre-computed SHA1 won't match under EBCDIC") if $::IS_EBCDIC;
+ skip_all("This distro may have modified some files in cpan/. Skipping validation.") if $ENV{'PERL_BUILD_PACKAGING'};
}
use strict;
@@ -73,10 +74,16 @@ my $data_fh;
if ( $regen ) {
open $data_fh, '>:raw', $customised or die "Can't open $customised";
+ print $data_fh <<'#';
+# Regenerate this file using:
+# cd t
+# ./perl -I../lib porting/customized.t --regen
+#
}
else {
open $data_fh, '<:raw', $customised or die "Can't open $customised";
while (<$data_fh>) {
+ next if /^#/;
chomp;
my ($module,$file,$sha) = split ' ';
$customised{ $module }->{ $file } = $sha;
diff --git a/gnu/usr.bin/perl/t/porting/diag.t b/gnu/usr.bin/perl/t/porting/diag.t
index ccde8cb13f9..22cde90a9cf 100755
--- a/gnu/usr.bin/perl/t/porting/diag.t
+++ b/gnu/usr.bin/perl/t/porting/diag.t
@@ -9,7 +9,7 @@ use warnings;
use strict;
use Config;
-require 't/test.pl';
+require './t/test.pl';
if ( $Config{usecrosscompile} ) {
skip_all( "Not all files are available during cross-compilation" );
@@ -26,7 +26,7 @@ plan('no_plan');
my $make_exceptions_list = ($ARGV[0]||'') eq '--make-exceptions-list'
and shift;
-require 'regen/embed_lib.pl';
+require './regen/embed_lib.pl';
# Look for functions that look like they could be diagnostic ones.
my @functions;
@@ -49,7 +49,7 @@ my $source_msg_re =
"(?<routine>\\bDIE\\b|$function_re)";
my $text_re = '"(?<text>(?:\\\\"|[^"]|"\s*[A-Z_]+\s*")*)"';
my $source_msg_call_re = qr/$source_msg_re(?:_nocontext)? \s*
- \((?:aTHX_)? \s*
+ \( (?: \s* Perl_form \( )? (?:aTHX_)? \s*
(?:packWARN\d*\((?<category>.*?)\),)? \s*
$text_re /x;
my $bad_version_re = qr{BADVERSION\([^"]*$text_re};
@@ -305,6 +305,8 @@ sub check_file {
# Sometimes the regexp will pick up too much for the category
# e.g., WARN_UNINITIALIZED), PL_warn_uninit_sv ... up to the next )
$category && $category =~ s/\).*//s;
+ # Special-case yywarn
+ /yywarn/ and $category = 'syntax';
if (/win32_croak_not_implemented\(/) {
$name .= " not implemented!"
}
@@ -685,7 +687,6 @@ Usage: VMS::Filespec::unixrealpath(spec)
Usage: VMS::Filespec::vmsify(spec)
Usage: VMS::Filespec::vmspath(spec)
Usage: VMS::Filespec::vmsrealpath(spec)
-Use of inherited AUTOLOAD for non-method %s::%s() is deprecated
utf8 "\x%X" does not map to Unicode
Value of logical "%s" too long. Truncating to %i bytes
waitpid: process %x is not a child of process %x
diff --git a/gnu/usr.bin/perl/t/porting/dual-life.t b/gnu/usr.bin/perl/t/porting/dual-life.t
index 9aa60c2ea6f..4ad2256ef29 100644
--- a/gnu/usr.bin/perl/t/porting/dual-life.t
+++ b/gnu/usr.bin/perl/t/porting/dual-life.t
@@ -24,12 +24,6 @@ use File::Spec::Functions;
# Exceptions that are found in dual-life bin dirs but aren't
# installed by default; some occur only during testing:
my $not_installed = qr{^(?:
- \.\./cpan/Archive-Tar/bin/ptar.*
- |
- \.\./cpan/JSON-PP/bin/json_pp
- |
- \.\./cpan/IO-Compress/bin/zipdetails
- |
\.\./cpan/Encode/bin/u(?:cm(?:2table|lint|sort)|nidump)
|
\.\./cpan/Module-(?:Metadata|Build)
@@ -72,9 +66,11 @@ for my $f ( @programs ) {
next if $f =~ $not_installed;
my $bn = basename($f);
if(grep { /\A(?i:$bn)\z/ } keys %dist_dir_exe) {
- ok( -f "$dist_dir_exe{lc $bn}$ext", $f);
+ my $exe_file = "$dist_dir_exe{lc $bn}$ext";
+ ok( -f $exe_file, "Verify -f '$exe_file'");
} else {
- ok( -f catfile('..', 'utils', "$bn$ext"), $f );
+ my $utils_file = catfile('..', 'utils', "$bn$ext");
+ ok( -f $utils_file, "Verify -f '$utils_file'" );
}
}
diff --git a/gnu/usr.bin/perl/t/porting/globvar.t b/gnu/usr.bin/perl/t/porting/globvar.t
index bc0203a3b57..1db0ae7ffee 100644
--- a/gnu/usr.bin/perl/t/porting/globvar.t
+++ b/gnu/usr.bin/perl/t/porting/globvar.t
@@ -4,7 +4,7 @@ use TestInit qw(T);
use strict;
use Config;
-require 't/test.pl';
+require './t/test.pl';
skip_all("Code to read symbols not ported to $^O")
if $^O eq 'VMS' or $^O eq 'MSWin32';
@@ -15,7 +15,7 @@ my %skip = map { ("PL_$_", 1) }
qw(
DBcv bitcount cshname force_link_funcs generation lastgotoprobe
mod_latin1_uc modcount no_symref_sv uudmap
- watchaddr watchok warn_uninit_sv
+ watchaddr watchok warn_uninit_sv hash_chars
);
$skip{PL_hash_rand_bits}= $skip{PL_hash_rand_bits_enabled}= 1; # we can be compiled without these, so skip testing them
@@ -61,6 +61,13 @@ foreach my $file (map {$_ . $Config{_o}} qw(globals regcomp)) {
close $fh or die "Problem running nm $file";
}
+unless ($Config{d_double_has_inf}) {
+ $skip{PL_inf}++;
+}
+unless ($Config{d_double_has_nan}) {
+ $skip{PL_nan}++;
+}
+
foreach (sort keys %exported) {
SKIP: {
skip("We dont't export '$_' (Perl not built with this enabled?)",1) if $skip{$_};
diff --git a/gnu/usr.bin/perl/t/porting/known_pod_issues.dat b/gnu/usr.bin/perl/t/porting/known_pod_issues.dat
index 162de81cbc0..e89d5c02a13 100644
--- a/gnu/usr.bin/perl/t/porting/known_pod_issues.dat
+++ b/gnu/usr.bin/perl/t/porting/known_pod_issues.dat
@@ -17,7 +17,9 @@ access(2)
Algorithm::C3
Algorithm::Permute
AnyEvent
+Apache::DProf
Apache::MP3
+Apache::SmallProf
Archive::Extract
Array::Base
atan2(3)
@@ -48,12 +50,14 @@ Class::Tiny
Class::Tiny::Antlers
Classic::Perl
clearerr(3)
+clock(3)
Clone
closedir(2)
connect(2)
Coro
cpan2dist(1)
CPAN::Changes::Spec
+CPAN::Uploader
cpanp(1)
CPANPLUS
crypt(3)
@@ -68,6 +72,7 @@ Data::Float
Data::Structure::Util
Data::Types
Data::Util
+Date::Parse
Date::Pcalc
DateTime
DB_File(3)
@@ -75,6 +80,7 @@ DBI
DBIx::Profile
dbm(3)
dbm_open(3)
+Devel::Apache::Profiler
Devel::CallParser
Devel::Callsite
Devel::Cover
@@ -82,6 +88,7 @@ Devel::DProf
Devel::DTrace::Provider
Devel::InnerPackage
Devel::NYTProf
+Devel::NYTProf::Apache
Devel::PPPort
Devel::SawAmpersand
Devel::Spy
@@ -107,6 +114,7 @@ File::Findgrep
File::Map
File::MMagic
File::ShareDir
+Filter::Encoding
find(1)
flock(2)
flock(3)
@@ -139,6 +147,7 @@ ioctl(2)
IPC::Run
IPC::Shareable
IPC::Signal
+ispunct(2)
kill(3)
langinfo(3)
LaTeX::Encode
@@ -151,8 +160,8 @@ Lingua::ZH::Romanize::Pinyin
List::Gather
listen(2)
local::lib
+localeconv(3)
lockf(3)
-Log::Agent
Log::Message
Log::Message::Config
Log::Message::Handlers
@@ -160,7 +169,9 @@ Log::Message::Item
Log::Message::Simple
lseek(2)
LWP::ConsoleLogger
+Mail::Mailer
Mail::Send
+Mail::Sendmail
Mail::SpamAssassin
man(5)
man(7)
@@ -173,6 +184,7 @@ Math::Random::MT::Perl
Math::Random::Secure
Math::TrulyRandom
md5sum(1)
+Method::Signatures
mmap(2)
Module::Build
Module::CPANTS::Analyse
@@ -226,10 +238,10 @@ prctl(2)
printenv(1)
printf(3)
provide
-pstruct
ptar(1)
ptargrep(1)
pwd_mkdb(8)
+querylocale(3)
RDF::Trine
read(2)
Readonly
@@ -267,6 +279,7 @@ SOM
splain
sprintf(3)
stat(2)
+strftime(3)
strictures
String::Base
String::Scanf
@@ -312,19 +325,24 @@ Want
wget(1)
Win32::Locale
write(2)
+WWW::Mechanize
XML::LibXML
YAML
YAML::Syck
YAML::Tiny
+dist/data-dumper/changes Verbatim line length including indents exceeds 79 by 1
dist/data-dumper/dumper.pm ? Should you be using L<...> instead of 1
+dist/devel-ppport/parts/inc/ppphdoc Unknown directive: =dontwarn 1
+dist/devel-ppport/parts/inc/ppphdoc Unknown directive: =implementation 1
+dist/devel-ppport/parts/inc/ppphdoc Unknown directive: =provides 1
+dist/exporter/lib/exporter.pm Verbatim line length including indents exceeds 79 by 2
+dist/net-ping/lib/net/ping.pm Apparent broken link 1
ext/amiga-exec/exec.pm Verbatim line length including indents exceeds 79 by 1
-ext/devel-peek/peek.pm ? Should you be using L<...> instead of 2
ext/dynaloader/dynaloader.pm Verbatim line length including indents exceeds 79 by 1
ext/hash-util/lib/hash/util.pm Verbatim line length including indents exceeds 79 by 2
ext/pod-html/testdir/perlpodspec-copy.pod Verbatim line length including indents exceeds 79 by 2
ext/pod-html/testdir/perlvar-copy.pod ? Should you be using L<...> instead of 3
ext/pod-html/testdir/perlvar-copy.pod Verbatim line length including indents exceeds 79 by 6
-ext/vms-dclsym/dclsym.pm ? Should you be using L<...> instead of 1
ext/vms-filespec/lib/vms/filespec.pm Verbatim line length including indents exceeds 79 by 1
install ? Should you be using F<...> or maybe L<...> instead of 1
pod/perl.pod Verbatim line length including indents exceeds 79 by 8
@@ -334,15 +352,16 @@ pod/perlce.pod Verbatim line length including indents exceeds 79 by 3
pod/perldebguts.pod Verbatim line length including indents exceeds 79 by 27
pod/perldebtut.pod Verbatim line length including indents exceeds 79 by 3
pod/perldtrace.pod Verbatim line length including indents exceeds 79 by 7
+pod/perlgit.pod ? Should you be using F<...> or maybe L<...> instead of 1
pod/perlgit.pod Verbatim line length including indents exceeds 79 by 1
pod/perlguts.pod ? Should you be using L<...> instead of 1
pod/perlhack.pod ? Should you be using L<...> instead of 1
+pod/perlhack.pod Verbatim line length including indents exceeds 79 by 2
pod/perlhist.pod Verbatim line length including indents exceeds 79 by 1
pod/perlhpux.pod Verbatim line length including indents exceeds 79 by 1
pod/perlinterp.pod ? Should you be using L<...> instead of 1
pod/perlirix.pod Verbatim line length including indents exceeds 79 by 1
pod/perlmacosx.pod Verbatim line length including indents exceeds 79 by 3
-pod/perlmodlib.pod Verbatim line length including indents exceeds 79 by 3
pod/perlmroapi.pod ? Should you be using L<...> instead of 1
pod/perlos2.pod ? Should you be using L<...> instead of 2
pod/perlos2.pod Verbatim line length including indents exceeds 79 by 5
@@ -354,9 +373,9 @@ pod/perlsolaris.pod Verbatim line length including indents exceeds 79 by 13
pod/perltie.pod Verbatim line length including indents exceeds 79 by 3
pod/perltru64.pod Verbatim line length including indents exceeds 79 by 1
pod/perlwin32.pod Verbatim line length including indents exceeds 79 by 7
-porting/epigraphs.pod Verbatim line length including indents exceeds 79 by 16
+porting/epigraphs.pod Verbatim line length including indents exceeds 79 by -1
porting/release_managers_guide.pod Verbatim line length including indents exceeds 79 by 1
-utils/encguess There is no NAME 1
+porting/todo.pod ? Should you be using F<...> or maybe L<...> instead of 1
lib/benchmark.pm Verbatim line length including indents exceeds 79 by 2
lib/config.pod ? Should you be using L<...> instead of -1
lib/perl5db.pl ? Should you be using L<...> instead of 1
diff --git a/gnu/usr.bin/perl/t/porting/manifest.t b/gnu/usr.bin/perl/t/porting/manifest.t
index e7f205b6933..7adb06198de 100755
--- a/gnu/usr.bin/perl/t/porting/manifest.t
+++ b/gnu/usr.bin/perl/t/porting/manifest.t
@@ -19,7 +19,7 @@
# which will output "'MANIFEST' is NOT sorted properly" but which will
# correct the problem; or:
#
-# make manifest
+# make manisort
#
# which will output "WARNING: re-sorting MANIFEST" but which will also
# correct the problem.
@@ -30,7 +30,7 @@ BEGIN {
}
use TestInit qw(T); # T is chdir to the top level
-require 't/test.pl';
+require './t/test.pl';
skip_all("Cross-compiling, the entire source might not be available")
if $Config{usecrosscompile};
@@ -85,7 +85,8 @@ SKIP: {
SKIP: {
find_git_or_skip(6);
- chomp(my @repo= grep { !/\.gitignore$/ } `git ls-files`);
+ my %seen; # De-dup ls-files output (can appear more than once)
+ chomp(my @repo= grep { !/\.gitignore$/ && !$seen{$_}++ } `git ls-files`);
skip("git ls-files didnt work",3)
if !@repo;
is( 0+@repo, 0+@files, "git ls-files gives the same number of files as MANIFEST lists");
diff --git a/gnu/usr.bin/perl/t/porting/pod_rules.t b/gnu/usr.bin/perl/t/porting/pod_rules.t
index 46a01140038..894b153e88e 100644
--- a/gnu/usr.bin/perl/t/porting/pod_rules.t
+++ b/gnu/usr.bin/perl/t/porting/pod_rules.t
@@ -25,7 +25,7 @@ BEGIN {
chdir '..';
}
@INC = qw(lib .); # Special @INC.
- require 't/test.pl';
+ require './t/test.pl';
}
use strict;
diff --git a/gnu/usr.bin/perl/t/porting/podcheck.t b/gnu/usr.bin/perl/t/porting/podcheck.t
index 8b049e4f103..da52e26f5d2 100755
--- a/gnu/usr.bin/perl/t/porting/podcheck.t
+++ b/gnu/usr.bin/perl/t/porting/podcheck.t
@@ -1,5 +1,7 @@
#!/usr/bin/perl -w
+package main;
+
BEGIN {
chdir 't';
@INC = "../lib";
@@ -27,6 +29,10 @@ BEGIN {
print "1..0 # $^O cannot handle this test\n";
exit(0);
}
+ if ( $ENV{'PERL_BUILD_PACKAGING'} ) {
+ print "1..0 # This distro may have modified some files in cpan/. Skipping validation. \n";
+ exit 0;
+ }
require '../regen/regen_lib.pl';
}
@@ -56,8 +62,7 @@ pods in the distribution workspace, except certain known special ones
(specified below). It does additional checking beyond that done by
Pod::Checker, and keeps a database of known potential problems, and will
fail a pod only if the number of such problems differs from that given in the
-database. It also suppresses the C<(section) deprecated> message from
-Pod::Checker, since specifying the man page section number is quite proper to do.
+database.
The additional checks it always makes are:
@@ -92,10 +97,10 @@ missing from the C<LE<lt>E<gt>> pod command.
A pod can't be linked to unless it has a unique name.
And a NAME should have a dash and short description after it.
-=item =encoding statement issues
+=item Occurrences of the Unicode replacement character
-This indicates if an C<=encoding> statement should be present, or moved to the
-front of the pod.
+L<Pod::Simple> replaces bytes that aren't valid according to the document's
+encoding (declared or auto-detected) with C<\N{REPLACEMENT CHARACTER}>.
=back
@@ -363,10 +368,9 @@ my $broken_link = "Apparent broken link";
my $broken_internal_link = "Apparent internal link is missing its forward slash";
my $multiple_targets = "There is more than one target";
my $duplicate_name = "Pod NAME already used";
-my $need_encoding = "Should have =encoding statement because have non-ASCII";
-my $encoding_first = "=encoding must be first command (if present)";
my $no_name = "There is no NAME";
my $missing_name_description = "The NAME should have a dash and short description after it";
+my $replacement_character = "Unicode replacement character found";
# the pedantic warnings messages
my $line_length = "Verbatim line length including indents exceeds $MAX_LINE_LENGTH by";
my $C_not_linked = "? Should you be using L<...> instead of";
@@ -385,9 +389,6 @@ my $dl_ext = $Config{'dlext'}; $dl_ext =~ tr/.//d;
my %excluded_files = (
canonicalize("lib/unicore/mktables") => 1,
canonicalize("Porting/make-rmg-checklist") => 1,
- # this one is a POD, but unfinished, so skip
- # it for now
- canonicalize("Porting/perl5200delta.pod") => 1,
canonicalize("Porting/perldelta_template.pod") => 1,
canonicalize("regen/feature.pl") => 1,
canonicalize("regen/warnings.pl") => 1,
@@ -431,14 +432,39 @@ my $non_pods = qr/ (?: \.
| $dl_ext # dynamic libraries
| gif # GIF images (example files from CGI.pm)
| eg # examples from libnet
+ | core .*
)
$
) | ~$ | \ \(Autosaved\)\.txt$ # Other editor droppings
| ^cxx\$demangler_db\.$ # VMS name mangler database
| ^typemap\.?$ # typemap files
| ^(?i:Makefile\.PL)$
+ | ^core (?: $ | \. .* )
/x;
+# Matches something that looks like a file name, but is enclosed in C<...>
+my $C_path_re = qr{ ^
+ # exclude various things that have slashes
+ # in them but aren't paths
+ (?!
+ (?: (?: s | qr | m | tr | y ) / ) # regexes
+ | \d+/\d+ \b # probable fractions
+ | (?: [LF] < )+
+ | OS/2 \b
+ | Perl/Tk \b
+ | origin/blead \b
+ | origin/maint \b
+
+ )
+ /? # Optional initial slash
+ \w+ # First component of path, doesn't begin with
+ # a minus
+ (?: / [-\w]+ )+ # Subsequent path components
+ (?: \. \w+ )? # Optional trailing dot and suffix
+ >* # Any enclosed L< F< have matching closing >
+ $
+ }x;
+
# '.PL' files should be excluded, as they aren't final pods, but often contain
# material used in generating pods, and so can look like a pod. We can't use
# the regexp above because case sensisitivity is important for these, as some
@@ -464,20 +490,19 @@ close $manifest_fh, or die "Can't close $MANIFEST";
# Pod::Checker messages to suppress
my @suppressed_messages = (
- "(section) in", # Checker is wrong to flag this
- "multiple occurrence of link target", # We catch independently the ones
- # that are real problems.
- "unescaped <>",
- "Entity number out of range", # Checker outputs this for anything above
- # 255, but in fact all Unicode is valid
- "No items in =over", # ie a blockquote
+ # We catch independently the ones that are real problems.
+ qr/multiple occurrences \(\d+\) of link target/,
+
+ "unescaped <>", # Not every '<' or '>' need be escaped
+ qr/No items in =over/, # i.e., a blockquote, which we consider legal
);
sub suppressed {
# Returns bool as to if input message is one that is to be suppressed
my $message = shift;
- return grep { $message =~ /^\Q$_/i } @suppressed_messages;
+
+ return grep { $message =~ /^$_/i } @suppressed_messages;
}
{ # Closure to contain a simple subset of test.pl. This is to get rid of the
@@ -518,16 +543,20 @@ sub suppressed {
last SKIP;
}
- sub note {
- my $message = shift;
+ sub _note {
+ my ($andle, $message) = @_;
chomp $message;
- print $message =~ s/^/# /mgr;
- print "\n";
+ print $andle $message =~ s/^/# /mgr;
+ print $andle "\n";
return;
}
+ sub note { unshift @_, \*STDOUT; goto &_note }
+
+ sub diag { unshift @_, \*STDERR; goto &_note }
+
END {
if ($planned && $planned != $current_test) {
print STDERR
@@ -627,37 +656,54 @@ package My::Pod::Checker { # Extend Pod::Checker
# Uses inside out hash to protect from typos
# For new fields, remember to add to destructor DESTROY()
- my %indents; # Stack of indents from =over's in effect for
- # current line
+ my %CFL_text; # The text comprising the current C<>, F<>, or L<>
+ my %C_text; # If defined, are in a C<> section, and includes
+ # the accumulated text from that
my %current_indent; # Current line's indent
my %filename; # The pod is store in this file
- my %skip; # is SKIP set for this pod
+ my %in_CFL; # count of stacked C<>, F<>, L<> directives
+ my %indents; # Stack of indents from =over's in effect for
+ # current line
+ my %in_for; # true if in a =for or =begin
my %in_NAME; # true if within NAME section
my %in_begin; # true if within =begin section
+ my %in_X; # true if in a X<>
my %linkable_item; # Bool: if the latest =item is linkable. It isn't
# for bullet and number lists
my %linkable_nodes; # Pod::Checker adds all =items to its node list,
# but not all =items are linkable to
- my %seen_encoding_cmd; # true if have =encoding earlier
+ my %running_CFL_text; # The current text that is being accumulated until
+ # an end_FOO is found, and this includes any C<>,
+ # F<>, or L<> directives.
+ my %running_simple_text; # The currentt text that is being accumulated
+ # until an end_FOO is found, and all directives
+ # have been expanded into plain text
my %command_count; # Number of commands seen
my %seen_pod_cmd; # true if have =pod earlier
- my %warned_encoding; # true if already have warned about =encoding
- # problems
+ my %skip; # is SKIP set for this pod
+ my %start_line; # the first input line number in the the thing
+ # currently being worked on
sub DESTROY {
my $addr = Scalar::Util::refaddr $_[0];
+ delete $CFL_text{$addr};
+ delete $C_text{$addr};
delete $command_count{$addr};
delete $current_indent{$addr};
delete $filename{$addr};
delete $in_begin{$addr};
+ delete $in_CFL{$addr};
delete $indents{$addr};
+ delete $in_for{$addr};
delete $in_NAME{$addr};
+ delete $in_X{$addr};
delete $linkable_item{$addr};
delete $linkable_nodes{$addr};
- delete $seen_encoding_cmd{$addr};
+ delete $running_CFL_text{$addr};
+ delete $running_simple_text{$addr};
delete $seen_pod_cmd{$addr};
delete $skip{$addr};
- delete $warned_encoding{$addr};
+ delete $start_line{$addr};
return;
}
@@ -672,11 +718,11 @@ package My::Pod::Checker { # Extend Pod::Checker
$current_indent{$addr} = 0;
$filename{$addr} = $filename;
$in_begin{$addr} = 0;
+ $in_X{$addr} = 0;
+ $in_CFL{$addr} = 0;
$in_NAME{$addr} = 0;
$linkable_item{$addr} = 0;
- $seen_encoding_cmd{$addr} = 0;
$seen_pod_cmd{$addr} = 0;
- $warned_encoding{$addr} = 0;
return $self;
}
@@ -778,105 +824,173 @@ package My::Pod::Checker { # Extend Pod::Checker
#push @{$problems{$self->get_filename}{$message}}, $opts;
}
- sub check_encoding { # Does it need an =encoding statement?
- my ($self, $paragraph, $line_num, $pod_para) = @_;
+ # In the next subroutines, we keep track of the text of the current
+ # innermost thing, like F<fooC<bar>baz>. The things we care about raising
+ # messages about in this program all come from a single sequence of
+ # characters uninterrupted by other pod commands. Therefore we don't have
+ # to worry about recursion, and we can just set the string we care about
+ # to empty on entrance to each command.
+
+ sub handle_text {
+ # This is called by the parent class to deal with any straight text.
+ # We mostly just append this to the running current value which will
+ # be dealt with upon the end of the current construct, like a
+ # paragraph. But certain things don't contribute to checking the pod
+ # and are ignored. We also have set flags to indicate this text is
+ # going towards constructing certain constructs, and handle those
+ # specially.
- # Do nothing if there is an =encoding in the file, or if the line
- # doesn't require an =encoding, or have already warned.
+ my $self = shift;
my $addr = Scalar::Util::refaddr $self;
- return if $seen_encoding_cmd{$addr}
- || $warned_encoding{$addr}
- || $paragraph !~ /\P{ASCII}/;
-
- $warned_encoding{$addr} = 1;
- my ($file, $line) = $pod_para->file_line;
- $self->poderror({ -line => $line, -file => $file,
- -msg => $need_encoding
- });
- return;
- }
- sub verbatim {
- my ($self, $paragraph, $line_num, $pod_para) = @_;
- $self->check_encoding($paragraph, $line_num, $pod_para);
+ my $return = $self->SUPER::handle_text(@_);
- $self->SUPER::verbatim($paragraph, $line_num, $pod_para);
+ if ($in_X{$addr} || $in_for{$addr}) { # ignore
+ return $return;
+ }
- my $addr = Scalar::Util::refaddr $self;
+ my $text = join "\n", @_;
+ $running_simple_text{$addr} .= $text;
- # Pick up the name, since the parent class doesn't in verbatim
- # NAMEs; so treat as non-verbatim. The parent class only allows one
- # paragraph in a NAME section, so if there is an extra blank line, it
- # will trigger a message, but such a blank line is harmless, so skip
- # in that case.
- if ($in_NAME{$addr} && $paragraph =~ /\S/) {
- $self->textblock($paragraph, $line_num, $pod_para);
+ # Keep separate tabs on C<>, F<>, and L<> directives, and one
+ # especially for C<> ones.
+ if ($in_CFL{$addr}) {
+ $CFL_text{$addr} .= $text;
+ $C_text{$addr} .= $text if defined $C_text{$addr};
+ }
+ else {
+ # This variable is updated instead in the corresponding C, F, or L
+ # handler.
+ $running_CFL_text{$addr} .= $text;
}
- my @lines = split /^/, $paragraph;
- for my $i (0 .. @lines - 1) {
- if ( my $encoding = $seen_encoding_cmd{$addr} ) {
- require Encode;
- $lines[$i] = Encode::decode($encoding, $lines[$i]);
- }
- $lines[$i] =~ s/\s+$//;
- my $indent = $self->get_current_indent;
-
- if ($pedantic) { # TODO: this check should be moved higher
- # to avoid more unnecessary work
- my $exceeds = length(Text::Tabs::expand($lines[$i]))
- + $indent - $MAX_LINE_LENGTH;
- next unless $exceeds > 0;
- my ($file, $line) = $pod_para->file_line;
- $self->poderror({ -line => $line + $i, -file => $file,
- -msg => $line_length,
- parameter => "+$exceeds (including " . ($indent - $INDENT) . " from =over's)",
+ # do this line-by-line so we can get the right line number
+ my @lines = split /^/, $running_simple_text{$addr};
+ for my $i (0..$#lines) {
+ if ($lines[$i] =~ m/\N{REPLACEMENT CHARACTER}/) {
+ $self->poderror({ -line => $start_line{$addr} + $i,
+ -msg => $replacement_character,
+ parameter => "possibly invalid ". $self->encoding . " input at character " . pos $lines[$i],
});
}
}
+ return $return;
}
- sub textblock {
- my ($self, $paragraph, $line_num, $pod_para) = @_;
- $self->check_encoding($paragraph, $line_num, $pod_para);
+ # The start_FOO routines check that somehow a C<> construct hasn't escaped
+ # without being checked, and initialize things, and call the parent
+ # class's equivalent routine.
+
+ # The end_FOO routines close things off, and check the text that has been
+ # accumulated for FOO, then call the parent's corresponding routine.
- $self->SUPER::textblock($paragraph, $line_num, $pod_para);
+ sub start_Para {
+ my $self = shift;
+ check_see_but_not_link($self);
- my ($file, $line) = $pod_para->file_line;
my $addr = Scalar::Util::refaddr $self;
- if ($in_NAME{$addr}) {
- if (! $self->name) {
- my $text = $self->interpolate($paragraph, $line_num);
- if ($text =~ /^\s*(\S+?)\s*$/) {
- $self->name($1);
- $self->poderror({ -line => $line, -file => $file,
- -msg => $missing_name_description,
- parameter => $1});
- }
- }
+ $start_line{$addr} = $_[0]->{start_line};
+ $running_CFL_text{$addr} = "";
+ $running_simple_text{$addr} = "";
+ return $self->SUPER::start_Para(@_);
+ }
+
+ sub start_item_text {
+ my $self = shift;
+ check_see_but_not_link($self);
+
+ my $addr = Scalar::Util::refaddr $self;
+ $start_line{$addr} = $_[0]->{start_line};
+ $running_CFL_text{$addr} = "";
+ $running_simple_text{$addr} = "";
+
+ # This is the only =item that is linkable
+ $linkable_item{$addr} = 1;
+
+ return $self->SUPER::start_item_text(@_);
+ }
+
+ sub start_item_number {
+ my $self = shift;
+ check_see_but_not_link($self);
+
+ my $addr = Scalar::Util::refaddr $self;
+ $start_line{$addr} = $_[0]->{start_line};
+ $running_CFL_text{$addr} = "";
+ $running_simple_text{$addr} = "";
+
+ return $self->SUPER::start_item_number(@_);
+ }
+
+ sub start_item_bullet {
+ my $self = shift;
+ check_see_but_not_link($self);
+
+ my $addr = Scalar::Util::refaddr $self;
+ $start_line{$addr} = $_[0]->{start_line};
+ $running_CFL_text{$addr} = "";
+ $running_simple_text{$addr} = "";
+
+ return $self->SUPER::start_item_bullet(@_);
+ }
+
+ sub end_item { # No difference in =item types endings
+ my $self = shift;
+ check_see_but_not_link($self);
+ return $self->SUPER::end_item(@_);
+ }
+
+ sub start_over {
+ my $self = shift;
+ check_see_but_not_link($self);
+
+ my $addr = Scalar::Util::refaddr $self;
+ $start_line{$addr} = $_[0]->{start_line};
+ $running_CFL_text{$addr} = "";
+ $running_simple_text{$addr} = "";
+
+ # Save this indent on a stack, and keep track of total indent
+ my $indent = $_[0]{'indent'};
+ push @{$indents{$addr}}, $indent;
+ $current_indent{$addr} += $indent;
+
+ return $self->SUPER::start_over(@_);
+ }
+
+ sub end_over_bullet { shift->end_over(@_) }
+ sub end_over_number { shift->end_over(@_) }
+ sub end_over_text { shift->end_over(@_) }
+ sub end_over_block { shift->end_over(@_) }
+ sub end_over_empty { shift->end_over(@_) }
+ sub end_over {
+ my $self = shift;
+ check_see_but_not_link($self);
+
+ my $addr = Scalar::Util::refaddr $self;
+
+ # Pop current indent
+ if (@{$indents{$addr}}) {
+ $current_indent{$addr} -= pop @{$indents{$addr}};
+ }
+ else {
+ # =back without corresponding =over, but should have
+ # warned already
+ $current_indent{$addr} = 0;
}
- $paragraph = join " ", split /^/, $paragraph;
-
- # Matches something that looks like a file name, but is enclosed in
- # C<...>
- my $C_path_re = qr{ \b ( C<
- # exclude various things that have slashes
- # in them but aren't paths
- (?!
- (?: (?: s | qr | m) / ) # regexes
- | \d+/\d+> # probable fractions
- | OS/2>
- | Perl/Tk>
- | origin/blead>
- | origin/maint
- | - # File names don't begin with "-"
- )
- [-\w]+ (?: / [-\w]+ )+ (?: \. \w+ )? > )
- }x;
-
- # If looks like a reference to other documentation by containing the
- # word 'See' and then a likely pod directive, warn.
- while ($paragraph =~ m{
+ }
+
+ sub check_see_but_not_link {
+
+ # Looks through accumulated text for current element that includes the
+ # C<>, F<>, and L<> directives for ones that look like they are
+ # C<link> instead of L<link>.
+
+ my $self = shift;
+ my $addr = Scalar::Util::refaddr $self;
+
+ return unless defined $running_CFL_text{$addr};
+
+ while ($running_CFL_text{$addr} =~ m{
( (?: \w+ \s+ )* ) # The phrase before, if any
\b [Ss]ee \s+
( ( [^L] )
@@ -885,7 +999,8 @@ package My::Pod::Checker { # Extend Pod::Checker
>
)
( \s+ (?: under | in ) \s+ L< )?
- }xg) {
+ }xg)
+ {
my $prefix = $1 // "";
my $construct = $2; # The whole thing, like C<...>
my $type = $3;
@@ -902,25 +1017,13 @@ package My::Pod::Checker { # Extend Pod::Checker
# construct would be if it actually has L<> syntax. If it
# doesn't have that syntax, will set the module to the entire
# interior.
- $interior =~ m/ ^
- (?: [^|]+ \| )? # Optional arbitrary text ending
- # in "|"
- ( .+? ) # module, etc. name
- (?: \/ .+ )? # target within module
- $
- /xs;
- my $module = $1;
if (! defined $trailing # not referring to something in another
# section
&& $interior !~ /$non_pods/
- # C<> that look like files have their own message below, so
- # exclude them
- && $construct !~ /$C_path_re/g
-
# There can't be spaces (I think) in module names or man
# pages
- && $module !~ / \s /x
+ && $interior !~ / \s /x
# F<> that end in eg \.pl are almost certainly ok, as are
# those that look like a path with multiple "/" chars
@@ -931,139 +1034,266 @@ package My::Pod::Checker { # Extend Pod::Checker
)
) {
# TODO: move the checking of $pedantic higher up
- $self->poderror({ -line => $line, -file => $file,
+ $self->poderror({ -line => $start_line{$addr},
-msg => $C_not_linked,
parameter => $construct
- }) if $pedantic;
+ });
}
}
}
- while ($paragraph =~ m/$C_path_re/g) {
- my $construct = $1;
- # TODO: move the checking of $pedantic higher up
- $self->poderror({ -line => $line, -file => $file,
- -msg => $C_with_slash,
- parameter => $construct
- }) if $pedantic;
- }
- return;
+
+ undef $running_CFL_text{$addr};
}
- sub command {
- my ($self, $cmd, $paragraph, $line_num, $pod_para) = @_;
+ sub end_Para {
+ my $self = shift;
+ check_see_but_not_link($self);
+
my $addr = Scalar::Util::refaddr $self;
- if ($cmd eq "pod") {
- $seen_pod_cmd{$addr}++;
- }
- elsif ($cmd eq "encoding") {
- my ($file, $line) = $pod_para->file_line;
- $seen_encoding_cmd{$addr} = $paragraph; # for later decoding
- if ($command_count{$addr} != 1 && $seen_pod_cmd{$addr}) {
- $self->poderror({ -line => $line, -file => $file,
- -msg => $encoding_first
- });
+ if ($in_NAME{$addr}) {
+ if ($running_simple_text{$addr} =~ /^\s*(\S+?)\s*$/) {
+ $self->poderror({ -line => $start_line{$addr},
+ -msg => $missing_name_description,
+ parameter => $1});
}
+ $in_NAME{$addr} = 0;
}
- $self->check_encoding($paragraph, $line_num, $pod_para);
-
- # Pod::Check treats all =items as linkable, but the bullet and
- # numbered lists really aren't. So keep our own list. This has to be
- # processed before SUPER is called so that the list is started before
- # the rest of it gets parsed.
- if ($cmd eq 'item') { # Not linkable if item begins with * or a digit
- $linkable_item{$addr} = ($paragraph !~ / ^ \s*
- (?: [*]
- | \d+ \.? (?: \$ | \s+ )
- )/x)
- ? 1
- : 0;
+ $self->SUPER::end_Para(@_);
+ }
+
+ sub start_head1 {
+ my $self = shift;
+ check_see_but_not_link($self);
+ my $addr = Scalar::Util::refaddr $self;
+ $start_line{$addr} = $_[0]->{start_line};
+ $running_CFL_text{$addr} = "";
+ $running_simple_text{$addr} = "";
+
+ return $self->SUPER::start_head1(@_);
+ }
+
+ sub end_head1 { # This is called at the end of the =head line.
+ my $self = shift;
+ check_see_but_not_link($self);
+
+ my $addr = Scalar::Util::refaddr $self;
+
+ $in_NAME{$addr} = 1 if $running_simple_text{$addr} eq 'NAME';
+ return $self->SUPER::end_head(@_);
+ }
+
+ sub start_Verbatim {
+ my $self = shift;
+ check_see_but_not_link($self);
+
+ my $addr = Scalar::Util::refaddr $self;
+ $running_simple_text{$addr} = "";
+ $start_line{$addr} = $_[0]->{start_line};
+ return $self->SUPER::start_Verbatim(@_);
+ }
+
+ sub end_Verbatim {
+ my $self = shift;
+ my $addr = Scalar::Util::refaddr $self;
+
+ # Pick up the name if it looks like one, since the parent class
+ # doesn't handle verbatim NAMEs
+ if ($in_NAME{$addr}
+ && $running_simple_text{$addr} =~ /^\s*(\S+?)\s*[,-]/)
+ {
+ $self->name($1);
}
- $self->SUPER::command($cmd, $paragraph, $line_num, $pod_para);
-
- $command_count{$addr}++;
-
- $in_NAME{$addr} = 0; # Will change to 1 below if necessary
- $in_begin{$addr} = 0; # ibid
- if ($cmd eq 'over') {
- my $text = $self->interpolate($paragraph, $line_num);
- my $indent = 4; # default
- $indent = $1 if $text && $text =~ /^\s*(\d+)\s*$/;
- push @{$indents{$addr}}, $indent;
- $current_indent{$addr} += $indent;
+
+ my $indent = $self->get_current_indent;
+
+ # Look at each line to verify it is short enough
+ my @lines = split /^/, $running_simple_text{$addr};
+ for my $i (0 .. @lines - 1) {
+ $lines[$i] =~ s/\s+$//;
+ my $exceeds = length(Text::Tabs::expand($lines[$i]))
+ + $indent - $MAX_LINE_LENGTH;
+ next unless $exceeds > 0;
+
+ $self->poderror({ -line => $start_line{$addr} + $i,
+ -msg => $line_length,
+ parameter => "+$exceeds (including " . ($indent - $INDENT) . " from =over's)",
+ });
}
- elsif ($cmd eq 'back') {
- if (@{$indents{$addr}}) {
- $current_indent{$addr} -= pop @{$indents{$addr}};
+
+ undef $running_simple_text{$addr};
+
+ # Parent class didn't bother to define this
+ #return $self->SUPER::SUPER::end_Verbatim(@_);
+ }
+
+ sub start_C {
+ my $self = shift;
+ my $addr = Scalar::Util::refaddr $self;
+
+ $C_text{$addr} = "";
+
+ # If not in a stacked set of C<>, F<> and L<>, initialize the text for
+ # them.
+ $CFL_text{$addr} = "" if ! $in_CFL{$addr};
+ $in_CFL{$addr}++;
+
+ return $self->SUPER::start_C(@_);
+ }
+
+ sub start_F {
+ my $self = shift;
+ my $addr = Scalar::Util::refaddr $self;
+
+ $CFL_text{$addr} = "" if ! $in_CFL{$addr};
+ $in_CFL{$addr}++;
+ return $self->SUPER::start_F(@_);
+ }
+
+ sub start_L {
+ my $self = shift;
+ my $addr = Scalar::Util::refaddr $self;
+
+ $CFL_text{$addr} = "" if ! $in_CFL{$addr};
+ $in_CFL{$addr}++;
+ return $self->SUPER::start_L(@_);
+ }
+
+ sub end_C {
+ my $self = shift;
+ my $addr = Scalar::Util::refaddr $self;
+
+ # Warn if looks like a file or link enclosed instead by this C<>
+ if ($C_text{$addr} =~ qr/^ $C_path_re $/x) {
+ # Here it does look like it could be be a file path or a link.
+ # But some varieties of regex patterns could also fit with what we
+ # have so far. Weed those out as best we can. '/foo/' is almost
+ # certainly meant to be a pattern, as is '/foo/g'.
+ my $is_pattern;
+ if ($C_text{$addr} !~ qr| ^ / [^/]* / ( [msixpodualngcr]* ) $ |x) {
+ $is_pattern = 0;
}
else {
- # =back without corresponding =over, but should have
- # warned already
- $current_indent{$addr} = 0;
- }
- }
- elsif ($cmd =~ /^head/) {
- if (! $in_begin{$addr}) {
- # If a particular formatter, then this command doesn't really
- # apply
- $current_indent{$addr} = 0;
- undef @{$indents{$addr}};
+ # Here, it looks like a pattern potentially followed by some
+ # modifiers. To make doubly sure, don't count as patterns
+ # those constructs which have more occurrences (generally 1)
+ # of a modifier than is legal.
+ my %counts;
+ map { $counts{$_}++ } split "", $1;
+ foreach my $modifier (keys %counts) {
+ if ($counts{$modifier} > (($modifier eq 'a')
+ ? 2
+ : 1))
+ {
+ $is_pattern = 0;
+ last;
+ }
+ }
+ $is_pattern = 1 unless defined $is_pattern;
}
- my $text = $self->interpolate($paragraph, $line_num);
- $in_NAME{$addr} = 1 if $cmd eq 'head1'
- && $text && $text =~ /^NAME\b/;
- }
- elsif ($cmd eq 'begin') {
- $in_begin{$addr} = 1;
+ unless ($is_pattern) {
+ $self->poderror({ -line => $start_line{$addr},
+ -msg => $C_with_slash,
+ parameter => "C<$C_text{$addr}>"
+ });
+ }
}
+ undef $C_text{$addr};
+
+ # Add the current text to the running total. This was not done in
+ # handle_text(), because it just sees the plain text of the innermost
+ # stacked directive. We want to keep all the directive names
+ # enclosing the text. Otherwise the fact that C<L<foobar>> is to a
+ # link would be lost, as the L<> would be gone.
+ $CFL_text{$addr} = "C<$CFL_text{$addr}>";
+
+ # Add this text to the the whole running total only if popping this
+ # directive off the stack leaves it empty. As long as something is on
+ # the stack, it gets added to $CFL_text (just above). It is only
+ # entirely constructed when the stack is empty.
+ $in_CFL{$addr}--;
+ $running_CFL_text{$addr} .= $CFL_text{$addr} if ! $in_CFL{$addr};
+
+ return $self->SUPER::end_C(@_);
+ }
- return;
+ sub end_F {
+ my $self = shift;
+ my $addr = Scalar::Util::refaddr $self;
+
+ $CFL_text{$addr} = "F<$CFL_text{$addr}>";
+ $in_CFL{$addr}--;
+ $running_CFL_text{$addr} .= $CFL_text{$addr} if ! $in_CFL{$addr};
+ return $self->SUPER::end_F(@_);
}
- sub hyperlink {
+ sub end_L {
my $self = shift;
+ my $addr = Scalar::Util::refaddr $self;
- my $page;
- if ($_[0] && ($page = $_[0][1]{'-page'})) {
- my $node = $_[0][1]{'-node'};
-
- if ($node) {
- $_[0][1]{'-node'} = $node = do {
- my $expand_seq = sub {
- my (undef, $seq) = @_;
- my $arg = join '', $seq->parse_tree->children;
- if ($seq->name eq 'E') {
- $arg =
- $arg eq 'sol' ? '/' :
- $arg eq 'verbar' ? '|' :
- $arg eq 'lt' ? '<' :
- $arg eq 'gt' ? '>' :
- die "Not implemented: E<$arg>";
- }
- return $arg;
- };
- my $ptree = $self->parse_text({ -expand_seq => $expand_seq }, $node, $_[0][0]);
- join '', $ptree->children
- };
-
- # If the hyperlink is to an interior node of another page, save it
- # so that we can see if we need to parse normally skipped files.
- $has_referred_to_node{$page} = 1;
- }
+ $CFL_text{$addr} = "L<$CFL_text{$addr}>";
+ $in_CFL{$addr}--;
+ $running_CFL_text{$addr} .= $CFL_text{$addr} if ! $in_CFL{$addr};
+ return $self->SUPER::end_L(@_);
+ }
+
+ sub start_X {
+ my $self = shift;
+ my $addr = Scalar::Util::refaddr $self;
+
+ $in_X{$addr} = 1;
+ return $self->SUPER::start_X(@_);
+ }
+
+ sub end_X {
+ my $self = shift;
+ my $addr = Scalar::Util::refaddr $self;
+
+ $in_X{$addr} = 0;
+ return $self->SUPER::end_X(@_);
+ }
+
+ sub start_for {
+ my $self = shift;
+ my $addr = Scalar::Util::refaddr $self;
+
+ $in_for{$addr} = 1;
+ return $self->SUPER::start_for(@_);
+ }
+
+ sub end_for {
+ my $self = shift;
+ my $addr = Scalar::Util::refaddr $self;
+
+ $in_for{$addr} = 0;
+ return $self->SUPER::end_for(@_);
+ }
+
+ sub hyperlink {
+ my ($self, $link) = @_;
+
+ if ($link && $link->type eq 'pod') {
+ my $page = $link->page;
+ my $node = $link->node;
+
+ # If the hyperlink is to an interior node of another page, save it
+ # so that we can see if we need to parse normally skipped files.
+ $has_referred_to_node{$page} = 1 if $node;
# Ignore certain placeholder links in perldelta. Check if the
# link is page-level, and also check if to a node within the page
- if ($self->name && $self->name eq "perldelta"
- && ((grep { $page eq $_ } @perldelta_ignore_links)
- || ($node
+ if ( $self->name && $self->name eq "perldelta"
+ && (( grep { $page eq $_ } @perldelta_ignore_links)
+ || ( $node
&& (grep { "$page/$node" eq $_ } @perldelta_ignore_links)
))) {
return;
}
}
- return $self->SUPER::hyperlink($_[0]);
+
+ return $self->SUPER::hyperlink($link);
}
sub node {
@@ -1117,7 +1347,7 @@ package My::Pod::Checker { # Extend Pod::Checker
# ignores 2nd param, which is output file. Always uses undef
if (open my $in_fh, '<:bytes', $filename) {
- $self->SUPER::parse_from_filehandle($in_fh, undef);
+ $self->SUPER::parse_from_file($in_fh, undef);
close $in_fh;
return 1;
}
@@ -1323,6 +1553,7 @@ sub my_safer_print { # print, with error checking for outputting to db
sub extract_pod { # Extracts just the pod from a file; returns undef if file
# doesn't exist
my $filename = shift;
+ use Pod::Parser;
my @pod;
@@ -1764,21 +1995,24 @@ foreach my $filename (@files) {
if (! $has_input_files) {
foreach my $filename (@files) {
next if $filename_to_checker{$filename}->get_skip;
+
my $checker = $filename_to_checker{$filename};
- foreach my $link ($checker->hyperlink) {
- my $linked_to_page = $link->[1]->page;
+ foreach my $link ($checker->hyperlinks()) {
+ my $linked_to_page = $link->page;
next unless $linked_to_page; # intra-file checks are handled by std
# Pod::Checker
+ # Currently, we assume all external links are valid
+ next if $link->type eq 'url';
# Initialize the potential message.
my %problem = ( -msg => $broken_link,
- -line => $link->[0],
+ -line => $link->line,
parameter => "to \"$linked_to_page\"",
);
# See if we have found the linked-to_file in our parse
if (exists $nodes{$linked_to_page}) {
- my $node = $link->[1]->node;
+ my $node = $link->node;
# If link is only to the page-level, already have it
next if ! $node;
@@ -1802,7 +2036,7 @@ if (! $has_input_files) {
}
} # Linked-to-file not in parse; maybe is in exception list
- elsif (! exists $valid_modules{$link->[1]->page}) {
+ elsif (! exists $valid_modules{$link->page}) {
# Here, is a link to a target that we can't find. Check if
# there is an internal link on the page with the target name.
@@ -1887,7 +2121,8 @@ foreach my $filename (@files) {
$diagnostic .= " " if $problem_count == 1;
$diagnostic .= "\n$indent$indent";
$diagnostic .= "$problem->{parameter}" if $problem->{parameter};
- $diagnostic .= " near line $problem->{-line}";
+ $diagnostic .= " near line $problem->{-line} of "
+ . $filename;
$diagnostic .= " $problem->{comment}" if $problem->{comment};
}
$diagnostic .= "\n";
@@ -1925,7 +2160,7 @@ foreach my $filename (@files) {
}
ok(@diagnostics == $thankful_diagnostics, $output);
if (@diagnostics) {
- note(join "", @diagnostics,
+ diag(join "", @diagnostics,
"See end of this test output for your options on silencing this");
}
@@ -1957,7 +2192,7 @@ if (%files_with_unknown_issues) {
: "were $were_count_files files";
my $message = <<EOF;
-HOW TO GET THIS .t TO PASS
+HOW TO GET ${\__FILE__} TO PASS
There $were_count_files that had new potential problems identified.
Some of them may be real, and some of them may be false positives because
@@ -1996,9 +2231,9 @@ EOF
and change the count of known potential problems to -1.
EOF
- note($message);
+ diag($message);
} elsif (%files_with_fixes) {
- note(<<EOF
+ diag(<<EOF
To teach this test script that the potential problems have been fixed,
$how_to
EOF
@@ -2009,3 +2244,5 @@ if ($regen) {
chdir $original_dir || die "Can't change directories to $original_dir";
close_and_rename($copy_fh);
}
+
+1;
diff --git a/gnu/usr.bin/perl/t/porting/readme.t b/gnu/usr.bin/perl/t/porting/readme.t
index e127920b907..232a45fc18e 100644
--- a/gnu/usr.bin/perl/t/porting/readme.t
+++ b/gnu/usr.bin/perl/t/porting/readme.t
@@ -10,7 +10,7 @@ BEGIN {
use TestInit qw(T); # T is chdir to the top level
use strict;
use warnings;
-require 't/test.pl';
+require './t/test.pl';
my @porting_files;
open my $man, "MANIFEST" or die "Can't open MANIFEST: $!";
diff --git a/gnu/usr.bin/perl/t/porting/regen.t b/gnu/usr.bin/perl/t/porting/regen.t
index 5d085181cea..762e7407840 100644
--- a/gnu/usr.bin/perl/t/porting/regen.t
+++ b/gnu/usr.bin/perl/t/porting/regen.t
@@ -8,8 +8,8 @@ BEGIN {
use TestInit qw(T A); # T is chdir to the top level, A makes paths absolute
use strict;
-require 'regen/regen_lib.pl';
-require 't/test.pl';
+require './regen/regen_lib.pl';
+require './t/test.pl';
$::NO_ENDING = $::NO_ENDING = 1;
if ( $^O eq "VMS" ) {
@@ -26,7 +26,7 @@ if ( $Config{usecrosscompile} ) {
skip_all( "Not all files are available during cross-compilation" );
}
-my $tests = 26; # I can't see a clean way to calculate this automatically.
+my $tests = 27; # I can't see a clean way to calculate this automatically.
my %skip = ("regen_perly.pl" => [qw(perly.act perly.h perly.tab)],
"regen/keywords.pl" => [qw(keywords.c keywords.h)],
@@ -35,6 +35,19 @@ my %skip = ("regen_perly.pl" => [qw(perly.act perly.h perly.tab)],
"regen/regcharclass.pl" => [qw(regcharclass.h)],
);
+my %other_requirement = (
+ "regen_perly.pl" => "requires bison",
+ "regen/keywords.pl" => "requires Devel::Tokenizer::C",
+ "regen/mk_invlists.pl" => "needs the Perl you've just built",
+ "regen/regcharclass.pl" => "needs the Perl you've just built",
+);
+
+my %skippable_script_for_target;
+for my $script (keys %other_requirement) {
+ $skippable_script_for_target{$_} = $script
+ for @{ $skip{$script} };
+}
+
my @files = map {@$_} sort values %skip;
open my $fh, '<', 'regen.pl'
@@ -49,6 +62,7 @@ die "Can't find __END__ in regen.pl"
foreach (qw(embed_lib.pl regen_lib.pl uconfig_h.pl
regcharclass_multi_char_folds.pl
charset_translations.pl
+ mph.pl
),
map {chomp $_; $_} <$fh>) {
++$skip{"regen/$_"};
@@ -83,10 +97,15 @@ OUTER: foreach my $file (@files) {
push @bad, $2 unless $digest eq $1;
}
is("@bad", '', "generated $file is up to date");
+ if (@bad && (my $skippable_script = $skippable_script_for_target{$file})) {
+ my $reason = delete $other_requirement{$skippable_script};
+ diag("Note: $skippable_script must be run manually, because it $reason")
+ if $reason;
+ }
}
foreach (@progs) {
- my $command = "$^X $_ --tap";
+ my $command = "$^X -I. $_ --tap";
system $command
and die "Failed to run $command: $?";
}
diff --git a/gnu/usr.bin/perl/t/porting/utils.t b/gnu/usr.bin/perl/t/porting/utils.t
index 475380d4169..92eafbd3b9a 100644
--- a/gnu/usr.bin/perl/t/porting/utils.t
+++ b/gnu/usr.bin/perl/t/porting/utils.t
@@ -22,7 +22,7 @@ BEGIN {
use TestInit qw(T); # T is chdir to the top level
use strict;
-require 't/test.pl';
+require './t/test.pl';
# It turns out that, since the default @INC will include your old 5.x libs, if
# you have them, the Porting utils might load a library that no longer compiles