"""Tests unitaires pour la hiérarchie des erreurs du pipeline. Ce module valide les classes d'erreur définies dans pronote_sync.errors. """ import pytest from pronote_sync.errors import PipelineWarning, PronoteSyncError def test_pipeline_warning_inherits_pronote_sync_error() -> None: """Vérifie que PipelineWarning hérite de PronoteSyncError. :return: None :rtype: None """ assert isinstance(PipelineWarning("msg"), PronoteSyncError) def test_pipeline_warning_not_warning_builtin() -> None: """Vérifie que PipelineWarning n'hérite pas de la classe Warning intégrée. :return: None :rtype: None """ assert not isinstance(PipelineWarning("msg"), Warning) def test_pipeline_warning_message_stored() -> None: """Vérifie que le message est stocké et accessible via str(exc). :return: None :rtype: None """ exc = PipelineWarning("msg") assert str(exc) == "msg" assert exc.args[0] == "msg" def test_pipeline_warning_step_default_none() -> None: """Vérifie que step est None par défaut. :return: None :rtype: None """ assert PipelineWarning("msg").step is None def test_pipeline_warning_step_set() -> None: """Vérifie que step peut être défini via le constructeur. :return: None :rtype: None """ assert PipelineWarning("msg", step="xmpp").step == "xmpp" def test_pipeline_warning_recoverable_true() -> None: """Vérifie que recoverable est toujours True pour PipelineWarning. :return: None :rtype: None """ assert PipelineWarning("msg").recoverable is True def test_pipeline_warning_is_raisable() -> None: """Vérifie que PipelineWarning peut être levée. :return: None :rtype: None """ with pytest.raises(PipelineWarning, match="msg"): raise PipelineWarning("msg") def test_pipeline_warning_caught_by_pronote_sync_error() -> None: """Vérifie qu'une PipelineWarning est attrapée par un except PronoteSyncError. :return: None :rtype: None """ try: raise PipelineWarning("msg") except PronoteSyncError: assert True else: raise AssertionError("PipelineWarning should have been caught by PronoteSyncError")