xref: /aosp_15_r20/external/pdfium/testing/tools/text_diff.py (revision 3ac0a46f773bac49fa9476ec2b1cf3f8da5ec3a4)
1*3ac0a46fSAndroid Build Coastguard Worker#!/usr/bin/env python3
2*3ac0a46fSAndroid Build Coastguard Worker# Copyright 2015 The PDFium Authors
3*3ac0a46fSAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be
4*3ac0a46fSAndroid Build Coastguard Worker# found in the LICENSE file.
5*3ac0a46fSAndroid Build Coastguard Worker
6*3ac0a46fSAndroid Build Coastguard Workerimport difflib
7*3ac0a46fSAndroid Build Coastguard Workerimport sys
8*3ac0a46fSAndroid Build Coastguard Worker
9*3ac0a46fSAndroid Build Coastguard Worker
10*3ac0a46fSAndroid Build Coastguard Workerdef main(argv):
11*3ac0a46fSAndroid Build Coastguard Worker  if len(argv) != 3:
12*3ac0a46fSAndroid Build Coastguard Worker    print('%s: invalid arguments' % argv[0])
13*3ac0a46fSAndroid Build Coastguard Worker    return 2
14*3ac0a46fSAndroid Build Coastguard Worker  filename1 = argv[1]
15*3ac0a46fSAndroid Build Coastguard Worker  filename2 = argv[2]
16*3ac0a46fSAndroid Build Coastguard Worker  try:
17*3ac0a46fSAndroid Build Coastguard Worker    with open(filename1, "r") as f1:
18*3ac0a46fSAndroid Build Coastguard Worker      str1 = f1.readlines()
19*3ac0a46fSAndroid Build Coastguard Worker    with open(filename2, "r") as f2:
20*3ac0a46fSAndroid Build Coastguard Worker      str2 = f2.readlines()
21*3ac0a46fSAndroid Build Coastguard Worker    diffs = difflib.unified_diff(
22*3ac0a46fSAndroid Build Coastguard Worker        str1, str2, fromfile=filename1, tofile=filename2)
23*3ac0a46fSAndroid Build Coastguard Worker  except Exception as e:
24*3ac0a46fSAndroid Build Coastguard Worker    print("something went astray: %s" % e)
25*3ac0a46fSAndroid Build Coastguard Worker    return 1
26*3ac0a46fSAndroid Build Coastguard Worker  status_code = 0
27*3ac0a46fSAndroid Build Coastguard Worker  for diff in diffs:
28*3ac0a46fSAndroid Build Coastguard Worker    sys.stdout.write(diff)
29*3ac0a46fSAndroid Build Coastguard Worker    status_code = 1
30*3ac0a46fSAndroid Build Coastguard Worker  return status_code
31*3ac0a46fSAndroid Build Coastguard Worker
32*3ac0a46fSAndroid Build Coastguard Worker
33*3ac0a46fSAndroid Build Coastguard Workerif __name__ == '__main__':
34*3ac0a46fSAndroid Build Coastguard Worker  sys.exit(main(sys.argv))
35