diff options
author | Paul Eggleton <paul.eggleton@linux.intel.com> | 2017-09-19 15:57:07 +1200 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2017-09-21 11:34:08 +0100 |
commit | 2a6126a115f10750ea89f95629d3699ad41c5665 (patch) | |
tree | f3b795a5b5a5a8228256bf22dcfd335fb3165d1f /scripts/lib/checklayer/cases/common.py | |
parent | 52d0f351062da730055ffc6b953ff4e68ddb437f (diff) | |
download | openembedded-core-2a6126a115f10750ea89f95629d3699ad41c5665.tar.gz openembedded-core-2a6126a115f10750ea89f95629d3699ad41c5665.tar.bz2 openembedded-core-2a6126a115f10750ea89f95629d3699ad41c5665.zip |
scripts: rename yocto-compat-layer to remove "compatible" nomenclature
"Yocto Project Compatible" [1] is a programme which requires you meet
specific criteria including going through an application process - it is
not sufficient simply to run the script we have created here and have it
produce no warnings/errors. To avoid people being confused by the fact
that this script uses the term "compatible" or variations thereof,
substitute usage of that word with "check" instead. The functionality of
the script is unchanged.
[1] https://www.yoctoproject.org/ecosystem/yocto-project-branding-program
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Diffstat (limited to 'scripts/lib/checklayer/cases/common.py')
-rw-r--r-- | scripts/lib/checklayer/cases/common.py | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/scripts/lib/checklayer/cases/common.py b/scripts/lib/checklayer/cases/common.py new file mode 100644 index 0000000000..a13c1088f0 --- /dev/null +++ b/scripts/lib/checklayer/cases/common.py @@ -0,0 +1,53 @@ +# Copyright (C) 2017 Intel Corporation +# Released under the MIT license (see COPYING.MIT) + +import glob +import os +import unittest +from checklayer import get_signatures, LayerType, check_command, get_depgraph, compare_signatures +from checklayer.case import OECheckLayerTestCase + +class CommonCheckLayer(OECheckLayerTestCase): + def test_readme(self): + # The top-level README file may have a suffix (like README.rst or README.txt). + readme_files = glob.glob(os.path.join(self.tc.layer['path'], 'README*')) + self.assertTrue(len(readme_files) > 0, + msg="Layer doesn't contains README file.") + + # There might be more than one file matching the file pattern above + # (for example, README.rst and README-COPYING.rst). The one with the shortest + # name is considered the "main" one. + readme_file = sorted(readme_files)[0] + data = '' + with open(readme_file, 'r') as f: + data = f.read() + self.assertTrue(data, + msg="Layer contains a README file but it is empty.") + + def test_parse(self): + check_command('Layer %s failed to parse.' % self.tc.layer['name'], + 'bitbake -p') + + def test_show_environment(self): + check_command('Layer %s failed to show environment.' % self.tc.layer['name'], + 'bitbake -e') + + def test_world(self): + ''' + "bitbake world" is expected to work. test_signatures does not cover that + because it is more lenient and ignores recipes in a world build that + are not actually buildable, so here we fail when "bitbake -S none world" + fails. + ''' + get_signatures(self.td['builddir'], failsafe=False) + + def test_signatures(self): + if self.tc.layer['type'] == LayerType.SOFTWARE and \ + not self.tc.test_software_layer_signatures: + raise unittest.SkipTest("Not testing for signature changes in a software layer %s." \ + % self.tc.layer['name']) + + curr_sigs, _ = get_signatures(self.td['builddir'], failsafe=True) + msg = compare_signatures(self.td['sigs'], curr_sigs) + if msg is not None: + self.fail('Adding layer %s changed signatures.\n%s' % (self.tc.layer['name'], msg)) |