diff options
Diffstat (limited to 'tools/clang/blink_gc_plugin/tests/legacy_naming/test.py')
-rwxr-xr-x | tools/clang/blink_gc_plugin/tests/legacy_naming/test.py | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/tools/clang/blink_gc_plugin/tests/legacy_naming/test.py b/tools/clang/blink_gc_plugin/tests/legacy_naming/test.py new file mode 100755 index 00000000..475f6fbf --- /dev/null +++ b/tools/clang/blink_gc_plugin/tests/legacy_naming/test.py @@ -0,0 +1,66 @@ +#!/usr/bin/env python +# Copyright 2015 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 argparse +import os +import subprocess +import sys + +script_dir = os.path.dirname(os.path.realpath(__file__)) +tool_dir = os.path.abspath(os.path.join(script_dir, '../../../pylib')) +sys.path.insert(0, tool_dir) + +from clang import plugin_testing + + +class BlinkGcPluginTest(plugin_testing.ClangPluginTest): + """Test harness for the Blink GC plugin.""" + + def AdjustClangArguments(self, clang_cmd): + clang_cmd.append('-Wno-inaccessible-base') + + def ProcessOneResult(self, test_name, actual): + # Some Blink GC plugins dump a JSON representation of the object graph, and + # use the processed results as the actual results of the test. + if os.path.exists('%s.graph.json' % test_name): + try: + actual = subprocess.check_output( + ['python', '../../process-graph.py', '-c', + '%s.graph.json' % test_name], + stderr=subprocess.STDOUT) + except subprocess.CalledProcessError, e: + # The graph processing script returns a failure exit code if the graph + # is bad (e.g. it has a cycle). The output still needs to be captured in + # that case, since the expected results capture the errors. + actual = e.output + finally: + # Clean up the .graph.json file to prevent false passes from stale + # results from a previous run. + os.remove('%s.graph.json' % test_name) + return super(BlinkGcPluginTest, self).ProcessOneResult(test_name, actual) + + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument( + '--reset-results', + action='store_true', + help='If specified, overwrites the expected results in place.') + parser.add_argument('clang_path', help='The path to the clang binary.') + parser.add_argument('plugin_path', + nargs='?', + help='The path to the plugin library, if any.') + args = parser.parse_args() + + return BlinkGcPluginTest( + os.path.dirname(os.path.realpath(__file__)), + args.clang_path, + args.plugin_path, + 'blink-gc-plugin', + args.reset_results).Run() + + +if __name__ == '__main__': + sys.exit(main()) |