(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
plugin/
crash-test-write-though-null-sarif.c
       1  /* { dg-do compile } */
       2  /* { dg-options "-fdiagnostics-format=sarif-file" } */
       3  /* { dg-additional-options "-fno-report-bug" } */
       4  
       5  extern void inject_write_through_null (void);
       6  
       7  void test_inject_write_through_null (void)
       8  {
       9    inject_write_through_null (); /* { dg-ice "" } */
      10    /* { dg-regexp "during GIMPLE pass: crash_test" } */
      11  }
      12  
      13  /* Verify that some JSON was written to a file with the expected name.  */
      14  /* { dg-final { verify-sarif-file } } */
      15  
      16  /* We expect various properties.
      17     The indentation here reflects the expected hierarchy, though these tests
      18     don't check for that, merely the string fragments we expect.
      19  
      20     { dg-final { scan-sarif-file "\"version\": \"2.1.0\"" } }
      21     { dg-final { scan-sarif-file "\"runs\": \\\[" } }
      22       { dg-final { scan-sarif-file "\"artifacts\": \\\[" } } 
      23         { dg-final { scan-sarif-file "\"location\": " } }
      24           { dg-final { scan-sarif-file "\"uri\": " } }
      25  
      26         { dg-final { scan-sarif-file "\"sourceLanguage\": \"c\"" { target c } } }
      27         { dg-final { scan-sarif-file "\"sourceLanguage\": \"cplusplus\"" { target c++ } } }
      28  
      29         { dg-final { scan-sarif-file "\"contents\": " } }
      30           { dg-final { scan-sarif-file "\"text\": " } }
      31       { dg-final { scan-sarif-file "\"tool\": " } }
      32         { dg-final { scan-sarif-file "\"driver\": " } }
      33           { dg-final { scan-sarif-file "\"name\": \"GNU C" } }
      34           { dg-final { scan-sarif-file "\"fullName\": \"GNU C" } }
      35           { dg-final { scan-sarif-file "\"informationUri\": \"" } }
      36         { dg-final { scan-sarif-file "\"extensions\": \\\[" } }
      37           { dg-final { scan-sarif-file "\"name\": \"crash_test_plugin\"" } }
      38  
      39       We expect no results:
      40       { dg-final { scan-sarif-file "\"results\": \\\[\\\]" } }
      41  
      42       but instead should have an invocations array...
      43  
      44       { dg-final { scan-sarif-file "\"invocations\": \\\[" } }
      45  
      46       ...containing this:
      47         { dg-final { scan-sarif-file "\"executionSuccessful\": false" } }
      48         { dg-final { scan-sarif-file "\"toolExecutionNotifications\": \\\[" } }
      49  
      50         ...containing this notification:
      51           { dg-final { scan-sarif-file "\"level\": \"error\"" } }
      52           { dg-final { scan-sarif-file "\"locations\": \\\[" } }
      53             { dg-final { scan-sarif-file "\"logicalLocations\": \\\[" } }
      54               { dg-final { scan-sarif-file "\"kind\": \"function\"" } }
      55               { dg-final { scan-sarif-file "\"name\": \"test_inject_write_through_null\"" } }
      56             { dg-final { scan-sarif-file "\"physicalLocation\": " } }
      57               { dg-final { scan-sarif-file "\"contextRegion\": " } }
      58               { dg-final { scan-sarif-file "\"artifactLocation\": " } }
      59               { dg-final { scan-sarif-file "\"region\": " } }
      60                 { dg-final { scan-sarif-file "\"startLine\": 9" } }
      61                 { dg-final { scan-sarif-file "\"startColumn\": 3" } }
      62                 { dg-final { scan-sarif-file "\"endColumn\": 31" } }
      63           { dg-final { scan-sarif-file "\"message\": " } }
      64             { dg-final { scan-sarif-file "\"text\": \"Segmentation fault\"" } } */