"""Tests that a timeout is detected by the testbot."""
from __future__ import print_function

import atexit
import time

from lldbsuite.test import decorators
import rerun_base


class RerunTimeoutTestCase(rerun_base.RerunBaseTestCase):
    def maybe_do_timeout(self):
        # Do the timeout here if we're going to time out.
        if self.should_generate_issue():
            # We time out this time.
            while True:
                try:
                    time.sleep(1)
                except:
                    print("ignoring exception during sleep")

        # call parent
        super(RerunTimeoutTestCase, self).tearDown()

    @decorators.no_debug_info_test
    def test_timeout_file_level_timeout_rerun_succeeds(self):
        """Tests that file-level timeout is cleared on rerun."""

        # This test just needs to pass.  It is the exit hook (outside
        # the test method) that will time out.

        # Add the exit handler that will time out the first time around.
        atexit.register(RerunTimeoutTestCase.maybe_do_timeout, self)
