--- a/contrib/python3-ratchet.py Sat Oct 05 10:29:34 2019 -0400
+++ b/contrib/python3-ratchet.py Sun Oct 06 09:45:02 2019 -0400
@@ -25,65 +25,103 @@
import sys
_hgenv = dict(os.environ)
-_hgenv.update({
- 'HGPLAIN': '1',
- })
+_hgenv.update(
+ {'HGPLAIN': '1',}
+)
_HG_FIRST_CHANGE = '9117c6561b0bd7792fa13b50d28239d51b78e51f'
+
def _runhg(*args):
return subprocess.check_output(args, env=_hgenv)
+
def _is_hg_repo(path):
- return _runhg('hg', 'log', '-R', path,
- '-r0', '--template={node}').strip() == _HG_FIRST_CHANGE
+ return (
+ _runhg('hg', 'log', '-R', path, '-r0', '--template={node}').strip()
+ == _HG_FIRST_CHANGE
+ )
+
def _py3default():
if sys.version_info[0] >= 3:
return sys.executable
return 'python3'
+
def main(argv=()):
p = argparse.ArgumentParser()
- p.add_argument('--working-tests',
- help='List of tests that already work in Python 3.')
- p.add_argument('--commit-to-repo',
- help='If set, commit newly fixed tests to the given repo')
- p.add_argument('-j', default=os.sysconf(r'SC_NPROCESSORS_ONLN'), type=int,
- help='Number of parallel tests to run.')
- p.add_argument('--python3', default=_py3default(),
- help='python3 interpreter to use for test run')
- p.add_argument('--commit-user',
- default='python3-ratchet@mercurial-scm.org',
- help='Username to specify when committing to a repo.')
+ p.add_argument(
+ '--working-tests', help='List of tests that already work in Python 3.'
+ )
+ p.add_argument(
+ '--commit-to-repo',
+ help='If set, commit newly fixed tests to the given repo',
+ )
+ p.add_argument(
+ '-j',
+ default=os.sysconf(r'SC_NPROCESSORS_ONLN'),
+ type=int,
+ help='Number of parallel tests to run.',
+ )
+ p.add_argument(
+ '--python3',
+ default=_py3default(),
+ help='python3 interpreter to use for test run',
+ )
+ p.add_argument(
+ '--commit-user',
+ default='python3-ratchet@mercurial-scm.org',
+ help='Username to specify when committing to a repo.',
+ )
opts = p.parse_args(argv)
if opts.commit_to_repo:
if not _is_hg_repo(opts.commit_to_repo):
print('abort: specified repository is not the hg repository')
sys.exit(1)
if not opts.working_tests or not os.path.isfile(opts.working_tests):
- print('abort: --working-tests must exist and be a file (got %r)' %
- opts.working_tests)
+ print(
+ 'abort: --working-tests must exist and be a file (got %r)'
+ % opts.working_tests
+ )
sys.exit(1)
elif opts.commit_to_repo:
root = _runhg('hg', 'root').strip()
if not opts.working_tests.startswith(root):
- print('abort: if --commit-to-repo is given, '
- '--working-tests must be from that repo')
+ print(
+ 'abort: if --commit-to-repo is given, '
+ '--working-tests must be from that repo'
+ )
sys.exit(1)
try:
- subprocess.check_call([opts.python3, '-c',
- 'import sys ; '
- 'assert ((3, 5) <= sys.version_info < (3, 6) '
- 'or sys.version_info >= (3, 6, 2))'])
+ subprocess.check_call(
+ [
+ opts.python3,
+ '-c',
+ 'import sys ; '
+ 'assert ((3, 5) <= sys.version_info < (3, 6) '
+ 'or sys.version_info >= (3, 6, 2))',
+ ]
+ )
except subprocess.CalledProcessError:
- print('warning: Python 3.6.0 and 3.6.1 have '
- 'a bug which breaks Mercurial')
+ print(
+ 'warning: Python 3.6.0 and 3.6.1 have '
+ 'a bug which breaks Mercurial'
+ )
print('(see https://bugs.python.org/issue29714 for details)')
sys.exit(1)
- rt = subprocess.Popen([opts.python3, 'run-tests.py', '-j', str(opts.j),
- '--blacklist', opts.working_tests, '--json'])
+ rt = subprocess.Popen(
+ [
+ opts.python3,
+ 'run-tests.py',
+ '-j',
+ str(opts.j),
+ '--blacklist',
+ opts.working_tests,
+ '--json',
+ ]
+ )
rt.wait()
with open('report.json') as f:
data = f.read()
@@ -104,12 +142,20 @@
with open(opts.working_tests, 'w') as f:
for p in sorted(oldpass | newpass):
f.write('%s\n' % p)
- _runhg('hg', 'commit', '-R', opts.commit_to_repo,
- '--user', opts.commit_user,
- '--message', 'python3: expand list of passing tests')
+ _runhg(
+ 'hg',
+ 'commit',
+ '-R',
+ opts.commit_to_repo,
+ '--user',
+ opts.commit_user,
+ '--message',
+ 'python3: expand list of passing tests',
+ )
else:
print('Newly passing tests:', '\n'.join(sorted(newpass)))
sys.exit(2)
+
if __name__ == '__main__':
main(sys.argv[1:])