From 7af096761fd962529dad8d53ad48dcfb71f9c997 Mon Sep 17 00:00:00 2001 From: Tristan Cacqueray Date: Wed, 5 Jun 2019 10:47:05 +0000 Subject: [PATCH] jsonutil: do not encode SourceContext or ZuulMark In certain situation (e.g. when a job in a project template defines a variable named 'job' while the job already has a variable named 'job'), the JSONEncoder fail with this exception: File "zuul/lib/jsonutil.py", line 26, in default return json.JSONEncoder.default(self, o) File "json/encoder.py", line 180, in default raise TypeError(repr(o) + " is not JSON serializable") TypeError: is not JSON serializable Change-Id: Icb6490bc1b3ce4b7f326b07eb9871f9d2b3b605a --- zuul/lib/jsonutil.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/zuul/lib/jsonutil.py b/zuul/lib/jsonutil.py index 02f6f6da93..fe876d1d62 100644 --- a/zuul/lib/jsonutil.py +++ b/zuul/lib/jsonutil.py @@ -13,6 +13,9 @@ import json import types +import zuul.configloader +import zuul.model + class ZuulJSONEncoder(json.JSONEncoder): def default(self, o): @@ -22,6 +25,10 @@ class ZuulJSONEncoder(json.JSONEncoder): d.pop('_source_context', None) d.pop('_start_mark', None) return d + elif ( + isinstance(o, zuul.model.SourceContext) or + isinstance(o, zuul.configloader.ZuulMark)): + return {} return json.JSONEncoder.default(self, o)