Skip to content

Commit dd99311

Browse files
Add coverage to Multiprocess tests
1 parent 98de8f6 commit dd99311

File tree

3 files changed

+21
-2
lines changed

3 files changed

+21
-2
lines changed

tests/conftest.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,3 +82,14 @@ def clear_records():
8282
_clear_records()
8383
yield
8484
_clear_records()
85+
86+
def enable_code_coverage():
87+
"""Ensure code coverage works as expected for `multiprocesses` tests.
88+
This method should be called just before any `multiprocess.Process` call
89+
is made."""
90+
try:
91+
from pytest_cov.embed import cleanup_on_sigterm
92+
except ImportError:
93+
pass
94+
else:
95+
cleanup_on_sigterm()

tests/test_record_values.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from enum import Enum
88
from math import isnan, inf, nan
99

10-
from conftest import requires_cothread
10+
from conftest import requires_cothread, enable_code_coverage
1111

1212
from softioc import asyncio_dispatcher, builder, softioc
1313
from softioc.pythonSoftIoc import RecordWrapper
@@ -368,6 +368,8 @@ def run_test_function(
368368

369369
parent_conn, child_conn = multiprocessing.Pipe()
370370

371+
enable_code_coverage()
372+
371373
ioc_process = multiprocessing.Process(
372374
target=run_ioc,
373375
args=(record_configurations, child_conn, set_enum, get_enum),
@@ -776,6 +778,9 @@ def test_value_none_rejected_set_after_init(self, record_func_reject_none):
776778
"""Test that setting \"None\" using .set() after IOC init raises an
777779
exception"""
778780
queue = multiprocessing.Queue()
781+
782+
enable_code_coverage()
783+
779784
process = multiprocessing.Process(
780785
target=self.none_value_test_func,
781786
args=(record_func_reject_none, queue),

tests/test_records.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import pytest
55
import asyncio
66

7-
from conftest import requires_cothread, _clear_records
7+
from conftest import requires_cothread, _clear_records, enable_code_coverage
88

99
from softioc import asyncio_dispatcher, builder, softioc
1010

@@ -181,6 +181,9 @@ def validate_test_runner(
181181
validate_pass: bool):
182182

183183
queue = multiprocessing.Queue()
184+
185+
enable_code_coverage()
186+
184187
process = multiprocessing.Process(
185188
target=self.validate_ioc_test_func,
186189
args=(creation_func, queue, validate_pass),

0 commit comments

Comments
 (0)