'Run \'case\' with a temporary result.
:param testtools.TestCase case: The test to run.
:return: a tuple of ``(successful, result, details)``, where
``successful`` is a boolean indicating whether the test was
succcessful, ``result`` is a _ResultType indicating what the test
result was and ``details`` is a dictionary of testtools details.'

def _attempt_test(self, case):

    tmp_result = testtools.TestResult()
    case._reset()
    self._run_test(case, tmp_result)
    result_type = _get_result_type(tmp_result)
    details = pmap(case.getDetails())
    if (result_type == _ResultType.skip):
        [reason] = list(tmp_result.skip_reasons.keys())
        details = details.discard('traceback').set('reason', text_content(reason))
    return (tmp_result.wasSuccessful(), result_type, details)
