Restoring a published QTI item stores lxml's reserialization instead of the published XML
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
- 30/100
Línea de trabajo
Read contentcuration/contentcuration/utils/import_tools.py around lines 585–588 and contentcuration/contentcuration/utils/assessment/qti/media.py around lines 33–34 to trace how restore handles QTI XML. Run pytest contentcuration/contentcuration/tests/test_restore_channel.py -k QTIRestore to reproduce the failure. Done means the restore tests pass, restored QTI and Perseus raw_data matches the source, and republished package item files match the source package; the issue says it is not open for contribution.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
❌ This issue is not open for contribution. Visit Contributing guidelines to learn about the contributing process and how to find suitable issues.
Target branch: unstable
Observed behavior
- Restore stores a QTI item's
raw_databy passing the packaged XML throughrewrite_qti_media_paths(import_tools.py#L585-L588, from #6243). - Since #6241,
rewrite_qti_media_pathsreparses the item and returns lxml's serialization (media.py#L33-L34), so the restoredraw_datadiffers from the source item's. - The two PRs merged minutes apart; the Python unit tests job has failed on
unstablesince then, and on every PR based on it.
Errors and logs
FAILED test_restore_channel.py::QTIRestoreTestCase::test_dual_published_node_restores_each_question_once
FAILED test_restore_channel.py::QTIRestoreTestCase::test_qti_only_node_restores_editor_and_legacy_items_as_qti
SUBFAILED(order=1) test_restore_channel.py::QTIRestoreTestCase::test_perseus_question_in_package_restores_as_perseus_question
E AssertionError: '<?xml version=\'1.0\' encoding=\'UTF-8\'?>\n<qti-assess[1250 chars]tem>' != '<?xml version="1.0" encoding="UTF-8"?><qti-assessment-i[1247 chars]tem>'
contentcuration/contentcuration/tests/test_restore_channel.py:417: AssertionError
User-facing consequences
- CI is red for every Studio PR, so real regressions in the Python suite are hidden.
Steps to reproduce
- Check out
unstableat51657a6d9. - Run
pytest contentcuration/contentcuration/tests/test_restore_channel.py -k QTIRestore.
Acceptance Criteria
-
pytest contentcuration/contentcuration/tests/test_restore_channel.pypasses onunstable. - A restored QTI or Perseus-question item's
raw_dataequals its source item'sraw_data. - Republishing a restored node produces package item files equal to the source package's.
AI usage
Claude Code found the failure while fixing CI on #6273, bisected it to the #6241/#6243 merge, and drafted this issue.
- Lenguaje dominante
- Python
- Estrellas
- 192
- Forks
- 310
- Merge medio
- 2 d 22 h
- PR fusionados (30 d)
- 71
Preparar el entorno
- Incluye un Dockerfile o un archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
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 learningequality/studio
-
Set unpublishable: true on PublishedChange by construction to simplify handleMaxRevs predicateAbiertoDEV: frontend P3 - low
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
learningequality/studio#5868 ·
Los mantenedores suelen responder en 1 día
-
TAG: tech update / debt
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
learningequality/studio#2245 ·
Los mantenedores suelen responder en 1 día
-
TAG: tech update / debt
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
learningequality/studio#6318 ·
Los mantenedores suelen responder en 1 día
-
bug DEV: frontend P0 - critical
Dificultad 3/5 1-2 días Aptitud para principiantes 22/100
learningequality/studio#6316 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 4/5 1-2 días Aptitud para principiantes 35/100
learningequality/studio#6315 · 1 comentario ·
Los mantenedores suelen responder en 1 día
Todos los issues de learningequality/studio
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
sierra-research/tau2-bench#635 ·
Los mantenedores suelen responder en 1 día
-
The add-ssm-model skill requires a Cython simulator; the contributing guide allows Python onesPosiblemente ocupada @fmuia la tomó hoy. Abiertodocumentation skill
Dificultad 2/5 1-3 horas Aptitud para principiantes 83/100
lnccbrown/ssm-simulators#406 ·
Los mantenedores suelen responder en 4 días
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 95/100
btclib-org/btclib-ecc#309 ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
jbacalso24/mimry#459 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
[Bug] POST /revoke with a FastMCP access token is a silent no-op (ownership gate never matches)Abiertoauth bug high-priority
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día