ekernel/test/test_build.py
Florian Schroegendorfer 28b33eaf1c
renamed test directory
2024-06-13 00:11:16 +02:00

83 lines
2.4 KiB
Python

import pathlib
import subprocess
import unittest
from ekernel import Kernel
from test import capture_stderr, Interceptor
import test.data.kernel as data
import ekernel
def run (*argv):
return ekernel.build(list(argv))
class Tests (unittest.TestCase):
def setUp (self):
# start interceptor
self.interceptor = Interceptor()
def run (tracer, *args, **kwargs):
if args[0][0] == "make" and args[0][1] == "-j":
self.kernel.bzImage.touch()
self.interceptor.add(subprocess.run, call=run)
self.interceptor.start()
# setup test environment
data.setup()
self.kernel = Kernel.latest()
self.kernel.config.touch()
self.jobs = "4"
def tearDown (self):
# stop interceptor
self.interceptor.stop()
def check_build (self):
self.assertEqual(pathlib.Path.cwd(), self.kernel.src)
trace_it = iter(self.interceptor.trace)
# make -j <jobs>
tracer, (args, kwargs) = next(trace_it)
self.assertEqual(tracer.name, "subprocess.run")
self.assertEqual(args, (["make", "-j", self.jobs, ">/dev/null"],))
self.assertEqual(kwargs, {"check": True})
self.assertTrue(self.kernel.bzImage.exists())
def test_build (self):
self.assertEqual(run("-q"), 0)
self.check_build()
def test_build_jobs (self):
self.jobs = "128"
self.assertEqual(run("-q", "-j", self.jobs), 0)
self.check_build()
@capture_stderr
def test_build_jobs_illegal (self):
with self.assertRaises(SystemExit):
run("-j", "foo")
def test_build_source (self):
self.kernel = Kernel.current()
self.kernel.config.touch()
self.assertEqual(run("-q", "-s", str(data.current)), 0)
self.check_build()
@capture_stderr
def test_build_source_missing (self):
with self.assertRaises(SystemExit):
run("-s", str(data.src / "linux-0.0.0-gentoo"))
def test_build_source_missing_config (self):
Kernel.latest().config.unlink()
with self.assertRaises(SystemExit):
run("-q", "-s", str(data.latest))
@capture_stderr
def test_build_source_illegal (self):
with self.assertRaises(SystemExit):
run("-s", str(data.tmp))
def test_build_jobs_source (self):
self.jobs = "128"
self.assertEqual(run("-q", "-j", self.jobs, "-s", str(data.latest)), 0)
self.check_build()