JVM test discovery is hard-wired to src/test/{java,kotlin} + @Test: JUnit 3 (guava-tests/test), Kotlin multiplatform jvmTest, @TestFactory, Groovy/Spock are missed
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 初心者へのやさしさ
- 48/100
- issue の種類
- バグ
- 明瞭さ
- おおむね明確
- 活発さ
- 活発
調査の方向性
The detection rules live in project_validator/ecosystems/jvm/tools.py (the test-path regex around lines 33-40 and the @Test pattern near line 38) and project_validator/ecosystems/jvm/init.py around line 281. Start by adding a repro fixture for each case: a @TestFactory class under src/test/java, a JUnit 3 extends TestCase file under a custom testSourceDirectory, and a src/jvmTest Kotlin file. Done when those fixtures are counted as tests and the corpus expectations for guava, okhttp and CycloneDX change.
索引モデルが issue の本文から書いたものです。
説明
guava: 1107 *Test.java files under guava-tests/test (JUnit 3, extends TestCase) → "no tests found"; okhttp: src/jvmTest (117 of 199 files missed); kotlinx.coroutines: 496 test files counted as 1; CycloneDX: JUnit 5 @TestFactory dynamic tests → "no tests found"; liquibase: 392 Spock specifications (.groovy, unrecognised) vs 170 Java files counted. Discover by source-set convention (src/*Test/, Maven testSourceDirectory, *-tests/test), @TestFactory/@ParameterizedTest, extends TestCase, and Groovy as a JVM language.
Evidence from the corpus audit
CycloneDX/specification / tests-run (JVM)
- kind: FALSE_NEGATIVE
- actual: FAIL:
JVM: no tests found (@Test methods or Kotest specs under src/test/java or src/test/kotlin) - expected: PASS:
tools/src/test/javaholds three JUnit 5 test classes (dynamic tests via@TestFactory) and CI
runsmvn clean testintools(the answers dump already has the Java unit at"answer": "yes", levelruns,
but"defined": {}). - evidence:
tools/src/test/java/org/cyclonedx/schema/JsonSchemaVerificationTest.java:42:
import org.junit.jupiter.api.TestFactory;and:93:@TestFactory; same at
XmlSchemaVerificationTest.java:73,XmlCatalogVerificationTest.java:42;.github/workflows/test_java.yml:37:
run: mvn clean test. Validatorproject_validator/ecosystems/jvm/tools.py:38:
r"@(?:org\.junit\.(?:jupiter\.api\.)?)?Test\b"—@TestFactoryhas no word boundary afterTest, and
@ParameterizedTest,@RepeatedTest,@TestTemplateare not matched either. The facts dump has 0TestFile
facts for the repository. - repro:
src/test/java/ATest.javacontaining only@TestFactory Stream<DynamicTest> t() {…}, CImvn test.
Accept@(ParameterizedTest|RepeatedTest|TestFactory|TestTemplate)(and@Test\b). - confidence: high
google/guava, square/okhttp, Kotlin/kotlinx.coroutines / tests-run
- kind: FALSE_NEGATIVE
- actual: guava
FAIL: JVM: no tests found (@Test methods or Kotest specs under src/test/java or src/test/kotlin);
okhttpJava in the root: tests found in 46 file(s)/Kotlin in the root: tests found in 46 file(s);
kotlinx.coroutinesJVM: tests found in 1 file(s), but no CI configuration runs mvn test or gradle test - expected: guava PASS (1107
*Test.javafiles, CI runsmvn verify); okhttp ~199 test files; coroutines 496 test
files (no CI, so WARN is right but the count is wrong by two orders of magnitude) - evidence:
- guava
pom.xml:149-150:<sourceDirectory>src</sourceDirectory>/<testSourceDirectory>test</testSourceDirectory>
(tests live inguava-tests/test/com/google/common/..., 1107 files;grep -c "public void test" guava-tests/test/com/google/common/base/StringsTest.java= 21, JUnit 3extends TestCase, no@Test) - guava
.github/workflows/ci.yml:56:run: ./mvnw -B -P!standard-with-extra-repos -Dtoolchain.skip verify -U -Dmaven.javadoc.skip=true -Dsurefire.toolchain.version=${{ matrix.java }} -f $ROOT_POM - okhttp: 117 of 199 test files are under
okhttp/src/jvmTest/and 12 underokhttp/src/commonTest/(Kotlin Multiplatform source sets);.github/workflows/build.yml:115:run: ./gradlew test allTests -Ptest.java.version=${{ matrix.java-version }} - coroutines: 162 test files under
kotlinx-coroutines-core/jvm/test, 148 underkotlinx-coroutines-core/common/test - validator
project_validator/ecosystems/jvm/tools.py:33-40:path=re.compile(r"(?:^|/)src/test/(?:java|kotlin)/.+\.(?:java|kt)$"),contains=re.compile(r"@(?:org\.junit\.(?:jupiter\.api\.)?)?Test\b|...Spec\b")
- guava
- repro:
pom.xmlwith<build><testSourceDirectory>test</testSourceDirectory></build>,test/FooTest.javacontaining
public class FooTest extends TestCase { public void testX() {} }, workflow steprun: mvn verify; and a KMP module
withsrc/jvmTest/kotlin/FooTest.ktcontaining@Test - confidence: high
liquibase/liquibase / detection (Groovy/Spock)
- kind: DETECTION
- actual: map
unrecognised_suffixes:.groovy392 files; tests-run "JVM: tests found in 170 file(s)" - expected: Groovy recognised as a JVM language; the Spock specifications under
src/test/groovyare the bulk of the
unit tests (392 files vs 170 Java test files) - evidence:
liquibase-standard/src/test/groovy/liquibase/change/core/(40 files),.../util/(30 files);
validatorecosystems/jvm/__init__.py:281:# Kotlin and Groovy scripts are mostly Gradle builds and their helpers, which name no language. - repro:
src/test/groovy/FooSpec.groovywithclass FooSpec extends Specification - confidence: medium
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
- 主要言語
- Python
- スター
- 4
- フォーク
- 1
- 平均マージ
- 10時間 41分
- マージ済み PR(30日)
- 79
環境構築
このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
cpp-best-practices/project_validator のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
cpp-best-practices/project_validator#267 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
cpp-best-practices/project_validator#263 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
cpp-best-practices/project_validator#260 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
cpp-best-practices/project_validator#259 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
cpp-best-practices/project_validator#255 ·
メンテナーはふだん 1 日以内に返信
cpp-best-practices/project_validator の issue をすべて見る
似ている issue
-
plot_graph crashes when a mesh node has no m2m edge対応中かも @tygvi が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
mllam/neural-lam#883 · コメント 1 件 ·
メンテナーはふだん 2 日以内に返信
-
enhancement possible-duplicate
難易度 1/5 1〜3時間 初心者へのやさしさ 78/100
AOSSIE-Org/PictoPy#1715 · コメント 2 件 ·
メンテナーはふだん 6 日以内に返信
-
SQLite connector omits generated columns from the catalog, and drops relationships sourced on themオープン
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
NVIDIA/auto-ontology#511 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
ethereum/execution-specs#3996 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
Project-N-E-K-O/N.E.K.O#3725 ·
メンテナーはふだん 1 日以内に返信