[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