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 天內回覆
還沒有人認領這個 Issue。
評估
- 難度
- 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 分鐘
- 30 天內合併 PR
- 79
環境準備
這個專案沒有提供開發容器、Dockerfile 或貢獻指南,環境需要你自己搭建:先看它的 README,通用步驟見我們的新手貢獻指南。
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 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
-
documentation type/bug
難度 2/5 1-3 小時 新手友好度 78/100
維護者通常 1 天內回覆
-
難度 1/5 1 小時以內 新手友好度 65/100
StevenBlack/hosts#3299 ·
-
`garak --report` overwrites the input report when its name has no ".report"可能已有人在做 @0z5a 今天認領。 未關閉needs-triage
難度 2/5 半天 新手友好度 72/100
維護者通常 2 天內回覆
-
trace: Pi's 1-hour cache writes are priced at 1.25x, but billed at 2x可能已有人在做 @Shizoqua 今天認領。 未關閉
難度 2/5 1-3 小時 新手友好度 82/100
microsoft/TokenEconomizer#221 ·
維護者通常 1 天內回覆
-
plot_graph crashes when a mesh node has no m2m edge可能已有人在做 @tygvi 今天認領。 未關閉
難度 2/5 1-3 小時 新手友好度 78/100
mllam/neural-lam#883 · 1 則留言 ·
維護者通常 2 天內回覆