annotate contrib/python3-ratchet.py @ 43891:ac54b8a2ebea

crecord: rewrite help string to avoid mentioning "crecord" Despite its heritage, "crecord" is now mostly Mercurial-internal jargon. I find it better to call it "the curses hunk selector". Also slightly rewrote the part about which commands can use it. While I do believe that commit, shelve, and revert are the only commands in core that can use it, Evolve also adds at least amend and uncommit to the list.
author Jordi Gutiérrez Hermoso <jordigh@octave.org>
date Thu, 12 Dec 2019 11:37:30 -0500
parents 9f70512ae2cf
children 89a2afe31e82
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
32873
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
1 # Copyright 2012 Facebook
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
2 #
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
3 # This software may be used and distributed according to the terms of the
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
4 # GNU General Public License version 2 or any later version.
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
5 """Find tests that newly pass under Python 3.
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
6
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
7 The approach is simple: we maintain a whitelist of Python 3 passing
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
8 tests in the repository, and periodically run all the /other/ tests
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
9 and look for new passes. Any newly passing tests get automatically
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
10 added to the whitelist.
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
11
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
12 You probably want to run it like this:
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
13
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
14 $ cd tests
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
15 $ python3 ../contrib/python3-ratchet.py \
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
16 > --working-tests=../contrib/python3-whitelist
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
17 """
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
18 from __future__ import print_function
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
19 from __future__ import absolute_import
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
20
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
21 import argparse
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
22 import json
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
23 import os
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
24 import subprocess
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
25 import sys
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
26
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
27 _hgenv = dict(os.environ)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
28 _hgenv.update(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
29 {'HGPLAIN': '1',}
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
30 )
32873
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
31
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
32 _HG_FIRST_CHANGE = '9117c6561b0bd7792fa13b50d28239d51b78e51f'
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
33
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
34
32873
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
35 def _runhg(*args):
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
36 return subprocess.check_output(args, env=_hgenv)
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
37
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
38
32873
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
39 def _is_hg_repo(path):
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
40 return (
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
41 _runhg('hg', 'log', '-R', path, '-r0', '--template={node}').strip()
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
42 == _HG_FIRST_CHANGE
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
43 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
44
32873
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
45
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
46 def _py3default():
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
47 if sys.version_info[0] >= 3:
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
48 return sys.executable
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
49 return 'python3'
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
50
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
51
32873
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
52 def main(argv=()):
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
53 p = argparse.ArgumentParser()
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
54 p.add_argument(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
55 '--working-tests', help='List of tests that already work in Python 3.'
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
56 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
57 p.add_argument(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
58 '--commit-to-repo',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
59 help='If set, commit newly fixed tests to the given repo',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
60 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
61 p.add_argument(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
62 '-j',
43554
9f70512ae2cf cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
63 default=os.sysconf('SC_NPROCESSORS_ONLN'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
64 type=int,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
65 help='Number of parallel tests to run.',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
66 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
67 p.add_argument(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
68 '--python3',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
69 default=_py3default(),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
70 help='python3 interpreter to use for test run',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
71 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
72 p.add_argument(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
73 '--commit-user',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
74 default='python3-ratchet@mercurial-scm.org',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
75 help='Username to specify when committing to a repo.',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
76 )
32873
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
77 opts = p.parse_args(argv)
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
78 if opts.commit_to_repo:
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
79 if not _is_hg_repo(opts.commit_to_repo):
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
80 print('abort: specified repository is not the hg repository')
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
81 sys.exit(1)
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
82 if not opts.working_tests or not os.path.isfile(opts.working_tests):
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
83 print(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
84 'abort: --working-tests must exist and be a file (got %r)'
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
85 % opts.working_tests
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
86 )
32873
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
87 sys.exit(1)
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
88 elif opts.commit_to_repo:
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
89 root = _runhg('hg', 'root').strip()
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
90 if not opts.working_tests.startswith(root):
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
91 print(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
92 'abort: if --commit-to-repo is given, '
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
93 '--working-tests must be from that repo'
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
94 )
32873
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
95 sys.exit(1)
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
96 try:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
97 subprocess.check_call(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
98 [
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
99 opts.python3,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
100 '-c',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
101 'import sys ; '
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
102 'assert ((3, 5) <= sys.version_info < (3, 6) '
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
103 'or sys.version_info >= (3, 6, 2))',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
104 ]
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
105 )
32873
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
106 except subprocess.CalledProcessError:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
107 print(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
108 'warning: Python 3.6.0 and 3.6.1 have '
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
109 'a bug which breaks Mercurial'
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
110 )
32873
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
111 print('(see https://bugs.python.org/issue29714 for details)')
36618
3790610c2793 py3: bail on ratcheting tests forward on 3.6.0 and 3.6.1
Kevin Bullock <kbullock+mercurial@ringworld.org>
parents: 32873
diff changeset
112 sys.exit(1)
32873
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
113
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
114 rt = subprocess.Popen(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
115 [
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
116 opts.python3,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
117 'run-tests.py',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
118 '-j',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
119 str(opts.j),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
120 '--blacklist',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
121 opts.working_tests,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
122 '--json',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
123 ]
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
124 )
32873
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
125 rt.wait()
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
126 with open('report.json') as f:
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
127 data = f.read()
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
128 report = json.loads(data.split('=', 1)[1])
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
129 newpass = set()
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
130 for test, result in report.items():
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
131 if result['result'] != 'success':
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
132 continue
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
133 # A new passing test! Huzzah!
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
134 newpass.add(test)
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
135 if newpass:
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
136 # We already validated the repo, so we can just dive right in
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
137 # and commit.
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
138 if opts.commit_to_repo:
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
139 print(len(newpass), 'new passing tests on Python 3!')
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
140 with open(opts.working_tests) as f:
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
141 oldpass = {l for l in f.read().splitlines() if l}
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
142 with open(opts.working_tests, 'w') as f:
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
143 for p in sorted(oldpass | newpass):
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
144 f.write('%s\n' % p)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
145 _runhg(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
146 'hg',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
147 'commit',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
148 '-R',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
149 opts.commit_to_repo,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
150 '--user',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
151 opts.commit_user,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
152 '--message',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
153 'python3: expand list of passing tests',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
154 )
32873
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
155 else:
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
156 print('Newly passing tests:', '\n'.join(sorted(newpass)))
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
157 sys.exit(2)
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
158
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36618
diff changeset
159
32873
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
160 if __name__ == '__main__':
28f429d19a71 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com>
parents:
diff changeset
161 main(sys.argv[1:])