Perl E06:帮助文字也是会被改坏的接口
新增 report-file 后,--help 的 POD SYNOPSIS 必须同步;实际运行 perl bin/logtool.pl --help 应出现 report-file FILE DESTINATION,退出 0 且 STDERR 空。单靠文档审查还不够:t/21-25-modules-and-tap.t 原来把 help 错误用法的输出写成固定旧金标。一次新发行包解压后的 make test 因新增命令而失败,更新金标后再重新打包验证通过;这是一例真实发生过的文档与断言漂移,不要为了绿灯删掉检查。
反例 prove -v fixtures/deliberate-failure.t 故意断言 2 等于 3,STDOUT 出 Result: FAIL、STDERR 给出实际值和期望值、退出 1。它单独存放在 fixtures/,不进默认 t/,从而在证明失败通道的同时不污染正常累计回归。POD 帮助可执行,TAP 可检验,二者属于工具接口不同面的测试;Hexo 页面生成也不能取代它们。
练习:如果故意失败的测试文件误放进 t/,prove -r t 会是什么状态?应是失败而非自动忽略;必须隔离负面练习,不可只过滤最后一行 PASS。命令与实际 stdout/stderr/status 见 examples/perl-language/evidence/E01-E08.md,参考 Perl 5.38.2 pod/perlpod.pod 和本机 Test::More 1.302194/Test::Harness 3.44。
本次复跑把 prove 入口改成同一解释器内的 App::Prove,避免测试内部调用系统 prove 而混入 macOS 自带 Perl。证据文件 full-app-prove-r-t.stdout 来自 /private/tmp/perl-5.38.2-independent/install/bin/perl -MApp::Prove ... -r t,最终 16 个文件、395 项断言全部通过;这说明 POD、TAP、XS 依赖和发行安装都在同一个 Perl v5.38.2 运行时下核验。









