Message ID | 20250926-builtin-fragments-tests-v1-1-28c32d45bc15@bootlin.com |
---|---|
State | New |
Headers | show |
Series | oeqa/bblayers.py: add tests for adding new built-in fragments | expand |
Thanks, lgtm. Alex On Fri, 26 Sept 2025 at 11:47, Antonin Godard <antonin.godard@bootlin.com> wrote: > > Add discussed in [1], our best option for customizing built-in fragments > is to pass them from a layer configuration. In short, the reason is that > our statement must be parsed before the addfragments call is parsed.We > also have to use the :append override as using += would override the > original definition of OE_FRAGMENTS_BUILTIN (since it uses a ?= > assignment). > > Provide a test case for customizing built-in fragments with > meta-selftest. > > [1]: https://lore.kernel.org/yocto-docs/20250925-fragments-v1-0-c9f747361fb2@bootlin.com/T/#m9f7c9f110c084eba17e0f64d8b2ac7a88af3f38e > > Cc: Alexander Kanavin <alex.kanavin@gmail.com> > Signed-off-by: Antonin Godard <antonin.godard@bootlin.com> > --- > meta-selftest/conf/layer.conf | 2 ++ > meta/lib/oeqa/selftest/cases/bblayers.py | 29 +++++++++++++++++++++++++++++ > 2 files changed, 31 insertions(+) > > diff --git a/meta-selftest/conf/layer.conf b/meta-selftest/conf/layer.conf > index ecc45ded8c..de7d6340ed 100644 > --- a/meta-selftest/conf/layer.conf > +++ b/meta-selftest/conf/layer.conf > @@ -12,3 +12,5 @@ BBFILE_PRIORITY_selftest = "5" > addpylib ${LAYERDIR}/lib oeqa > > LAYERSERIES_COMPAT_selftest = "whinlatter" > + > +OE_FRAGMENTS_BUILTIN:append = " selftest-fragment:SELFTEST_BUILTIN_FRAGMENT_VARIABLE" > diff --git a/meta/lib/oeqa/selftest/cases/bblayers.py b/meta/lib/oeqa/selftest/cases/bblayers.py > index 8c05ec5d3d..d82c5aaf37 100644 > --- a/meta/lib/oeqa/selftest/cases/bblayers.py > +++ b/meta/lib/oeqa/selftest/cases/bblayers.py > @@ -272,6 +272,35 @@ class BitbakeConfigBuild(OESelftestTestCase): > self.assertEqual(get_bb_var('SELFTEST_FRAGMENT_VARIABLE'), None) > self.assertEqual(get_bb_var('SELFTEST_FRAGMENT_ANOTHER_VARIABLE'), None) > > + def test_enable_disable_builtin_fragments(self): > + """ > + Tests that the meta-selftest properly adds a new built-in fragment from > + its layer.conf configuration file. > + The test sequence goes as follows: > + 1. Verify that SELFTEST_BUILTIN_FRAGMENT_VARIABLE is not set yet. > + 2. Verify that SELFTEST_BUILTIN_FRAGMENT_VARIABLE is set after setting > + the fragment. > + 3. Verify that SELFTEST_BUILTIN_FRAGMENT_VARIABLE is set after setting > + the fragment with another value that overrides the first one. > + 4. Verify that SELFTEST_BUILTIN_FRAGMENT_VARIABLE is set to the previous > + value after removing the second assignment (from step 3). > + 5. Verify that SELFTEST_BUILTIN_FRAGMENT_VARIABLE is not set after > + removing the original assignment. > + """ > + self.assertEqual(get_bb_var('SELFTEST_BUILTIN_FRAGMENT_VARIABLE'), None) > + > + runCmd('bitbake-config-build enable-fragment selftest-fragment/somevalue') > + self.assertEqual(get_bb_var('SELFTEST_BUILTIN_FRAGMENT_VARIABLE'), 'somevalue') > + > + runCmd('bitbake-config-build enable-fragment selftest-fragment/someothervalue') > + self.assertEqual(get_bb_var('SELFTEST_BUILTIN_FRAGMENT_VARIABLE'), 'someothervalue') > + > + runCmd('bitbake-config-build disable-fragment selftest-fragment/someothervalue') > + self.assertEqual(get_bb_var('SELFTEST_BUILTIN_FRAGMENT_VARIABLE'), 'somevalue') > + > + runCmd('bitbake-config-build disable-fragment selftest-fragment/somevalue') > + self.assertEqual(get_bb_var('SELFTEST_BUILTIN_FRAGMENT_VARIABLE'), None) > + > def test_show_fragment(self): > """ > Test that bitbake-config-build show-fragment returns the expected > > --- > base-commit: 07747aa7390e98bf2853154e5fd473e4984a1d3d > change-id: 20250926-builtin-fragments-tests-e2d3672c1fff > > Best regards, > -- > Antonin Godard <antonin.godard@bootlin.com> >
diff --git a/meta-selftest/conf/layer.conf b/meta-selftest/conf/layer.conf index ecc45ded8c..de7d6340ed 100644 --- a/meta-selftest/conf/layer.conf +++ b/meta-selftest/conf/layer.conf @@ -12,3 +12,5 @@ BBFILE_PRIORITY_selftest = "5" addpylib ${LAYERDIR}/lib oeqa LAYERSERIES_COMPAT_selftest = "whinlatter" + +OE_FRAGMENTS_BUILTIN:append = " selftest-fragment:SELFTEST_BUILTIN_FRAGMENT_VARIABLE" diff --git a/meta/lib/oeqa/selftest/cases/bblayers.py b/meta/lib/oeqa/selftest/cases/bblayers.py index 8c05ec5d3d..d82c5aaf37 100644 --- a/meta/lib/oeqa/selftest/cases/bblayers.py +++ b/meta/lib/oeqa/selftest/cases/bblayers.py @@ -272,6 +272,35 @@ class BitbakeConfigBuild(OESelftestTestCase): self.assertEqual(get_bb_var('SELFTEST_FRAGMENT_VARIABLE'), None) self.assertEqual(get_bb_var('SELFTEST_FRAGMENT_ANOTHER_VARIABLE'), None) + def test_enable_disable_builtin_fragments(self): + """ + Tests that the meta-selftest properly adds a new built-in fragment from + its layer.conf configuration file. + The test sequence goes as follows: + 1. Verify that SELFTEST_BUILTIN_FRAGMENT_VARIABLE is not set yet. + 2. Verify that SELFTEST_BUILTIN_FRAGMENT_VARIABLE is set after setting + the fragment. + 3. Verify that SELFTEST_BUILTIN_FRAGMENT_VARIABLE is set after setting + the fragment with another value that overrides the first one. + 4. Verify that SELFTEST_BUILTIN_FRAGMENT_VARIABLE is set to the previous + value after removing the second assignment (from step 3). + 5. Verify that SELFTEST_BUILTIN_FRAGMENT_VARIABLE is not set after + removing the original assignment. + """ + self.assertEqual(get_bb_var('SELFTEST_BUILTIN_FRAGMENT_VARIABLE'), None) + + runCmd('bitbake-config-build enable-fragment selftest-fragment/somevalue') + self.assertEqual(get_bb_var('SELFTEST_BUILTIN_FRAGMENT_VARIABLE'), 'somevalue') + + runCmd('bitbake-config-build enable-fragment selftest-fragment/someothervalue') + self.assertEqual(get_bb_var('SELFTEST_BUILTIN_FRAGMENT_VARIABLE'), 'someothervalue') + + runCmd('bitbake-config-build disable-fragment selftest-fragment/someothervalue') + self.assertEqual(get_bb_var('SELFTEST_BUILTIN_FRAGMENT_VARIABLE'), 'somevalue') + + runCmd('bitbake-config-build disable-fragment selftest-fragment/somevalue') + self.assertEqual(get_bb_var('SELFTEST_BUILTIN_FRAGMENT_VARIABLE'), None) + def test_show_fragment(self): """ Test that bitbake-config-build show-fragment returns the expected
Add discussed in [1], our best option for customizing built-in fragments is to pass them from a layer configuration. In short, the reason is that our statement must be parsed before the addfragments call is parsed.We also have to use the :append override as using += would override the original definition of OE_FRAGMENTS_BUILTIN (since it uses a ?= assignment). Provide a test case for customizing built-in fragments with meta-selftest. [1]: https://lore.kernel.org/yocto-docs/20250925-fragments-v1-0-c9f747361fb2@bootlin.com/T/#m9f7c9f110c084eba17e0f64d8b2ac7a88af3f38e Cc: Alexander Kanavin <alex.kanavin@gmail.com> Signed-off-by: Antonin Godard <antonin.godard@bootlin.com> --- meta-selftest/conf/layer.conf | 2 ++ meta/lib/oeqa/selftest/cases/bblayers.py | 29 +++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) --- base-commit: 07747aa7390e98bf2853154e5fd473e4984a1d3d change-id: 20250926-builtin-fragments-tests-e2d3672c1fff Best regards, -- Antonin Godard <antonin.godard@bootlin.com>