diff options
author | David Malcolm <dmalcolm@redhat.com> | 2017-11-02 20:13:18 +0000 |
---|---|---|
committer | David Malcolm <dmalcolm@gcc.gnu.org> | 2017-11-02 20:13:18 +0000 |
commit | ace725989eef16efea050619597f5c7f71667e1d (patch) | |
tree | 0fcf51848d421799ddb04ca6eab844a355620a32 /gcc/diagnostic.c | |
parent | ba7bfd9f049d00f41be1240adebf27e13bcac261 (diff) | |
download | gcc-ace725989eef16efea050619597f5c7f71667e1d.zip gcc-ace725989eef16efea050619597f5c7f71667e1d.tar.gz gcc-ace725989eef16efea050619597f5c7f71667e1d.tar.bz2 |
Add selftest for diagnostic_get_location_text
gcc/ChangeLog:
* diagnostic.c: Include "selftest-diagnostic.h".
(selftest::assert_location_text): New function.
(selftest::test_diagnostic_get_location_text): New function.
(selftest::diagnostic_c_tests): Call it.
From-SVN: r254355
Diffstat (limited to 'gcc/diagnostic.c')
-rw-r--r-- | gcc/diagnostic.c | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/gcc/diagnostic.c b/gcc/diagnostic.c index 9db4b46..813bca6 100644 --- a/gcc/diagnostic.c +++ b/gcc/diagnostic.c @@ -33,6 +33,7 @@ along with GCC; see the file COPYING3. If not see #include "diagnostic-color.h" #include "edit-context.h" #include "selftest.h" +#include "selftest-diagnostic.h" #ifdef HAVE_TERMIOS_H # include <termios.h> @@ -1627,6 +1628,45 @@ test_print_parseable_fixits_replace () pp_formatted_text (&pp)); } +/* Verify that + diagnostic_get_location_text (..., SHOW_COLUMN) + generates EXPECTED_LOC_TEXT, given FILENAME, LINE, COLUMN, with + colorization disabled. */ + +static void +assert_location_text (const char *expected_loc_text, + const char *filename, int line, int column, + bool show_column) +{ + test_diagnostic_context dc; + dc.show_column = show_column; + + expanded_location xloc; + xloc.file = filename; + xloc.line = line; + xloc.column = column; + xloc.data = NULL; + xloc.sysp = false; + + char *actual_loc_text = diagnostic_get_location_text (&dc, xloc); + ASSERT_STREQ (expected_loc_text, actual_loc_text); + free (actual_loc_text); +} + +/* Verify that diagnostic_get_location_text works as expected. */ + +static void +test_diagnostic_get_location_text () +{ + const char *old_progname = progname; + progname = "PROGNAME"; + assert_location_text ("PROGNAME:", NULL, 0, 0, true); + assert_location_text ("<built-in>:", "<built-in>", 42, 10, true); + assert_location_text ("foo.c:42:10:", "foo.c", 42, 10, true); + assert_location_text ("foo.c:42:", "foo.c", 42, 10, false); + progname = old_progname; +} + /* Run all of the selftests within this file. */ void @@ -1637,6 +1677,7 @@ diagnostic_c_tests () test_print_parseable_fixits_insert (); test_print_parseable_fixits_remove (); test_print_parseable_fixits_replace (); + test_diagnostic_get_location_text (); } } // namespace selftest |