Skip to content

Commit

Permalink
test: try to fix segfault
Browse files Browse the repository at this point in the history
  • Loading branch information
kmnhan committed Jan 3, 2025
1 parent 1dcf838 commit 77adb7d
Showing 4 changed files with 20 additions and 10 deletions.
9 changes: 5 additions & 4 deletions src/erlab/interactive/imagetool/manager/_mainwindow.py
Original file line number Diff line number Diff line change
@@ -119,6 +119,11 @@ class ImageToolManager(QtWidgets.QMainWindow):

def __init__(self: ImageToolManager) -> None:
super().__init__()

# Shared memory for detecting multiple instances
self._shm = QtCore.QSharedMemory(_SHM_NAME)
self._shm.create(1) # Create segment so that it can be attached to

self.setWindowTitle("ImageTool Manager")

menu_bar: QtWidgets.QMenuBar = cast(QtWidgets.QMenuBar, self.menuBar())
@@ -324,10 +329,6 @@ def __init__(self: ImageToolManager) -> None:
self.server.sigReceived.connect(self._data_recv)
self.server.start()

# Shared memory for detecting multiple instances
self._shm = QtCore.QSharedMemory(_SHM_NAME)
self._shm.create(1) # Create segment so that it can be attached to

# Golden ratio :)
self.setMinimumWidth(301)
self.setMinimumHeight(487)
5 changes: 5 additions & 0 deletions tests/conftest.py
Original file line number Diff line number Diff line change
@@ -190,6 +190,10 @@ def __init__(
def _timeout(self, index: int) -> None:
log.debug("timeout %d", index)
self._timed_out = True
if hasattr(self, "_handler") and self._handler.isRunning():
self._handler.wait()
self._handler = None

pytest.fail(
f"No dialog for index {index} was created after {self.timeout} seconds."
)
@@ -215,6 +219,7 @@ def trigger_index(
if index <= self._max_index:
if hasattr(self, "_handler") and self._handler.isRunning():
self._handler.wait()
self._handler = None

self._handler = _DialogDetectionThread(
index, self._pre_call_list[index], self.timeout
15 changes: 10 additions & 5 deletions tests/interactive/test_imagetool.py
Original file line number Diff line number Diff line change
@@ -355,21 +355,26 @@ def test_itool_multidimensional(qtbot, move_and_compare_values) -> None:


def test_value_update(qtbot) -> None:
win = itool(
xr.DataArray(np.arange(25).reshape((5, 5)), dims=["x", "y"]), execute=False
)
data = xr.DataArray(np.arange(25).reshape((5, 5)), dims=["x", "y"])
new_vals = -data.values.astype(np.float64)

win = itool(data, execute=False)
qtbot.addWidget(win)
with qtbot.waitExposed(win):
win.show()
win.activateWindow()

new_vals = -np.arange(25).reshape((5, 5)).astype(float)
win.slicer_area.update_values(new_vals)
assert_almost_equal(win.array_slicer.point_value(0), -12.0)

win.close()


def test_value_update_errors(qtbot) -> None:
win = ImageTool(xr.DataArray(np.arange(25).reshape((5, 5)), dims=["x", "y"]))
qtbot.addWidget(win)
with qtbot.waitExposed(win):
win.show()
win.activateWindow()

with pytest.raises(ValueError, match="DataArray dimensions do not match"):
win.slicer_area.update_values(
1 change: 0 additions & 1 deletion tests/interactive/test_imagetool_manager.py
Original file line number Diff line number Diff line change
@@ -415,7 +415,6 @@ def test_manager_console(qtbot, accept_dialog) -> None:
)

qtbot.addWidget(manager)

with qtbot.waitExposed(manager):
manager.show()
manager.activateWindow()

0 comments on commit 77adb7d

Please sign in to comment.