diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2018-10-17 14:41:48 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2018-10-18 10:59:27 +0100 |
commit | 4ef016683d986cc5291e494789ff5a49b28030eb (patch) | |
tree | f24f29d31f36642f7facf3f4b857bba4faebe078 /bitbake/lib | |
parent | 7e9212712817a7c10b9aae7a26de3de3a4f18611 (diff) | |
download | poky-4ef016683d986cc5291e494789ff5a49b28030eb.tar.gz |
bitbake: test/data: Add new tests for task checksum changing/not changing
This adds some basic tests for task checksums to ensure that the
checksums:
* change when variables change
* change when active _remove operators are present
* don't change when the _remove operators are not active
* change when an active contains() expression is present
* dont' change a contains() expression isn't active
There is a lot of other functionality which should be added to this
test but its a start.
(Bitbake rev: 5463c16e3619d324aed137f47f93f0997a227d29)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib')
-rw-r--r-- | bitbake/lib/bb/tests/data.py | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/bitbake/lib/bb/tests/data.py b/bitbake/lib/bb/tests/data.py index 8279115e03..9ac78e3683 100644 --- a/bitbake/lib/bb/tests/data.py +++ b/bitbake/lib/bb/tests/data.py | |||
@@ -455,6 +455,54 @@ class Contains(unittest.TestCase): | |||
455 | self.assertFalse(bb.utils.contains_any("SOMEFLAG", "x y z", True, False, self.d)) | 455 | self.assertFalse(bb.utils.contains_any("SOMEFLAG", "x y z", True, False, self.d)) |
456 | 456 | ||
457 | 457 | ||
458 | class TaskHash(unittest.TestCase): | ||
459 | def test_taskhashes(self): | ||
460 | def gettask_bashhash(taskname, d): | ||
461 | tasklist, gendeps, lookupcache = bb.data.generate_dependencies(d) | ||
462 | taskdeps, basehash = bb.data.generate_dependency_hash(tasklist, gendeps, lookupcache, set(), "somefile") | ||
463 | bb.warn(str(lookupcache)) | ||
464 | return basehash["somefile." + taskname] | ||
465 | |||
466 | d = bb.data.init() | ||
467 | d.setVar("__BBTASKS", ["mytask"]) | ||
468 | d.setVar("__exportlist", []) | ||
469 | d.setVar("mytask", "${MYCOMMAND}") | ||
470 | d.setVar("MYCOMMAND", "${VAR}; foo; bar; exit 0") | ||
471 | d.setVar("VAR", "val") | ||
472 | orighash = gettask_bashhash("mytask", d) | ||
473 | |||
474 | # Changing a variable should change the hash | ||
475 | d.setVar("VAR", "val2") | ||
476 | nexthash = gettask_bashhash("mytask", d) | ||
477 | self.assertNotEqual(orighash, nexthash) | ||
478 | |||
479 | d.setVar("VAR", "val") | ||
480 | # Adding an inactive removal shouldn't change the hash | ||
481 | d.setVar("BAR", "notbar") | ||
482 | d.setVar("MYCOMMAND_remove", "${BAR}") | ||
483 | nexthash = gettask_bashhash("mytask", d) | ||
484 | self.assertEqual(orighash, nexthash) | ||
485 | |||
486 | # Adding an active removal should change the hash | ||
487 | d.setVar("BAR", "bar;") | ||
488 | nexthash = gettask_bashhash("mytask", d) | ||
489 | self.assertNotEqual(orighash, nexthash) | ||
490 | |||
491 | # Setup an inactive contains() | ||
492 | d.setVar("VAR", "${@bb.utils.contains('VAR2', 'A', 'val', '', d)}") | ||
493 | orighash = gettask_bashhash("mytask", d) | ||
494 | |||
495 | # Activate the contains() and the hash should change | ||
496 | d.setVar("VAR2", "A") | ||
497 | nexthash = gettask_bashhash("mytask", d) | ||
498 | self.assertNotEqual(orighash, nexthash) | ||
499 | |||
500 | # The contains should be inactive but even though VAR2 has a | ||
501 | # different value the hash should match the original | ||
502 | d.setVar("VAR2", "B") | ||
503 | nexthash = gettask_bashhash("mytask", d) | ||
504 | self.assertEqual(orighash, nexthash) | ||
505 | |||
458 | class Serialize(unittest.TestCase): | 506 | class Serialize(unittest.TestCase): |
459 | 507 | ||
460 | def test_serialize(self): | 508 | def test_serialize(self): |