migrate ext_icu_collator to use inout parameters instead of references
[hiphop-php.git] / hphp / test / fix_expectf.py
blob2e9dfbfa2ad38e345079916c6f4beb16232a218c
1 #!/usr/bin/env python3
2 import glob
3 import re
4 import os
5 import sys
6 f=glob.iglob(sys.argv[1] + '/**/*.php.diff', recursive=True)
7 vec = []
8 for tmp in f:
9 name = tmp[:len(tmp) - 5]
10 if os.path.isfile(name + '.expectf'):
11 vec.append(name)
12 try:
13 for ll in vec:
14 l2 = ll.strip('\n')
15 with open(l2 + '.diff') as f:
16 add = 0
17 vecAdd = []
18 sub = 0
19 vecSub = []
20 stringVec = []
21 lineNumber = []
22 oldNumber = []
23 for line in f:
24 if re.match('(\d+)\+.*', line):
25 add += 1
26 vecAdd.append(line)
27 if re.match('(\d+)\-.*', line):
28 sub += 1
29 vecSub.append(line)
30 if add == sub:
31 flag = True
32 for i in range(add):
33 if flag is False:
34 break
35 p1 = '(\d+)\+\s(.*line\s)(\d+)'
36 p2 = '(\d+)\-\s(.*line\s)(\d+)'
37 s1 = vecAdd[i]
38 s2 = vecSub[i].replace('[^\r\n]', '[^\\r\\n]')
39 res1 = re.match(p1, s1)
40 res2 = re.match(p2, s2)
41 if res1 is None or res2 is None:
42 flag = False
43 break
44 elif re.match(res2.group(2), res1.group(2)) is None:
45 flag = False
46 break
47 else:
48 stringVec.append(res2.group(2).replace('[^\\r\\n]', '[^\r\n]'))
49 lineNumber.append(res1.group(3))
50 oldNumber.append(res2.group(3))
51 if flag is True:
52 change = ''
53 used = {}
54 for i in range(add):
55 used[i] = False
56 with open(l2 + '.expectf') as text:
57 for l in text:
58 tmp = l
59 for i in range(add):
60 if re.match(stringVec[i], l) and used[i] is False:
61 tmp = l.replace('line ' + oldNumber[i], 'line ' + lineNumber[i])
62 used[i] = True
63 break
64 change += tmp
66 f = open(l2 + '.expectf', 'w')
67 f.write(change)
68 f.close()
69 except Exception:
70 pass