1
0
mirror of https://git.yoctoproject.org/meta-arm synced 2026-05-08 05:09:56 +00:00

arm/oeqa: Add selftests for FVP library

Create basic tests for conffile and runner in meta-arm/lib/fvp

Issue-Id: SCM-4957
Signed-off-by: Peter Hoyes <Peter.Hoyes@arm.com>
Change-Id: I1684b0c99fb4fd5299df19f00abb30e8faab3495
Signed-off-by: Jon Mason <jon.mason@arm.com>
This commit is contained in:
Peter Hoyes
2022-07-12 11:28:26 +01:00
committed by Jon Mason
parent 306639bbd5
commit 5ec49f964b
@@ -1,6 +1,9 @@
import asyncio
import os
import pathlib
import subprocess
import tempfile
import unittest.mock
from oeqa.selftest.case import OESelftestTestCase
@@ -49,3 +52,58 @@ class RunFVPTests(OESelftestTestCase):
def test_fvp_options(self):
# test-parameter sets one argument, add another manually
self.run_fvp(testdir / "test-parameter.json", "--", "--parameter", "board.dog=woof")
class ConfFileTests(OESelftestTestCase):
def test_no_exe(self):
from fvp import conffile
with tempfile.NamedTemporaryFile('w') as tf:
tf.write('{}')
tf.flush()
with self.assertRaises(ValueError):
conffile.load(tf.name)
def test_minimal(self):
from fvp import conffile
with tempfile.NamedTemporaryFile('w') as tf:
tf.write('{"exe": "FVP_Binary"}')
tf.flush()
conf = conffile.load(tf.name)
self.assertTrue('fvp-bindir' in conf)
self.assertTrue('fvp-bindir' in conf)
self.assertTrue("exe" in conf)
self.assertTrue("parameters" in conf)
self.assertTrue("data" in conf)
self.assertTrue("applications" in conf)
self.assertTrue("terminals" in conf)
self.assertTrue("args" in conf)
self.assertTrue("console" in conf)
class RunnerTests(OESelftestTestCase):
def create_mock(self):
return unittest.mock.patch("asyncio.create_subprocess_exec")
def test_start(self):
from fvp import runner
with self.create_mock() as m:
fvp = runner.FVPRunner(self.logger)
asyncio.run(fvp.start({
"fvp-bindir": "/usr/bin",
"exe": "FVP_Binary",
"parameters": {'foo': 'bar'},
"data": ['data1'],
"applications": {'a1': 'file'},
"terminals": {},
"args": ['--extra-arg'],
}))
m.assert_called_once_with('/usr/bin/FVP_Binary',
'--parameter', 'foo=bar',
'--data', 'data1',
'--application', 'a1=file',
'--extra-arg',
stdin=unittest.mock.ANY,
stdout=unittest.mock.ANY,
stderr=unittest.mock.ANY)