mirror of
https://github.com/KhronosGroup/OpenCL-CTS.git
synced 2026-03-19 06:09:01 +00:00
The maintenance of the conformance tests is moving to Github. This commit contains all the changes that have been done in Gitlab since the first public release of the conformance tests. Signed-off-by: Kevin Petit <kevin.petit@arm.com>
105 lines
3.5 KiB
Python
Executable File
105 lines
3.5 KiB
Python
Executable File
#!/usr/bin/python
|
|
|
|
import sys, os, re
|
|
from subprocess import Popen, PIPE
|
|
from optparse import OptionParser
|
|
|
|
# trail_spaces: This method removes the trailing whitespaces and trailing tabs
|
|
def trail_spaces(line):
|
|
newline=line
|
|
carreturn = 0
|
|
if re.search("\r\n",line):
|
|
carreturn = 1
|
|
status = re.search("\s+$",line)
|
|
if status:
|
|
if carreturn:
|
|
newline = re.sub("\s+$","\r\n",line)
|
|
else:
|
|
newline = re.sub("\s+$","\n",line)
|
|
|
|
status = re.search("\t+$",newline)
|
|
if status:
|
|
newline = re.sub("\t+$","",newline)
|
|
return newline
|
|
|
|
#convert_tabs: This methos converts tabs to 4 spaces
|
|
def convert_tabs(line):
|
|
newline=line
|
|
status = re.search("\t",line)
|
|
if status:
|
|
newline = re.sub("\t"," ",line)
|
|
return newline
|
|
|
|
#convert_lineends: This method converts lineendings from DOS to Unix
|
|
def convert_lineends(line):
|
|
newline=line
|
|
status = re.search("\r\n",line)
|
|
if status:
|
|
newline = re.sub("\r\n","\n",line)
|
|
return newline
|
|
|
|
#processfile: This method processes each file passed to it depending
|
|
# on the flags passed
|
|
|
|
def processfile(file,tabs, lineends,trails,verbose):
|
|
processed_data = []
|
|
if verbose:
|
|
print "processing file: "+file
|
|
|
|
with open(file,'r') as fr:
|
|
data = fr.readlines()
|
|
for line in data:
|
|
if tabs:
|
|
line = convert_tabs(line)
|
|
if lineends:
|
|
line = convert_lineends(line)
|
|
if trails:
|
|
line = trail_spaces(line)
|
|
processed_data.append(line)
|
|
|
|
with open(file,'w') as fw:
|
|
fw.writelines(processed_data)
|
|
|
|
#findfiles: This method finds all the code files present in current
|
|
# directory and subdirectories.
|
|
|
|
def findfiles(tabs,lineends,trails,verbose):
|
|
testfiles = []
|
|
for root, dirs, files in os.walk("./"):
|
|
for file in files:
|
|
for extn in ('.c','.cpp','.h','.hpp'):
|
|
if file.endswith(extn):
|
|
testfiles.append(os.path.join(root, file))
|
|
for file in testfiles:
|
|
processfile(file,tabs,lineends,trails,verbose)
|
|
|
|
# Main function
|
|
|
|
def main():
|
|
|
|
parser = OptionParser()
|
|
parser.add_option("--notabs", dest="tabs", action="store_false", default=True, help="Disable converting tabs to 4 spaces.")
|
|
parser.add_option("--notrails", dest="trails", action="store_false", default=True, help="Disable removing trailing whitespaces and trailing tabs.")
|
|
parser.add_option("--nolineends", dest="lineends", action="store_false", default=True, help=" Disable converting line endings to Unix from DOS.")
|
|
parser.add_option("--verbose", dest="verbose", action="store_true", default=False, help="Prints out the files being processed.")
|
|
parser.add_option("--git", dest="SHA1", default="", help="Processes only the files present in the particular <SHA1> commit.")
|
|
parser.add_option('-o', action="store", default=True, help="Default: All the code files (.c,.cpp,.h,.hpp) in the current directory and subdirectories will be processed")
|
|
|
|
(options, args) = parser.parse_args()
|
|
|
|
if options.SHA1:
|
|
pl = Popen(["git","show", "--pretty=format:", "--name-only",options.SHA1], stdout=PIPE)
|
|
cmdout = pl.communicate()[0]
|
|
gitout=cmdout.split("\n")
|
|
for file in gitout:
|
|
print file
|
|
if file:
|
|
processfile(file,options.tabs,options.lineends,options.trails,options.verbose)
|
|
|
|
|
|
if not options.SHA1:
|
|
findfiles(options.tabs,options.lineends,options.trails,options.verbose)
|
|
|
|
# start the process by calling main
|
|
main()
|