Files
poky/meta/lib/patchtest/selftest/selftest
Trevor Gamblin 71bf3fcf0f patchtest/selftest: add XSKIP, update test files
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>
2023-10-25 23:10:19 +01:00

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)