mirror of
https://git.yoctoproject.org/poky
synced 2026-04-27 12:32:13 +02:00
Since we are skipping the merge test, two of the selftests now report SKIP instead of XPASS/XFAIL as expected. Adjust the two files to have the right endings for XSKIP, and add the category so that it can be used for more extensive testing in the future. (From OE-Core rev: 3331f53c0be2575784a042bb2401eeba4f2a5a3e) Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
95 lines
3.9 KiB
Python
Executable File
95 lines
3.9 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
# Test every patch from files folder and output error on failure
|
|
#
|
|
# Copyright (C) 2016 Intel Corporation
|
|
#
|
|
# SPDX-License-Identifier: GPL-2.0-only
|
|
|
|
import os
|
|
import subprocess
|
|
import sys
|
|
|
|
currentdir = os.path.dirname(os.path.abspath(__file__))
|
|
patchesdir = os.path.join(currentdir, 'files')
|
|
topdir = os.path.dirname(currentdir)
|
|
parentdir = os.path.dirname(topdir)
|
|
|
|
# path to the repo root
|
|
repodir = os.path.dirname(os.path.dirname(parentdir))
|
|
|
|
def print_results(passcount, failcount, skipcount, xpasscount, xfailcount, xskipcount, errorcount):
|
|
total = passcount + skipcount + failcount + xpasscount + xfailcount + xskipcount + errorcount
|
|
print("============================================================================")
|
|
print("Testsuite summary for %s" % os.path.basename(topdir))
|
|
print("============================================================================")
|
|
print("# TOTAL: %s" % str(total))
|
|
print("# XPASS: %s" % str(xpasscount))
|
|
print("# XFAIL: %s" % str(xfailcount))
|
|
print("# XSKIP: %s" % str(xskipcount))
|
|
print("# PASS: %s" % str(passcount))
|
|
print("# FAIL: %s" % str(failcount))
|
|
print("# SKIP: %s" % str(skipcount))
|
|
print("# ERROR: %s" % str(errorcount))
|
|
print("============================================================================")
|
|
|
|
# Once the tests are in oe-core, we can remove the testdir param and use os.path.dirname to get relative paths
|
|
def test(root, patch):
|
|
res = True
|
|
patchpath = os.path.abspath(os.path.join(root, patch))
|
|
|
|
cmd = 'patchtest --repodir %s --testdir %s/tests --patch %s' % (repodir, topdir, patchpath)
|
|
results = subprocess.check_output(cmd, stderr=subprocess.STDOUT, universal_newlines=True, shell=True)
|
|
|
|
return results
|
|
|
|
if __name__ == '__main__':
|
|
passcount = 0
|
|
failcount = 0
|
|
skipcount = 0
|
|
xpasscount = 0
|
|
xfailcount = 0
|
|
xskipcount = 0
|
|
errorcount = 0
|
|
|
|
results = None
|
|
|
|
for root, dirs, patches in os.walk(patchesdir):
|
|
for patch in patches:
|
|
results = test(root, patch)
|
|
|
|
a = patch.split('.')
|
|
klass, testname = a[0], a[1]
|
|
expected_result = a[-1]
|
|
testid = ".%s.%s" % (klass,testname)
|
|
|
|
for resultline in results.splitlines():
|
|
if testid in resultline:
|
|
result, _ = resultline.split(':', 1)
|
|
|
|
if expected_result.upper() == "FAIL" and result.upper() == "FAIL":
|
|
xfailcount = xfailcount + 1
|
|
print("XFAIL: %s (file: %s)" % (testid.strip("."), os.path.basename(patch)))
|
|
elif expected_result.upper() == "PASS" and result.upper() == "PASS":
|
|
xpasscount = xpasscount + 1
|
|
print("XPASS: %s (file: %s)" % (testid.strip("."), os.path.basename(patch)))
|
|
elif expected_result.upper() == "SKIP" and result.upper() == "SKIP":
|
|
xskipcount = xskipcount + 1
|
|
print("XSKIP: %s (file: %s)" % (testid.strip("."), os.path.basename(patch)))
|
|
else:
|
|
print("%s: %s (%s)" % (result.upper(), testid.strip("."), os.path.basename(patch)))
|
|
if result.upper() == "PASS":
|
|
passcount = passcount + 1
|
|
elif result.upper() == "FAIL":
|
|
failcount = failcount + 1
|
|
elif result.upper() == "SKIP":
|
|
skipcount = skipcount + 1
|
|
else:
|
|
print("Bad result on test %s against %s" % (testid.strip("."), os.path.basename(patch)))
|
|
errorcount = errorcount + 1
|
|
break
|
|
else:
|
|
print ("No test for=%s" % patch)
|
|
|
|
print_results(passcount, failcount, skipcount, xpasscount, xfailcount, xskipcount, errorcount)
|