#
# SPDX-License-Identifier: MIT
#

from oeqa.selftest.case import OESelftestTestCase
from oeqa.core.decorator import OETestTag
from oeqa.utils.commands import bitbake, runqemu

class LocalesTest(OESelftestTestCase):

    @OETestTag("runqemu")
    def test_locales_on(self):
        """
        Summary: Test the locales are generated
        Expected: 1. Check the locale exist in the locale-archive
                  2. Check the locale exist for the glibc
                  3. Check the locale can be generated
        Product: oe-core
        Author: Louis Rannou <lrannou@baylibre.com>
        AutomatedBy: Louis Rannou <lrannou@baylibre.com>
        """

        features = []
        features.append('EXTRA_IMAGE_FEATURES = "empty-root-password allow-empty-password allow-root-login"')
        features.append('IMAGE_INSTALL:append = " glibc-utils localedef"')
        features.append('GLIBC_GENERATE_LOCALES = "en_US.UTF-8 fr_FR.UTF-8"')
        features.append('IMAGE_LINGUAS:append = " en-us fr-fr"')
        features.append('ENABLE_BINARY_LOCALE_GENERATION = "1"')
        self.write_config("\n".join(features))

        # Build a core-image-minimal
        bitbake('core-image-minimal')

        with runqemu("core-image-minimal", ssh=False, runqemuparams='nographic') as qemu:
            cmd = "locale -a"
            status, output = qemu.run_serial(cmd)
            # output must includes fr_FR or fr_FR.UTF-8
            self.assertEqual(status, 1, msg='locale test command failed: output: %s' % output)
            self.assertIn("fr_FR", output, msg='locale -a test failed: output: %s' % output)

            cmd = "localedef --list-archive -v"
            status, output = qemu.run_serial(cmd)
            # output must includes fr_FR.utf8
            self.assertEqual(status, 1, msg='localedef test command failed: output: %s' % output)
            self.assertIn("fr_FR.utf8", output, msg='localedef test failed: output: %s' % output)
