eiffel-community / eiffel-community/eiffel-pythonlib
`EiffelBaseEvent.rebuild` mutate the input json object
- Lenguaje dominante
- Python
- Estrellas
- 8
- Forks
- 12
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Descripción
### Description
Can be reproduced with below code, the `original_event` is mutated after passing in to `rebuild` method.
```python
import eiffellib.events
from pprint import pprint
original_event = {
'data': {'customData': [{'key': 'name', 'value': 'TCF4'},
{'key': 'iteration', 'value': 4}],
'outcome': {'conclusion': 'SUCCESSFUL', 'verdict': 'PASSED'}},
'links': [{'target': 'ea44d3ed-0c22-4833-8bc4-139a17fe93b0',
'type': 'TEST_CASE_EXECUTION'}],
'meta': {'id': '39420db3-69fa-4786-a521-420357e5665d',
'source': {'domainId': 'example.domain'},
'time': 1533635195805,
'type': 'EiffelTestCaseFinishedEvent',
'version': '1.0.0'}
}
meta_type = original_event.get("meta", {}).get("type")
new_event = getattr(eiffellib.events, meta_type)(original_event.get("meta", {}).get("version"))
new_event.rebuild(original_event) # FIXME: rebuild method mutate the input object!
pprint(original_event)
```
The print output is as below. The propertities in `meta` are removed except the `source`
```
{'data': {'customData': [{'key': 'name', 'value': 'TCF4'},
{'key': 'iteration', 'value': 4}],
'outcome': {'conclusion': 'SUCCESSFUL', 'verdict': 'PASSED'}},
'links': [{'target': 'ea44d3ed-0c22-4833-8bc4-139a17fe93b0',
'type': 'TEST_CASE_EXECUTION'}],
'meta': {'source': {'domainId': 'example.domain'}}}
```
Guía de contribución
Línea de trabajo
Comienza en el punto de entrada EiffelBaseEvent.rebuild y ejecuta la reproducción mostrada en el issue para observar qué campos se eliminan de original_event. Traza cómo rebuild gestiona el diccionario de entrada; se considera terminado cuando la reconstrucción conserva el contenido de original_event y mantiene el comportamiento esperado del evento.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- python
- Área
- backend-api-design
- Tipo de issue
- Error
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 45/100