Squashed 'yocto-poky/' content from commit ea562de

git-subtree-dir: yocto-poky
git-subtree-split: ea562de57590c966cd5a75fda8defecd397e6436
diff --git a/meta-yocto-bsp/lib/oeqa/selftest/gummiboot.py b/meta-yocto-bsp/lib/oeqa/selftest/gummiboot.py
new file mode 100644
index 0000000..00aa36f
--- /dev/null
+++ b/meta-yocto-bsp/lib/oeqa/selftest/gummiboot.py
@@ -0,0 +1,83 @@
+from oeqa.selftest.base import oeSelfTest
+from oeqa.utils.commands import runCmd, bitbake, get_bb_var, runqemu
+from oeqa.utils.decorators import testcase
+import re
+import os
+import sys
+import logging
+
+
+class Gummiboot(oeSelfTest):
+
+    def _common_setup(self):
+        """
+        Common setup for test cases: 1101, 1103
+        """
+
+        # Set EFI_PROVIDER = "gummiboot" and MACHINE = "genericx86-64" in conf/local.conf
+        features = 'EFI_PROVIDER = "gummiboot"\n'
+        features += 'MACHINE = "genericx86-64"'
+        self.append_config(features)
+
+    def _common_build(self):
+        """
+        Common build for test cases: 1101, 1103
+        """
+
+        # Build a genericx86-64/efi gummiboot image
+        bitbake('syslinux syslinux-native parted-native dosfstools-native mtools-native core-image-minimal')
+
+
+    @testcase(1101)
+    def test_efi_gummiboot_images_can_be_built(self):
+        """
+        Summary:     Check if efi/gummiboot images can be built
+        Expected:    1. File gummibootx64.efi should be available in build/tmp/deploy/images/genericx86-64
+                     2. Efi/gummiboot images can be built
+        Product:     oe-core
+        Author:      Ionut Chisanovici <ionutx.chisanovici@intel.com>
+        AutomatedBy: Daniel Istrate <daniel.alexandrux.istrate@intel.com>
+        """
+
+        # We'd use DEPLOY_DIR_IMAGE here, except that we need its value for
+        # MACHINE="genericx86-64 which is probably not the one configured
+        gummibootfile = os.path.join(get_bb_var('DEPLOY_DIR'), 'images', 'genericx86-64', 'gummibootx64.efi')
+
+        self._common_setup()
+
+        # Ensure we're actually testing that this gets built and not that
+        # it was around from an earlier build
+        bitbake('-c cleansstate gummiboot')
+        runCmd('rm -f %s' % gummibootfile)
+
+        self._common_build()
+
+        found = os.path.isfile(gummibootfile)
+        self.assertTrue(found, 'Gummiboot file %s not found' % gummibootfile)
+
+    @testcase(1103)
+    def test_wic_command_can_create_efi_gummiboot_installation_images(self):
+        """
+        Summary:     Check that wic command can create efi/gummiboot installation images
+        Expected:    A .direct file in folder /var/tmp/wic/ must be created.
+        Product:     oe-core
+        Author:      Ionut Chisanovici <ionutx.chisanovici@intel.com>
+        AutomatedBy: Daniel Istrate <daniel.alexandrux.istrate@intel.com>
+        """
+
+        self._common_setup()
+        self._common_build()
+
+        # Create efi/gummiboot installation images
+        wic_create_cmd = 'wic create mkgummidisk -e core-image-minimal'
+        result = runCmd(wic_create_cmd)
+
+        # Find file written by wic from output
+        res = re.search('(/var/tmp/wic/.*\.direct)', result.output)
+        if res:
+            direct_file = res.group(1)
+            # Check it actually exists
+            if not os.path.exists(direct_file):
+                self.fail('wic reported direct file "%s" does not exist; wic output:\n%s' % (direct_file, result.output))
+        else:
+            self.fail('No .direct file reported in wic output:\n%s' % result.output)