mirror of
https://git.yoctoproject.org/poky
synced 2026-06-10 16:53:49 +02:00
(Bitbake rev: a4daa14312d659333984aa1ae58ddfe0c96392f1) Signed-off-by: Anders Heimer <anders.heimer@est.tech> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> (cherry picked from commit f9b817d8017e5d5a1d22b9aa10a3c974bc7fa33d) Signed-off-by: Yoann Congal <yoann.congal@smile.fr> Signed-off-by: Paul Barker <paul@pbarker.dev>
77 lines
2.3 KiB
Python
77 lines
2.3 KiB
Python
#
|
|
# BitBake Test for lib/bb/siggen.py
|
|
#
|
|
# Copyright (C) 2020 Jean-François Dagenais
|
|
#
|
|
# SPDX-License-Identifier: GPL-2.0-only
|
|
#
|
|
|
|
import unittest
|
|
import logging
|
|
import bb
|
|
import bb.data
|
|
import time
|
|
from contextlib import contextmanager
|
|
|
|
logger = logging.getLogger('BitBake.TestSiggen')
|
|
|
|
import bb.siggen
|
|
|
|
class SiggenTest(unittest.TestCase):
|
|
|
|
def test_build_pnid(self):
|
|
tests = {
|
|
('', 'helloworld', 'do_sometask') : 'helloworld:do_sometask',
|
|
('XX', 'helloworld', 'do_sometask') : 'mc:XX:helloworld:do_sometask',
|
|
}
|
|
|
|
for t in tests:
|
|
self.assertEqual(bb.siggen.build_pnid(*t), tests[t])
|
|
|
|
def test_get_unihashes_rejects_invalid_hashserv_unihash(self):
|
|
class TestClient:
|
|
def get_unihash_batch(self, query):
|
|
list(query)
|
|
return ["${@os.system('true')}"]
|
|
|
|
class TestSiggen(bb.siggen.SignatureGeneratorUniHashMixIn):
|
|
def __init__(self):
|
|
self.server = "test-server"
|
|
self.method = "test-method"
|
|
self.extramethod = {}
|
|
self.taskhash = {"test.bb:do_compile": "a" * 64}
|
|
self.unihash = {}
|
|
self.unitaskhashes = {}
|
|
self.tidtopn = {}
|
|
self.setscenetasks = set()
|
|
self.max_parallel = 1
|
|
|
|
@contextmanager
|
|
def client(self):
|
|
yield TestClient()
|
|
|
|
siggen = TestSiggen()
|
|
|
|
with self.assertRaises(bb.BBHandledException):
|
|
siggen.get_unihashes(["test.bb:do_compile"])
|
|
|
|
self.assertEqual(siggen.unihash, {})
|
|
self.assertEqual(siggen.unitaskhashes, {})
|
|
|
|
def test_report_unihash_reads_bb_unihash_without_expansion(self):
|
|
class TestSiggen(bb.siggen.SignatureGeneratorUniHashMixIn):
|
|
def __init__(self):
|
|
self.setscenetasks = set()
|
|
self.taskhash = {"test.bb:do_compile": "b" * 64}
|
|
|
|
d = bb.data.init()
|
|
d.setVar("BB_TASKHASH", "a" * 64)
|
|
d.setVar("BB_UNIHASH", "${@d.setVar('EXPANDED_UNIHASH', '1') or 'bad'}")
|
|
d.setVar("SSTATE_HASHEQUIV_REPORT_TASKDATA", "0")
|
|
d.setVar("T", "/tmp")
|
|
d.setVar("BB_FILENAME", "test.bb")
|
|
|
|
TestSiggen().report_unihash(".", "compile", d)
|
|
|
|
self.assertIsNone(d.getVar("EXPANDED_UNIHASH"))
|