@@ -95,6 +95,19 @@ def _assert_run_fields(self, run, output_path):
9595 assert run ["directory" ] == os .path .abspath (SAMPLES_DIR )
9696 assert run ["sarifs" ] == []
9797
98+ def _assert_sonar_fields (self , result ):
99+ assert result ["detectionTool" ]["name" ] == "Sonar"
100+ assert (
101+ result ["detectionTool" ]["rule" ]["id" ]
102+ == self .codemod_instance ._metadata .tool .rule_id
103+ )
104+ assert (
105+ result ["detectionTool" ]["rule" ]["name" ]
106+ == self .codemod_instance ._metadata .tool .rule_name
107+ )
108+ # TODO: empty array until we add findings metadata
109+ assert result ["detectionTool" ]["findings" ] == []
110+
98111 def _assert_results_fields (self , results , output_path ):
99112 assert len (results ) == 1
100113 result = results [0 ]
@@ -104,10 +117,23 @@ def _assert_results_fields(self, results, output_path):
104117 for ref in self .codemod_instance .references
105118 ]
106119
107- # TODO: once we add description for each url.
108- for reference in result ["references" ]:
120+ assert ("detectionTool" in result ) == bool (self .sonar_issues_json )
121+
122+ # TODO: if/when we add description for each url
123+ for reference in result ["references" ][
124+ # Last reference for Sonar has a different description
125+ : (- 1 if self .sonar_issues_json else None )
126+ ]:
109127 assert reference ["url" ] == reference ["description" ]
110128
129+ if self .sonar_issues_json :
130+ assert self .codemod_instance ._metadata .tool is not None
131+ assert (
132+ result ["references" ][- 1 ]["description" ]
133+ == self .codemod_instance ._metadata .tool .rule_name
134+ )
135+ self ._assert_sonar_fields (result )
136+
111137 assert len (result ["changeset" ]) == self .num_changed_files
112138
113139 # A codemod may change multiple files. For now we will
0 commit comments