Esempio n. 1
0
    def run(self, queue=None):
        """Runs the test, assuming status is not already known."""
        if self.status is not None:
            # premature failure occurred (or dry run), just return
            return self

        if queue is not None:
            if MPI is not None and self.mpi and self.nprocs > 0:
                return self._run_mpi(queue)
            elif self.isolated:
                return self._run_isolated(queue)

        with TestContext(self):
            if self.tcase is None:
                mod, testcase, funcname, nprocs = self._get_test_info()
            else:
                mod, testcase, funcname, nprocs = (self.mod, self.tcase,
                                                   self.funcname, self.nprocs)

            mod_setup = mod_teardown = tcase_setup = tcase_teardown = None

            if self._mod_fixture_first:
                mod_setup = getattr(mod, 'setUpModule', None)
            if self._mod_fixture_last:
                mod_teardown = getattr(mod, 'tearDownModule', None)

            if testcase is not None:
                if self._tcase_fixture_first:
                    tcase_setup = getattr(testcase, 'setUpClass', None)
                if self._tcase_fixture_last:
                    tcase_teardown = getattr(testcase, 'tearDownClass', None)

                parent = testcase(methodName=funcname)
                # if we get here an nprocs > 0, we need
                # to set .comm in our TestCase instance.
                if nprocs > 0:
                    if MPI is not None and self.mpi:
                        parent.comm = MPI.COMM_WORLD
                    else:
                        parent.comm = FakeComm()

                setup = getattr(parent, 'setUp', None)
                teardown = getattr(parent, 'tearDown', None)
            else:
                parent = mod
                setup = teardown = None

            if self.nocapture:
                outstream = sys.stdout
            else:
                outstream = DevNull()
            errstream = cStringIO()

            done = False
            expected = expected2 = expected3 = False

            try:
                old_err = sys.stderr
                old_out = sys.stdout
                sys.stdout = outstream
                sys.stderr = errstream

                start_coverage()

                self.start_time = time.time()

                # if there's a module setup, run it
                if mod_setup:
                    status, expected = _try_call(mod_setup)
                    if status != 'OK':
                        done = True
                        mod_teardown = None  # don't do teardown if setup failed

                # handle @unittest.skip class decorator
                if not done and hasattr(
                        parent,
                        '__unittest_skip__') and parent.__unittest_skip__:
                    sys.stderr.write("%s\n" % parent.__unittest_skip_why__)
                    status = 'SKIP'
                    done = True
                    tcase_setup = None
                    tcase_teardown = None

                if tcase_setup:
                    status, expected = _try_call(tcase_setup)
                    if status != 'OK':
                        done = True
                        tcase_teardown = None

                # if there's a setUp method, run it
                if not done and setup:
                    status, expected = _try_call(setup)
                    if status != 'OK':
                        done = True

                if not done:
                    status, expected2 = _try_call(getattr(parent, funcname))

                if not done and teardown:
                    tdstatus, expected3 = _try_call(teardown)
                    if status == 'OK':
                        status = tdstatus

                if tcase_teardown:
                    _try_call(tcase_teardown)

                if mod_teardown:
                    _try_call(mod_teardown)

                self.end_time = time.time()
                self.status = status
                self.err_msg = errstream.getvalue()
                self.memory_usage = get_memory_usage()
                self.expected_fail = expected or expected2 or expected3

                if sys.platform == 'win32':
                    self.load1m, self.load5m, self.load15m = (0.0, 0.0, 0.0)
                else:
                    self.load1m, self.load5m, self.load15m = os.getloadavg()

            finally:
                stop_coverage()

                sys.stderr = old_err
                sys.stdout = old_out

        return self
Esempio n. 2
0
    def run(self, server=None, addr=None, authkey=None):
        """Runs the test, assuming status is not already known."""
        if self.status is not None:
            # premature failure occurred , just return
            return self

        if server is not None:
            if MPI is not None and self.mpi and self.nprocs > 0:
                return self._run_mpi(server, addr, authkey)
            elif self.isolated:
                return self._run_isolated(server, addr, authkey)

        # this is for test files without an __init__ file.  This MUST
        # be done before the call to _get_test_parent.
        sys.path.insert(0, os.path.dirname(self.spec.split(':',1)[0]))

        parent, method, _ = self._get_test_parent()

        if not isinstance(parent, ModuleType) and issubclass(parent, unittest.TestCase):
            parent = parent(methodName=method)

        if self.nocapture:
            outstream = sys.stdout
        else:
            outstream = DevNull()
        errstream = cStringIO()

        setup = getattr(parent, 'setUp', None)
        teardown = getattr(parent, 'tearDown', None)

        run_method = True
        run_td = True

        try:
            old_err = sys.stderr
            old_out = sys.stdout
            sys.stdout = outstream
            sys.stderr = errstream

            start_coverage()

            self.start_time = time.time()

            # if there's a setUp method, run it
            if setup:
                status = _try_call(setup)
                if status != 'OK':
                    run_method = False
                    run_td = False

            if run_method:
                status = _try_call(getattr(parent, method))

            if teardown and run_td:
                tdstatus = _try_call(teardown)
                if status == 'OK':
                    status = tdstatus

            self.end_time = time.time()
            self.status = status
            self.err_msg = errstream.getvalue()
            self.memory_usage = get_memory_usage()

        finally:
            sys.path = sys.path[1:]

            stop_coverage()

            sys.stderr = old_err
            sys.stdout = old_out

        return self
Esempio n. 3
0
    def run(self, queue=None):
        """Runs the test, assuming status is not already known."""
        if self.status is not None:
            # premature failure occurred (or dry run), just return
            return self

        if queue is not None:
            if MPI is not None and self.mpi and self.nprocs > 0:
                return self._run_mpi(queue)
            elif self.isolated:
                return self._run_isolated(queue)

        with TestContext(self):
            if self.tcase is None:
                mod, testcase, funcname, nprocs = self._get_test_info()
            else:
                mod, testcase, funcname, nprocs = (self.mod, self.tcase, self.funcname, self.nprocs)

            mod_setup = mod_teardown = tcase_setup = tcase_teardown = None

            if self._mod_fixture_first:
                mod_setup = getattr(mod, 'setUpModule', None)
            if self._mod_fixture_last:
                mod_teardown = getattr(mod, 'tearDownModule', None)

            if testcase is not None:
                if self._tcase_fixture_first:
                    tcase_setup = getattr(testcase, 'setUpClass', None)
                if self._tcase_fixture_last:
                    tcase_teardown = getattr(testcase, 'tearDownClass', None)

                parent = testcase(methodName=funcname)
                # if we get here an nprocs > 0, we need
                # to set .comm in our TestCase instance.
                if nprocs > 0:
                    if MPI is not None and self.mpi:
                        parent.comm = MPI.COMM_WORLD
                    else:
                        parent.comm = FakeComm()

                setup = getattr(parent, 'setUp', None)
                teardown = getattr(parent, 'tearDown', None)
            else:
                parent = mod
                setup = teardown = None

            if self.nocapture:
                outstream = sys.stdout
            else:
                outstream = DevNull()
            errstream = cStringIO()

            done = False
            expected = expected2 = expected3 = False

            try:
                old_err = sys.stderr
                old_out = sys.stdout
                sys.stdout = outstream
                sys.stderr = errstream

                start_coverage()

                self.start_time = time.time()

                # if there's a module setup, run it
                if mod_setup:
                    status, expected = _try_call(mod_setup)
                    if status != 'OK':
                        done = True
                        mod_teardown = None # don't do teardown if setup failed

                # handle @unittest.skip class decorator
                if not done and hasattr(parent, '__unittest_skip__') and parent.__unittest_skip__:
                    sys.stderr.write("%s\n" % parent.__unittest_skip_why__)
                    status = 'SKIP'
                    done = True
                    tcase_setup = None
                    tcase_teardown = None

                if tcase_setup:
                    status, expected = _try_call(tcase_setup)
                    if status != 'OK':
                        done = True
                        tcase_teardown = None

                # if there's a setUp method, run it
                if not done and setup:
                    status, expected = _try_call(setup)
                    if status != 'OK':
                        done = True

                if not done:
                    status, expected2 = _try_call(getattr(parent, funcname))

                if not done and teardown:
                    tdstatus, expected3 = _try_call(teardown)
                    if status == 'OK':
                        status = tdstatus

                if tcase_teardown:
                    _try_call(tcase_teardown)

                if mod_teardown:
                    _try_call(mod_teardown)

                self.end_time = time.time()
                self.status = status
                self.err_msg = errstream.getvalue()
                self.memory_usage = get_memory_usage()
                self.expected_fail = expected or expected2 or expected3

                if sys.platform == 'win32':
                    self.load1m, self.load5m, self.load15m = (0.0, 0.0, 0.0)
                else:
                    self.load1m, self.load5m, self.load15m = os.getloadavg()

            finally:
                stop_coverage()

                sys.stderr = old_err
                sys.stdout = old_out

        return self