aboutsummaryrefslogtreecommitdiff
path: root/gcc/diagnostic.c
diff options
context:
space:
mode:
authorDavid Malcolm <dmalcolm@redhat.com>2017-11-02 20:13:18 +0000
committerDavid Malcolm <dmalcolm@gcc.gnu.org>2017-11-02 20:13:18 +0000
commitace725989eef16efea050619597f5c7f71667e1d (patch)
tree0fcf51848d421799ddb04ca6eab844a355620a32 /gcc/diagnostic.c
parentba7bfd9f049d00f41be1240adebf27e13bcac261 (diff)
downloadgcc-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.c41
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