From cda750802aef3beea582f0f3cad824be491abb4d Mon Sep 17 00:00:00 2001 From: Tom de Vries Date: Tue, 24 Oct 2023 14:31:34 +0200 Subject: [PATCH] [gdb/cli] Add gnu-source-highlight selftest Add a selftest gnu-source-highlight: ... $ gdb -q -batch -ex "maint selftest gnu-source-highlight" Running selftest gnu-source-highlight. Ran 1 unit tests, 0 failed ... Tested on x86_64-linux. --- gdb/source-cache.c | 46 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/gdb/source-cache.c b/gdb/source-cache.c index 92acb100901..c955929b543 100644 --- a/gdb/source-cache.c +++ b/gdb/source-cache.c @@ -22,7 +22,6 @@ #include "source.h" #include "cli/cli-style.h" #include "symtab.h" -#include "gdbsupport/selftest.h" #include "objfiles.h" #include "exec.h" #include "cli/cli-cmds.h" @@ -40,6 +39,10 @@ #include #endif +#if GDB_SELF_TEST +#include "gdbsupport/selftest.h" +#endif + /* The number of source files we'll cache. */ #define MAX_ENTRIES 5 @@ -258,6 +261,43 @@ try_source_highlight (std::string &contents ATTRIBUTE_UNUSED, #endif /* HAVE_SOURCE_HIGHLIGHT */ } +#ifdef HAVE_SOURCE_HIGHLIGHT +#if GDB_SELF_TEST +namespace selftests +{ +static void gnu_source_highlight_test () +{ + const std::string prog + = ("int\n" + "foo (void)\n" + "{\n" + " return 0;\n" + "}\n"); + const std::string fullname = "test.c"; + std::string styled_prog; + + bool res = false; + bool saw_exception = false; + styled_prog = prog; + try + { + res = try_source_highlight (styled_prog, language_c, fullname); + } + catch (...) + { + saw_exception = true; + } + + SELF_CHECK (!saw_exception); + if (res) + SELF_CHECK (prog.size () < styled_prog.size ()); + else + SELF_CHECK (prog == styled_prog); +} +} +#endif /* GDB_SELF_TEST */ +#endif /* HAVE_SOURCE_HIGHLIGHT */ + /* See source-cache.h. */ bool @@ -489,5 +529,9 @@ styling to source code lines that are shown."), #if GDB_SELF_TEST selftests::register_test ("source-cache", selftests::extract_lines_test); +#ifdef HAVE_SOURCE_HIGHLIGHT + selftests::register_test ("gnu-source-highlight", + selftests::gnu_source_highlight_test); +#endif #endif } -- 2.30.2