eiffel-community / eiffel-community/eiffel-pythonlib
`EiffelBaseEvent.rebuild` mutate the input json object
- Langage dominant
- Python
- Étoiles
- 8
- Forks
- 12
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
### 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'}}}
```
Guide de contribution
Ouvrir le guide de contribution
Piste de recherche
Commencez au point d’entrée EiffelBaseEvent.rebuild et exécutez la reproduction présentée dans l’issue afin d’observer quels champs sont supprimés de original_event. Suivez la manière dont rebuild traite le dictionnaire d’entrée ; le travail est terminé lorsque la reconstruction préserve le contenu de original_event tout en conservant le comportement attendu de l’événement.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- backend-api-design
- Type d'issue
- Bug
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 45/100