diff --git a/podman/domain/containers.py b/podman/domain/containers.py index d4642f72..9ae44544 100644 --- a/podman/domain/containers.py +++ b/podman/domain/containers.py @@ -58,7 +58,11 @@ def status(self): """Literal["created", "initialized", "running", "stopped", "exited", "unknown"]: Returns status of container.""" with suppress(KeyError): - return self.attrs["State"]["Status"] + state = self.attrs["State"] + if isinstance(state, dict): + return state.get("Status", "unknown") + if isinstance(state, str): + return state or "unknown" return "unknown" @property diff --git a/podman/tests/unit/test_container.py b/podman/tests/unit/test_container.py index 49e5a272..3c9b5699 100644 --- a/podman/tests/unit/test_container.py +++ b/podman/tests/unit/test_container.py @@ -533,6 +533,19 @@ def test_exec_run_socket(self): {"Detach": False, "Tty": True}, ) + def test_status(self): + c_inspect = Container(attrs={"State": {"Status": "running"}}, client=self.client.api) + self.assertEqual(c_inspect.status, "running") + + c_list = Container(attrs={"State": "created"}, client=self.client.api) + self.assertEqual(c_list.status, "created") + + c_empty = Container(attrs={}, client=self.client.api) + self.assertEqual(c_empty.status, "unknown") + + c_none = Container(attrs={"State": None}, client=self.client.api) + self.assertEqual(c_none.status, "unknown") + if __name__ == '__main__': unittest.main()