Files
openwrt_yocto/poky/bitbake/lib/bb/tests/siggen.py
T
francis.wang 4c86c082a2 Initial commit: OpenWrt-Yocto monorepo
Combine poky (Yocto scarthgap), meta-openembedded (scarthgap), and
meta-openwrt into a single repository.

Components:
- poky/             Yocto core framework (BitBake + OE-Core)
- meta-openembedded/ Community layers (meta-oe, meta-python, meta-networking)
- meta-openwrt/     OpenWrt customization layer
- setup-env.sh      One-click build environment setup
- README.md         Project documentation
2026-07-11 13:28:01 +08:00

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"))