Skip to content

Commit f9e0544

Browse files
koubaaMohamed Koubaa
andauthored
add trace options (#67)
Co-authored-by: Mohamed Koubaa <koubaa@github.com>
1 parent 80e2385 commit f9e0544

File tree

4 files changed

+35
-0
lines changed

4 files changed

+35
-0
lines changed

clr_loader/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ def get_mono(
3333
assembly_dir: Optional[str] = None,
3434
config_dir: Optional[str] = None,
3535
set_signal_chaining: bool = False,
36+
trace_mask: Optional[str] = None,
37+
trace_level: Optional[str] = None,
3638
) -> Runtime:
3739
"""Get a Mono runtime instance
3840

clr_loader/ffi/mono.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,5 +44,8 @@
4444
4545
void mono_set_signal_chaining(bool chain_signals);
4646
47+
void mono_trace_set_level_string(const char* value);
48+
void mono_trace_set_mask_string(const char* value);
49+
4750
"""
4851
)

clr_loader/mono.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ def __init__(
2727
assembly_dir: Optional[str] = None,
2828
config_dir: Optional[str] = None,
2929
set_signal_chaining: bool = False,
30+
trace_mask: Optional[str] = None,
31+
trace_level: Optional[str] = None,
3032
):
3133
self._assemblies: Dict[Path, Any] = {}
3234

@@ -39,6 +41,8 @@ def __init__(
3941
assembly_dir=assembly_dir,
4042
config_dir=config_dir,
4143
set_signal_chaining=set_signal_chaining,
44+
trace_mask=trace_mask,
45+
trace_level=trace_level,
4246
)
4347

4448
if domain is None:
@@ -131,11 +135,19 @@ def initialize(
131135
assembly_dir: Optional[str] = None,
132136
config_dir: Optional[str] = None,
133137
set_signal_chaining: bool = False,
138+
trace_mask: Optional[str] = None,
139+
trace_level: Optional[str] = None,
134140
) -> str:
135141
global _MONO, _ROOT_DOMAIN
136142
if _MONO is None:
137143
_MONO = load_mono(libmono)
138144

145+
if trace_mask is not None:
146+
_MONO.mono_trace_set_mask_string(trace_mask.encode("utf8"))
147+
148+
if trace_level is not None:
149+
_MONO.mono_trace_set_level_string(trace_level.encode("utf8"))
150+
139151
if assembly_dir is not None and config_dir is not None:
140152
_MONO.mono_set_dirs(assembly_dir.encode("utf8"), config_dir.encode("utf8"))
141153

tests/test_common.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,24 @@ def test_mono_signal_chaining(example_netstandard: Path):
5656
run_tests(asm)
5757

5858

59+
def test_mono_trace_mask(example_netstandard: Path):
60+
from clr_loader import get_mono
61+
62+
mono = get_mono(trace_mask="all")
63+
asm = mono.get_assembly(example_netstandard / "example.dll")
64+
65+
run_tests(asm)
66+
67+
68+
def test_mono_trace_level(example_netstandard: Path):
69+
from clr_loader import get_mono
70+
71+
mono = get_mono(trace_level="message")
72+
asm = mono.get_assembly(example_netstandard / "example.dll")
73+
74+
run_tests(asm)
75+
76+
5977
def test_mono_set_dir(example_netstandard: Path):
6078
from clr_loader import get_mono
6179

0 commit comments

Comments
 (0)