diff --git a/markdown/TEST-REPORT.md b/markdown/TEST-REPORT.md
index 39bd33feb..37df50e9b 100644
--- a/markdown/TEST-REPORT.md
+++ b/markdown/TEST-REPORT.md
@@ -1,35 +1,34 @@
# π§ͺ Test Report
-*Generated on 2025-08-25 15:52:52 CEST*
+*Generated on 2025-08-25 16:56:20 CEST*
## π§Ύ General Info
-- **duration**: 26.528825759887695
+- **duration**: 4.885369062423706
- **root**: /workspace/tligui_y/slic
- **environment**: {}
## π Summary
-- **Failed**: 6
-- **Passed**: 6
-- **Total**: 12
-- **Collected**: 12
+- **Passed**: 7
+- **Total**: 7
+- **Collected**: 7
## π Tests
-β Failed (6)
+β
Passed (7)
-
- π test_utils_hastepics.py
+ π test_utils_dbusnotify.py
- β³ Function: test_get_pv_connect_false_and_true
+ β³ Function: test_notify_create
-
- β Test 1
+ β
Test 1
**_*π Setup phase*_**
**duration:**
```python
- 0.0007642786949872971
+ 3.5844745840877295
```
**outcome:**
@@ -43,52 +42,13 @@
**duration:**
```python
- 2.111914704553783
+ 0.004959088750183582
```
**outcome:**
```python
- failed
- ```
-
- **crash:**
-
- ```python
- path: /workspace/tligui_y/slic/tests/test_utils_hastepics.py
- lineno: 42
- message: AssertionError: assert False
- + where False = .connected
- ```
-
- **traceback:**
-
- ```python
- - path: tests/test_utils_hastepics.py
- lineno: 42
- message: AssertionError
- ```
-
- **longrepr:**
-
- ```python
- def test_get_pv_connect_false_and_true():
- name = "TEST:SIM:VAL"
- assert not _in_pv_cache(name)
-
- pv = get_pv(name, connect=False)
- assert isinstance(pv, PV)
-
- assert _in_pv_cache(name), "PV should be in _PVcache_ after get_pv(connect=False)"
- assert not pv.connected
-
- # Now actually connect
- pv2 = get_pv(name, connect=True, timeout=2.0)
- > assert pv2.connected
- E AssertionError: assert False
- E + where False = .connected
-
- tests/test_utils_hastepics.py:42: AssertionError
+ passed
```
**_*π Teardown phase*_**
@@ -96,7 +56,7 @@
**duration:**
```python
- 0.0006133858114480972
+ 0.00025586970150470734
```
**outcome:**
@@ -105,16 +65,16 @@
passed
```
- β³ Function: test_motor_init_strips_suffixes
+ β³ Function: test_notify_update
-
- β Test 2
+ β
Test 2
**_*π Setup phase*_**
**duration:**
```python
- 0.00035681668668985367
+ 0.00019716378301382065
```
**outcome:**
@@ -128,67 +88,13 @@
**duration:**
```python
- 0.0025765858590602875
+ 0.016220551915466785
```
**outcome:**
```python
- failed
- ```
-
- **crash:**
-
- ```python
- path: /workspace/tligui_y/slic/tests/test_utils_hastepics.py
- lineno: 66
- message: AssertionError: assert 'TEST:SIM:M1.' == 'TEST:SIM:M1'
-
- - TEST:SIM:M1
- + TEST:SIM:M1.
- ? +
- ```
-
- **traceback:**
-
- ```python
- - path: tests/test_utils_hastepics.py
- lineno: 66
- message: AssertionError
- ```
-
- **longrepr:**
-
- ```python
- def test_motor_init_strips_suffixes():
- m1 = Motor("TEST:SIM:M1.VAL")
-
- # Afficher les attributs de base de epics.Motor
- print("Attributes of epics.Motor:")
- print(" _init_list:", getattr(epics.Motor, "_init_list", []))
- print(" _extras:", getattr(epics.Motor, "_extras", {}))
-
- # Afficher les attributs de ton objet Motor
- print("\nAttributes of Motor (custom):")
- print(" _init_list:", getattr(m1, "_init_list", []))
- print(" _extras:", getattr(m1, "_extras", {}))
-
- # Afficher tous les attributs de epics.Motor (via dir())
- print("\nAll attributes of epics.Motor:")
- print(dir(epics.Motor))
-
- # Afficher tous les attributs de ta classe Motor (via dir())
- print("\nAll attributes of Motor (custom):")
- print(dir(m1))
-
- > assert m1._prefix == "TEST:SIM:M1"
- E AssertionError: assert 'TEST:SIM:M1.' == 'TEST:SIM:M1'
- E
- E - TEST:SIM:M1
- E + TEST:SIM:M1.
- E ? +
-
- tests/test_utils_hastepics.py:66: AssertionError
+ passed
```
**_*π Teardown phase*_**
@@ -196,7 +102,7 @@
**duration:**
```python
- 0.00023950450122356415
+ 0.00015333015471696854
```
**outcome:**
@@ -205,377 +111,7 @@
passed
```
- β³ Function: test_disabled_removed_relative_to_upstream
- -
- β Test 4
-
- **_*π Setup phase*_**
-
- **duration:**
-
- ```python
- 0.00016887858510017395
- ```
-
- **outcome:**
-
- ```python
- passed
- ```
-
- **_*π Call phase*_**
-
- **duration:**
-
- ```python
- 0.0014593321830034256
- ```
-
- **outcome:**
-
- ```python
- failed
- ```
-
- **crash:**
-
- ```python
- path: /workspace/tligui_y/slic/tests/test_utils_hastepics.py
- lineno: 87
- message: AssertionError: _extras is empty; expected at least one entry
- assert 0 > 0
- + where 0 = len({})
- ```
-
- **traceback:**
-
- ```python
- - path: tests/test_utils_hastepics.py
- lineno: 87
- message: AssertionError
- ```
-
- **longrepr:**
-
- ```python
- def test_disabled_removed_relative_to_upstream():
- m = Motor("TEST:SIM:M7")
-
- init_list = tuple(getattr(m, "_init_list", ()))
- extras = dict(getattr(m, "_extras", {}))
-
- assert len(init_list) > 0, "_init_list is empty; expected at least one field"
- > assert len(extras) > 0, "_extras is empty; expected at least one entry"
- E AssertionError: _extras is empty; expected at least one entry
- E assert 0 > 0
- E + where 0 = len({})
-
- tests/test_utils_hastepics.py:87: AssertionError
- ```
-
- **_*π Teardown phase*_**
-
- **duration:**
-
- ```python
- 0.00023538805544376373
- ```
-
- **outcome:**
-
- ```python
- passed
- ```
-
- β³ Function: test_motor_val_connect_via_cache
- -
- β Test 6
-
- **_*π Setup phase*_**
-
- **duration:**
-
- ```python
- 0.00019162986427545547
- ```
-
- **outcome:**
-
- ```python
- passed
- ```
-
- **_*π Call phase*_**
-
- **duration:**
-
- ```python
- 2.001705374568701
- ```
-
- **outcome:**
-
- ```python
- failed
- ```
-
- **crash:**
-
- ```python
- path: /workspace/tligui_y/slic/tests/test_utils_hastepics.py
- lineno: 145
- message: AssertionError: assert False
- + where False = wait_for_connection(timeout=2.0)
- + where wait_for_connection = .wait_for_connection
- ```
-
- **traceback:**
-
- ```python
- - path: tests/test_utils_hastepics.py
- lineno: 145
- message: AssertionError
- ```
-
- **longrepr:**
-
- ```python
- def test_motor_val_connect_via_cache():
- motor_prefix = "TEST:SIM:M5"
- pvname = f"{motor_prefix}.VAL"
-
- assert not _in_pv_cache(pvname)
-
- m = Motor(motor_prefix)
-
- assert _in_pv_cache(pvname), f"{pvname} should be cached after Motor()"
-
- pv = _get_cached_pv(pvname)
- assert pv is not None
- assert not pv.connected
-
- > assert pv.wait_for_connection(timeout=2.0)
- E AssertionError: assert False
- E + where False = wait_for_connection(timeout=2.0)
- E + where wait_for_connection = .wait_for_connection
-
- tests/test_utils_hastepics.py:145: AssertionError
- ```
-
- **_*π Teardown phase*_**
-
- **duration:**
-
- ```python
- 0.0003578662872314453
- ```
-
- **outcome:**
-
- ```python
- passed
- ```
-
- β³ Function: test_speedup_motor_instantiation
- -
- β Test 8
-
- **_*π Setup phase*_**
-
- **duration:**
-
- ```python
- 0.00018780305981636047
- ```
-
- **outcome:**
-
- ```python
- passed
- ```
-
- **_*π Call phase*_**
-
- **duration:**
-
- ```python
- 6.002434962429106
- ```
-
- **outcome:**
-
- ```python
- failed
- ```
-
- **crash:**
-
- ```python
- path: /workspace/tligui_y/slic/.pixi/envs/default/lib/python3.8/site-packages/pyepics-3.4.3-py3.9.egg/epics/motor.py
- lineno: 254
- message: epics.motor.MotorException: TEST:SIM:M8 is not an Epics Motor
- ```
-
- **traceback:**
-
- ```python
- - path: tests/test_utils_hastepics.py
- lineno: 174
- message: None
- - path: /workspace/tligui_y/slic/.pixi/envs/default/lib/python3.8/site-packages/pyepics-3.4.3-py3.9.egg/epics/motor.py
- lineno: 254
- message: MotorException
- ```
-
- **longrepr:**
-
- ```python
- def test_speedup_motor_instantiation():
- """On exige juste pas de grosse rΓ©gression vs EPICS."""
- t0 = time.perf_counter()
- Motor("TEST:SIM:M6")
- t1 = time.perf_counter()
-
- t2 = time.perf_counter()
- > epics.Motor("TEST:SIM:M8")
-
- tests/test_utils_hastepics.py:174:
- _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
-
- self = , name = 'TEST:SIM:M8', timeout = 3.0
-
- def __init__(self, name=None, timeout=3.0):
- if name is None:
- raise MotorException("must supply motor name")
-
- if name.endswith('.VAL'):
- name = name[:-4]
- if name.endswith('.'):
- name = name[:-1]
-
- self._prefix = name
- device.Device.__init__(self, name, delim='.',
- attrs=self._init_list,
- timeout=timeout)
- # make sure this is really a motor!
- rectype = self.get('RTYP')
- if rectype != 'motor':
- > raise MotorException("%s is not an Epics Motor" % name)
- E epics.motor.MotorException: TEST:SIM:M8 is not an Epics Motor
-
- /workspace/tligui_y/slic/.pixi/envs/default/lib/python3.8/site-packages/pyepics-3.4.3-py3.9.egg/epics/motor.py:254: MotorException
- ```
-
- **_*π Teardown phase*_**
-
- **duration:**
-
- ```python
- 0.00023432914167642593
- ```
-
- **outcome:**
-
- ```python
- passed
- ```
-
- β³ Function: test_speedup_motor_PV
- -
- β Test 9
-
- **_*π Setup phase*_**
-
- **duration:**
-
- ```python
- 0.0001651989296078682
- ```
-
- **outcome:**
-
- ```python
- passed
- ```
-
- **_*π Call phase*_**
-
- **duration:**
-
- ```python
- 0.0019596312195062637
- ```
-
- **outcome:**
-
- ```python
- failed
- ```
-
- **crash:**
-
- ```python
- path: /workspace/tligui_y/slic/tests/test_utils_hastepics.py
- lineno: 196
- message: AssertionError: assert False
- + where False = .connected
- ```
-
- **traceback:**
-
- ```python
- - path: tests/test_utils_hastepics.py
- lineno: 196
- message: AssertionError
- ```
-
- **longrepr:**
-
- ```python
- def test_speedup_motor_PV():
- # baseline EPICS
- m_slow = Motor("TEST:SIM:M14")
- t0 = time.perf_counter()
- pv_slow = m_slow.PV("VAL", connect=True)
- t1 = time.perf_counter()
-
- m_fast = Motor("TEST:SIM:M15")
- t2 = time.perf_counter()
- pv_fast = m_fast.PV("VAL", connect=False)
- t3 = time.perf_counter()
-
- > assert pv_slow.connected
- E AssertionError: assert False
- E + where False = .connected
-
- tests/test_utils_hastepics.py:196: AssertionError
- ```
-
- **_*π Teardown phase*_**
-
- **duration:**
-
- ```python
- 0.0001671966165304184
- ```
-
- **outcome:**
-
- ```python
- passed
- ```
-
-
-
-
-
-
-β
Passed (6)
-
- -
- π test_utils_hastepics.py
-
- β³ Function: test_motor_invalid_name_raises
+ β³ Function: test_get_server_info
-
β
Test 3
@@ -584,7 +120,7 @@
**duration:**
```python
- 0.000208989717066288
+ 0.0001543806865811348
```
**outcome:**
@@ -598,7 +134,7 @@
**duration:**
```python
- 0.0006750449538230896
+ 0.00045926589518785477
```
**outcome:**
@@ -612,7 +148,7 @@
**duration:**
```python
- 0.00015596672892570496
+ 0.00011773314327001572
```
**outcome:**
@@ -621,7 +157,53 @@
passed
```
- β³ Function: test_motor_init_list_and_extras_build_handles_eagerly
+ β³ Function: test_get_capabilities
+ -
+ β
Test 4
+
+ **_*π Setup phase*_**
+
+ **duration:**
+
+ ```python
+ 0.00014492589980363846
+ ```
+
+ **outcome:**
+
+ ```python
+ passed
+ ```
+
+ **_*π Call phase*_**
+
+ **duration:**
+
+ ```python
+ 0.0005091605708003044
+ ```
+
+ **outcome:**
+
+ ```python
+ passed
+ ```
+
+ **_*π Teardown phase*_**
+
+ **duration:**
+
+ ```python
+ 0.00011112913489341736
+ ```
+
+ **outcome:**
+
+ ```python
+ passed
+ ```
+
+ β³ Function: test_notify_and_close
-
β
Test 5
@@ -630,7 +212,7 @@
**duration:**
```python
- 0.00019463803619146347
+ 0.0001364573836326599
```
**outcome:**
@@ -644,7 +226,7 @@
**duration:**
```python
- 0.0015617609024047852
+ 0.20479927957057953
```
**outcome:**
@@ -658,7 +240,7 @@
**duration:**
```python
- 0.00014205649495124817
+ 0.0001926301047205925
```
**outcome:**
@@ -667,7 +249,78 @@
passed
```
- β³ Function: test_speedup_get_pv
+ β³ Function: test_notify_invalid_value
+ -
+ β
Test 6
+
+ **_*π Setup phase*_**
+
+ **duration:**
+
+ ```python
+ 0.00017177965492010117
+ ```
+
+ **outcome:**
+
+ ```python
+ passed
+ ```
+
+ **_*π Call phase*_**
+
+ **duration:**
+
+ ```python
+ 0.0007711350917816162
+ ```
+
+ **outcome:**
+
+ ```python
+ passed
+ ```
+
+ **log:**
+
+ ```python
+ - name: dbus.connection
+ msg: Unable to set arguments ('', 0, '', 'Invalid Test', 1234, (), {}, 0) according to signature 'susssasa{sv}i': : Expected a string or unicode object
+ args: None
+ levelname: ERROR
+ levelno: 40
+ pathname: /workspace/tligui_y/slic/.pixi/envs/default/lib/python3.8/site-packages/dbus/connection.py
+ filename: connection.py
+ module: connection
+ exc_info: None
+ exc_text: None
+ stack_info: None
+ lineno: 628
+ funcName: call_blocking
+ created: 1756133776.5750947
+ msecs: 575.0946998596191
+ relativeCreated: 4785.06326675415
+ thread: 139986524616192
+ threadName: MainThread
+ processName: MainProcess
+ process: 3214
+ ```
+
+ **_*π Teardown phase*_**
+
+ **duration:**
+
+ ```python
+ 0.00014100223779678345
+ ```
+
+ **outcome:**
+
+ ```python
+ passed
+ ```
+
+ β³ Function: test_convert_dbus_strings
-
β
Test 7
@@ -676,7 +329,7 @@
**duration:**
```python
- 0.0002718130126595497
+ 0.0001198742538690567
```
**outcome:**
@@ -690,7 +343,7 @@
**duration:**
```python
- 5.000807790085673
+ 0.00018846429884433746
```
**outcome:**
@@ -704,145 +357,7 @@
**duration:**
```python
- 0.00019267108291387558
- ```
-
- **outcome:**
-
- ```python
- passed
- ```
-
- β³ Function: test_motor_init_list_attrs_created
- -
- β
Test 10
-
- **_*π Setup phase*_**
-
- **duration:**
-
- ```python
- 0.00014871452003717422
- ```
-
- **outcome:**
-
- ```python
- passed
- ```
-
- **_*π Call phase*_**
-
- **duration:**
-
- ```python
- 0.0010725082829594612
- ```
-
- **outcome:**
-
- ```python
- passed
- ```
-
- **_*π Teardown phase*_**
-
- **duration:**
-
- ```python
- 0.00012002885341644287
- ```
-
- **outcome:**
-
- ```python
- passed
- ```
-
- β³ Function: test_motor_extras_attrs_correct
- -
- β
Test 11
-
- **_*π Setup phase*_**
-
- **duration:**
-
- ```python
- 0.00013439077883958817
- ```
-
- **outcome:**
-
- ```python
- passed
- ```
-
- **_*π Call phase*_**
-
- **duration:**
-
- ```python
- 0.0009877951815724373
- ```
-
- **outcome:**
-
- ```python
- passed
- ```
-
- **_*π Teardown phase*_**
-
- **duration:**
-
- ```python
- 0.00011709798127412796
- ```
-
- **outcome:**
-
- ```python
- passed
- ```
-
- β³ Function: test_motor_callbacks_empty
- -
- β
Test 12
-
- **_*π Setup phase*_**
-
- **duration:**
-
- ```python
- 0.0001297714188694954
- ```
-
- **outcome:**
-
- ```python
- passed
- ```
-
- **_*π Call phase*_**
-
- **duration:**
-
- ```python
- 0.0010321307927370071
- ```
-
- **outcome:**
-
- ```python
- passed
- ```
-
- **_*π Teardown phase*_**
-
- **duration:**
-
- ```python
- 0.00021640397608280182
+ 0.00016782432794570923
```
**outcome:**
@@ -867,58 +382,56 @@
- **result:**
```python
- - nodeid: tests/test_utils_hastepics.py
+ - nodeid: tests/test_utils_dbusnotify.py
type: Module
```
-β
tests (1 tests)
+β
tests (2 tests)
-
- β
tests/test_utils_hastepics.py
+ β
tests/test_utils_dbusnotify.py
- **Outcome:** `passed`
- **result:**
```python
- - nodeid: tests/test_utils_hastepics.py::test_get_pv_connect_false_and_true
+ - nodeid: tests/test_utils_dbusnotify.py::DBusTestCase
+ type: UnitTestCase
+ - nodeid: tests/test_utils_dbusnotify.py::test_notify_create
type: Function
- lineno: 29
- - nodeid: tests/test_utils_hastepics.py::test_motor_init_strips_suffixes
+ lineno: 26
+ - nodeid: tests/test_utils_dbusnotify.py::test_notify_update
type: Function
- lineno: 44
- - nodeid: tests/test_utils_hastepics.py::test_motor_invalid_name_raises
+ lineno: 37
+ - nodeid: tests/test_utils_dbusnotify.py::test_get_server_info
type: Function
- lineno: 74
- - nodeid: tests/test_utils_hastepics.py::test_disabled_removed_relative_to_upstream
+ lineno: 46
+ - nodeid: tests/test_utils_dbusnotify.py::test_get_capabilities
type: Function
- lineno: 79
- - nodeid: tests/test_utils_hastepics.py::test_motor_init_list_and_extras_build_handles_eagerly
+ lineno: 57
+ - nodeid: tests/test_utils_dbusnotify.py::test_notify_and_close
type: Function
- lineno: 100
- - nodeid: tests/test_utils_hastepics.py::test_motor_val_connect_via_cache
+ lineno: 72
+ - nodeid: tests/test_utils_dbusnotify.py::test_notify_invalid_value
type: Function
- lineno: 130
- - nodeid: tests/test_utils_hastepics.py::test_speedup_get_pv
+ lineno: 82
+ - nodeid: tests/test_utils_dbusnotify.py::test_convert_dbus_strings
type: Function
- lineno: 149
- - nodeid: tests/test_utils_hastepics.py::test_speedup_motor_instantiation
- type: Function
- lineno: 166
- - nodeid: tests/test_utils_hastepics.py::test_speedup_motor_PV
- type: Function
- lineno: 183
- - nodeid: tests/test_utils_hastepics.py::test_motor_init_list_attrs_created
- type: Function
- lineno: 205
- - nodeid: tests/test_utils_hastepics.py::test_motor_extras_attrs_correct
- type: Function
- lineno: 216
- - nodeid: tests/test_utils_hastepics.py::test_motor_callbacks_empty
- type: Function
- lineno: 228
+ lineno: 88
+ ```
+
+
+ -
+ β
tests/test_utils_dbusnotify.py::DBusTestCase
+
+ - **Outcome:** `passed`
+ - **result:**
+
+ ```python
+ []
```
@@ -932,7 +445,7 @@
```python
message: invalid escape sequence \-
category: DeprecationWarning
-when: collect
+when: runtest
filename: /workspace/tligui_y/slic/.pixi/envs/default/lib/python3.8/site-packages/bsread/h5.py
lineno: 207
```
@@ -947,7 +460,7 @@ lineno: 207
```python
message: The module numpy.dual is deprecated. Instead of using dual, use the functions directly from numpy or scipy.
category: DeprecationWarning
-when: collect
+when: runtest
filename: /workspace/tligui_y/slic/.pixi/envs/default/lib/python3.8/site-packages/scipy/fft/__init__.py
lineno: 97
```
diff --git a/markdown/coverage-summary.md b/markdown/coverage-summary.md
index 61c3f644d..6261aeaba 100644
--- a/markdown/coverage-summary.md
+++ b/markdown/coverage-summary.md
@@ -176,7 +176,7 @@
| slic/utils/channels.py | 17 | 12 | 29% |
| slic/utils/config.py | 5 | 2 | 60% |
| slic/utils/cprint.py | 41 | 16 | 61% |
-| slic/utils/dbusnotify.py | 40 | 23 | 42% |
+| slic/utils/dbusnotify.py | 40 | 0 | 100% |
| slic/utils/debug.py | 16 | 12 | 25% |
| slic/utils/dictext.py | 30 | 19 | 37% |
| slic/utils/dotdir.py | 10 | 1 | 90% |
@@ -185,7 +185,7 @@
| slic/utils/eval.py | 49 | 37 | 24% |
| slic/utils/exceptions.py | 22 | 14 | 36% |
| slic/utils/get\_adj.py | 17 | 11 | 35% |
-| slic/utils/hastyepics.py | 37 | 5 | 86% |
+| slic/utils/hastyepics.py | 37 | 25 | 32% |
| slic/utils/ioc/\_\_init\_\_.py | 1 | 1 | 0% |
| slic/utils/ioc/adjdrv.py | 31 | 31 | 0% |
| slic/utils/ioc/ioc.py | 63 | 63 | 0% |
@@ -224,4 +224,4 @@
| slic/utils/typecast.py | 19 | 19 | 0% |
| slic/utils/utils.py | 17 | 8 | 53% |
| slic/utils/xrange.py | 33 | 30 | 9% |
-| **TOTAL** | **9984** | **7432** | **26%** |
+| **TOTAL** | **9984** | **7429** | **26%** |
diff --git a/markdown/pytest-report.json b/markdown/pytest-report.json
index 106c99a26..cad9bb973 100644
--- a/markdown/pytest-report.json
+++ b/markdown/pytest-report.json
@@ -1 +1 @@
-{"created": 1756129970.6098907, "duration": 26.528825759887695, "exitcode": 1, "root": "/workspace/tligui_y/slic", "environment": {}, "summary": {"failed": 6, "passed": 6, "total": 12, "collected": 12}, "collectors": [{"nodeid": "", "outcome": "passed", "result": [{"nodeid": "tests/test_utils_hastepics.py", "type": "Module"}]}, {"nodeid": "tests/test_utils_hastepics.py", "outcome": "passed", "result": [{"nodeid": "tests/test_utils_hastepics.py::test_get_pv_connect_false_and_true", "type": "Function", "lineno": 29}, {"nodeid": "tests/test_utils_hastepics.py::test_motor_init_strips_suffixes", "type": "Function", "lineno": 44}, {"nodeid": "tests/test_utils_hastepics.py::test_motor_invalid_name_raises", "type": "Function", "lineno": 74}, {"nodeid": "tests/test_utils_hastepics.py::test_disabled_removed_relative_to_upstream", "type": "Function", "lineno": 79}, {"nodeid": "tests/test_utils_hastepics.py::test_motor_init_list_and_extras_build_handles_eagerly", "type": "Function", "lineno": 100}, {"nodeid": "tests/test_utils_hastepics.py::test_motor_val_connect_via_cache", "type": "Function", "lineno": 130}, {"nodeid": "tests/test_utils_hastepics.py::test_speedup_get_pv", "type": "Function", "lineno": 149}, {"nodeid": "tests/test_utils_hastepics.py::test_speedup_motor_instantiation", "type": "Function", "lineno": 166}, {"nodeid": "tests/test_utils_hastepics.py::test_speedup_motor_PV", "type": "Function", "lineno": 183}, {"nodeid": "tests/test_utils_hastepics.py::test_motor_init_list_attrs_created", "type": "Function", "lineno": 205}, {"nodeid": "tests/test_utils_hastepics.py::test_motor_extras_attrs_correct", "type": "Function", "lineno": 216}, {"nodeid": "tests/test_utils_hastepics.py::test_motor_callbacks_empty", "type": "Function", "lineno": 228}]}], "tests": [{"nodeid": "tests/test_utils_hastepics.py::test_get_pv_connect_false_and_true", "lineno": 29, "outcome": "failed", "keywords": ["test_get_pv_connect_false_and_true", "test_utils_hastepics.py", "tests", "slic", ""], "setup": {"duration": 0.0007642786949872971, "outcome": "passed"}, "call": {"duration": 2.111914704553783, "outcome": "failed", "crash": {"path": "/workspace/tligui_y/slic/tests/test_utils_hastepics.py", "lineno": 42, "message": "AssertionError: assert False\n + where False = .connected"}, "traceback": [{"path": "tests/test_utils_hastepics.py", "lineno": 42, "message": "AssertionError"}], "longrepr": "def test_get_pv_connect_false_and_true():\n name = \"TEST:SIM:VAL\"\n assert not _in_pv_cache(name)\n \n pv = get_pv(name, connect=False)\n assert isinstance(pv, PV)\n \n assert _in_pv_cache(name), \"PV should be in _PVcache_ after get_pv(connect=False)\"\n assert not pv.connected\n \n # Now actually connect\n pv2 = get_pv(name, connect=True, timeout=2.0)\n> assert pv2.connected\nE AssertionError: assert False\nE + where False = .connected\n\ntests/test_utils_hastepics.py:42: AssertionError"}, "teardown": {"duration": 0.0006133858114480972, "outcome": "passed"}}, {"nodeid": "tests/test_utils_hastepics.py::test_motor_init_strips_suffixes", "lineno": 44, "outcome": "failed", "keywords": ["test_motor_init_strips_suffixes", "test_utils_hastepics.py", "tests", "slic", ""], "setup": {"duration": 0.00035681668668985367, "outcome": "passed"}, "call": {"duration": 0.0025765858590602875, "outcome": "failed", "crash": {"path": "/workspace/tligui_y/slic/tests/test_utils_hastepics.py", "lineno": 66, "message": "AssertionError: assert 'TEST:SIM:M1.' == 'TEST:SIM:M1'\n \n - TEST:SIM:M1\n + TEST:SIM:M1.\n ? +"}, "traceback": [{"path": "tests/test_utils_hastepics.py", "lineno": 66, "message": "AssertionError"}], "longrepr": "def test_motor_init_strips_suffixes():\n m1 = Motor(\"TEST:SIM:M1.VAL\")\n \n # Afficher les attributs de base de epics.Motor\n print(\"Attributes of epics.Motor:\")\n print(\" _init_list:\", getattr(epics.Motor, \"_init_list\", []))\n print(\" _extras:\", getattr(epics.Motor, \"_extras\", {}))\n \n # Afficher les attributs de ton objet Motor\n print(\"\\nAttributes of Motor (custom):\")\n print(\" _init_list:\", getattr(m1, \"_init_list\", []))\n print(\" _extras:\", getattr(m1, \"_extras\", {}))\n \n # Afficher tous les attributs de epics.Motor (via dir())\n print(\"\\nAll attributes of epics.Motor:\")\n print(dir(epics.Motor))\n \n # Afficher tous les attributs de ta classe Motor (via dir())\n print(\"\\nAll attributes of Motor (custom):\")\n print(dir(m1))\n \n> assert m1._prefix == \"TEST:SIM:M1\"\nE AssertionError: assert 'TEST:SIM:M1.' == 'TEST:SIM:M1'\nE \nE - TEST:SIM:M1\nE + TEST:SIM:M1.\nE ? +\n\ntests/test_utils_hastepics.py:66: AssertionError"}, "teardown": {"duration": 0.00023950450122356415, "outcome": "passed"}}, {"nodeid": "tests/test_utils_hastepics.py::test_motor_invalid_name_raises", "lineno": 74, "outcome": "passed", "keywords": ["test_motor_invalid_name_raises", "test_utils_hastepics.py", "tests", "slic", ""], "setup": {"duration": 0.000208989717066288, "outcome": "passed"}, "call": {"duration": 0.0006750449538230896, "outcome": "passed"}, "teardown": {"duration": 0.00015596672892570496, "outcome": "passed"}}, {"nodeid": "tests/test_utils_hastepics.py::test_disabled_removed_relative_to_upstream", "lineno": 79, "outcome": "failed", "keywords": ["test_disabled_removed_relative_to_upstream", "test_utils_hastepics.py", "tests", "slic", ""], "setup": {"duration": 0.00016887858510017395, "outcome": "passed"}, "call": {"duration": 0.0014593321830034256, "outcome": "failed", "crash": {"path": "/workspace/tligui_y/slic/tests/test_utils_hastepics.py", "lineno": 87, "message": "AssertionError: _extras is empty; expected at least one entry\nassert 0 > 0\n + where 0 = len({})"}, "traceback": [{"path": "tests/test_utils_hastepics.py", "lineno": 87, "message": "AssertionError"}], "longrepr": "def test_disabled_removed_relative_to_upstream():\n m = Motor(\"TEST:SIM:M7\")\n \n init_list = tuple(getattr(m, \"_init_list\", ()))\n extras = dict(getattr(m, \"_extras\", {}))\n \n assert len(init_list) > 0, \"_init_list is empty; expected at least one field\"\n> assert len(extras) > 0, \"_extras is empty; expected at least one entry\"\nE AssertionError: _extras is empty; expected at least one entry\nE assert 0 > 0\nE + where 0 = len({})\n\ntests/test_utils_hastepics.py:87: AssertionError"}, "teardown": {"duration": 0.00023538805544376373, "outcome": "passed"}}, {"nodeid": "tests/test_utils_hastepics.py::test_motor_init_list_and_extras_build_handles_eagerly", "lineno": 100, "outcome": "passed", "keywords": ["test_motor_init_list_and_extras_build_handles_eagerly", "test_utils_hastepics.py", "tests", "slic", ""], "setup": {"duration": 0.00019463803619146347, "outcome": "passed"}, "call": {"duration": 0.0015617609024047852, "outcome": "passed"}, "teardown": {"duration": 0.00014205649495124817, "outcome": "passed"}}, {"nodeid": "tests/test_utils_hastepics.py::test_motor_val_connect_via_cache", "lineno": 130, "outcome": "failed", "keywords": ["test_motor_val_connect_via_cache", "test_utils_hastepics.py", "tests", "slic", ""], "setup": {"duration": 0.00019162986427545547, "outcome": "passed"}, "call": {"duration": 2.001705374568701, "outcome": "failed", "crash": {"path": "/workspace/tligui_y/slic/tests/test_utils_hastepics.py", "lineno": 145, "message": "AssertionError: assert False\n + where False = wait_for_connection(timeout=2.0)\n + where wait_for_connection = .wait_for_connection"}, "traceback": [{"path": "tests/test_utils_hastepics.py", "lineno": 145, "message": "AssertionError"}], "longrepr": "def test_motor_val_connect_via_cache():\n motor_prefix = \"TEST:SIM:M5\"\n pvname = f\"{motor_prefix}.VAL\"\n \n assert not _in_pv_cache(pvname)\n \n m = Motor(motor_prefix)\n \n assert _in_pv_cache(pvname), f\"{pvname} should be cached after Motor()\"\n \n pv = _get_cached_pv(pvname)\n assert pv is not None\n assert not pv.connected\n \n> assert pv.wait_for_connection(timeout=2.0)\nE AssertionError: assert False\nE + where False = wait_for_connection(timeout=2.0)\nE + where wait_for_connection = .wait_for_connection\n\ntests/test_utils_hastepics.py:145: AssertionError"}, "teardown": {"duration": 0.0003578662872314453, "outcome": "passed"}}, {"nodeid": "tests/test_utils_hastepics.py::test_speedup_get_pv", "lineno": 149, "outcome": "passed", "keywords": ["test_speedup_get_pv", "test_utils_hastepics.py", "tests", "slic", ""], "setup": {"duration": 0.0002718130126595497, "outcome": "passed"}, "call": {"duration": 5.000807790085673, "outcome": "passed"}, "teardown": {"duration": 0.00019267108291387558, "outcome": "passed"}}, {"nodeid": "tests/test_utils_hastepics.py::test_speedup_motor_instantiation", "lineno": 166, "outcome": "failed", "keywords": ["test_speedup_motor_instantiation", "test_utils_hastepics.py", "tests", "slic", ""], "setup": {"duration": 0.00018780305981636047, "outcome": "passed"}, "call": {"duration": 6.002434962429106, "outcome": "failed", "crash": {"path": "/workspace/tligui_y/slic/.pixi/envs/default/lib/python3.8/site-packages/pyepics-3.4.3-py3.9.egg/epics/motor.py", "lineno": 254, "message": "epics.motor.MotorException: TEST:SIM:M8 is not an Epics Motor"}, "traceback": [{"path": "tests/test_utils_hastepics.py", "lineno": 174, "message": ""}, {"path": "/workspace/tligui_y/slic/.pixi/envs/default/lib/python3.8/site-packages/pyepics-3.4.3-py3.9.egg/epics/motor.py", "lineno": 254, "message": "MotorException"}], "longrepr": "def test_speedup_motor_instantiation():\n \"\"\"On exige juste pas de grosse r\u00e9gression vs EPICS.\"\"\"\n t0 = time.perf_counter()\n Motor(\"TEST:SIM:M6\")\n t1 = time.perf_counter()\n \n t2 = time.perf_counter()\n> epics.Motor(\"TEST:SIM:M8\")\n\ntests/test_utils_hastepics.py:174: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\nself = , name = 'TEST:SIM:M8', timeout = 3.0\n\n def __init__(self, name=None, timeout=3.0):\n if name is None:\n raise MotorException(\"must supply motor name\")\n \n if name.endswith('.VAL'):\n name = name[:-4]\n if name.endswith('.'):\n name = name[:-1]\n \n self._prefix = name\n device.Device.__init__(self, name, delim='.',\n attrs=self._init_list,\n timeout=timeout)\n # make sure this is really a motor!\n rectype = self.get('RTYP')\n if rectype != 'motor':\n> raise MotorException(\"%s is not an Epics Motor\" % name)\nE epics.motor.MotorException: TEST:SIM:M8 is not an Epics Motor\n\n/workspace/tligui_y/slic/.pixi/envs/default/lib/python3.8/site-packages/pyepics-3.4.3-py3.9.egg/epics/motor.py:254: MotorException"}, "teardown": {"duration": 0.00023432914167642593, "outcome": "passed"}}, {"nodeid": "tests/test_utils_hastepics.py::test_speedup_motor_PV", "lineno": 183, "outcome": "failed", "keywords": ["test_speedup_motor_PV", "test_utils_hastepics.py", "tests", "slic", ""], "setup": {"duration": 0.0001651989296078682, "outcome": "passed"}, "call": {"duration": 0.0019596312195062637, "outcome": "failed", "crash": {"path": "/workspace/tligui_y/slic/tests/test_utils_hastepics.py", "lineno": 196, "message": "AssertionError: assert False\n + where False = .connected"}, "traceback": [{"path": "tests/test_utils_hastepics.py", "lineno": 196, "message": "AssertionError"}], "longrepr": "def test_speedup_motor_PV():\n # baseline EPICS\n m_slow = Motor(\"TEST:SIM:M14\")\n t0 = time.perf_counter()\n pv_slow = m_slow.PV(\"VAL\", connect=True)\n t1 = time.perf_counter()\n \n m_fast = Motor(\"TEST:SIM:M15\")\n t2 = time.perf_counter()\n pv_fast = m_fast.PV(\"VAL\", connect=False)\n t3 = time.perf_counter()\n \n> assert pv_slow.connected\nE AssertionError: assert False\nE + where False = .connected\n\ntests/test_utils_hastepics.py:196: AssertionError"}, "teardown": {"duration": 0.0001671966165304184, "outcome": "passed"}}, {"nodeid": "tests/test_utils_hastepics.py::test_motor_init_list_attrs_created", "lineno": 205, "outcome": "passed", "keywords": ["test_motor_init_list_attrs_created", "test_utils_hastepics.py", "tests", "slic", ""], "setup": {"duration": 0.00014871452003717422, "outcome": "passed"}, "call": {"duration": 0.0010725082829594612, "outcome": "passed"}, "teardown": {"duration": 0.00012002885341644287, "outcome": "passed"}}, {"nodeid": "tests/test_utils_hastepics.py::test_motor_extras_attrs_correct", "lineno": 216, "outcome": "passed", "keywords": ["test_motor_extras_attrs_correct", "test_utils_hastepics.py", "tests", "slic", ""], "setup": {"duration": 0.00013439077883958817, "outcome": "passed"}, "call": {"duration": 0.0009877951815724373, "outcome": "passed"}, "teardown": {"duration": 0.00011709798127412796, "outcome": "passed"}}, {"nodeid": "tests/test_utils_hastepics.py::test_motor_callbacks_empty", "lineno": 228, "outcome": "passed", "keywords": ["test_motor_callbacks_empty", "test_utils_hastepics.py", "tests", "slic", ""], "setup": {"duration": 0.0001297714188694954, "outcome": "passed"}, "call": {"duration": 0.0010321307927370071, "outcome": "passed"}, "teardown": {"duration": 0.00021640397608280182, "outcome": "passed"}}], "warnings": [{"message": "invalid escape sequence \\-", "category": "DeprecationWarning", "when": "collect", "filename": "/workspace/tligui_y/slic/.pixi/envs/default/lib/python3.8/site-packages/bsread/h5.py", "lineno": 207}, {"message": "The module numpy.dual is deprecated. Instead of using dual, use the functions directly from numpy or scipy.", "category": "DeprecationWarning", "when": "collect", "filename": "/workspace/tligui_y/slic/.pixi/envs/default/lib/python3.8/site-packages/scipy/fft/__init__.py", "lineno": 97}]}
\ No newline at end of file
+{"created": 1756133777.5663934, "duration": 4.885369062423706, "exitcode": 0, "root": "/workspace/tligui_y/slic", "environment": {}, "summary": {"passed": 7, "total": 7, "collected": 7}, "collectors": [{"nodeid": "", "outcome": "passed", "result": [{"nodeid": "tests/test_utils_dbusnotify.py", "type": "Module"}]}, {"nodeid": "tests/test_utils_dbusnotify.py::DBusTestCase", "outcome": "passed", "result": []}, {"nodeid": "tests/test_utils_dbusnotify.py", "outcome": "passed", "result": [{"nodeid": "tests/test_utils_dbusnotify.py::DBusTestCase", "type": "UnitTestCase"}, {"nodeid": "tests/test_utils_dbusnotify.py::test_notify_create", "type": "Function", "lineno": 26}, {"nodeid": "tests/test_utils_dbusnotify.py::test_notify_update", "type": "Function", "lineno": 37}, {"nodeid": "tests/test_utils_dbusnotify.py::test_get_server_info", "type": "Function", "lineno": 46}, {"nodeid": "tests/test_utils_dbusnotify.py::test_get_capabilities", "type": "Function", "lineno": 57}, {"nodeid": "tests/test_utils_dbusnotify.py::test_notify_and_close", "type": "Function", "lineno": 72}, {"nodeid": "tests/test_utils_dbusnotify.py::test_notify_invalid_value", "type": "Function", "lineno": 82}, {"nodeid": "tests/test_utils_dbusnotify.py::test_convert_dbus_strings", "type": "Function", "lineno": 88}]}], "tests": [{"nodeid": "tests/test_utils_dbusnotify.py::test_notify_create", "lineno": 26, "outcome": "passed", "keywords": ["test_notify_create", "test_utils_dbusnotify.py", "tests", "slic", ""], "setup": {"duration": 3.5844745840877295, "outcome": "passed"}, "call": {"duration": 0.004959088750183582, "outcome": "passed"}, "teardown": {"duration": 0.00025586970150470734, "outcome": "passed"}}, {"nodeid": "tests/test_utils_dbusnotify.py::test_notify_update", "lineno": 37, "outcome": "passed", "keywords": ["test_notify_update", "test_utils_dbusnotify.py", "tests", "slic", ""], "setup": {"duration": 0.00019716378301382065, "outcome": "passed"}, "call": {"duration": 0.016220551915466785, "outcome": "passed"}, "teardown": {"duration": 0.00015333015471696854, "outcome": "passed"}}, {"nodeid": "tests/test_utils_dbusnotify.py::test_get_server_info", "lineno": 46, "outcome": "passed", "keywords": ["test_get_server_info", "test_utils_dbusnotify.py", "tests", "slic", ""], "setup": {"duration": 0.0001543806865811348, "outcome": "passed"}, "call": {"duration": 0.00045926589518785477, "outcome": "passed"}, "teardown": {"duration": 0.00011773314327001572, "outcome": "passed"}}, {"nodeid": "tests/test_utils_dbusnotify.py::test_get_capabilities", "lineno": 57, "outcome": "passed", "keywords": ["test_get_capabilities", "test_utils_dbusnotify.py", "tests", "slic", ""], "setup": {"duration": 0.00014492589980363846, "outcome": "passed"}, "call": {"duration": 0.0005091605708003044, "outcome": "passed"}, "teardown": {"duration": 0.00011112913489341736, "outcome": "passed"}}, {"nodeid": "tests/test_utils_dbusnotify.py::test_notify_and_close", "lineno": 72, "outcome": "passed", "keywords": ["test_notify_and_close", "test_utils_dbusnotify.py", "tests", "slic", ""], "setup": {"duration": 0.0001364573836326599, "outcome": "passed"}, "call": {"duration": 0.20479927957057953, "outcome": "passed"}, "teardown": {"duration": 0.0001926301047205925, "outcome": "passed"}}, {"nodeid": "tests/test_utils_dbusnotify.py::test_notify_invalid_value", "lineno": 82, "outcome": "passed", "keywords": ["test_notify_invalid_value", "test_utils_dbusnotify.py", "tests", "slic", ""], "setup": {"duration": 0.00017177965492010117, "outcome": "passed"}, "call": {"duration": 0.0007711350917816162, "outcome": "passed", "log": [{"name": "dbus.connection", "msg": "Unable to set arguments ('', 0, '', 'Invalid Test', 1234, (), {}, 0) according to signature 'susssasa{sv}i': : Expected a string or unicode object", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/workspace/tligui_y/slic/.pixi/envs/default/lib/python3.8/site-packages/dbus/connection.py", "filename": "connection.py", "module": "connection", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 628, "funcName": "call_blocking", "created": 1756133776.5750947, "msecs": 575.0946998596191, "relativeCreated": 4785.06326675415, "thread": 139986524616192, "threadName": "MainThread", "processName": "MainProcess", "process": 3214}]}, "teardown": {"duration": 0.00014100223779678345, "outcome": "passed"}}, {"nodeid": "tests/test_utils_dbusnotify.py::test_convert_dbus_strings", "lineno": 88, "outcome": "passed", "keywords": ["test_convert_dbus_strings", "test_utils_dbusnotify.py", "tests", "slic", ""], "setup": {"duration": 0.0001198742538690567, "outcome": "passed"}, "call": {"duration": 0.00018846429884433746, "outcome": "passed"}, "teardown": {"duration": 0.00016782432794570923, "outcome": "passed"}}], "warnings": [{"message": "invalid escape sequence \\-", "category": "DeprecationWarning", "when": "runtest", "filename": "/workspace/tligui_y/slic/.pixi/envs/default/lib/python3.8/site-packages/bsread/h5.py", "lineno": 207}, {"message": "The module numpy.dual is deprecated. Instead of using dual, use the functions directly from numpy or scipy.", "category": "DeprecationWarning", "when": "runtest", "filename": "/workspace/tligui_y/slic/.pixi/envs/default/lib/python3.8/site-packages/scipy/fft/__init__.py", "lineno": 97}]}
\ No newline at end of file
diff --git a/markdown/runtime_params.json b/markdown/runtime_params.json
index 70072c9a0..dc25a3b3e 100644
--- a/markdown/runtime_params.json
+++ b/markdown/runtime_params.json
@@ -1,50 +1,30 @@
[
{
- "nodeid": "tests/test_utils_hastepics.py::test_get_pv_connect_false_and_true",
+ "nodeid": "tests/test_utils_dbusnotify.py::test_notify_create",
"callspec": null
},
{
- "nodeid": "tests/test_utils_hastepics.py::test_motor_init_strips_suffixes",
+ "nodeid": "tests/test_utils_dbusnotify.py::test_notify_update",
"callspec": null
},
{
- "nodeid": "tests/test_utils_hastepics.py::test_motor_invalid_name_raises",
+ "nodeid": "tests/test_utils_dbusnotify.py::test_get_server_info",
"callspec": null
},
{
- "nodeid": "tests/test_utils_hastepics.py::test_disabled_removed_relative_to_upstream",
+ "nodeid": "tests/test_utils_dbusnotify.py::test_get_capabilities",
"callspec": null
},
{
- "nodeid": "tests/test_utils_hastepics.py::test_motor_init_list_and_extras_build_handles_eagerly",
+ "nodeid": "tests/test_utils_dbusnotify.py::test_notify_and_close",
"callspec": null
},
{
- "nodeid": "tests/test_utils_hastepics.py::test_motor_val_connect_via_cache",
+ "nodeid": "tests/test_utils_dbusnotify.py::test_notify_invalid_value",
"callspec": null
},
{
- "nodeid": "tests/test_utils_hastepics.py::test_speedup_get_pv",
- "callspec": null
- },
- {
- "nodeid": "tests/test_utils_hastepics.py::test_speedup_motor_instantiation",
- "callspec": null
- },
- {
- "nodeid": "tests/test_utils_hastepics.py::test_speedup_motor_PV",
- "callspec": null
- },
- {
- "nodeid": "tests/test_utils_hastepics.py::test_motor_init_list_attrs_created",
- "callspec": null
- },
- {
- "nodeid": "tests/test_utils_hastepics.py::test_motor_extras_attrs_correct",
- "callspec": null
- },
- {
- "nodeid": "tests/test_utils_hastepics.py::test_motor_callbacks_empty",
+ "nodeid": "tests/test_utils_dbusnotify.py::test_convert_dbus_strings",
"callspec": null
}
]
\ No newline at end of file