Page MenuHomePhabricator
Authored By
Ladsgroup
Jul 9 2019, 9:02 PM
Size
2 KB
Referenced Files
None
Subscribers
None
import os
import sys
import re
import subprocess
from subprocess import PIPE
def find_test_files(path):
files = []
for r, d, f in os.walk(path):
for file_name in f:
if file_name.endswith('Test.php'):
files.append(os.path.join(r, file_name))
return files
def check_file(path):
with open(path, 'r') as f:
content = f.read()
old_content = content
search_result = re.findall(r'(\nclass (\S+) extends \\?MediaWikiTestCase)', content)
if not search_result and 'PHPUnit\Framework\TestCase' not in content:
return
with open(path, 'w') as f:
new_content = content.replace('MediaWikiTestCase', 'MediaWikiUnitTestCase')
new_content = new_content.replace('PHPUnit\Framework\TestCase', 'MediaWikiUnitTestCase')
new_content = re.sub(r'\n\t*?use \\?(PHPUnit4And6Compat|MediaWikiCoversValidator)\;', '', new_content)
new_content = re.sub(r' extends (\\?)TestCase', r' extends \1MediaWikiUnitTestCase', new_content)
f.write(new_content)
res = subprocess.run(["composer", "phpunit:unit", path], stdout=PIPE, stderr=PIPE)
if res.returncode != 0:
try:
errors = re.findall(r'Tests\: (\d+)(?:.+), Assertions\: (?:\d+)(?:.+?), (.+\: \d+)', res.stdout.decode('utf-8'))
except:
errors = []
if errors:
errs = sum([int(i) for i in re.findall(r' (\d+)', errors[0][1])])
print(errors[0][0] + ',' + str(errs) +','+ path)
#print(res.stdout.decode('utf-8'))
print('It did not work :((')
with open(path, 'w') as f:
f.write(old_content)
else:
print('It worked, moving')
if len(sys.argv) > 2:
d = sys.argv[2]
else:
d = sys.argv[1]
new_path = path.split(d)[0] + d + '/unit/' + path.split(d)[1]
new_path = new_path.replace('//','/')
res = subprocess.run(["mkdir", "-p", '/'.join(new_path.split('/')[:-1])], stdout=PIPE, stderr=PIPE)
if res.returncode != 0:
print(res.stdout.decode('utf-8'))
sys.exit()
res = subprocess.run(["mv", path, new_path], stdout=PIPE, stderr=PIPE)
if res.returncode != 0:
print(res.stdout.decode('utf-8'))
sys.exit()
for f in find_test_files(sys.argv[1]):
check_file(f)

File Metadata

Mime Type
text/plain; charset=utf-8
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
7713987
Default Alt Text
raw.txt (2 KB)

Event Timeline