bootstrap: fix failing diagnostic selftest on Windows [PR98696]
authorDavid Malcolm <dmalcolm@redhat.com>
Fri, 15 Jan 2021 18:26:39 +0000 (13:26 -0500)
committerDavid Malcolm <dmalcolm@redhat.com>
Fri, 15 Jan 2021 18:26:39 +0000 (13:26 -0500)
In one of the selftests in g:f10960558540636800cf5d3d6355969621fbc17e
I didn't consider that paths can contain backslashes, which happens
for the tempfiles on Windows hosts.

gcc/ChangeLog:
PR bootstrap/98696
* diagnostic.c
(selftest::test_print_parseable_fixits_bytes_vs_display_columns):
Escape the tempfile name when constructing the expected output.

gcc/diagnostic.c

index a024bc206f3468eeefbdc7f511510d35956f61c3..246d75256cf3f43f58394bce8663567bea6014a2 100644 (file)
@@ -2188,7 +2188,12 @@ test_print_parseable_fixits_bytes_vs_display_columns ()
   where.m_finish = linemap_position_for_column (line_table, 17);
   richloc.add_fixit_replace (where, "color");
 
-  const int buf_len = strlen (fname) + 100;
+  /* Escape fname.  */
+  pretty_printer tmp_pp;
+  print_escaped_string (&tmp_pp, fname);
+  char *escaped_fname = xstrdup (pp_formatted_text (&tmp_pp));
+
+  const int buf_len = strlen (escaped_fname) + 100;
   char *const expected = XNEWVEC (char, buf_len);
 
   {
@@ -2196,7 +2201,7 @@ test_print_parseable_fixits_bytes_vs_display_columns ()
     print_parseable_fixits (&pp, &richloc, DIAGNOSTICS_COLUMN_UNIT_BYTE,
                            tabstop);
     snprintf (expected, buf_len,
-             "fix-it:\"%s\":{1:12-1:18}:\"color\"\n", fname);
+             "fix-it:%s:{1:12-1:18}:\"color\"\n", escaped_fname);
     ASSERT_STREQ (expected, pp_formatted_text (&pp));
   }
   {
@@ -2204,11 +2209,12 @@ test_print_parseable_fixits_bytes_vs_display_columns ()
     print_parseable_fixits (&pp, &richloc, DIAGNOSTICS_COLUMN_UNIT_DISPLAY,
                            tabstop);
     snprintf (expected, buf_len,
-             "fix-it:\"%s\":{1:10-1:16}:\"color\"\n", fname);
+             "fix-it:%s:{1:10-1:16}:\"color\"\n", escaped_fname);
     ASSERT_STREQ (expected, pp_formatted_text (&pp));
   }
 
   XDELETEVEC (expected);
+  free (escaped_fname);
 }
 
 /* Verify that