From f2062c41693f9f684bdaf2df0a2a08b7f3871026 Mon Sep 17 00:00:00 2001 From: Joshua Watt Date: Tue, 9 Jun 2020 13:34:15 -0500 Subject: bitbake: tests: Add mcdepends test Adds a test to validate that mcdepends causes the dependent tasks to build, and also that a change in the dependent task causes the dependee task to re-execute. Signed-off-by: Joshua Watt Signed-off-by: Richard Purdie --- lib/bb/tests/runqueue-tests/recipes/f1.bb | 1 + lib/bb/tests/runqueue.py | 30 ++++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 lib/bb/tests/runqueue-tests/recipes/f1.bb (limited to 'lib/bb/tests') diff --git a/lib/bb/tests/runqueue-tests/recipes/f1.bb b/lib/bb/tests/runqueue-tests/recipes/f1.bb new file mode 100644 index 000000000..d45a4cff5 --- /dev/null +++ b/lib/bb/tests/runqueue-tests/recipes/f1.bb @@ -0,0 +1 @@ +do_install[mcdepends] = "mc:mc1:mc2:a1:do_build" diff --git a/lib/bb/tests/runqueue.py b/lib/bb/tests/runqueue.py index 091b5e41e..d3d62b98f 100644 --- a/lib/bb/tests/runqueue.py +++ b/lib/bb/tests/runqueue.py @@ -248,6 +248,36 @@ class RunQueueTests(unittest.TestCase): cmd = ["bitbake", "mc:mc1:fails-mc2", "mc:mc2:fails-mc1"] self.run_bitbakecmd(cmd, tempdir, "", extraenv=extraenv) + def test_multiconfig_mcdepends(self): + with tempfile.TemporaryDirectory(prefix="runqueuetest") as tempdir: + extraenv = { + "BBMULTICONFIG" : "mc1 mc2", + "BB_SIGNATURE_HANDLER" : "TestMulticonfigDepends", + "EXTRA_BBFILES": "${COREBASE}/recipes/fails-mc/*.bb", + } + tasks = self.run_bitbakecmd(["bitbake", "mc:mc1:f1"], tempdir, "", extraenv=extraenv, cleanup=True) + expected = ["mc1:f1:%s" % t for t in self.alltasks] + \ + ["mc2:a1:%s" % t for t in self.alltasks] + self.assertEqual(set(tasks), set(expected)) + + # A rebuild does nothing + tasks = self.run_bitbakecmd(["bitbake", "mc:mc1:f1"], tempdir, "", extraenv=extraenv, cleanup=True) + self.assertEqual(set(tasks), set()) + + # Test that a signature change in the dependent task causes + # mcdepends to rebuild + tasks = self.run_bitbakecmd(["bitbake", "mc:mc2:a1", "-c", "compile", "-f"], tempdir, "", extraenv=extraenv, cleanup=True) + expected = ["mc2:a1:compile"] + self.assertEqual(set(tasks), set(expected)) + + rerun_tasks = self.alltasks[:] + for x in ("fetch", "unpack", "patch", "prepare_recipe_sysroot", "configure", "compile"): + rerun_tasks.remove(x) + tasks = self.run_bitbakecmd(["bitbake", "mc:mc1:f1"], tempdir, "", extraenv=extraenv, cleanup=True) + expected = ["mc1:f1:%s" % t for t in rerun_tasks] + \ + ["mc2:a1:%s" % t for t in rerun_tasks] + self.assertEqual(set(tasks), set(expected)) + @unittest.skipIf(sys.version_info < (3, 5, 0), 'Python 3.5 or later required') def test_hashserv_single(self): with tempfile.TemporaryDirectory(prefix="runqueuetest") as tempdir: -- cgit 1.2.3-korg