bec-widgets 0.82.2__py3-none-any.whl → 0.83.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- .gitlab-ci.yml +3 -0
- CHANGELOG.md +26 -28
- PKG-INFO +1 -1
- bec_widgets/utils/bec_connector.py +2 -0
- bec_widgets/utils/bec_widget.py +6 -0
- bec_widgets/utils/generate_designer_plugin.py +6 -5
- bec_widgets/utils/reference_utils.py +92 -0
- bec_widgets/widgets/console/console.py +1 -1
- bec_widgets/widgets/device_box/__init__.py +0 -0
- bec_widgets/widgets/device_box/device_box.py +197 -0
- bec_widgets/widgets/device_box/device_box.pyproject +1 -0
- bec_widgets/widgets/device_box/device_box.ui +179 -0
- bec_widgets/widgets/device_box/device_box_plugin.py +54 -0
- bec_widgets/widgets/device_box/register_device_box.py +15 -0
- bec_widgets/widgets/figure/figure.py +3 -3
- bec_widgets/widgets/position_indicator/position_indicator.py +71 -0
- bec_widgets/widgets/position_indicator/position_indicator.pyproject +1 -0
- bec_widgets/widgets/position_indicator/position_indicator_plugin.py +54 -0
- bec_widgets/widgets/position_indicator/register_position_indicator.py +17 -0
- bec_widgets/widgets/spinner/__init__.py +0 -0
- bec_widgets/widgets/spinner/register_spinner_widget.py +15 -0
- bec_widgets/widgets/spinner/spinner.py +85 -0
- bec_widgets/widgets/spinner/spinner_widget.pyproject +1 -0
- bec_widgets/widgets/spinner/spinner_widget_plugin.py +54 -0
- bec_widgets/widgets/vscode/vscode.py +0 -14
- bec_widgets/widgets/website/website.py +1 -1
- {bec_widgets-0.82.2.dist-info → bec_widgets-0.83.0.dist-info}/METADATA +1 -1
- {bec_widgets-0.82.2.dist-info → bec_widgets-0.83.0.dist-info}/RECORD +40 -18
- pyproject.toml +1 -1
- tests/references/SpinnerWidget/SpinnerWidget_darwin.png +0 -0
- tests/references/SpinnerWidget/SpinnerWidget_linux.png +0 -0
- tests/references/SpinnerWidget/SpinnerWidget_started_darwin.png +0 -0
- tests/references/SpinnerWidget/SpinnerWidget_started_linux.png +0 -0
- tests/unit_tests/client_mocks.py +9 -1
- tests/unit_tests/test_device_box.py +98 -0
- tests/unit_tests/test_spinner.py +30 -0
- tests/unit_tests/test_vscode_widget.py +27 -32
- {bec_widgets-0.82.2.dist-info → bec_widgets-0.83.0.dist-info}/WHEEL +0 -0
- {bec_widgets-0.82.2.dist-info → bec_widgets-0.83.0.dist-info}/entry_points.txt +0 -0
- {bec_widgets-0.82.2.dist-info → bec_widgets-0.83.0.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,30 @@
|
|
1
|
+
import pytest
|
2
|
+
import qdarktheme
|
3
|
+
|
4
|
+
from bec_widgets.utils.reference_utils import snap_and_compare
|
5
|
+
from bec_widgets.widgets.spinner.spinner import SpinnerWidget
|
6
|
+
|
7
|
+
|
8
|
+
@pytest.fixture
|
9
|
+
def spinner_widget(qtbot):
|
10
|
+
qdarktheme.setup_theme("light")
|
11
|
+
spinner = SpinnerWidget()
|
12
|
+
qtbot.addWidget(spinner)
|
13
|
+
qtbot.waitExposed(spinner)
|
14
|
+
yield spinner
|
15
|
+
|
16
|
+
|
17
|
+
def test_spinner_widget_paint_event(spinner_widget, qtbot):
|
18
|
+
spinner_widget.paintEvent(None)
|
19
|
+
|
20
|
+
|
21
|
+
def test_spinner_widget_rendered(spinner_widget, qtbot, tmpdir):
|
22
|
+
spinner_widget.update()
|
23
|
+
qtbot.wait(200)
|
24
|
+
snap_and_compare(spinner_widget, str(tmpdir), suffix="")
|
25
|
+
|
26
|
+
spinner_widget._started = True
|
27
|
+
spinner_widget.update()
|
28
|
+
qtbot.wait(200)
|
29
|
+
|
30
|
+
snap_and_compare(spinner_widget, str(tmpdir), suffix="started")
|
@@ -25,54 +25,49 @@ def test_vscode_widget(qtbot, vscode_widget):
|
|
25
25
|
def test_start_server(qtbot, mocked_client):
|
26
26
|
|
27
27
|
with mock.patch("bec_widgets.widgets.vscode.vscode.subprocess.Popen") as mock_popen:
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
f"available at http://{VSCodeEditor.host}:{VSCodeEditor.port}?tkn={VSCodeEditor.token}"
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
28
|
+
with mock.patch("bec_widgets.widgets.vscode.vscode.select.select") as mock_select:
|
29
|
+
mock_process = mock.Mock()
|
30
|
+
mock_process.stdout.fileno.return_value = 1
|
31
|
+
mock_process.poll.return_value = None
|
32
|
+
mock_process.stdout.read.return_value = f"available at http://{VSCodeEditor.host}:{VSCodeEditor.port}?tkn={VSCodeEditor.token}"
|
33
|
+
mock_popen.return_value = mock_process
|
34
|
+
mock_select.return_value = [[mock_process.stdout], [], []]
|
35
|
+
|
36
|
+
widget = VSCodeEditor(client=mocked_client)
|
37
|
+
|
38
|
+
mock_popen.assert_called_once_with(
|
39
|
+
shlex.split(
|
40
|
+
f"code serve-web --port {widget.port} --connection-token={widget.token} --accept-server-license-terms"
|
41
|
+
),
|
42
|
+
text=True,
|
43
|
+
stdout=subprocess.PIPE,
|
44
|
+
stderr=subprocess.DEVNULL,
|
45
|
+
preexec_fn=os.setsid,
|
46
|
+
)
|
47
47
|
|
48
48
|
|
49
49
|
@pytest.fixture
|
50
50
|
def patched_vscode_process(qtbot, vscode_widget):
|
51
51
|
with mock.patch("bec_widgets.widgets.vscode.vscode.os.killpg") as mock_killpg:
|
52
52
|
with mock.patch("bec_widgets.widgets.vscode.vscode.os.getpgid") as mock_getpgid:
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
mock_getpgid.return_value = 123
|
57
|
-
vscode_widget.process = mock.Mock()
|
58
|
-
yield vscode_widget, mock_killpg, mock_close_event
|
53
|
+
mock_getpgid.return_value = 123
|
54
|
+
vscode_widget.process = mock.Mock()
|
55
|
+
yield vscode_widget, mock_killpg
|
59
56
|
|
60
57
|
|
61
|
-
def
|
62
|
-
vscode_patched, mock_killpg
|
58
|
+
def test_vscode_cleanup(qtbot, patched_vscode_process):
|
59
|
+
vscode_patched, mock_killpg = patched_vscode_process
|
63
60
|
vscode_patched.process.pid = 123
|
64
61
|
vscode_patched.process.poll.return_value = None
|
65
|
-
vscode_patched.
|
62
|
+
vscode_patched.cleanup()
|
66
63
|
mock_killpg.assert_called_once_with(123, 15)
|
67
64
|
vscode_patched.process.wait.assert_called_once()
|
68
|
-
mock_close_event.assert_called_once()
|
69
65
|
|
70
66
|
|
71
67
|
def test_close_event_on_terminated_code(qtbot, patched_vscode_process):
|
72
|
-
vscode_patched, mock_killpg
|
68
|
+
vscode_patched, mock_killpg = patched_vscode_process
|
73
69
|
vscode_patched.process.pid = 123
|
74
70
|
vscode_patched.process.poll.return_value = 0
|
75
|
-
vscode_patched.
|
71
|
+
vscode_patched.cleanup()
|
76
72
|
mock_killpg.assert_not_called()
|
77
73
|
vscode_patched.process.wait.assert_not_called()
|
78
|
-
mock_close_event.assert_called_once()
|
File without changes
|
File without changes
|
File without changes
|