diff --git a/aiida/engine/processes/exit_code.py b/aiida/engine/processes/exit_code.py index de660ed5dd..0c54a5be72 100644 --- a/aiida/engine/processes/exit_code.py +++ b/aiida/engine/processes/exit_code.py @@ -48,9 +48,6 @@ def format(self, **kwargs): return ExitCode(self.status, message, self.invalidates_cache) - def __eq__(self, other): - return all(getattr(self, attr) == getattr(other, attr) for attr in ['status', 'message', 'invalidates_cache']) - # Set the defaults for the `ExitCode` attributes ExitCode.__new__.__defaults__ = (0, None, False) diff --git a/tests/engine/processes/text_exit_code.py b/tests/engine/processes/text_exit_code.py index 2371d7fb2b..2672a11285 100644 --- a/tests/engine/processes/text_exit_code.py +++ b/tests/engine/processes/text_exit_code.py @@ -33,6 +33,18 @@ def test_exit_code_construct(): assert exit_code.invalidates_cache == invalidates_cache +def test_exit_code_serializability(): + """Test that an `ExitCode` instance can be serialized and deserialized with `yaml`.""" + import yaml + + exit_code = ExitCode() + serialized = yaml.dump(exit_code) + deserialized = yaml.full_load(serialized) + + assert deserialized == exit_code + assert isinstance(deserialized, ExitCode) + + def test_exit_code_equality(): """Test that the equality operator works properly.""" exit_code_origin = ExitCode(1, 'message', True) @@ -42,6 +54,24 @@ def test_exit_code_equality(): assert exit_code_origin == exit_code_clone assert exit_code_clone != exit_code_different + # Check default `ExitCode` also matches normal tuples + exit_code = ExitCode() + assert exit_code == (0, None, False) + + assert exit_code != {} + assert exit_code != [] + assert exit_code != () + assert exit_code != (0) + assert exit_code != (None,) + assert exit_code != (0, None) + assert exit_code != [0, None, False] + assert exit_code != [0, None, False, 'test'] + + # `ExitCode` instances should match bare tuples as long as the content is the same + exit_code = ExitCode(1, 'message', True) + assert exit_code == (1, 'message', True) + assert exit_code != () + def test_exit_code_template_message(): """Test that an exit code with a templated message can be called to replace the parameters."""