# Copyright (c) 2013 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import os
GYP_FILE = "trace_viewer.gyp"
FILE_GROUPS = ["tracing_html_files",
"tracing_css_files",
"tracing_js_files",
"tracing_template_files",
"tracing_img_files"]
def GypCheck():
f = open(GYP_FILE, 'r')
gyp = f.read()
f.close()
data = eval(gyp)
gyp_files = []
for group in FILE_GROUPS:
gyp_files.extend(data["variables"][group])
known_files = []
for (dirpath, dirnames, filenames) in os.walk('src'):
for name in filenames:
if not name.endswith(("_test.js", "_test_data.js", "tests.html")):
known_files.append(os.path.join(dirpath, name))
u = set(gyp_files).union(set(known_files))
i = set(gyp_files).intersection(set(known_files))
diff = list(u - i)
if len(diff) == 0:
return ''
error = 'Entries in ' + GYP_FILE + ' do not match files on disk:\n'
in_gyp_only = list(set(gyp_files) - set(known_files))
in_known_only = list(set(known_files) - set(gyp_files))
if len(in_gyp_only) > 0:
error += ' In GYP only:\n ' + '\n '.join(sorted(in_gyp_only))
if len(in_known_only) > 0:
if len(in_gyp_only) > 0:
error += '\n\n'
error += ' On disk only:\n ' + '\n '.join(sorted(in_known_only))
return error