eiffel-community / eiffel-community/eiffel-pythonlib

`EiffelBaseEvent.rebuild` mutate the input json object

Abierto
#44 1 comentario 0 reacciones 0 asignados Ver en GitHub
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

Abrir la 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

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.