summaryrefslogtreecommitdiffstats
path: root/meta/lib/oeqa/selftest/cases/sysroot.py
blob: ef854f6feebb63ebc1e58a551b23f89f3f9b76f7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#
# Copyright OpenEmbedded Contributors
#
# SPDX-License-Identifier: MIT
#

import uuid

from oeqa.selftest.case import OESelftestTestCase
from oeqa.utils.commands import bitbake

class SysrootTests(OESelftestTestCase):
    def test_sysroot_cleanup(self):
        """
        Build sysroot test which depends on virtual/sysroot-test for one machine,
        switch machine, switch provider of virtual/sysroot-test and check that the
        sysroot is correctly cleaned up. The files in the two providers overlap
        so can cause errors if the sysroot code doesn't function correctly.
        Yes, sysroot-test should be machine specific really to avoid this, however
        the sysroot cleanup should also work [YOCTO #13702]. 
        """

        uuid1 = uuid.uuid4()
        uuid2 = uuid.uuid4()

        self.write_config("""
PREFERRED_PROVIDER_virtual/sysroot-test = "sysroot-test-arch1"
MACHINE = "qemux86"
TESTSTRING:pn-sysroot-test-arch1 = "%s"
TESTSTRING:pn-sysroot-test-arch2 = "%s"
""" % (uuid1, uuid2))
        bitbake("sysroot-test")
        self.write_config("""
PREFERRED_PROVIDER_virtual/sysroot-test = "sysroot-test-arch2"
MACHINE = "qemux86copy"
TESTSTRING:pn-sysroot-test-arch1 = "%s"
TESTSTRING:pn-sysroot-test-arch2 = "%s"
""" % (uuid1, uuid2))
        bitbake("sysroot-test")

    def test_sysroot_max_shebang(self):
        """
        Summary:   Check max shebang triggers. To confirm [YOCTO #11053] is closed.
        Expected:  Fail when a shebang bigger than the max shebang-size is reached.
        Author:    Paulo Neves <ptsneves@gmail.com>
        """
        expected = "maximum shebang size exceeded, the maximum size is 128. [shebang-size]"
        res = bitbake("sysroot-shebang-test-native -c populate_sysroot", ignore_status=True)
        self.assertTrue(expected in res.output, msg=res.output)
        self.assertTrue(res.status != 0)

    def test_sysroot_la(self):
        """
        Summary:   Check that workdir paths are not contained in .la files.
        Expected:  Fail when a workdir path is found in the file content.
        Author:    Paulo Neves <ptsneves@gmail.com>
        """
        expected = "la-test.la failed sanity test (workdir) in path"

        res = bitbake("sysroot-la-test -c populate_sysroot", ignore_status=True)
        self.assertTrue(expected in res.output, msg=res.output)
        self.assertTrue('[la]' in res.output, msg=res.output)
        self.assertTrue(res.status != 0)

        res = bitbake("sysroot-la-test-native -c populate_sysroot", ignore_status=True)
        self.assertTrue(expected in res.output, msg=res.output)
        self.assertTrue('[la]' in res.output, msg=res.output)
        self.assertTrue(res.status != 0)

    def test_sysroot_pkgconfig(self):
        """
        Summary:   Check that tmpdir paths are not contained in .pc files.
        Expected:  Fail when a tmpdir path is found in the file content.
        Author:    Paulo Neves <ptsneves@gmail.com>
        """
        expected = "test.pc failed sanity test (tmpdir) in path"

        res = bitbake("sysroot-pc-test -c populate_sysroot", ignore_status=True)
        self.assertTrue('[pkgconfig]' in res.output, msg=res.output)
        self.assertTrue(expected in res.output, msg=res.output)
        self.assertTrue(res.status != 0)

        res = bitbake("sysroot-pc-test-native -c populate_sysroot", ignore_status=True)
        self.assertTrue(expected in res.output, msg=res.output)
        self.assertTrue('[pkgconfig]' in res.output, msg=res.output)
        self.assertTrue(res.status != 0)