diff options
Diffstat (limited to 'meta/lib/oeqa/selftest')
-rw-r--r-- | meta/lib/oeqa/selftest/context.py | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/meta/lib/oeqa/selftest/context.py b/meta/lib/oeqa/selftest/context.py index 3d3b19c6e8..cd893261d3 100644 --- a/meta/lib/oeqa/selftest/context.py +++ b/meta/lib/oeqa/selftest/context.py | |||
@@ -10,11 +10,13 @@ import glob | |||
10 | import sys | 10 | import sys |
11 | import importlib | 11 | import importlib |
12 | import signal | 12 | import signal |
13 | import subprocess | ||
13 | from shutil import copyfile | 14 | from shutil import copyfile |
14 | from random import choice | 15 | from random import choice |
15 | 16 | ||
16 | import oeqa | 17 | import oeqa |
17 | import oe | 18 | import oe |
19 | import bb.utils | ||
18 | 20 | ||
19 | from oeqa.core.context import OETestContext, OETestContextExecutor | 21 | from oeqa.core.context import OETestContext, OETestContextExecutor |
20 | from oeqa.core.exception import OEQAPreRun, OEQATestNotFound | 22 | from oeqa.core.exception import OEQAPreRun, OEQATestNotFound |
@@ -29,6 +31,54 @@ class OESelftestTestContext(OETestContext): | |||
29 | self.custommachine = None | 31 | self.custommachine = None |
30 | self.config_paths = config_paths | 32 | self.config_paths = config_paths |
31 | 33 | ||
34 | def setup_builddir(self, suffix, selftestdir, suite): | ||
35 | builddir = os.environ['BUILDDIR'] | ||
36 | if not selftestdir: | ||
37 | selftestdir = get_test_layer() | ||
38 | newbuilddir = builddir + suffix | ||
39 | newselftestdir = newbuilddir + "/meta-selftest" | ||
40 | |||
41 | if os.path.exists(newbuilddir): | ||
42 | self.logger.error("Build directory %s already exists, aborting" % newbuilddir) | ||
43 | sys.exit(1) | ||
44 | |||
45 | bb.utils.mkdirhier(newbuilddir) | ||
46 | oe.path.copytree(builddir + "/conf", newbuilddir + "/conf") | ||
47 | oe.path.copytree(builddir + "/cache", newbuilddir + "/cache") | ||
48 | oe.path.copytree(selftestdir, newselftestdir) | ||
49 | |||
50 | for e in os.environ: | ||
51 | if builddir in os.environ[e]: | ||
52 | os.environ[e] = os.environ[e].replace(builddir, newbuilddir) | ||
53 | |||
54 | subprocess.check_output("git init; git add *; git commit -a -m 'initial'", cwd=newselftestdir, shell=True) | ||
55 | |||
56 | # Tried to used bitbake-layers add/remove but it requires recipe parsing and hence is too slow | ||
57 | subprocess.check_output("sed %s/conf/bblayers.conf -i -e 's#%s#%s#g'" % (newbuilddir, selftestdir, newselftestdir), cwd=newbuilddir, shell=True) | ||
58 | |||
59 | os.chdir(newbuilddir) | ||
60 | |||
61 | for t in suite: | ||
62 | if not hasattr(t, "tc"): | ||
63 | continue | ||
64 | cp = t.tc.config_paths | ||
65 | for p in cp: | ||
66 | if selftestdir in cp[p] and newselftestdir not in cp[p]: | ||
67 | cp[p] = cp[p].replace(selftestdir, newselftestdir) | ||
68 | if builddir in cp[p] and newbuilddir not in cp[p]: | ||
69 | cp[p] = cp[p].replace(builddir, newbuilddir) | ||
70 | |||
71 | return (builddir, newbuilddir) | ||
72 | |||
73 | def prepareSuite(self, suites, processes): | ||
74 | if processes: | ||
75 | from oeqa.core.utils.concurrencytest import ConcurrentTestSuite | ||
76 | |||
77 | return ConcurrentTestSuite(suites, processes, self.setup_builddir) | ||
78 | else: | ||
79 | self.setup_builddir("-st", None, suites) | ||
80 | return suites | ||
81 | |||
32 | def runTests(self, processes=None, machine=None, skips=[]): | 82 | def runTests(self, processes=None, machine=None, skips=[]): |
33 | if machine: | 83 | if machine: |
34 | self.custommachine = machine | 84 | self.custommachine = machine |