Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(297)

Side by Side Diff: tracing/bin/validate_all_diagnostics

Issue 2914163002: Check that Diagnostic subclasses are registered in presubmit. (Closed)
Patch Set: Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 #!/usr/bin/env python
2 # Copyright 2017 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file.
5
6 import argparse
7 import json
8 import os
9 import string
10 import sys
11
12 sys.path.insert(
13 1,
14 os.path.join(os.path.dirname(os.path.realpath(__file__)), '..'))
15 import tracing_project
16 tracing_project.UpdateSysPathIfNeeded()
17 import vinn
18
19
20 _DISCOVER_CMDLINE = os.path.join(
21 os.path.dirname(__file__), '..', 'tracing', 'value', 'diagnostics',
22 'discover_cmdline.html')
23
24
25 def DiscoverDiagnostics(project, js_args):
26 res = vinn.RunFile(_DISCOVER_CMDLINE, source_paths=list(project.source_paths),
27 js_args=js_args)
28 if res.returncode != 0:
29 raise RuntimeError('Error running diagnostics/discover_cmdline: ' + res.stdo ut)
30 else:
31 return [str(m) for m in json.loads(res.stdout)]
32
33
34 def Main():
35 project = tracing_project.TracingProject()
36 all_registered_diagnostics = set(DiscoverDiagnostics(
eakuefner 2017/06/01 21:40:48 Maybe just have DiscoverDiagnostics return a set?
37 project, ['registry', '/tracing/value/diagnostics/all_diagnostics.html']))
38 all_modules = list(
39 '/' + rel_path for rel_path in
40 tracing_project.TracingProject().FindAllDiagnosticsModuleRelPaths())
41 all_possible_diagnostics = set(DiscoverDiagnostics(
42 project, ['namespace'] + all_modules))
43
44 unregistered_diagnostics = (all_possible_diagnostics -
45 all_registered_diagnostics)
46 if unregistered_diagnostics:
47 print ('These diagnostics are unregistered: %s. Please import their modules in '
48 'tracing/tracing/value/diagnostics/all_diagnostics.html and '
49 'ensure that they call Diagnostic.register().' %
50 ', '.join(unregistered_diagnostics))
51 return 1
52
53 lowercased_diagnostics = []
54 for m in all_possible_diagnostics:
55 if str.islower(m[0]):
56 lowercased_diagnostics.append(m)
57 if lowercased_diagnostics:
58 print ('These diagnostics must be renamed to start with a upper-case: %s' %
59 lowercased_diagnostics)
60 return 1
61
62 return 0
63
64 if __name__ == '__main__':
65 sys.exit(Main())
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698