aboutsummaryrefslogtreecommitdiffstats
path: root/meta/lib/oeqa/selftest/devtool.py
diff options
context:
space:
mode:
authorOla x Nilsson <ola.x.nilsson@axis.com>2016-12-22 14:16:33 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2017-01-09 13:34:29 +0000
commit58a31d8dd7293f14c70e56ec9639c420d15e7dfc (patch)
tree13d455d12afc24e881d4e0a92900d1c86d7f6ff8 /meta/lib/oeqa/selftest/devtool.py
parent8abbaba1931e2cb2b87aa733aa9a3e8eb359b500 (diff)
downloadopenembedded-core-contrib-58a31d8dd7293f14c70e56ec9639c420d15e7dfc.tar.gz
oe-selftest: devtool: Reverting a change should trigger rebuild
Add code to verify that not only does a change trigger a build, but so does reverting that change. Reverting a change in a devtool managed git repo may cause the current checksum to match the checksum of a previous build, which will cause bitbake to skip builds that are needed. Signed-off-by: Ross Burton <ross.burton@intel.com>
Diffstat (limited to 'meta/lib/oeqa/selftest/devtool.py')
-rw-r--r--meta/lib/oeqa/selftest/devtool.py54
1 files changed, 38 insertions, 16 deletions
diff --git a/meta/lib/oeqa/selftest/devtool.py b/meta/lib/oeqa/selftest/devtool.py
index 19c5ccf60b..a3beefa2c2 100644
--- a/meta/lib/oeqa/selftest/devtool.py
+++ b/meta/lib/oeqa/selftest/devtool.py
@@ -437,17 +437,33 @@ class DevtoolTests(DevtoolBase):
# Check git repo
self._check_src_repo(tempdir)
# Try building
- bitbake('mdadm')
+ def list_stamps(globsuffix='*'):
+ stampprefix = get_bb_var('STAMP', 'mdadm')
+ self.assertTrue(stampprefix, 'Unable to get STAMP value for recipe mdadm')
+ return glob.glob(stampprefix + globsuffix)
+
+ numstamps = len(list_stamps('.do_compile.*'))
+ self.assertEqual(numstamps, 0, 'do_compile stamps before first build')
+ for x in range(10):
+ bitbake('mdadm')
+ nowstamps = len(list_stamps('.do_compile.*'))
+ if nowstamps == numstamps:
+ break
+ numstamps = nowstamps
+ else:
+ self.fail('build did not stabilize in 10 iterations')
+
# Try making (minor) modifications to the source
modfile = os.path.join(tempdir, 'mdadm.8.in')
result = runCmd("sed -i 's!^\.TH.*!.TH MDADM 8 \"\" v9.999-custom!' %s" % modfile)
- sedline = ''
- with open(modfile, 'r') as f:
- for line in f:
- if line.startswith('.TH'):
- sedline = line.rstrip()
- break
- self.assertEqual(sedline, '.TH MDADM 8 "" v9.999-custom', 'man .in file not modified (sed failed)')
+
+ def check_TH_line(checkfile, expected, message):
+ with open(checkfile, 'r') as f:
+ for line in f:
+ if line.startswith('.TH'):
+ self.assertEqual(line.rstrip(), expected, message)
+
+ check_TH_line(modfile, '.TH MDADM 8 "" v9.999-custom', 'man .in file not modified (sed failed)')
bitbake('mdadm -c package')
pkgd = get_bb_var('PKGD', 'mdadm')
self.assertTrue(pkgd, 'Could not query PKGD variable')
@@ -456,18 +472,24 @@ class DevtoolTests(DevtoolBase):
if mandir[0] == '/':
mandir = mandir[1:]
manfile = os.path.join(pkgd, mandir, 'man8', 'mdadm.8')
- with open(manfile, 'r') as f:
- for line in f:
- if line.startswith('.TH'):
- self.assertEqual(line.rstrip(), '.TH MDADM 8 "" v9.999-custom', 'man file not modified. man searched file path: %s' % manfile)
+ check_TH_line(manfile, '.TH MDADM 8 "" v9.999-custom', 'man file not modified. man searched file path: %s' % manfile)
+ # Test reverting the change
+ result = runCmd("git -C %s checkout -- %s" % (tempdir, modfile))
+ check_TH_line(modfile, '.TH MDADM 8 "" v3.4', 'man .in file not restored (git failed)')
+ bitbake('mdadm -c package')
+ pkgd = get_bb_var('PKGD', 'mdadm')
+ self.assertTrue(pkgd, 'Could not query PKGD variable')
+ mandir = get_bb_var('mandir', 'mdadm')
+ self.assertTrue(mandir, 'Could not query mandir variable')
+ if mandir[0] == '/':
+ mandir = mandir[1:]
+ manfile = os.path.join(pkgd, mandir, 'man8', 'mdadm.8')
+ check_TH_line(manfile, '.TH MDADM 8 "" v3.4', 'man file not updated. man searched file path: %s' % manfile)
# Test devtool reset
- stampprefix = get_bb_var('STAMP', 'mdadm')
result = runCmd('devtool reset mdadm')
result = runCmd('devtool status')
self.assertNotIn('mdadm', result.output)
- self.assertTrue(stampprefix, 'Unable to get STAMP value for recipe mdadm')
- matches = glob.glob(stampprefix + '*')
- self.assertFalse(matches, 'Stamp files exist for recipe mdadm that should have been cleaned')
+ self.assertFalse(list_stamps(), 'Stamp files exist for recipe mdadm that should have been cleaned')
@testcase(1166)
def test_devtool_modify_invalid(self):