Bug 1614518 - Make warnings.py py3-compatible r=ahal,froydnj

Differential Revision: https://phabricator.services.mozilla.com/D62382

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Steve Fink 2020-02-20 18:33:10 +00:00
Родитель 68147f294f
Коммит fb0884a86b
1 изменённых файлов: 8 добавлений и 12 удалений

Просмотреть файл

@ -10,6 +10,7 @@ import errno
import json
import os
import re
import six
from mozbuild.util import hash_file
import mozpack.path as mozpath
@ -245,15 +246,13 @@ class WarningsDatabase(object):
obj = {'files': {}}
# All this hackery because JSON can't handle sets.
for k, v in self._files.iteritems():
for k, v in six.iteritems(self._files):
obj['files'][k] = {}
for k2, v2 in v.iteritems():
for k2, v2 in six.iteritems(v):
normalized = v2
if k2 == 'warnings':
normalized = [w for w in v2]
if isinstance(v2, set):
normalized = list(v2)
obj['files'][k][k2] = normalized
json.dump(obj, fh, indent=2)
@ -265,13 +264,10 @@ class WarningsDatabase(object):
self._files = obj['files']
# Normalize data types.
for filename, value in self._files.iteritems():
for k, v in value.iteritems():
if k != 'warnings':
continue
for filename, value in six.iteritems(self._files):
if 'warnings' in value:
normalized = set()
for d in v:
for d in value['warnings']:
w = CompilerWarning()
w.update(d)
normalized.add(w)