res = {caseName : configs}
return res
+def cmpElements(a, b):
+ return ((a > b) - (a < b))
+
def compareConfigs(filename, baseConfigs, cmpConfigs):
messages = []
assert len(list(baseConfigs.keys())) == 1
baseKey = list(baseConfigs.keys())[0]
cmpKey = list(cmpConfigs.keys())[0]
- if cmp(baseConfigs[baseKey], cmpConfigs[cmpKey]) != 0:
+ if cmpElements(baseConfigs[baseKey], cmpConfigs[cmpKey]) != 0:
messages.append(error(filename, "Confomant configs reported for %s and %s do not match" % (baseKey,cmpKey)))
return messages
if process.returncode != 0:
raise Exception("Failed to execute '%s', got %d" % (str(args), process.returncode))
+ # Python 3 returns process output as bytes, while reading the log file gives a string.
+ if sys.version_info > (3, 0):
+ output = output.decode('utf-8', 'ignore')
return log == output
def verifyGitLogFile (package):
#-------------------------------------------------------------------------
import shlex
+import sys
import xml.dom.minidom
class StatusCode:
return "%s:%d: %s" % (self.filename, self.line, self.message)
def splitContainerLine (line):
- return shlex.split(line)
+ if sys.version_info > (3, 0):
+ # In Python 3, shlex works better with unicode.
+ return shlex.split(line)
+ else:
+ # In Python 2, shlex works better with bytes, so encode and decode again upon return.
+ return [w.decode('utf-8') for w in shlex.split(line.encode('utf-8'))]
def getNodeText (node):
rc = []
self.filename = filename
def parseLine (self, line):
- text = line.decode('utf-8')
+ # Some test shaders contain invalid characters.
+ text = line.decode('utf-8', 'ignore')
if len(text) > 0 and text[0] == '#':
return self.parseContainerLine(line)
elif self.curResultText != None:
def parseContainerLine (self, line):
isTestCaseResult = False
- text = line.decode('utf-8')
+ # Some test shaders contain invalid characters.
+ text = line.decode('utf-8', 'ignore')
args = splitContainerLine(text)
if args[0] == "#sessionInfo":
if len(args) < 3: