blob: e582bc194cda9f039fe6c987f8acd53766256b62 [file] [log] [blame]
# 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 sys
import os
tracing_path = os.path.abspath(os.path.join(os.path.dirname(__file__),
'..', '..'))
if tracing_path not in sys.path:
sys.path.append(tracing_path)
from tracing import tracing_project
FILE_GROUPS = ["tracing_css_files",
"tracing_js_html_files",
"tracing_img_files"]
def GetFileGroupFromFileName(filename):
extension = os.path.splitext(filename)[1]
return {
'.css': 'tracing_css_files',
'.html': 'tracing_js_html_files',
'.js': 'tracing_js_html_files',
'.png': 'tracing_img_files'
}[extension]
def CheckListedFilesSorted(src_file, group_name, listed_files):
sorted_files = sorted(listed_files)
if sorted_files != listed_files:
mismatch = ''
for i in range(len(listed_files)):
if listed_files[i] != sorted_files[i]:
mismatch = listed_files[i]
break
what_is = ' ' + '\n '.join(listed_files)
what_should_be = ' ' + '\n '.join(sorted_files)
return '''In group {0} from file {1}, filenames aren't sorted.
First mismatch:
{2}
Current listing:
{3}
Correct listing:
{4}\n\n'''.format(group_name, src_file, mismatch, what_is, what_should_be)
else:
return ''
def GetKnownFiles():
p = tracing_project.TracingProject()
m = p.loader.LoadModule(module_name='ui.extras.about_tracing.about_tracing')
absolute_filenames = m.GetAllDependentFilenamesRecursive(
include_raw_scripts=False)
return list(set([os.path.relpath(f, p.tracing_root_path)
for f in absolute_filenames]))
def CheckCommon(file_name, listed_files):
tracing_project.TracingProject()
known_files = GetKnownFiles()
u = set(listed_files).union(set(known_files))
i = set(listed_files).intersection(set(known_files))
diff = list(u - i)
if len(diff) == 0:
return ''
error = 'Entries in ' + file_name + ' do not match files on disk:\n'
in_file_only = list(set(listed_files) - set(known_files))
in_known_only = list(set(known_files) - set(listed_files))
if len(in_file_only) > 0:
error += ' In file only:\n ' + '\n '.join(sorted(in_file_only))
if len(in_known_only) > 0:
if len(in_file_only) > 0:
error += '\n\n'
error += ' On disk only:\n ' + '\n '.join(sorted(in_known_only))
if in_file_only:
error += (
'\n\n'
' Note: only files actually used in about:tracing should\n'
' be listed in the build files. Try running build/update_gyp_and_gn\n'
' to update the files automatically.')
return error