userver
C++ Async Framework
Toggle main menu visibility
Documentation
API Groups
Namespaces
Reference
Class List
Class Index
File List
Macros
All
e
i
l
r
t
u
Functions
Macros
e
i
l
r
t
u
Examples
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Modules
Pages
Concepts
Loading...
Searching...
No Matches
sql_coverage.py
1
"""
2
Plugin that imports the required fixtures for checking SQL/YQL coverage.
3
"""
4
5
from
typing
import
Set
6
7
import
pytest
8
9
from
.
import
coverage
10
11
_SQL_COVERAGE_TEST_NAME =
'test_sql_coverage'
12
13
14
@pytest.fixture
15
def
on_uncovered
():
16
"""
17
Will be called when the coverage is incomplete.
18
"""
19
20
def
_on_uncovered(uncovered_statements: Set[str]):
21
msg = f
'Uncovered SQL/YQL statements: {uncovered_statements}'
22
raise
coverage.UncoveredError
(msg)
23
24
return
_on_uncovered
25
26
15
def
on_uncovered
():
…
27
class
Coverage
:
28
"""
29
Contains data about the current coverage of statements.
30
"""
31
32
def
__init__(self, files: Set[str]):
33
self.
covered_statements
: Set[str] = set()
34
self.
uncovered_statements
: Set[str] = files
35
self.
extra_covered_statements
: Set[str] = set()
36
37
def
cover(self, statement: str) ->
None
:
38
if
statement
in
self.
uncovered_statements
:
39
self.
covered_statements
.add(statement)
40
self.
uncovered_statements
.remove(statement)
41
elif
statement
not
in
self.
covered_statements
:
42
self.
extra_covered_statements
.add(statement)
43
44
def
validate(self, uncovered_callback: callable) ->
None
:
45
if
self.
uncovered_statements
:
46
uncovered_callback(self.
uncovered_statements
)
47
48
49
@pytest.fixture(scope='session')
27
class
Coverage
:
…
50
def
sql_coverage(sql_files):
51
return
Coverage
(set(sql_files))
52
53
54
@pytest.fixture(scope='function', autouse=True)
55
async def
sql_statement_hook
(testpoint, sql_coverage):
56
"""
57
Hook that accepts requests from the testpoint.
58
"""
59
60
@testpoint('sql_statement')
61
def
_hook(request):
62
sql_coverage.cover(request[
'name'
])
63
64
yield
_hook
65
66
67
@pytest.fixture(scope='function', autouse=True)
55
async def
sql_statement_hook
(testpoint, sql_coverage):
…
68
async def
yql_statement_hook
(testpoint, sql_coverage):
69
"""
70
Hook that accepts requests from the testpoint.
71
"""
72
73
@testpoint('yql_statement')
74
def
_hook(request):
75
sql_coverage.cover(request[
'name'
])
76
77
yield
_hook
78
79
80
@pytest.hookimpl(hookwrapper=True)
68
async def
yql_statement_hook
(testpoint, sql_coverage):
…
81
def
pytest_collection_modifyitems(config, items):
82
yield
83
if
not
items:
84
return
85
86
coverage.collection_modifyitems(_SQL_COVERAGE_TEST_NAME, config, items)
testsuite
pytest_plugins
pytest_userver
plugins
sql_coverage.py
Generated on Thu Apr 24 2025 12:22:03 for userver by
Doxygen
1.13.2