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