[PATCH V2 stable] run-tests: fixes the '--interactive' option error
Pierre-Yves David
pierre-yves.david at ens-lyon.org
Thu Jun 12 17:39:01 CDT 2014
On 06/12/2014 01:45 AM, Anurag Goel wrote:
> # HG changeset patch
> # User anuraggoel <anurag.dsps at gmail.com>
> # Date 1402562430 -19800
> # Thu Jun 12 14:10:30 2014 +0530
> # Node ID 1affd22f1dc03beb4f26544c142d1c8e4aa9feed
> # Parent 3308ec584ade85bf7ddb3026c747aee912593038
> run-tests: fixes the '--interactive' option error
This, patches is still doing two different things. please split it.
> This patch fixes a regression recently introduced by a refactoring.
>
> Previously when failure occurs while testing with '--interactive' was enable,
> it didn't prompt user by asking whether he wants to accept this failure changes
> or not.
>
> This was happening beacuse of the 'if' condition
> if ret or not self._options.interactive or \
> not os.path.exists(test.errpath):
>
> Everytime failure occurs, this condition gets true and returns back even
> when '--interactive' is enabled. This condition don't led the function to
> execute further, which consist the '--interactive' functionality.
>
> Now, on failure with '--interactive' enabled, it prompts user whether he wants
> to accepts failure changes or not.
> If yes then test gets passed, else test gets failed.
>
> On every failure, results gets stored in "self.failures.append((test, reason))"
> But if failure changes accepted by user then test must get "pop out" from failed
> test list.
>
> diff -r 3308ec584ade -r 1affd22f1dc0 tests/run-tests.py
> --- a/tests/run-tests.py Thu Jun 12 03:20:28 2014 +0530
> +++ b/tests/run-tests.py Thu Jun 12 14:10:30 2014 +0530
> @@ -466,7 +466,8 @@
> # the stack trace. This is for historical reasons and
> # this decision could be revisted in the future,
> # especially for PythonTest instances.
> - result.addFailure(self, str(e))
> + if result.addFailure(self, str(e)):
> + success = True
> except Exception:
> result.addError(self, sys.exc_info())
> else:
> @@ -1078,6 +1079,20 @@
> else:
> if not self._options.nodiff:
> self.stream.write('\nERROR: %s output changed\n' % test)
> +
> + if self._options.interactive:
> + iolock.acquire()
> + self.stream.write('Accept this change? [n] ')
> + answer = sys.stdin.readline().strip()
> + iolock.release()
> + if answer.lower() in ('y', 'yes'):
> + if test.name.endswith('.t'):
> + rename(test.errpath, test.path)
> + else:
> + rename(test.errpath, '%s.out' % test.path)
> + self.failures.pop()
> + return 1
> +
> self.stream.write('!')
>
> def addError(self, *args, **kwargs):
> @@ -1137,20 +1152,6 @@
> self.stream.write(line)
> self.stream.flush()
>
> - if ret or not self._options.interactive or \
> - not os.path.exists(test.errpath):
> - return
> -
> - iolock.acquire()
> - print 'Accept this change? [n] ',
> - answer = sys.stdin.readline().strip()
> - iolock.release()
> - if answer.lower() in ('y', 'yes'):
> - if test.name.endswith('.t'):
> - rename(test.errpath, test.path)
> - else:
> - rename(test.errpath, '%s.out' % test.path)
> -
> def startTest(self, test):
> super(TestResult, self).startTest(test)
>
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> http://selenic.com/mailman/listinfo/mercurial-devel
>
--
Pierre-Yves David
More information about the Mercurial-devel
mailing list