-
Notifications
You must be signed in to change notification settings - Fork 0
/
utils.py
48 lines (34 loc) · 1.26 KB
/
utils.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import ast
class assert_raises:
"""
A context manager to assert that a specific exception is raised.
This context manager is used in tests to ensure that a certain exception is
raised within a block of code. If the expected exception is not raised,
the test will fail.
Attributes:
exception_type (Type[Exception]): The type of the exception expected to be raised.
Usage example:
with assert_raises(ValueError):
raise ValueError("An expected error occurred")
"""
def __init__(self, exception_type) -> None:
self.exception_type = exception_type
def __enter__(self):
return self
def __exit__(self, exc_type, exc_value, exc_tb):
assert exc_type == self.exception_type, "No expected Exceptions raised."
return True
def ast_to_func(node: ast.FunctionDef):
"""
Convert an ast.FunctionDef object to a code object.
"""
node = ast.fix_missing_locations(node)
module = ast.Module(body=[node], type_ignores=[])
code_obj = compile(module, node.name, "exec")
context = {}
exec(code_obj, context)
return context[node.name]
def get_source(file_name: str) -> str:
with open(file_name, "r") as file:
source = file.read()
return source