Specify dependency of each test case
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 25/100
Línea de trabajo
Comienza revisando los métodos de prueba y los mecanismos existentes de array_helpers y de stubbing de módulos. Después, investiga el hook de colección de pytest y cómo la suite representa las funciones de nivel superior, los métodos de objetos array y los operadores. La implementación debe incluir una representación de dependencias definida, un grafo de dependencias y una priorización de pruebas o un omitir pruebas basados en dependencias.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
The test suite is mostly made up of test methods for each function (or array object method) in the spec. The majority of these tests require other functions to do everything we want, which is problematic when an underlying function does not work—you'll get a lot of spammy errors that actually relate to a single fundamental problem... or even false positives.
So I think it would be a good idea if we declared the dependencies of each test method, i.e. the functions we use and assume has correct behaviour. We could use these declarations to create a dependency graph, which could be hooked with pytest to prioritise zero/low-dependency tests first, and by default skipping tests that use functions we've deemed incorrect. This will benefit:
- Array API adoptors, who would much more easily see what they should prioritise developing
- Us, who'd be able to see areas where we can try to cut down the functions we depend on
Ideas for declaring dependencies per test method:
- Decorator which lists function and method names
- Automatically infer dependencies via looking at function code (either searching the code as string, or using the AST)
General challenges would be:
- How to get pytests collection hook to do this
- Supporting array object methods alongside the top-level functions
- As well as operator symbols
The dependency graph + auto skipping would also allow us to:
- Remove some mirrored functions in
array_helpers - Remove the module stubbing mechanism
- Check that no tests is using the function they're testing for assertions
- Lenguaje dominante
- Python
- Estrellas
- 74
- Forks
- 54
- Merge medio
- 4 h 35 min
- PR fusionados (30 d)
- 4
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 data-apis/array-api-tests
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 87/100
data-apis/array-api-tests#465 · 1 comentario ·
-
Test reflected operators?Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 68/100
data-apis/array-api-tests#460 · 1 comentario ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 68/100
data-apis/array-api-tests#455 · 2 comentarios ·
-
tracking
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
data-apis/array-api-tests#381 · 9 comentarios ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 38/100
data-apis/array-api-tests#379 · 10 comentarios ·
Todos los issues de data-apis/array-api-tests
Issues similares
-
[request] poppler-data/0.4.12Abiertoupstream update
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
conan-io/conan-center-index#31098 ·
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
john-kurkowski/tldextract#382 ·
-
comp/tools duplicate P2 sweeper:risk-compatibility tool/mcp type/bug
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
NousResearch/hermes-agent#132042 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
deepset-ai/haystack#13092 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 1-3 horas Aptitud para principiantes 85/100
feder-cr/invisible_playwright_mcp#1408 ·
Los mantenedores suelen responder en 1 día