diff mbox series

oeqa/bblayers.py: add tests for adding new built-in fragments

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

Commit Message

Antonin Godard Sept. 26, 2025, 9:46 a.m. UTC
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>

Comments

Alexander Kanavin Sept. 26, 2025, 9:57 a.m. UTC | #1
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 mbox series

Patch

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