diff options
Diffstat (limited to 'gcc/testsuite/libgdiagnostics.dg/test-message-buffer.c')
-rw-r--r-- | gcc/testsuite/libgdiagnostics.dg/test-message-buffer.c | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/gcc/testsuite/libgdiagnostics.dg/test-message-buffer.c b/gcc/testsuite/libgdiagnostics.dg/test-message-buffer.c new file mode 100644 index 0000000..a958fc5 --- /dev/null +++ b/gcc/testsuite/libgdiagnostics.dg/test-message-buffer.c @@ -0,0 +1,80 @@ +/* Example of using a message buffer to build the text of a diagnostic + in pieces before emitting it. */ + +#include "libgdiagnostics.h" +#include "test-helpers.h" + +int +main () +{ + begin_test ("test-message-buffer.c.exe", + "test-message-buffer.c.sarif", + __FILE__, "c"); + + diagnostic_event_id event_id = 0; + + /* begin quoted source */ + diagnostic *d = diagnostic_begin (diag_mgr, + DIAGNOSTIC_LEVEL_ERROR); + + diagnostic_message_buffer *msg_buf = diagnostic_message_buffer_new (); + + /* Add a null-terminated string. */ + diagnostic_message_buffer_append_str (msg_buf, "this is a string; "); + + /* Add a length-specified string. */ + diagnostic_message_buffer_append_text (msg_buf, "foobar", 3); + + /* "printf"-formatting. */ + diagnostic_message_buffer_append_printf (msg_buf, + "; int: %i str: %s; ", + 42, "mostly harmless"); + + /* Adding a URL. */ + diagnostic_message_buffer_begin_url (msg_buf, "https://example.com/"); + diagnostic_message_buffer_append_str (msg_buf, "this is a link"); + diagnostic_message_buffer_end_url (msg_buf); + + diagnostic_message_buffer_append_str (msg_buf, " "); + + /* Add quoted text. */ + diagnostic_message_buffer_begin_quote (msg_buf); + diagnostic_message_buffer_append_str (msg_buf, "this is quoted"); + diagnostic_message_buffer_end_quote (msg_buf); + + diagnostic_message_buffer_append_str (msg_buf, " "); + + /* Add colorized text. */ + diagnostic_message_buffer_begin_color (msg_buf, "highlight-a"); + diagnostic_message_buffer_append_str (msg_buf, "highlight A"); + diagnostic_message_buffer_end_color (msg_buf); + + diagnostic_message_buffer_append_str (msg_buf, " "); + + diagnostic_message_buffer_begin_color (msg_buf, "highlight-b"); + diagnostic_message_buffer_append_str (msg_buf, "highlight B"); + diagnostic_message_buffer_end_color (msg_buf); + + diagnostic_message_buffer_append_str (msg_buf, " "); + + /* Add an event ID. This will be printed as "(1)". */ + diagnostic_message_buffer_append_event_id (msg_buf, event_id); + + /* Add an ASCII char. */ + diagnostic_message_buffer_append_byte (msg_buf, '.'); + + diagnostic_finish_via_msg_buf (d, msg_buf); + /* end quoted source */ + + return end_test (); +}; + +/* Verify the output from the text sink. + { dg-regexp "test-message-buffer.c.exe: error: this is a string; foo; int: 42 str: mostly harmless; this is a link 'this is quoted' highlight A highlight B \\(1\\)." } */ + +/* Verify that some JSON was written to a file with the expected name: + { dg-final { verify-sarif-file } } */ + +/* Use a Python script to verify various properties about the generated + .sarif file: + { dg-final { run-sarif-pytest test-message-buffer.c "test-message-buffer-c.py" } } */ |