diff --git a/tests/add_test.py b/tests/add_test.py index f6e3e68..a7492d6 100755 --- a/tests/add_test.py +++ b/tests/add_test.py @@ -4,57 +4,56 @@ import os, sys, re args = sys.argv -if not len(args) in (3, 4): - print "Usage: add_test.py [tests stash file]" - print "If the last is not specified, `tests_stash.txt' is assumed" +if len(args) != 3: + print "Usage: create_test.py " + print "The .test file is written to stdout." sys.exit(1) -rawdata = [] -for line in open(args[1], "rt").readlines(): - lookfor = ["basic_cpuid", "ext_cpuid", "intel_fn4", "intel_fn11"] - good = False - for match in lookfor: - if line.find(match) != -1: - good = True - break - if good: - rawdata.append(line.strip()) +def readRawFile(): + rawdata = [] + for line in open(args[1], "rt").readlines(): + lookfor = ["basic_cpuid", "ext_cpuid", "intel_fn4", "intel_fn11"] + good = False + for match in lookfor: + if line.find(match) != -1: + good = True + break + if good: + rawdata.append(line.strip()) + return rawdata -repdata = [] -rexp = re.compile('(-?[0-9]+).*') -for line in open(args[2], "rt").readlines(): - s = line.strip() - if s.find(":") == -1: - continue - numeric = ["family", "model", "stepping", "ext_family", "ext_model", - "num_cores", "num_logical", "L1 D cache", "L1 I cache", - "L2 cache", "L3 cache", "L1D assoc.", "L2 assoc.", - "L3 assoc.", "L1D line sz", "L2 line sz", "L3 line sz"] - field = s[:s.find(":")].strip() - if field in numeric: - value = s[s.find(":")+1:].strip() - if not rexp.match(value): - raise "Bad format of value: [%s]" % s - repdata.append(rexp.findall(value)[0]) - if field == "code name": - value = s[s.find("`") + 1: s.find("'")] - repdata.append(value) - if field == "features": - value = s[s.find(":") + 2:] - repdata.append(value) - if field == "SSE units": - value = s[s.find(":") + 2:] - # the value here is something like "XX bits (authoritative)". We remove the "bits" part: - i = value.find("bits") - if i != -1: - value = value[:i] + value[i + 5:] - repdata.append(value) +def readResultFile(): + repdata = [] + rexp = re.compile('(-?[0-9]+).*') + for line in open(args[2], "rt").readlines(): + s = line.strip() + if s.find(":") == -1: + continue + numeric = ["family", "model", "stepping", "ext_family", "ext_model", + "num_cores", "num_logical", "L1 D cache", "L1 I cache", + "L2 cache", "L3 cache", "L1D assoc.", "L2 assoc.", + "L3 assoc.", "L1D line sz", "L2 line sz", "L3 line sz"] + field = s[:s.find(":")].strip() + if field in numeric: + value = s[s.find(":")+1:].strip() + if not rexp.match(value): + raise "Bad format of value: [%s]" % s + repdata.append(rexp.findall(value)[0]) + if field == "code name": + value = s[s.find("`") + 1: s.find("'")] + repdata.append(value) + if field == "features": + value = s[s.find(":") + 2:] + repdata.append(value) + if field == "SSE units": + value = s[s.find(":") + 2:] + # the value here is something like "XX bits (authoritative)". We remove the "bits" part: + i = value.find("bits") + if i != -1: + value = value[:i] + value[i + 5:] + repdata.append(value) + return repdata -stash = "tests_stash.txt" -if len(args) == 4: - stash = args[3] -fout = open(stash, "at") delimiter = "-" * 80 -lines = rawdata + [delimiter] + repdata + [delimiter] -fout.writelines(map(lambda s: s + "\n", lines)) -fout.close() +lines = readRawFile() + [delimiter] + readResultFile() +sys.stdout.writelines(map(lambda s: s + "\n", lines))