Table of Contents
Test Report
View CI Run 2563 | Commit ef8d9c0
🧪 Test Report
Generated on 2025-08-25 14:57:25 CEST
🧾 General Info
- duration: 26.012487411499023
- root: /workspace/tligui_y/slic
- environment: {}
📋 Summary
- Failed: 6
- Passed: 6
- Total: 12
- Collected: 12
🔎 Tests
❌ Failed (6)
-
📄 test_utils_hastepics.py
↳ Function: test_get_pv_connect_false_and_true
-
❌ Test 1
📌 Setup phase
duration:
0.0006133494898676872outcome:
passed📌 Call phase
duration:
2.0982074849307537outcome:
failedcrash:
path: /workspace/tligui_y/slic/tests/test_utils_hastepics.py lineno: 42 message: AssertionError: assert False + where False = <PV 'TEST:SIM:VAL': not connected>.connectedtraceback:
- path: tests/test_utils_hastepics.py lineno: 42 message: AssertionErrorlongrepr:
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 = <PV 'TEST:SIM:VAL': not connected>.connected tests/test_utils_hastepics.py:42: AssertionError📌 Teardown phase
duration:
0.0006176112219691277outcome:
passed
↳ Function: test_motor_init_strips_suffixes
-
❌ Test 2
📌 Setup phase
duration:
0.0004134317860007286outcome:
passed📌 Call phase
duration:
0.00261871051043272outcome:
failedcrash:
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:
- path: tests/test_utils_hastepics.py lineno: 66 message: AssertionErrorlongrepr:
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📌 Teardown phase
duration:
0.00017002224922180176outcome:
passed
↳ Function: test_disabled_removed_relative_to_upstream
-
❌ Test 4
📌 Setup phase
duration:
0.00014161132276058197outcome:
passed📌 Call phase
duration:
0.0014149202033877373outcome:
failedcrash:
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:
- path: tests/test_utils_hastepics.py lineno: 87 message: AssertionErrorlongrepr:
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:
0.00021537300199270248outcome:
passed
↳ Function: test_motor_val_connect_via_cache
-
❌ Test 6
📌 Setup phase
duration:
0.00018282141536474228outcome:
passed📌 Call phase
duration:
2.0014930246397853outcome:
failedcrash:
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 = <PV 'TEST:SIM:M5.VAL': not connected>.wait_for_connectiontraceback:
- path: tests/test_utils_hastepics.py lineno: 145 message: AssertionErrorlongrepr:
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 = <PV 'TEST:SIM:M5.VAL': not connected>.wait_for_connection tests/test_utils_hastepics.py:145: AssertionError📌 Teardown phase
duration:
0.0002107052132487297outcome:
passed
↳ Function: test_speedup_motor_instantiation
-
❌ Test 8
📌 Setup phase
duration:
0.0001776060089468956outcome:
passed📌 Call phase
duration:
6.002369360998273outcome:
failedcrash:
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 Motortraceback:
- 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: MotorExceptionlongrepr:
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 = <epics.Motor: TEST:SIM:M8.: 'None'>, 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:
0.00024970900267362595outcome:
passed
↳ Function: test_speedup_motor_PV
-
❌ Test 9
📌 Setup phase
duration:
0.00018692109733819962outcome:
passed📌 Call phase
duration:
0.0021838368847966194outcome:
failedcrash:
path: /workspace/tligui_y/slic/tests/test_utils_hastepics.py lineno: 196 message: AssertionError: assert False + where False = <PV 'TEST:SIM:M14.VAL': not connected>.connectedtraceback:
- path: tests/test_utils_hastepics.py lineno: 196 message: AssertionErrorlongrepr:
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 = <PV 'TEST:SIM:M14.VAL': not connected>.connected tests/test_utils_hastepics.py:196: AssertionError📌 Teardown phase
duration:
0.00021494459360837936outcome:
passed
-
✅ Passed (6)
-
📄 test_utils_hastepics.py
↳ Function: test_motor_invalid_name_raises
-
✅ Test 3
📌 Setup phase
duration:
0.00017018243670463562outcome:
passed📌 Call phase
duration:
0.0005255239084362984outcome:
passed📌 Teardown phase
duration:
0.00012029055505990982outcome:
passed
↳ Function: test_motor_init_list_and_extras_build_handles_eagerly
-
✅ Test 5
📌 Setup phase
duration:
0.00020025856792926788outcome:
passed📌 Call phase
duration:
0.0017977440729737282outcome:
passed📌 Teardown phase
duration:
0.00014180783182382584outcome:
passed
↳ Function: test_speedup_get_pv
-
✅ Test 7
📌 Setup phase
duration:
0.0001671668142080307outcome:
passed📌 Call phase
duration:
5.00056223385036outcome:
passed📌 Teardown phase
duration:
0.0001771543174982071outcome:
passed
↳ Function: test_motor_init_list_attrs_created
-
✅ Test 10
📌 Setup phase
duration:
0.00016166642308235168outcome:
passed📌 Call phase
duration:
0.0012020384892821312outcome:
passed📌 Teardown phase
duration:
0.00013283360749483109outcome:
passed
↳ Function: test_motor_extras_attrs_correct
-
✅ Test 11
📌 Setup phase
duration:
0.00015613529831171036outcome:
passed📌 Call phase
duration:
0.0010244566947221756outcome:
passed📌 Teardown phase
duration:
0.00012161955237388611outcome:
passed
↳ Function: test_motor_callbacks_empty
-
✅ Test 12
📌 Setup phase
duration:
0.0001339418813586235outcome:
passed📌 Call phase
duration:
0.0010499712079763412outcome:
passed📌 Teardown phase
duration:
0.00024505238980054855outcome:
passed
-
📚 Collected files
✅ (1 tests)
-
✅
- Outcome:
passed - result:
- nodeid: tests/test_utils_hastepics.py type: Module - Outcome:
✅ tests (1 tests)
-
✅ 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 - Outcome:
⚠️ Warnings
Warnings nº1
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
Warnings nº2
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