|
1 | | -import os |
2 | 1 | import runs_on |
3 | 2 | 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 |
4 | 12 |
|
5 | 13 | well_known_query_suites = ['java-code-quality.qls', 'java-security-and-quality.qls', 'java-security-extended.qls', 'java-code-scanning.qls'] |
6 | 14 |
|
7 | 15 | @runs_on.posix |
8 | 16 | @pytest.mark.parametrize("query_suite", well_known_query_suites) |
9 | 17 | def test(codeql, java, cwd, expected_files, semmle_code_dir, query_suite): |
10 | | - actual = codeql.resolve.queries(query_suite, _capture=True).strip() |
11 | | - actual = sorted(actual.splitlines()) |
12 | | - actual = [os.path.relpath(q, semmle_code_dir) for q in actual] |
13 | | - actual_file_name = query_suite + '.actual' |
14 | | - expected_files.add(actual_file_name) |
15 | | - (cwd / actual_file_name).write_text('\n'.join(actual)+'\n') |
| 18 | + get_test_module(semmle_code_dir).test(codeql, cwd, expected_files, semmle_code_dir, query_suite) |
| 19 | + |
16 | 20 |
|
17 | 21 | @runs_on.posix |
18 | 22 | def test_not_included_queries(codeql, java, cwd, expected_files, semmle_code_dir): |
19 | | - all_queries = codeql.resolve.queries(semmle_code_dir / 'ql' / 'java' / 'ql' / 'src', _capture=True).strip().splitlines() |
20 | | - |
21 | | - included_in_qls = set() |
22 | | - for query_suite in well_known_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') |
| 23 | + get_test_module(semmle_code_dir).test_not_included_queries(codeql, 'java', cwd, expected_files, semmle_code_dir, well_known_query_suites) |
0 commit comments