aboutsummaryrefslogtreecommitdiffstats
path: root/python/tidy/servo_tidy/tidy.py
diff options
context:
space:
mode:
authorOwen Coutts <owen@owencoutts.com>2016-07-06 19:15:56 +0200
committerOwen Coutts <owen@owencoutts.com>2016-07-08 11:12:12 +0200
commitff4cb7f80a0560e0d4d72e44de71d39fada1d171 (patch)
tree68df39738bdf039f6052b9c825ea5e7d27fffe91 /python/tidy/servo_tidy/tidy.py
parent9b2b101d195e2aa042ea71dae0ec6e50eb6d11d9 (diff)
downloadservo-ff4cb7f80a0560e0d4d72e44de71d39fada1d171.tar.gz
servo-ff4cb7f80a0560e0d4d72e44de71d39fada1d171.zip
[tidy] check for duplicate keys in .json files
Diffstat (limited to 'python/tidy/servo_tidy/tidy.py')
-rw-r--r--python/tidy/servo_tidy/tidy.py14
1 files changed, 13 insertions, 1 deletions
diff --git a/python/tidy/servo_tidy/tidy.py b/python/tidy/servo_tidy/tidy.py
index 234c50727d5..093e8f3aeee 100644
--- a/python/tidy/servo_tidy/tidy.py
+++ b/python/tidy/servo_tidy/tidy.py
@@ -524,16 +524,28 @@ def check_webidl_spec(file_name, contents):
yield (0, "No specification link found.")
+def check_for_possible_duplicate_json_keys(key_value_pairs):
+ keys = [x[0] for x in key_value_pairs]
+ seen_keys = set()
+ for key in keys:
+ if key in seen_keys:
+ raise KeyError(key)
+
+ seen_keys.add(key)
+
+
def check_json(filename, contents):
if not filename.endswith(".json"):
raise StopIteration
try:
- json.loads(contents)
+ json.loads(contents, object_pairs_hook=check_for_possible_duplicate_json_keys)
except ValueError as e:
match = re.search(r"line (\d+) ", e.message)
line_no = match and match.group(1)
yield (line_no, e.message)
+ except KeyError as e:
+ yield (None, "Duplicated Key (%s)" % e.message)
def check_spec(file_name, lines):