[OE-core] [PATCH 9/9] recipetests: buildrecipe: Test combinations of bbappend

Daniel Istrate daniel.alexandrux.istrate at intel.com
Fri Feb 26 14:40:51 UTC 2016


Selectively use each combination of .bbappend files with the recipe;
All the combinations should not break the recipe build

Signed-off-by: Daniel Istrate <daniel.alexandrux.istrate at intel.com>
---
 meta/lib/oeqa/recipetests/buildrecipe.py | 59 +++++++++++++++++++++++++++++++-
 1 file changed, 58 insertions(+), 1 deletion(-)

diff --git a/meta/lib/oeqa/recipetests/buildrecipe.py b/meta/lib/oeqa/recipetests/buildrecipe.py
index c303b29..900d042 100644
--- a/meta/lib/oeqa/recipetests/buildrecipe.py
+++ b/meta/lib/oeqa/recipetests/buildrecipe.py
@@ -1,7 +1,9 @@
 from oeqa.recipetests.base import RecipeTests
 from oeqa.selftest.base import get_available_machines
-from oeqa.utils.commands import bitbake, get_tasks_for_recipe
+from oeqa.utils.commands import bitbake, get_tasks_for_recipe, get_bb_var, ftools, get_all_bbappends
 import logging
+import os
+import random
 
 
 class BuildRecipeTests(RecipeTests):
@@ -60,3 +62,58 @@ class BuildRecipeTests(RecipeTests):
             # Force task on recipe
             self.log.info('Forcing task %s' % task)
             bitbake('-C %s %s' % (task, self.testrecipe))
+
+    def test_combinations_of_bbappend(self):
+        """ Selectively use each combination of .bbappend files with the recipe """
+
+        test_recipe_pv = get_bb_var('PV', self.testrecipe)
+        recipe_append_file = self.testrecipe + '_' + test_recipe_pv + '.bbappend'
+
+        bbappend_msgs = {1: 'msg 1', 2: 'msg 2', 3: 'msg 3', 4: 'msg 4'}
+        bbappend_files = {}
+
+        # Install all bbappends for recipe
+        for i in bbappend_msgs:
+            recipe_append_dir = self.testrecipe + '_test_' + str(i)
+            recipe_append_path = os.path.join(self.testlayer_path, 'recipes-test', recipe_append_dir, recipe_append_file)
+            os.mkdir(os.path.join(self.testlayer_path, 'recipes-test', recipe_append_dir))
+            feature = 'SUMMARY += "%s"\n' % bbappend_msgs[i]
+            ftools.write_file(recipe_append_path, feature)
+            bbappend_files[i] = recipe_append_path
+
+        self.add_command_to_tearDown('rm -rf %s' % os.path.join(self.testlayer_path, 'recipes-test',
+                                                                self.testrecipe + '_test_*'))
+
+        test_recipe_bb = '%s_%s.bb' % (self.testrecipe, test_recipe_pv)
+        all_bbappends = get_all_bbappends()
+        self.log.info('All bbappends for recipe %s: %s' % (self.testrecipe, all_bbappends.get(test_recipe_bb)))
+
+        # Build recipe with all bbappends
+        bitbake(self.testrecipe)
+
+        # Mask two random bbappends (some times it might be the same one, which is ok)
+        for i in range(len(bbappend_files)):
+            choice1 = random.choice(bbappend_msgs.keys())
+            choice2 = random.choice(bbappend_msgs.keys())
+            mask1 = bbappend_files.get(choice1)
+            mask2 = bbappend_files.get(choice2)
+
+            feature = 'BBMASK = "%s"\n' % mask1
+            feature += 'BBMASK += "%s"\n' % mask2
+            self.write_config(feature)
+            self.log.info('Applied MASKs [%s, %s]' % (mask1, mask2))
+
+            # Make sure the masked bbappends don't show up
+            current_bbappends = get_all_bbappends()
+            self.log.info('Current bbappends for recipe %s: %s' % (self.testrecipe, current_bbappends.get(test_recipe_bb)))
+            self.assertNotIn(mask1, current_bbappends.get(test_recipe_bb))
+            self.assertNotIn(mask2, current_bbappends.get(test_recipe_bb))
+
+            # Make sure the summary was updated
+            current_summary = get_bb_var('SUMMARY', self.testrecipe)
+            self.log.info('Current summary: "%s"' % current_summary)
+            self.assertNotIn(bbappend_msgs.get(choice1), current_summary)
+            self.assertNotIn(bbappend_msgs.get(choice2), current_summary)
+
+            # Build recipe with custom bbappends
+            bitbake(self.testrecipe)
-- 
2.1.0




More information about the Openembedded-core mailing list