diff options
author | Marcin Juszkiewicz <hrw@openembedded.org> | 2007-04-05 18:20:42 +0000 |
---|---|---|
committer | Marcin Juszkiewicz <hrw@openembedded.org> | 2007-04-05 18:20:42 +0000 |
commit | 328eff19a08bd399c6a833d213862039b4432b05 (patch) | |
tree | e20fa9422b90a51da620e168dba7f32764bba5c9 /modules | |
download | oetest-328eff19a08bd399c6a833d213862039b4432b05.tar.gz |
import of bitbake-qa bittest util which can be used as:
- source availability checker
- source mirror populate tool
- and few others
branch is named 'oetest' because this tool will be renamed to 'oetest' as it
is useful only with OE metadata
Diffstat (limited to 'modules')
-rw-r--r-- | modules/.mtn2git_empty | 0 | ||||
-rw-r--r-- | modules/content_checker/.mtn2git_empty | 0 | ||||
-rw-r--r-- | modules/content_checker/__init__.py | 40 | ||||
-rw-r--r-- | modules/content_checker/content_checker.py | 238 | ||||
-rw-r--r-- | modules/depends_checker/.mtn2git_empty | 0 | ||||
-rw-r--r-- | modules/depends_checker/__init__.py | 41 | ||||
-rw-r--r-- | modules/depends_checker/depends.py | 94 | ||||
-rw-r--r-- | modules/doc_checker/.mtn2git_empty | 0 | ||||
-rw-r--r-- | modules/doc_checker/__init__.py | 40 | ||||
-rw-r--r-- | modules/doc_checker/doc_checker.py | 74 | ||||
-rw-r--r-- | modules/example/.mtn2git_empty | 0 | ||||
-rw-r--r-- | modules/example/__init__.py | 41 | ||||
-rw-r--r-- | modules/example/example.py | 59 | ||||
-rw-r--r-- | modules/patch_checker/.mtn2git_empty | 0 | ||||
-rw-r--r-- | modules/patch_checker/__init__.py | 42 | ||||
-rw-r--r-- | modules/patch_checker/patch_checker.py | 77 | ||||
-rw-r--r-- | modules/source_checker/.mtn2git_empty | 0 | ||||
-rw-r--r-- | modules/source_checker/__init__.py | 40 | ||||
-rw-r--r-- | modules/source_checker/source_checker.py | 80 |
19 files changed, 866 insertions, 0 deletions
diff --git a/modules/.mtn2git_empty b/modules/.mtn2git_empty new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/modules/.mtn2git_empty diff --git a/modules/content_checker/.mtn2git_empty b/modules/content_checker/.mtn2git_empty new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/modules/content_checker/.mtn2git_empty diff --git a/modules/content_checker/__init__.py b/modules/content_checker/__init__.py new file mode 100644 index 0000000000..4304075ba7 --- /dev/null +++ b/modules/content_checker/__init__.py @@ -0,0 +1,40 @@ +# ex:ts=4:sw=4:sts=4:et +# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- +# +# +# Copyright (C) 2005 Holger Hans Peter Freyther +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# +# Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# Neither the name Holger Hans Peter Freyther nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +# IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +import content_checker + +__all__ = [ "create_test" ] + +def create_test(): + return content_checker.TestCase() diff --git a/modules/content_checker/content_checker.py b/modules/content_checker/content_checker.py new file mode 100644 index 0000000000..343e029919 --- /dev/null +++ b/modules/content_checker/content_checker.py @@ -0,0 +1,238 @@ +# ex:ts=4:sw=4:sts=4:et +# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- +# +# +# Copyright (C) 2005 Holger Hans Peter Freyther +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# +# Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# Neither the name Holger Hans Peter Freyther nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +# IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +from bittest import TestItem +from bb import data +import types + +# +# The tests are copied from the oelint.bbclass to this location +# + + +# quite simple without regexps +bad_signs = { + 'SRC_URI' : '?', # SRC_URI should not contain URLs like http://foo.foo?file=foo.tar.gz + 'RDEPENDS': 'kernel-module-' # According to reenoo this is always wrong +} + +# Test for the HOMEPAGE +def homepage1(): + return lambda fn,value : [None,TestItem(fn,False,"HOMEPAGE is not set %s" % value)] [value == 'unknown'] + +def homepage2(): + return lambda fn,value : [None,TestItem(fn,False,"HOMEPAGE doesn't start with http://")][not value.startswith("http://")] + +# Test for the MAINTAINER +def maintainer1(): + return lambda fn,value : [None,TestItem(fn,False, "explicit MAINTAINER is missing, using default"), None][value == "OpenEmbedded Team <oe@handhelds.org>"] + +def maintainer2(): + return lambda fn, value : [None,TestItem(fn,False,"You forgot to put an e-mail address into MAINTAINER"),None] [value.find("@") == -1] + + +# Check the licenses of the Files +valid_licenses = { + "GPL-2" : "GPLv2", + "GPL LGPL FDL" : True, + "GPL PSF" : True, + "GPL/QPL" : "GPL QPL", + "GPL QPL" : True, + "GPL" : True, + "GPLv2" : True, + "GPLV2" : "GPLv2", + "IBM" : True, + "LGPL GPL" : True, + "LGPL" : True, + "MIT" : True, + "OSL" : True, + "Perl" : True, + "Public Domain" : True, + "QPL" : True, + "Vendor" : True, + "BSD" : True, + "tickypip-levels" : True, + "unknown" : False, +} + +def license2(): + return lambda fn, value : [None,TestItem(fn,False,"LICENSE '%s' is not known" % value),None][not valid_licenses.has_key(value)] + +def license3(): + return lambda fn, value : [None,TestItem(fn,False,"LICENSE '%s' is not recommed, better use '%s'" % (value,valid_licenses[value])),None][valid_licenses[value] != True] +def license1(): + return lambda fn, value : [None,TestItem(fn,False,"LICENSE is not set %s" % value)][value == "unknown"] + +# Check the priorities here... +valid_priorities = { + "standard" : True, + "required" : True, + "optional" : True, + "extra" : True, +} + + +def priority1(): + return lambda fn, value : [None,TestItem(fn,False,"PRIORITY '%s' is not known" % value)][not valid_priorities.has_key(value)] + +def priority2(): + return lambda fn, value : [None,TestItem(fn,False,"PRIORITY '%s' is not recommed" % value)][valid_priorities[value]==False] + + +# Test the SECTION now +valid_sections = { + # Current Section Correct section + "apps" : True, + "audio" : True, + "base" : True, + "console/games" : True, + "console/net" : "console/network", + "console/network" : True, + "console/utils" : True, + "devel" : True, + "developing" : "devel", + "devel/python" : True, + "fonts" : True, + "games" : True, + "games/libs" : True, + "gnome/base" : True, + "gnome/libs" : True, + "gpe" : True, + "gpe/libs" : True, + "gui" : False, + "libc" : "libs", + "libs" : True, + "libs/net" : True, + "multimedia" : True, + "net" : "network", + "NET" : "network", + "network" : True, + "opie/applets" : True, + "opie/applications" : True, + "opie/base" : True, + "opie/codecs" : True, + "opie/decorations" : True, + "opie/fontfactories" : True, + "opie/fonts" : True, + "opie/games" : True, + "opie/help" : True, + "opie/inputmethods" : True, + "opie/libs" : True, + "opie/multimedia" : True, + "opie/pim" : True, + "opie/setting" : "opie/settings", + "opie/settings" : True, + "opie/Shell" : False, + "opie/styles" : True, + "opie/today" : True, + "scientific" : True, + "utils" : True, + "x11" : True, + "x11/libs" : True, + "x11/wm" : True, +} + +def section1(): + return lambda fn,value : [None,TestItem(fn,False,"SECTION '%s' is not known" % value)][not valid_sections.has_key(value)] +def section2(): + return lambda fn,value : [None,TestItem(fn,False,"SECTION '%s' is not reccomed use '%s' instead" % (value,valid_sections[value]))][valid_sections[value]!=True] + + + +# these are checks we execute on each variable +variable_checks = { + 'DESCRIPTION' : None, # we only want the presence check + 'HOMEPAGE' : [homepage1(),homepage2()], + 'LICENSE' : [license1(),license2(),license3()], + 'MAINTAINER' : [maintainer1(),maintainer2()], + 'SECTION' : [section1(),section2()], + 'PRIORITY' : [priority1(), priority2()], +} + +class TestCase: + """ + Check if keys contain weird expressions that are considered + error prone. + """ + + def __init__(self): + pass + + def test(self, file_name, file_data): + """ + Go through bad_signs and do reports + """ + results = [] + + # apply the heuristics + for sign in bad_signs.keys(): + try: + value = data.getVar(sign, file_data, True) + except: + try: + value = data.getVar(sign, file_data, False) + except: + pass + + if not value == None: + if bad_signs[sign] in value: + results.append( TestItem(file_name,False,"BAD sign found for %s." % sign)) + + # apply the variable content check + for variable in variable_checks.keys(): + value = data.getVar(variable, file_data, True) + + # is this require variable present + if value == None: + result.append( TestItem(file_name,False, "Required variable '%(variable)s' not found." % vars()) ) + else: + checks = variable_checks[variable] + # now check if we need to check a list of checks + if type(checks) == types.ListType: + for check in checks: + res = check(file_name, value) + # if one test failed we will stop here + if res: + results.append( res ) + print "Stopping the check for variable %s" % variable + break + elif checks: + res = checks(file_name, value) + if res: + results.append( res ) + + return results + + def test_name(self): + return "Content Checker Tool" diff --git a/modules/depends_checker/.mtn2git_empty b/modules/depends_checker/.mtn2git_empty new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/modules/depends_checker/.mtn2git_empty diff --git a/modules/depends_checker/__init__.py b/modules/depends_checker/__init__.py new file mode 100644 index 0000000000..077e607f13 --- /dev/null +++ b/modules/depends_checker/__init__.py @@ -0,0 +1,41 @@ +# ex:ts=4:sw=4:sts=4:et +# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- +# +# +# Copyright (C) 2005 Holger Hans Peter Freyther +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# +# Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# Neither the name Holger Hans Peter Freyther nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +# IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +import depends + +__all__ = [ + "create_test" +] +def create_test(): + return depends.TestCase() diff --git a/modules/depends_checker/depends.py b/modules/depends_checker/depends.py new file mode 100644 index 0000000000..07ce2a736e --- /dev/null +++ b/modules/depends_checker/depends.py @@ -0,0 +1,94 @@ +# ex:ts=4:sw=4:sts=4:et +# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- +# +# +# Copyright (C) 2006 Holger Hans Peter Freyther +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# +# Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# Neither the name Holger Hans Peter Freyther nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +# IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +from bittest import TestItem +from bb import data +from bb import utils + +class TestCase: + """ + Check if native packages have non native RDEPENDS + """ + + def __init__(self): + pass + + def test(self,file_name, file_data): + """ + Check if the RDEPENDS or RRECOMMENDS of a native + package includes non native packages + """ + if data.inherits_class("native", file_data): + def check_rdepends(key, base_var): + """ + Check the RDEPENDS/RRECOMMENDS for the key + """ + + copy = data.createCopy(file_data) + cases = [] + if "_${PN}" in key: + pn = data.getVar('PN', copy, True) + ov = data.getVar('OVERRIDES', copy, True) + data.setVar('OVERRIDES', '%s:%s' % (pn,ov), copy ) + data.update_data(copy) + key = base_var + + deps = data.getVar(key, copy, True).strip() + deps = utils.explode_deps(deps) + + for dep in deps: + if len(dep.strip()) != 0 and not "-native" in dep: + cases.append( TestItem(file_name,False,"Native package is %s'ing on non native package '%s'" % (key,dep)) ) + return cases + + # check every key with RDEPENDS + # this finds more RDEPENDS :) + cases = [] + for key in data.keys(file_data): + res = None + if key.startswith('RDEPENDS'): + res = check_rdepends(key, 'RDEPENDS') + elif key.startswith('RRECOMMENDS'): + res = check_rdepends(key, 'RRECOMMENDS') + + # add the result + if res: + cases += res + return cases + + def test_name(self): + """ + Retutnr a name for the test + """ + return "RDEPEND and RRECOMMENDS checker for native packages" diff --git a/modules/doc_checker/.mtn2git_empty b/modules/doc_checker/.mtn2git_empty new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/modules/doc_checker/.mtn2git_empty diff --git a/modules/doc_checker/__init__.py b/modules/doc_checker/__init__.py new file mode 100644 index 0000000000..24cbe845c3 --- /dev/null +++ b/modules/doc_checker/__init__.py @@ -0,0 +1,40 @@ +# ex:ts=4:sw=4:sts=4:et +# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- +# +# +# Copyright (C) 2005 Holger Hans Peter Freyther +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# +# Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# Neither the name Holger Hans Peter Freyther nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +# IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +import doc_checker + +__all__ = [ "create_test" ] + +def create_test(): + return doc_checker.TestCase() diff --git a/modules/doc_checker/doc_checker.py b/modules/doc_checker/doc_checker.py new file mode 100644 index 0000000000..18650cdc5c --- /dev/null +++ b/modules/doc_checker/doc_checker.py @@ -0,0 +1,74 @@ +# ex:ts=4:sw=4:sts=4:et +# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- +# +# +# Copyright (C) 2005 Holger Hans Peter Freyther +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# +# Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# Neither the name Holger Hans Peter Freyther nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +# IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +from bittest import TestItem + +import bb + + +# black list of KEYs that are not needed to have a documentation +_black_list = [] + +class TestCase: + """ + Check if variables carry a documentation. For each concrete bbfile + (which includes bbclasses) we will check if all keys are named. + """ + + def __init__(self): + """ + Construct the test case... + """ + pass + + def test(self, file_name, file_data): + """ + Now we will run the tests + """ + + results = [] + + # + # The big plot. We will go through every key of file_data + # and check if there is a doc Flag + # + for key in bb.data.keys(file_data): + flag = bb.data.getVarFlag(key,"doc", file_data) + if flag == None: + results.append( TestItem(file_name,False,"Attribute named '%s' lacks documentation." % key)) + + return results + + def test_name(self): + return "Documentation Checker Tool" diff --git a/modules/example/.mtn2git_empty b/modules/example/.mtn2git_empty new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/modules/example/.mtn2git_empty diff --git a/modules/example/__init__.py b/modules/example/__init__.py new file mode 100644 index 0000000000..661b31fff4 --- /dev/null +++ b/modules/example/__init__.py @@ -0,0 +1,41 @@ +# ex:ts=4:sw=4:sts=4:et +# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- +# +# +# Copyright (C) 2005 Holger Hans Peter Freyther +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# +# Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# Neither the name Holger Hans Peter Freyther nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +# IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +import example + +__all__ = [ + "create_test" +] +def create_test(): + return example.TestCase() diff --git a/modules/example/example.py b/modules/example/example.py new file mode 100644 index 0000000000..d91cba5ca7 --- /dev/null +++ b/modules/example/example.py @@ -0,0 +1,59 @@ +# ex:ts=4:sw=4:sts=4:et +# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- +# +# +# Copyright (C) 2005 Holger Hans Peter Freyther +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# +# Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# Neither the name Holger Hans Peter Freyther nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +# IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +from bittest import TestItem + +class TestCase: + """ + A simple test case + """ + + def __init__(self): + """ + Construct and initialize the test case + """ + + def test(self,file_name, file_data): + """ + Now run the test for file_name and the corresponding data. + You can use whatever you want + """ + + return TestItem(file_name,False,"The Test Failed") + + def test_name(self): + """ + Retutnr a name for the test + """ + return "Example Test" diff --git a/modules/patch_checker/.mtn2git_empty b/modules/patch_checker/.mtn2git_empty new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/modules/patch_checker/.mtn2git_empty diff --git a/modules/patch_checker/__init__.py b/modules/patch_checker/__init__.py new file mode 100644 index 0000000000..efa4665149 --- /dev/null +++ b/modules/patch_checker/__init__.py @@ -0,0 +1,42 @@ +#ifndef SOURCE_CHECKER/SOURCE_CHECKER.PY +#define SOURCE_CHECKER/SOURCE_CHECKER.PY +# ex:ts=4:sw=4:sts=4:et +# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- +# +# +# Copyright (C) 2005 Holger Hans Peter Freyther +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# +# Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# Neither the name Holger Hans Peter Freyther nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +# IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +import patch_checker + +__all__ = ["create_test"] + +def create_test(): + return patch_checker.TestCase() diff --git a/modules/patch_checker/patch_checker.py b/modules/patch_checker/patch_checker.py new file mode 100644 index 0000000000..e072f01408 --- /dev/null +++ b/modules/patch_checker/patch_checker.py @@ -0,0 +1,77 @@ +# ex:ts=4:sw=4:sts=4:et +# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- +# +# +# Copyright (C) 2005 Holger Hans Peter Freyther +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# +# Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# Neither the name Holger Hans Peter Freyther nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +# IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +from bittest import TestItem +import bb, sys + + +class TestCase: + def __init__(self): + pass + + def test_name(self): + return "Patch Checker" + + def test(self,file, data): + """ + Run the Test now... some duplication of the base.bbclass + """ + + error = None + + try: + bb.build.exec_func('do_unpack', data) + bb.build.exec_func('do_patch', data) + except bb.build.FuncFailed: + error = """Function failed +Distro: %s +Machine: %s +OS: %s +ARCH: %s +FPU: %s +""" % (bb.data.getVar('DISTRO',data),bb.data.getVar('MACHINE',data),bb.data.getVar('TARGET_OS',data, True),bb.data.getVar('TARGET_ARCH',data, True),bb.data.getVar('TARGET_FPU',data, True)) + except bb.build.EventException: + (type,value,traceback) = sys.exc_info() + e = value.event + error = """EventException %s +Distro: %s +Machine: %s +OS: %s +ARCH: %s +FPU: %s +""" % (bb.event.getName(e),bb.data.getVar('DISTRO',data),bb.data.getVar('MACHINE',data),bb.data.getVar('TARGET_OS',data, True),bb.data.getVar('TARGET_ARCH',data, True),bb.data.getVar('TARGET_FPU',data)) + + bb.build.exec_func('do_clean', data) + + return TestItem(file,error == None, error) diff --git a/modules/source_checker/.mtn2git_empty b/modules/source_checker/.mtn2git_empty new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/modules/source_checker/.mtn2git_empty diff --git a/modules/source_checker/__init__.py b/modules/source_checker/__init__.py new file mode 100644 index 0000000000..ef8c8b5e0b --- /dev/null +++ b/modules/source_checker/__init__.py @@ -0,0 +1,40 @@ +# ex:ts=4:sw=4:sts=4:et +# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- +# +# +# Copyright (C) 2005 Holger Hans Peter Freyther +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# +# Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# Neither the name Holger Hans Peter Freyther nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +# IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +import source_checker + +__all__ = [ "create_test" ] + +def create_test(): + return source_checker.TestCase() diff --git a/modules/source_checker/source_checker.py b/modules/source_checker/source_checker.py new file mode 100644 index 0000000000..5dfc7ceaba --- /dev/null +++ b/modules/source_checker/source_checker.py @@ -0,0 +1,80 @@ +# ex:ts=4:sw=4:sts=4:et +# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- +# +# +# Copyright (C) 2005 Holger Hans Peter Freyther +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# +# Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# Neither the name Holger Hans Peter Freyther nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +# IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +from bittest import TestItem +import bb +import os, sys + +class TestCase: + def __init__(self): + pass + + def test_name(self): + return "Source Checker" + + def generate_error(file, error): + (type,value,traceback) = sys.exc_info() + return TestItem(file,False,error % (value,type,traceback)) + generate_error = staticmethod(generate_error) + + def test(self,file, data): + # we run the tests + + src_uri = bb.data.getVar('SRC_URI', data, 1) + + if not src_uri: + return TestItem(file,True,"NO SRC_URI") + + try: + bb.fetch.init(src_uri.split(), data) + except bb.fetch.NoMethodError: + return TestCase.generate_error(file,"""No Method Exception %s +Type: %s +Traceback: %s +""") + try: + bb.fetch.go(data) + except bb.fetch.MissingParameterError: + return TestCase.generate_error(file,"""Missing Parameter Error %s +Type: %s +Traceback: %s +""") + except bb.fetch.FetchError: + return TestCase.generate_error(file,"""Fetch Error %s +Type: %s +Traceback: %s +""") + + return TestItem(file,True,"") + |