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 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
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分
マージ済み PR(30日)
79

環境構築

このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

cpp-best-practices/project_validator のほかの issue

cpp-best-practices/project_validator の issue をすべて見る

似ている issue

Python の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。