summaryrefslogtreecommitdiffstats
path: root/libcxx/test/pretty_printers/gdb_pretty_printer_test.py
diff options
context:
space:
mode:
Diffstat (limited to 'libcxx/test/pretty_printers/gdb_pretty_printer_test.py')
-rw-r--r--libcxx/test/pretty_printers/gdb_pretty_printer_test.py112
1 files changed, 0 insertions, 112 deletions
diff --git a/libcxx/test/pretty_printers/gdb_pretty_printer_test.py b/libcxx/test/pretty_printers/gdb_pretty_printer_test.py
deleted file mode 100644
index 5e425688734..00000000000
--- a/libcxx/test/pretty_printers/gdb_pretty_printer_test.py
+++ /dev/null
@@ -1,112 +0,0 @@
-#===----------------------------------------------------------------------===##
-#
-# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-# See https://llvm.org/LICENSE.txt for license information.
-# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-#
-#===----------------------------------------------------------------------===##
-"""Commands used to automate testing gdb pretty printers.
-
-This script is part of a larger framework to test gdb pretty printers. It
-runs the program, detects test cases, checks them, and prints results.
-
-See gdb_pretty_printer_test.sh.cpp on how to write a test case.
-
-"""
-
-from __future__ import print_function
-import re
-import gdb
-
-test_failures = 0
-
-
-class CheckResult(gdb.Command):
-
- def __init__(self):
- super(CheckResult, self).__init__(
- "print_and_compare", gdb.COMMAND_DATA)
-
- def invoke(self, arg, from_tty):
- try:
- # Stack frame is:
- # 0. StopForDebugger
- # 1. ComparePrettyPrintToChars or ComparePrettyPrintToRegex
- # 2. TestCase
- compare_frame = gdb.newest_frame().older()
- testcase_frame = compare_frame.older()
- test_loc = testcase_frame.find_sal()
- # Use interactive commands in the correct context to get the pretty
- # printed version
-
- value_str = self._get_value_string(compare_frame, testcase_frame)
-
- # Ignore the convenience variable name and newline
- value = value_str[value_str.find("= ") + 2:-1]
- gdb.newest_frame().select()
-
- expectation_val = compare_frame.read_var("expectation")
- if "PrettyPrintToRegex" in compare_frame.name():
- check_literal = expectation_val.string()
- test_fails = not re.match(check_literal, value)
- else:
- check_literal_string = expectation_val.string(encoding="utf-8")
- check_literal = check_literal_string.encode("utf-8")
- test_fails = value != check_literal
-
- if test_fails:
- global test_failures
- print("FAIL: " + test_loc.symtab.filename +
- ":" + str(test_loc.line))
- print("GDB printed:")
- print(" " + value)
- print("Value should match:")
- print(" " + check_literal)
- test_failures += 1
- else:
- print("PASS: " + test_loc.symtab.filename +
- ":" + str(test_loc.line))
-
- except RuntimeError as e:
- # At this point, lots of different things could be wrong, so don't try to
- # recover or figure it out. Don't exit either, because then it's
- # impossible debug the framework itself.
- print("FAIL: Something is wrong in the test framework.")
- print(str(e))
- test_failures += 1
-
- def _get_value_string(self, compare_frame, testcase_frame):
- compare_frame.select()
- if "ComparePrettyPrint" in compare_frame.name():
- return gdb.execute("p value", to_string=True)
- value_str = str(compare_frame.read_var("value"))
- clean_expression_str = value_str.strip("'\"")
- testcase_frame.select()
- return gdb.execute("p " + clean_expression_str, to_string=True)
-
-
-def exit_handler(event=None):
- global test_failures
- if test_failures:
- print("FAILED %d cases" % test_failures)
- exit(test_failures)
-
-
-# Start code executed at load time
-
-# Disable terminal paging
-gdb.execute("set height 0")
-gdb.execute("set python print-stack full")
-test_failures = 0
-CheckResult()
-test_bp = gdb.Breakpoint("StopForDebugger")
-test_bp.enabled = True
-test_bp.silent = True
-test_bp.commands = "print_and_compare\ncontinue"
-# "run" won't return if the program exits; ensure the script regains control.
-gdb.events.exited.connect(exit_handler)
-gdb.execute("run")
-# If the program didn't exit, something went wrong, but we don't
-# know what. Fail on exit.
-test_failures += 1
-exit_handler(None)
OpenPOWER on IntegriCloud