Skip to content

Commit f7e9d53

Browse files
authored
Merge pull request #4306 from bruntib/annotation_joker
[fix] Support joker characters at annotation filter
2 parents f85f771 + 1606a8e commit f7e9d53

File tree

3 files changed

+22
-6
lines changed

3 files changed

+22
-6
lines changed

web/server/codechecker_server/api/report_server.py

+6-3
Original file line numberDiff line numberDiff line change
@@ -406,7 +406,8 @@ def process_report_filter(
406406
if keep_all_annotations:
407407
OR.append(or_(
408408
ReportAnnotations.key != key,
409-
ReportAnnotations.value.in_(values)))
409+
*[ReportAnnotations.value.ilike(conv(v))
410+
for v in values]))
410411
else:
411412
OR.append(and_(
412413
ReportAnnotations.key == key,
@@ -2012,7 +2013,8 @@ def getRunResults(self, run_ids, limit, offset, sort_types,
20122013

20132014
OR = []
20142015
for key, values in annotations.items():
2015-
OR.append(annotation_cols[key].in_(values))
2016+
OR.extend([annotation_cols[key].ilike(conv(v))
2017+
for v in values])
20162018
sub_query = sub_query.having(or_(*OR))
20172019

20182020
sub_query = sort_results_query(sub_query,
@@ -2125,7 +2127,8 @@ def getRunResults(self, run_ids, limit, offset, sort_types,
21252127

21262128
OR = []
21272129
for key, values in annotations.items():
2128-
OR.append(annotation_cols[key].in_(values))
2130+
OR.extend([annotation_cols[key].ilike(conv(v))
2131+
for v in values])
21292132
q = q.having(or_(*OR))
21302133

21312134
q = q.limit(limit).offset(offset)

web/tests/functional/dynamic_results/test_dynamic_results.py

+15-2
Original file line numberDiff line numberDiff line change
@@ -134,12 +134,25 @@ def test_filter_by_attribute(self):
134134
results = self._cc_client.getRunResults(
135135
None, 500, 0, None, testcase_filter, None, False)
136136

137-
self.assertEqual(len(results), 3)
137+
self.assertEqual(len(results), 2)
138138

139139
self.assertTrue(all(map(
140140
lambda report: report.annotations['testcase'] == 'TC-1',
141141
results)))
142142

143+
testcase_filter = ReportFilter(annotations=[Pair(
144+
first='testcase',
145+
second='TC-*')])
146+
147+
results = self._cc_client.getRunResults(
148+
None, 500, 0, None, testcase_filter, None, False)
149+
150+
self.assertEqual(len(results), 3)
151+
152+
self.assertTrue(all(map(
153+
lambda report: report.annotations['testcase'].startswith('TC-'),
154+
results)))
155+
143156
def test_count_by_attribute(self):
144157
"""
145158
Test the report count functions with the usage of report annotations.
@@ -156,4 +169,4 @@ def test_count_by_attribute(self):
156169
num = self._cc_client.getRunResultCount(
157170
None, testcase_filter, None)
158171

159-
self.assertEqual(num, 3)
172+
self.assertEqual(num, 2)

web/tests/projects/dynamic/main.c_cppcheck_0212cbc2c7194b7a5d431a18ff51bb1c.plist

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
<key>testcase</key>
2121
<string>TS-1</string>
2222
<key>testcase</key>
23-
<string>TC-1</string>
23+
<string>TC-2</string>
2424
</dict>
2525
<key>location</key>
2626
<dict>

0 commit comments

Comments
 (0)