Perl: t/, xt/, inc/ and corpus/ are not auxiliary roles; `./Build authortest` runs the tests; Test::Perl::Critic in the tests is perlcritic; Test::Warnings in test classes

未关闭
#269 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

还没有人认领这个 Issue。

评估

难度
4/5
预计耗时
3-5 天
新手友好度
40/100
Issue 类型
缺陷
描述清晰度
基本清楚
活跃度
活跃
技术栈
perl, python
领域
devtools

调研方向

The Perl rules live in project_validator/ecosystems/perl.py: the tests-run command prefixes near line 61, PERLCRITIC and PERLCRITIC_ANALYZER around lines 153-203, and PERL_TEST_SETTINGS near line 164. Reproduce each false negative with the repro fixtures described in the issue (a Build.PL with a t/basic.t, an xt/critic.t using Test::Perl::Critic, and a t/lib module using Test::Warnings) and check the results against the corpus expectations. Done means those cases pass without changing the existing verdicts for other Perl projects in the corpus. Whether a Test::Perl::Critic author test should satisfy static-analysis is an open design question the maintainers should settle first.

由索引模型根据 Issue 内容生成。

描述

Perl-Critic: FAIL "no CI runs prove -l t (or make test, ./Build test, dzil test)" though every job runs ./Build authortest, a Module::Build action defined in the repo that depends on test; static-analysis FAIL "perlcritic configured but does not run" though the author tests run Test::Perl::Critic (the profile doc says that counts); tidyall's test classes use Test::Warnings (fails any test on a warning) but the reader scans only *.t. The roles table lacks Perl's t/, xt/, inc/ (bundled), corpus/ (Dist-Zilla's test distributions), so fixtures fail compiler-warnings for all four projects.

Evidence from the corpus audit

Perl-Critic/Perl-Critic / tests-run
  • kind: FALSE_NEGATIVE
  • actual: FAIL: Perl: tests found in 50 file(s), but no CI configuration runs prove -l t (or make test, ./Build test, dzil test)
  • expected: PASS: every CI job runs ./Build authortest, a Module::Build action defined in the repository that depends
    on test and adds xt to the test files.
  • evidence: .github/workflows/testsuite.yml:31: run: ./Build authortest (also lines 79, macOS, windows jobs);
    inc/Perl/Critic/Module/Build/Standard.pm:17-21: sub ACTION_authortest { ... $self->depends_on('test');;
    inc/Perl/Critic/Module/Build/Standard.pm:78-79: $self->test_files( qw< t xt > ); /
    $self->recursive_test_files(1);; validator project_validator/ecosystems/perl.py:61: prefixes = (("prove",), ("make", "test"), ("Build", "test"), ("perl", "Build", "test"), ("dzil", "test")).
  • repro: Build.PL + t/basic.t + workflow step run: ./Build authortest → WARN/FAIL (reproduced in repro-perl).
    Minimal fix direction: accept Build <action> when inc/**/*.pm defines sub ACTION_<action> that
    depends_on('test'), or at least authortest/testall/testcover (Module::Build's own test actions).
  • confidence: high
Perl-Critic/Perl-Critic / static-analysis
  • kind: FALSE_NEGATIVE
  • actual: FAIL: Perl: perlcritic is configured (examples/perlcriticrc, perlcriticrc) but does not run
  • expected: PASS: the author tests run Test::Perl::Critic over the code, and ./Build authortest runs them in every
    job; the Perl profile doc says "perlcritic runs in CI (or Test::Perl::Critic in the tests)" and compiler-warnings for
    the same project reports found perlcritic.
  • evidence: xt/40_criticize-code.t:28: eval 'use Test::Perl::Critic; 1;'; .github/workflows/testsuite.yml:31:
    run: ./Build authortest; validator project_validator/ecosystems/perl.py:197-203 PERLCRITIC_ANALYZER only
    accepts commands starts(("perlcritic",), ("tidyall",)), while PERLCRITIC (line 153-157) accepts the
    use Test::Perl::Critic pattern for compiler-warnings. Secondary: examples/perlcriticrc is an example file under
    examples/ named as the project's configuration.
  • repro: xt/critic.t with use Test::Perl::Critic; + workflow run: prove -l xt → static-analysis says perlcritic
    does not run.
  • confidence: high (medium on whether a Test::Perl::Critic author test should satisfy static-analysis; the doc says so)
houseabsolute/perl-code-tidyall / warnings-as-errors
  • kind: FALSE_NEGATIVE
  • actual: FAIL: Perl: warnings are not treated as errors in the modules and the tests
  • expected: PASS: the test classes (Test::Class::Most modules loaded by every t/*.t) use Test::Warnings, which fails
    a test on any warning; the reader only scans *.t.
  • evidence: t/lib/TestFor/Code/TidyAll/Basic.pm:15: use Test::Warnings; (same in the other 17 t/lib/TestFor/**
    modules); t/Basic.t loads it; validator project_validator/ecosystems/perl.py:164:
    PERL_TEST_SETTINGS = requirement_reader("Perl tests", ("*.t",), (PERLCRITIC, TEST_WARNINGS)).
  • repro: t/lib/TestFor/Foo.pm with use Test::Warnings; + t/foo.t with use TestFor::Foo; → FAIL.
  • confidence: medium (requires reading .pm under t/ as test code, which is again the t/ role question)

Found by the regression-corpus audit (235 real repositories, one or more per ecosystem profile; corpus and expected results in corpus/). Evidence is quoted from the audited checkouts at the commits pinned in corpus/projects.toml; <checkouts>/<owner>__<repo> is such a checkout.

🤖 Generated with Claude Code

https://claude.ai/code/session_01ByTXNqDWdM7HzezrFtEvQt

主要语言
Python
星标
4
派生
1
平均合并
10 小时 41 分钟
30 天内合并 PR
79

环境准备

这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

cpp-best-practices/project_validator 的其他 Issue

查看 cpp-best-practices/project_validator 的全部 Issue

相似的 Issue

更多 Python Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。