def test_test(self, Popen): handler = reactive.bus.ExternalHandler('filepath') Popen.return_value.communicate.return_value = ('output', None) Popen.return_value.returncode = 0 assert handler.test() Popen.return_value.returncode = 1 assert not handler.test() Popen.assert_called_with(['filepath', '--test'], stdout=reactive.bus.subprocess.PIPE, env='env') e = Popen.side_effect = OSError() e.errno = errno.ENOEXEC self.assertRaises(reactive.bus.BrokenHandlerException, handler.test) e.errno = errno.ENOENT self.assertRaises(OSError, handler.test)