Re: [OE-core] [PATCH] oe-selftest: support selftests from other layers
On Thu, Aug 6, 2015 at 8:43 PM, Liu, Sharron wrote: > Thanks for your inputs. I tested my case with poky master which includes > the two commitments you mentioned: > > > https://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=d2023c34e4c3735d919c35d80daf991aab579500 > > > https://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=51d760e2a7e22f1b07608fc925da343e56a9ae74 > > In my observation it still failed at my case. > > > > In my test case I have: > > poky_root/meta-mylayer/lib/oeqa/selftest/subdirs/mytest.py > > > > I type: > > "oe-selftest --list-modules" > > And I expect “subdirs.mytest” being listed. > > > > I type: > > "oe-selftest --run-tests subdirs.mytest" > > And I expect “mytest” being run. > > > > This case still failed without my patch. Attached the log file for your > ref. > Sounds like you didn't properly set up your python packages. It has to be possible to import your tests from python, which is not the case unless __init__.py exists at the root of each python package. oeqa.selftest is a python namespace package. Copy poky/meta/lib/oeqa/selftest/__init__.py to poky_root/meta-mylayer/lib/oeqa/selftest/, and either also copy it to poky_root/meta-mylayer/lib/oeqa/selftest/subdirs/ or touch poky_root/meta-mylayer/lib/oeqa/selftest/subdirs/__init__.py. -- Christopher Larson clarson at kergoth dot com Founder - BitBake, OpenEmbedded, OpenZaurus Maintainer - Tslib Senior Software Engineer, Mentor Graphics -- ___ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core
Re: [OE-core] [PATCH] oe-selftest: support selftests from other layers
Hi Chris, Thanks for your inputs. I tested my case with poky master which includes the two commitments you mentioned: https://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=d2023c34e4c3735d919c35d80daf991aab579500 https://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=51d760e2a7e22f1b07608fc925da343e56a9ae74 In my observation it still failed at my case. In my test case I have: poky_root/meta-mylayer/lib/oeqa/selftest/subdirs/mytest.py I type: "oe-selftest --list-modules" And I expect “subdirs.mytest” being listed. I type: "oe-selftest --run-tests subdirs.mytest" And I expect “mytest” being run. This case still failed without my patch. Attached the log file for your ref. Regards, Sharron From: kerg...@gmail.com [mailto:kerg...@gmail.com] On Behalf Of Christopher Larson Sent: Wednesday, August 5, 2015 11:07 PM To: Liu, Sharron Cc: Patches and discussions about the oe-core layer Subject: Re: [OE-core] [PATCH] oe-selftest: support selftests from other layers On Wed, Aug 5, 2015 at 12:17 AM, LIU, Sharron mailto:sharron@intel.com>> wrote: [YOCTO #7865] https://bugzilla.yoctoproject.org/show_bug.cgi?id=7865 This script is extended to detect and run tests from all BBLAYERS added to BBPATH. Tests can be put in any sub-dir, except for "files" which is treated as test dependent files. To detect tests, this patch goes through "lib/oeqa/selftest/" of every layer added to BBPATH. To support sub-dir, this patch list test module with its sub-dirs prefix. To run tests, this patch adds tests package path into "sys.path" then reload "oeqa.selftest". Signed-off-by: LIU, Sharron mailto:sharron@intel.com>> This was implemented as a part of the work to do the same for devtool & recipetool, see https://bugzilla.yoctoproject.org/show_bug.cgi?id=7865#c10 and https://bugzilla.yoctoproject.org/show_bug.cgi?id=7625#c3: https://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=d2023c34e4c3735d919c35d80daf991aab579500 https://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=51d760e2a7e22f1b07608fc925da343e56a9ae74 -- Christopher Larson clarson at kergoth dot com Founder - BitBake, OpenEmbedded, OpenZaurus Maintainer - Tslib Senior Software Engineer, Mentor Graphics 7865.log Description: 7865.log -- ___ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core
Re: [OE-core] [PATCH] oe-selftest: support selftests from other layers
On Wed, Aug 5, 2015 at 12:17 AM, LIU, Sharron wrote: > [YOCTO #7865] https://bugzilla.yoctoproject.org/show_bug.cgi?id=7865 > > This script is extended to detect and run tests from all BBLAYERS added to > BBPATH. Tests can be put in any sub-dir, except for "files" which is > treated > as test dependent files. > > To detect tests, this patch goes through "lib/oeqa/selftest/" of every > layer > added to BBPATH. > To support sub-dir, this patch list test module with its sub-dirs prefix. > To run tests, this patch adds tests package path into "sys.path" then > reload > "oeqa.selftest". > > Signed-off-by: LIU, Sharron > This was implemented as a part of the work to do the same for devtool & recipetool, see https://bugzilla.yoctoproject.org/show_bug.cgi?id=7865#c10 and https://bugzilla.yoctoproject.org/show_bug.cgi?id=7625#c3: https://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=d2023c34e4c3735d919c35d80daf991aab579500 https://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=51d760e2a7e22f1b07608fc925da343e56a9ae74 -- Christopher Larson clarson at kergoth dot com Founder - BitBake, OpenEmbedded, OpenZaurus Maintainer - Tslib Senior Software Engineer, Mentor Graphics -- ___ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core
[OE-core] [PATCH] oe-selftest: support selftests from other layers
[YOCTO #7865] https://bugzilla.yoctoproject.org/show_bug.cgi?id=7865 This script is extended to detect and run tests from all BBLAYERS added to BBPATH. Tests can be put in any sub-dir, except for "files" which is treated as test dependent files. To detect tests, this patch goes through "lib/oeqa/selftest/" of every layer added to BBPATH. To support sub-dir, this patch list test module with its sub-dirs prefix. To run tests, this patch adds tests package path into "sys.path" then reload "oeqa.selftest". Signed-off-by: LIU, Sharron --- scripts/oe-selftest | 42 ++ 1 file changed, 34 insertions(+), 8 deletions(-) diff --git a/scripts/oe-selftest b/scripts/oe-selftest index 91e2dd2..b441a08 100755 --- a/scripts/oe-selftest +++ b/scripts/oe-selftest @@ -23,7 +23,15 @@ # Call the script as: "oe-selftest" to run all the tests in in meta/lib/selftest/ # Call the script as: "oe-selftest .." to run just a single test # E.g: "oe-selftest bboutput.BitbakeLayers" will run just the BitbakeLayers class from meta/lib/selftest/bboutput.py - +# +# The script is extended to support detecting tests from "lib/oeqa/selftest/*/" +# from any BBLAYERS added to BBPATH. Tests can be put in any subdir, +# except for "files" which is treated as test dependent files. +# Eg.: meta-mylayer/lib/oeqa/selftest/subdirs/mytest.py +# Call the script as: "oe-selftest --list-modules", you'll have +# subdirs.mytest +# Call the script as: "oe-selftest --runtests subdirs.mytest", you'll have +# the test run. import os import sys @@ -41,6 +49,13 @@ import oeqa.utils.ftools as ftools from oeqa.utils.commands import runCmd, get_bb_var, get_test_layer from oeqa.selftest.base import oeSelfTest +# add test cases location into the python searching path +for l in get_bb_var('BBPATH').split(':'): +if os.path.exists(os.path.abspath(os.path.join(l, 'lib/oeqa/selftest'))): +sys.path.insert(0, os.path.abspath(os.path.join(l, 'lib'))) +# reloading this package is necessary due to "sys.path" updated +reload(oeqa.selftest) + def logger_create(): log = logging.getLogger("selftest") log.setLevel(logging.DEBUG) @@ -145,12 +160,20 @@ def get_tests(exclusive_modules=[], include_hidden=False): for x in exclusive_modules: testslist.append('oeqa.selftest.' + x) if not testslist: -for testpath in oeqa.selftest.__path__: -files = sorted([f for f in os.listdir(testpath) if f.endswith('.py') and not (f.startswith('_') and not include_hidden) and not f.startswith('__') and f != 'base.py']) -for f in files: -module = 'oeqa.selftest.' + f[:-3] -if module not in testslist: -testslist.append(module) +# add test cases to "testslist" for every subfolder of "oeqa/selftest/" +def _addtest(args, dname, fnames): +if (os.path.basename(dname) != 'files'): # 'files' folder is skipped +# d is sub-dirs name. eg.: "oeqa/selftest/cfg/mytest.py", d=cfg +d=dname[args[0]:].replace('/','.') +for f in fnames: +if (f.endswith('.py') and not (f.startswith('_') and not include_hidden) and not f.startswith('__') and f != 'base.py'): +# test is added as "oeqa.selftest.cfg.mytest" +testslist.append('oeqa.selftest'+d+'.'+f[:-3]) +# detect test cases from all layers that added to "BBPATH" +for l in get_bb_var('BBPATH').split(':'): +testpath = os.path.join(l, 'lib', 'oeqa', 'selftest') +if os.path.exists(testpath): +os.path.walk(testpath, _addtest, [len(testpath)]) return testslist @@ -172,7 +195,10 @@ def main(): log.info('Listing all available test modules:') testslist = get_tests(include_hidden=True) for test in testslist: -module = test.split('.')[-1] +# list test with its sub-dirs name relative to oeqa.selftest +# eg.: "oeqa.selftest.cfg.mytest" is listed as "cfg.mytest" for +# passing to "--run-tests " +module = test.split('.',2)[-1] info = '' if module.startswith('_'): info = ' (hidden)' -- 1.9.1 -- ___ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core