From 07a65a3decc610b485e3eb7f36f8014f74d0f92a Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Wed, 19 Jul 2023 11:23:20 +0100 Subject: oeqa/selftest/rust: Various fixes to work correctly * Ensure the test/class naming doesn't allow the to be triggered without the toolchain decorator * Add the toolchain-user decorator so it runs on non-IA targets * Strip the leading "[XX] " prefix from the test names * Ensure skipped test counts are passed through correctly (as SKIPPED, not SKIP) * Avoid duplicate test results and show a warning if any are found (duplicates were from other sources in the end but the code remains sensible to have) (From OE-Core rev: b1718ce5b2b2db35a8e1c88087deee41f99094b4) Signed-off-by: Richard Purdie --- meta/lib/oeqa/selftest/cases/rust.py | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) (limited to 'meta/lib/oeqa/selftest/cases/rust.py') diff --git a/meta/lib/oeqa/selftest/cases/rust.py b/meta/lib/oeqa/selftest/cases/rust.py index 4fbe8f08fa..7a0fd7033d 100644 --- a/meta/lib/oeqa/selftest/cases/rust.py +++ b/meta/lib/oeqa/selftest/cases/rust.py @@ -8,23 +8,34 @@ from oeqa.utils.commands import runCmd, bitbake, get_bb_var, get_bb_vars, runqem from oeqa.utils.sshcontrol import SSHControl def parse_results(filename): - tests = [] + tests = {} with open(filename, "r") as f: lines = f.readlines() for line in lines: if "..." in line and "test [" in line: test = line.split("test ")[1].split(" ... ")[0] + if "] " in test: + test = test.split("] ", 1)[1] result = line.split(" ... ")[1].strip() if result == "ok": result = "PASS" elif result == "failed": result = "FAIL" elif "ignored" in result: - result = "SKIP" - tests.append((test, result)) + result = "SKIPPED" + if test in tests: + if tests[test] != result: + print("Duplicate and mismatching result %s for %s" % (result, test)) + else: + print("Duplicate result %s for %s" % (result, test)) + else: + tests[test] = result return tests # Total time taken for testing is of about 2hr 20min, with PARALLEL_MAKE set to 40 number of jobs. +@OETestTag("toolchain-system") +@OETestTag("toolchain-user") +@OETestTag("runqemu") class RustSelfTestSystemEmulated(OESelftestTestCase, OEPTestResultTestCase): def test_rust(self, *args, **kwargs): # build remote-test-server before image build @@ -75,11 +86,5 @@ class RustSelfTestSystemEmulated(OESelftestTestCase, OEPTestResultTestCase): self.ptest_section(ptestsuite, logfile = builddir + "/summary.txt") filename = builddir + "/summary.txt" test_results = parse_results(filename) - for test, result in test_results: - self.ptest_result(ptestsuite, test, result) - -@OETestTag("toolchain-system") -@OETestTag("runqemu") -class RustSelfTestBase(RustSelfTestSystemEmulated): - def test_check(self): - self.test_rust() + for test in test_results: + self.ptest_result(ptestsuite, test, test_results[test]) -- cgit v1.2.3-54-g00ecf