Skip to content

Commit 5ea72f4

Browse files
authored
triage_version.py: added --diff to print unified diff of output (#7879)
1 parent da58a61 commit 5ea72f4

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

tools/triage_py/triage_version.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import sys
55
import argparse
66
import time
7+
import difflib
78

89
from packaging.version import Version
910

@@ -21,6 +22,7 @@
2122
parser.add_argument('--no-quiet', action='store_true', default=False, help='do not specify -q')
2223
parser.add_argument('--perf', action='store_true', default=False, help='output duration of execution in seconds (CSV format)')
2324
parser.add_argument('--start', default=None, help='specify the start version/commit')
25+
parser.add_argument('--diff', action='store_true', help='show differences as unified diff')
2426
package_group = parser.add_mutually_exclusive_group()
2527
package_group.add_argument('--no-stderr', action='store_true', default=False, help='do not display stdout')
2628
package_group.add_argument('--no-stdout', action='store_true', default=False, help='do not display stderr')
@@ -110,8 +112,10 @@ def sort_commit_hashes(commits):
110112
if verbose:
111113
print("analyzing '{}'".format(input_file))
112114

115+
last_udiff_version = ''
113116
last_ec = None
114117
last_out = None
118+
last_udiff = None
115119

116120
if args.perf:
117121
print('version,time')
@@ -247,6 +251,7 @@ def sort_commit_hashes(commits):
247251
continue
248252

249253
do_print = False
254+
udiff = None
250255

251256
if last_ec != ec:
252257
if verbose:
@@ -257,10 +262,16 @@ def sort_commit_hashes(commits):
257262
if verbose:
258263
print("{}: output changed".format(version))
259264
do_print = True
265+
if args.diff:
266+
udiff = difflib.unified_diff(last_out.splitlines(True), out.splitlines(True), fromfile=last_udiff_version, tofile=version)
267+
last_udiff_version = version
260268

261269
if do_print:
262270
print(last_ec)
263271
print(last_out)
272+
if last_udiff:
273+
sys.stdout.writelines(last_udiff)
274+
sys.stdout.write('\n')
264275

265276
# do not print intermediate versions with --compact
266277
if not args.compact or do_print:
@@ -271,10 +282,15 @@ def sort_commit_hashes(commits):
271282

272283
last_ec = ec
273284
last_out = out
285+
if udiff:
286+
last_udiff = udiff
274287

275288
if do_compare:
276289
print(last_ec)
277290
print(last_out)
291+
if last_udiff:
292+
sys.stdout.writelines(last_udiff)
293+
sys.stdout.write('\n')
278294

279295
if verbose:
280296
print('done')

0 commit comments

Comments
 (0)