Skip to content

Commit 522dd51

Browse files
committed
Improve query suite test based on feedback
1 parent 4c9aee2 commit 522dd51

File tree

4 files changed

+40
-51
lines changed

4 files changed

+40
-51
lines changed
Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,14 @@
11
import runs_on
22
import pytest
3-
import sys
4-
5-
def get_test_module(semmle_code_dir):
6-
import importlib.util
7-
spec = importlib.util.spec_from_file_location('test-module', semmle_code_dir / 'ql' / 'misc' / 'pytest' / 'lib' / 'query-suite-test.py')
8-
mod = importlib.util.module_from_spec(spec)
9-
sys.modules["test-module"] = mod
10-
spec.loader.exec_module(mod)
11-
return mod
3+
from query_suites import *
124

135
well_known_query_suites = ['java-code-quality.qls', 'java-security-and-quality.qls', 'java-security-extended.qls', 'java-code-scanning.qls']
146

157
@runs_on.posix
168
@pytest.mark.parametrize("query_suite", well_known_query_suites)
17-
def test(codeql, java, cwd, expected_files, semmle_code_dir, query_suite):
18-
get_test_module(semmle_code_dir).test(codeql, cwd, expected_files, semmle_code_dir, query_suite)
19-
9+
def test(codeql, java, check_query_suite, query_suite):
10+
check_query_suite(query_suite)
2011

2112
@runs_on.posix
22-
def test_not_included_queries(codeql, java, cwd, expected_files, semmle_code_dir):
23-
get_test_module(semmle_code_dir).test_not_included_queries(codeql, 'java', cwd, expected_files, semmle_code_dir, well_known_query_suites)
13+
def test_not_included_queries(codeql, java, check_queries_not_included):
14+
check_queries_not_included('java', well_known_query_suites)

misc/pytest/lib/query-suite-test.py

Lines changed: 0 additions & 23 deletions
This file was deleted.

misc/pytest/lib/query_suites.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
2+
import os
3+
import pytest
4+
5+
@pytest.fixture
6+
def check_query_suite(codeql, cwd, expected_files, semmle_code_dir):
7+
def ret(query_suite):
8+
actual = codeql.resolve.queries(query_suite, _capture=True).strip()
9+
actual = sorted(actual.splitlines())
10+
actual = [os.path.relpath(q, semmle_code_dir) for q in actual]
11+
actual_file_name = query_suite + '.actual'
12+
expected_files.add(actual_file_name)
13+
(cwd / actual_file_name).write_text('\n'.join(actual)+'\n')
14+
return ret
15+
16+
@pytest.fixture
17+
def check_queries_not_included(codeql, cwd, expected_files, semmle_code_dir):
18+
def ret(lang_folder_name, query_suites):
19+
all_queries = codeql.resolve.queries(semmle_code_dir / 'ql' / lang_folder_name / 'ql' / 'src', _capture=True).strip().splitlines()
20+
21+
included_in_qls = set()
22+
for query_suite in query_suites:
23+
included_in_qls |= set(codeql.resolve.queries(query_suite, _capture=True).strip().splitlines())
24+
25+
not_included = sorted(set(all_queries) - included_in_qls)
26+
not_included = [os.path.relpath(q, semmle_code_dir) for q in not_included]
27+
not_included_file_name = 'not_included_in_qls.actual'
28+
expected_files.add(not_included_file_name)
29+
(cwd / not_included_file_name).write_text('\n'.join(not_included)+'\n')
30+
return ret
Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,14 @@
11
import runs_on
22
import pytest
3-
import sys
4-
5-
def get_test_module(semmle_code_dir):
6-
import importlib.util
7-
spec = importlib.util.spec_from_file_location('test-module', semmle_code_dir / 'ql' / 'misc' / 'pytest' / 'lib' / 'query-suite-test.py')
8-
mod = importlib.util.module_from_spec(spec)
9-
sys.modules["test-module"] = mod
10-
spec.loader.exec_module(mod)
11-
return mod
12-
3+
from query_suites import *
134

145
well_known_query_suites = ['swift-code-quality.qls', 'swift-security-and-quality.qls', 'swift-security-extended.qls', 'swift-code-scanning.qls']
156

167
@runs_on.posix
178
@pytest.mark.parametrize("query_suite", well_known_query_suites)
18-
def test(codeql, swift, cwd, expected_files, semmle_code_dir, query_suite):
19-
get_test_module(semmle_code_dir).test(codeql, cwd, expected_files, semmle_code_dir, query_suite)
9+
def test(codeql, swift, check_query_suite, query_suite):
10+
check_query_suite(query_suite)
2011

2112
@runs_on.posix
22-
def test_not_included_queries(codeql, swift, cwd, expected_files, semmle_code_dir):
23-
get_test_module(semmle_code_dir).test_not_included_queries(codeql, 'swift', cwd, expected_files, semmle_code_dir, well_known_query_suites)
13+
def test_not_included_queries(codeql, swift, check_queries_not_included):
14+
check_queries_not_included('swift', well_known_query_suites)

0 commit comments

Comments
 (0)