equal
deleted
inserted
replaced
541 def runTest(self): |
541 def runTest(self): |
542 """Run this test instance. |
542 """Run this test instance. |
543 |
543 |
544 This will return a tuple describing the result of the test. |
544 This will return a tuple describing the result of the test. |
545 """ |
545 """ |
546 replacements = self._getreplacements() |
|
547 env = self._getenv() |
546 env = self._getenv() |
548 self._daemonpids.append(env['DAEMON_PIDS']) |
547 self._daemonpids.append(env['DAEMON_PIDS']) |
549 self._createhgrc(env['HGRCPATH']) |
548 self._createhgrc(env['HGRCPATH']) |
550 |
549 |
551 vlog('# Test', self.name) |
550 vlog('# Test', self.name) |
552 |
551 |
553 ret, out = self._run(replacements, env) |
552 ret, out = self._run(env) |
554 self._finished = True |
553 self._finished = True |
555 self._ret = ret |
554 self._ret = ret |
556 self._out = out |
555 self._out = out |
557 |
556 |
558 def describe(ret): |
557 def describe(ret): |
621 f.write(line) |
620 f.write(line) |
622 f.close() |
621 f.close() |
623 |
622 |
624 vlog("# Ret was:", self._ret) |
623 vlog("# Ret was:", self._ret) |
625 |
624 |
626 def _run(self, replacements, env): |
625 def _run(self, env): |
627 # This should be implemented in child classes to run tests. |
626 # This should be implemented in child classes to run tests. |
628 raise SkipTest('unknown test type') |
627 raise SkipTest('unknown test type') |
629 |
628 |
630 def abort(self): |
629 def abort(self): |
631 """Terminate execution of this test.""" |
630 """Terminate execution of this test.""" |
720 def fail(self, msg): |
719 def fail(self, msg): |
721 # unittest differentiates between errored and failed. |
720 # unittest differentiates between errored and failed. |
722 # Failed is denoted by AssertionError (by default at least). |
721 # Failed is denoted by AssertionError (by default at least). |
723 raise AssertionError(msg) |
722 raise AssertionError(msg) |
724 |
723 |
725 def _runcommand(self, cmd, replacements, env, normalizenewlines=False): |
724 def _runcommand(self, cmd, env, normalizenewlines=False): |
726 """Run command in a sub-process, capturing the output (stdout and |
725 """Run command in a sub-process, capturing the output (stdout and |
727 stderr). |
726 stderr). |
728 |
727 |
729 Return a tuple (exitcode, output). output is None in debug mode. |
728 Return a tuple (exitcode, output). output is None in debug mode. |
730 """ |
729 """ |
761 ret = 'timeout' |
760 ret = 'timeout' |
762 |
761 |
763 if ret: |
762 if ret: |
764 killdaemons(env['DAEMON_PIDS']) |
763 killdaemons(env['DAEMON_PIDS']) |
765 |
764 |
766 for s, r in replacements: |
765 for s, r in self._getreplacements(): |
767 output = re.sub(s, r, output) |
766 output = re.sub(s, r, output) |
768 |
767 |
769 if normalizenewlines: |
768 if normalizenewlines: |
770 output = output.replace('\r\n', '\n') |
769 output = output.replace('\r\n', '\n') |
771 |
770 |
776 |
775 |
777 @property |
776 @property |
778 def refpath(self): |
777 def refpath(self): |
779 return os.path.join(self._testdir, '%s.out' % self.name) |
778 return os.path.join(self._testdir, '%s.out' % self.name) |
780 |
779 |
781 def _run(self, replacements, env): |
780 def _run(self, env): |
782 py3kswitch = self._py3kwarnings and ' -3' or '' |
781 py3kswitch = self._py3kwarnings and ' -3' or '' |
783 cmd = '%s%s "%s"' % (PYTHON, py3kswitch, self.path) |
782 cmd = '%s%s "%s"' % (PYTHON, py3kswitch, self.path) |
784 vlog("# Running", cmd) |
783 vlog("# Running", cmd) |
785 normalizenewlines = os.name == 'nt' |
784 normalizenewlines = os.name == 'nt' |
786 result = self._runcommand(cmd, replacements, env, |
785 result = self._runcommand(cmd, env, |
787 normalizenewlines=normalizenewlines) |
786 normalizenewlines=normalizenewlines) |
788 if self._aborted: |
787 if self._aborted: |
789 raise KeyboardInterrupt() |
788 raise KeyboardInterrupt() |
790 |
789 |
791 return result |
790 return result |
812 |
811 |
813 @property |
812 @property |
814 def refpath(self): |
813 def refpath(self): |
815 return os.path.join(self._testdir, self.name) |
814 return os.path.join(self._testdir, self.name) |
816 |
815 |
817 def _run(self, replacements, env): |
816 def _run(self, env): |
818 f = open(self.path, 'rb') |
817 f = open(self.path, 'rb') |
819 lines = f.readlines() |
818 lines = f.readlines() |
820 f.close() |
819 f.close() |
821 |
820 |
822 salt, script, after, expected = self._parsetest(lines) |
821 salt, script, after, expected = self._parsetest(lines) |
829 f.close() |
828 f.close() |
830 |
829 |
831 cmd = '%s "%s"' % (self._shell, fname) |
830 cmd = '%s "%s"' % (self._shell, fname) |
832 vlog("# Running", cmd) |
831 vlog("# Running", cmd) |
833 |
832 |
834 exitcode, output = self._runcommand(cmd, replacements, env) |
833 exitcode, output = self._runcommand(cmd, env) |
835 |
834 |
836 if self._aborted: |
835 if self._aborted: |
837 raise KeyboardInterrupt() |
836 raise KeyboardInterrupt() |
838 |
837 |
839 # Do not merge output if skipped. Return hghave message instead. |
838 # Do not merge output if skipped. Return hghave message instead. |