'L{untilConcludes} calls the function passed to it until the function
does not raise either L{OSError} or L{IOError} with C{errno} of
C{EINTR}.  It otherwise completes with the same result as the function
passed to it.'

def test_uninterruptably(self):

    def f(a, b):
        self.calls += 1
        exc = self.exceptions.pop()
        if (exc is not None):
            raise exc(errno.EINTR, 'Interrupted    system    call!')
        return (a + b)
    self.exceptions = [None]
    self.calls = 0
    self.assertEqual(util.untilConcludes(f, 1, 2), 3)
    self.assertEqual(self.calls, 1)
    self.exceptions = [None, OSError, IOError]
    self.calls = 0
    self.assertEqual(util.untilConcludes(f, 2, 3), 5)
    self.assertEqual(self.calls, 3)
