From f49042e707d641b59a71c687374b76df97c64c34 Mon Sep 17 00:00:00 2001 From: Paul Eggleton Date: Thu, 31 Aug 2017 11:54:16 +1200 Subject: oe-selftest: tinfoil: add a test for variable history I recently found that variable history wasn't working properly for recipes when we enable history tracking, resulting in minor functionality loss in devtool upgrade, so add a test to ensure this doesn't regress now that it's fixed. Signed-off-by: Paul Eggleton Signed-off-by: Richard Purdie --- meta/lib/oeqa/selftest/cases/tinfoil.py | 34 +++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'meta/lib') diff --git a/meta/lib/oeqa/selftest/cases/tinfoil.py b/meta/lib/oeqa/selftest/cases/tinfoil.py index 471517fb29..f889a47b26 100644 --- a/meta/lib/oeqa/selftest/cases/tinfoil.py +++ b/meta/lib/oeqa/selftest/cases/tinfoil.py @@ -195,3 +195,37 @@ class TinfoilTests(OESelftestTestCase): tinfoil.config_data.appendVar('OVERRIDES', ':overrideone') value = tinfoil.config_data.getVar('TESTVAR') self.assertEqual(value, 'one', 'Variable overrides not functioning correctly') + + def test_variable_history(self): + # Basic test to ensure that variable history works when tracking=True + with bb.tinfoil.Tinfoil(tracking=True) as tinfoil: + tinfoil.prepare(config_only=False, quiet=2) + # Note that _tracking for any datastore we get will be + # false here, that's currently expected - so we can't check + # for that + history = tinfoil.config_data.varhistory.variable('DL_DIR') + for entry in history: + if entry['file'].endswith('/bitbake.conf'): + if entry['op'] in ['set', 'set?']: + break + else: + self.fail('Did not find history entry setting DL_DIR in bitbake.conf. History: %s' % history) + # Check it works for recipes as well + testrecipe = 'zlib' + rd = tinfoil.parse_recipe(testrecipe) + history = rd.varhistory.variable('LICENSE') + bbfound = -1 + recipefound = -1 + for i, entry in enumerate(history): + if entry['file'].endswith('/bitbake.conf'): + if entry['detail'] == 'INVALID' and entry['op'] in ['set', 'set?']: + bbfound = i + elif entry['file'].endswith('.bb'): + if entry['op'] == 'set': + recipefound = i + if bbfound == -1: + self.fail('Did not find history entry setting LICENSE in bitbake.conf parsing %s recipe. History: %s' % (testrecipe, history)) + if recipefound == -1: + self.fail('Did not find history entry setting LICENSE in %s recipe. History: %s' % (testrecipe, history)) + if bbfound > recipefound: + self.fail('History entry setting LICENSE in %s recipe and in bitbake.conf in wrong order. History: %s' % (testrecipe, history)) -- cgit 1.2.3-korg