getappmap / getappmap/appmap-python

in-process invocation of a test runner fails with "Recording already in progress"

Abierto
#371 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Lenguaje dominante
Python
Estrellas
104
Forks
17
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

If one of the supported test runners (e.g. pytest, unittest) is run in-process, the enabled recording methods for the process apply to the test runner.

For example, in this test, the sqlmesh plan subcommand uses a click.testing.CliRunner to run a unittest test, which fails:

tests/cli/test_cli.py::test_plan 
----------------------------------------------------------------------
Test Failure Summary
======================================================================
Num Successful Tests: 0
Failure Test: sqlmesh_example.full_model test_example_full_model
======================================================================
E
======================================================================
ERROR: test_example_full_model (/private/var/folders/2g/xqtf8_tn5j1861bbkvvhtmmr0000gn/T/pytest-of-ajp/pytest-159/test_plan0/tests/test_full_model.yaml)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/ajp/src/applandinc/appmap-python/_appmap/wrapt/wrappers.py", line 744, in __call__
    return self._self_wrapper(self.__wrapped__, self._self_instance,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/ajp/src/applandinc/appmap-python/_appmap/unittest.py", line 36, in callTestMethod
    with _session.record(test_case.__class__, method_name, location=location) as metadata:
  File "/Users/ajp/.asdf/installs/python/3.12.2/lib/python3.12/contextlib.py", line 137, in __enter__
    return next(self.gen)
           ^^^^^^^^^^^^^^
  File "/Users/ajp/src/applandinc/appmap-python/_appmap/testing_framework.py", line 119, in record
    with rec, environ.disabled("requests"):
  File "/Users/ajp/src/applandinc/appmap-python/_appmap/recording.py", line 47, in __enter__
    self.start()
  File "/Users/ajp/src/applandinc/appmap-python/_appmap/recording.py", line 32, in start
    r.start_recording()
  File "/Users/ajp/src/applandinc/appmap-python/_appmap/recorder.py", line 108, in start_recording
    cls.get_current()._start_recording()  # pylint: disable=protected-access
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/ajp/src/applandinc/appmap-python/_appmap/recorder.py", line 236, in _start_recording
    super()._start_recording()
  File "/Users/ajp/src/applandinc/appmap-python/_appmap/recorder.py", line 158, in _start_recording
    raise RuntimeError("Recording already in progress")
RuntimeError: Recording already in progress

----------------------------------------------------------------------
Ran 1 test in 0.165s

FAILED (errors=1)

Error: Cannot generate plan due to failing test(s). Fix test(s) and run again

FAILED

============================================================================================ FAILURES ============================================================================================

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Reproduce el fallo de tests/cli/test_cli.py::test_plan y, a continuación, sigue el flujo de grabación anidado a través de _appmap/unittest.py, testing_framework.py, recording.py y recorder.py. Verifica que un ejecutor de pruebas dentro del proceso ya no genere "Recording already in progress" y que la prueba del plan se complete correctamente.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
python
Área
devtools, testing-qa
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.