diff options
Diffstat (limited to 'meta/lib/oeqa/selftest/context.py')
-rw-r--r-- | meta/lib/oeqa/selftest/context.py | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/meta/lib/oeqa/selftest/context.py b/meta/lib/oeqa/selftest/context.py index 23f7d71bdb..78c7a467e2 100644 --- a/meta/lib/oeqa/selftest/context.py +++ b/meta/lib/oeqa/selftest/context.py @@ -34,12 +34,12 @@ class NonConcurrentTestSuite(unittest.TestSuite): (builddir, newbuilddir) = self.setupfunc("-st", None, self.suite) ret = super().run(result) os.chdir(builddir) - if newbuilddir and ret.wasSuccessful(): + if newbuilddir and ret.wasSuccessful() and self.removefunc: self.removefunc(newbuilddir) def removebuilddir(d): delay = 5 - while delay and os.path.exists(d + "/bitbake.lock"): + while delay and (os.path.exists(d + "/bitbake.lock") or os.path.exists(d + "/cache/hashserv.db-wal")): time.sleep(1) delay = delay - 1 # Deleting these directories takes a lot of time, use autobuilder @@ -54,7 +54,7 @@ def removebuilddir(d): bb.utils.prunedir(d, ionice=True) class OESelftestTestContext(OETestContext): - def __init__(self, td=None, logger=None, machines=None, config_paths=None, newbuilddir=None): + def __init__(self, td=None, logger=None, machines=None, config_paths=None, newbuilddir=None, keep_builddir=None): super(OESelftestTestContext, self).__init__(td, logger) self.machines = machines @@ -62,6 +62,11 @@ class OESelftestTestContext(OETestContext): self.config_paths = config_paths self.newbuilddir = newbuilddir + if keep_builddir: + self.removebuilddir = None + else: + self.removebuilddir = removebuilddir + def setup_builddir(self, suffix, selftestdir, suite): builddir = os.environ['BUILDDIR'] if not selftestdir: @@ -82,7 +87,9 @@ class OESelftestTestContext(OETestContext): oe.path.copytree(selftestdir, newselftestdir) for e in os.environ: - if builddir + "/" in os.environ[e] or os.environ[e].endswith(builddir): + if builddir + "/" in os.environ[e]: + os.environ[e] = os.environ[e].replace(builddir + "/", newbuilddir + "/") + if os.environ[e].endswith(builddir): os.environ[e] = os.environ[e].replace(builddir, newbuilddir) subprocess.check_output("git init; git add *; git commit -a -m 'initial'", cwd=newselftestdir, shell=True) @@ -117,9 +124,9 @@ class OESelftestTestContext(OETestContext): if processes: from oeqa.core.utils.concurrencytest import ConcurrentTestSuite - return ConcurrentTestSuite(suites, processes, self.setup_builddir, removebuilddir) + return ConcurrentTestSuite(suites, processes, self.setup_builddir, self.removebuilddir) else: - return NonConcurrentTestSuite(suites, processes, self.setup_builddir, removebuilddir) + return NonConcurrentTestSuite(suites, processes, self.setup_builddir, self.removebuilddir) def runTests(self, processes=None, machine=None, skips=[]): if machine: @@ -177,6 +184,9 @@ class OESelftestTestContextExecutor(OETestContextExecutor): action='append', default=None, help='Exclude all (unhidden) tests that match any of the specified tag(s). (exclude applies before select)') + parser.add_argument('-K', '--keep-builddir', action='store_true', + help='Keep the test build directory even if all tests pass') + parser.add_argument('-B', '--newbuilddir', help='New build directory to use for tests.') parser.add_argument('-v', '--verbose', action='store_true') parser.set_defaults(func=self.run) @@ -234,6 +244,7 @@ class OESelftestTestContextExecutor(OETestContextExecutor): self.tc_kwargs['init']['config_paths']['localconf'] = os.path.join(builddir, "conf/local.conf") self.tc_kwargs['init']['config_paths']['bblayers'] = os.path.join(builddir, "conf/bblayers.conf") self.tc_kwargs['init']['newbuilddir'] = args.newbuilddir + self.tc_kwargs['init']['keep_builddir'] = args.keep_builddir def tag_filter(tags): if args.exclude_tags: |