dosemu2/test/func_libi86_testsuite.py
geos_one 91736529d5
Some checks failed
Master / Scheduled (FULL) (push) Has been cancelled
Master / Triggered (push) Has been cancelled
Master / Triggered (ASAN) (push) Has been cancelled
Master / Triggered (FULL) (push) Has been cancelled
New upstream version 2.0pre9.2
2025-08-10 12:35:43 +02:00

76 lines
2.4 KiB
Python

import re
from shutil import copy
from subprocess import check_call, check_output, CalledProcessError, DEVNULL, TimeoutExpired
TESTSUITE = "/usr/ia16-elf/libexec/libi86/tests/testsuite"
def libi86_create_items(testcase):
# Enumerate the tests
tests = []
try:
listing = check_output([TESTSUITE, '--list'])
except FileNotFoundError:
print('libi86-testsuite-ia16-elf not installed - skipping those\n')
return
for l in listing.split(b'\n'):
# b' 12: bios.h.at:83 _bios_equiplist'
t = re.search(r"\s*(\d+): (.+):\d+\s+([^']+)", str(l))
if t:
tests += [t.groups(),]
def create_test(test):
def do_test_libi86(self):
libi86_test_item(self, test[0])
docstring = """libi86 item % 3s %s""" % (test[0], test[2])
setattr(do_test_libi86, '__doc__', docstring)
setattr(do_test_libi86, 'libi86test', True)
return do_test_libi86
# Insert each test into the testcase
for test in tests:
name = 'test_libi86_item_%03d' % int(test[0])
setattr(testcase, name, create_test(test))
testcase.attrs += ['libi86test',]
def libi86_test_item(self, test):
self.mkfile("dosemu.conf", """\
$_hdimage = "dXXXXs/c:hdtype1 +1"
$_floppy_a = ""
""", dname=self.imagedir, mode="a")
build = self.imagedir / "libi86-test"
build.mkdir()
dosemu = self.topdir / "bin" / "dosemu"
options = '-f {0}/dosemu.conf -n --Fimagedir {0} -o {1}'.format(self.imagedir, self.logfiles['log'][0])
args = [
'--x-installcheck',
'--x-test-underlying',
'--x-with-dosemu=%s' % dosemu,
'--x-with-dosemu-options=%s' % options,
]
# Do just one
try:
starttime = self.utcnow()
check_call([TESTSUITE, *args, test[0]], cwd=build, timeout=60, stdout=DEVNULL, stderr=DEVNULL)
self.duration = self.utcnow() - starttime
except CalledProcessError:
raise self.failureException("Test error") from None
except TimeoutExpired:
raise self.failureException("Test timeout") from None
finally:
# The libi86 test suite has its own log file called 'testsuite.log',
# so we will present it as our usual expect log
logfile = build / "tests" / "testsuite.log"
if logfile.is_file():
copy(logfile, self.logfiles['xpt'][0])
self.logfiles['xpt'][1] = "testsuite.log"