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
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 48/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Área
- build-system, testing-qa
Línea de trabajo
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.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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
- Lenguaje dominante
- Python
- Estrellas
- 4
- Forks
- 1
- Merge medio
- 10 h 41 min
- PR fusionados (30 d)
- 79
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de cpp-best-practices/project_validator
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
cpp-best-practices/project_validator#267 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
cpp-best-practices/project_validator#263 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
cpp-best-practices/project_validator#260 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
cpp-best-practices/project_validator#259 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
cpp-best-practices/project_validator#255 ·
Los mantenedores suelen responder en 1 día
Todos los issues de cpp-best-practices/project_validator
Issues similares
-
plot_graph crashes when a mesh node has no m2m edgePosiblemente ocupada @tygvi la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
mllam/neural-lam#883 · 1 comentario ·
Los mantenedores suelen responder en 2 días
-
enhancement possible-duplicate
Dificultad 1/5 1-3 horas Aptitud para principiantes 78/100
AOSSIE-Org/PictoPy#1715 · 2 comentarios ·
Los mantenedores suelen responder en 6 días
-
SQLite connector omits generated columns from the catalog, and drops relationships sourced on themAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
NVIDIA/auto-ontology#511 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
ethereum/execution-specs#3996 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Project-N-E-K-O/N.E.K.O#3725 ·
Los mantenedores suelen responder en 1 día