From: Jermain Horsman <jermain.hors...@nedap.com> The test creates a layer setup, modifies it to use a branch, attempts a checkout using the modified file, it modifies the layers setup again to use a revision restoring it to the original state. A final checkout is skipped as the revision might not be present, additionally this functionality is covered by the setup test.
Signed-off-by: Jermain Horsman <jermain.hors...@nedap.com> --- meta/lib/oeqa/selftest/cases/bblayers.py | 58 +++++++++++++++++++++--- 1 file changed, 52 insertions(+), 6 deletions(-) diff --git a/meta/lib/oeqa/selftest/cases/bblayers.py b/meta/lib/oeqa/selftest/cases/bblayers.py index 8faa060234..bac4d5bbb5 100644 --- a/meta/lib/oeqa/selftest/cases/bblayers.py +++ b/meta/lib/oeqa/selftest/cases/bblayers.py @@ -142,6 +142,14 @@ class BitbakeLayers(OESelftestTestCase): jsonschema = os.path.join(get_bb_var('COREBASE'), 'meta/files/layers.schema.json') result = runCmd("{} {} -i {} {}".format(python, jsonvalidator, json, jsonschema)) + def validate_layerscheckout(self, path): + testcheckoutdir = os.path.join(self.builddir, 'test-layer-checkout') + result = runCmd('{}/setup-layers --destdir {}'.format(path, testcheckoutdir)) + # May not necessarily be named 'poky' or 'openembedded-core' + oecoredir = os.listdir(testcheckoutdir)[0] + testcheckoutfile = os.path.join(testcheckoutdir, oecoredir, "oe-init-build-env") + self.assertTrue(os.path.exists(testcheckoutfile), "File {} not found in test layer checkout".format(testcheckoutfile)) + def test_validate_examplelayersjson(self): json = os.path.join(get_bb_var('COREBASE'), "meta/files/layers.example.json") self.validate_layersjson(json) @@ -161,9 +169,47 @@ class BitbakeLayers(OESelftestTestCase): with open(jsonfile, 'w') as f: json.dump(data, f) - testcheckoutdir = os.path.join(self.builddir, 'test-layer-checkout') - result = runCmd('{}/setup-layers --destdir {}'.format(self.testlayer_path, testcheckoutdir)) - # May not necessarily be named 'poky' or 'openembedded-core' - oecoredir = os.listdir(testcheckoutdir)[0] - testcheckoutfile = os.path.join(testcheckoutdir, oecoredir, "oe-init-build-env") - self.assertTrue(os.path.exists(testcheckoutfile), "File {} not found in test layer checkout".format(testcheckoutfile)) + self.validate_layerscheckout(self.testlayer_path) + + def test_bitbakelayers_updatelayer(self): + result = runCmd('bitbake-layers create-layers-setup {}'.format(self.testlayer_path)) + jsonfile = os.path.join(self.testlayer_path, "setup-layers.json") + self.validate_layersjson(jsonfile) + + import json + with open(jsonfile) as f: + data = json.load(f) + test_repo = None + for s in data['sources']: + if 'contains_this_file' not in data['sources'][s].keys(): + test_repo = s + test_rev = data['sources'][s]['git-remote']['rev'] + test_desc = data['sources'][s]['git-remote']['describe'] + break + + self.assertTrue(test_repo, "No test repo found") + + result = runCmd('bitbake-layers update-layers-setup {json} {repo} --branch'.format(json=jsonfile, repo=test_repo)) + self.validate_layersjson(jsonfile) + + with open(jsonfile) as f: + data = json.load(f) + + curr_rev = data['sources'][test_repo]['git-remote']['rev'] + curr_desc = data['sources'][test_repo]['git-remote']['describe'] + + self.assertEqual(curr_rev, '', "Revision not cleared: '{}'".format(curr_rev)) + self.assertEqual(curr_desc, '', "Describe not cleared: '{}'".format(curr_desc)) + + self.validate_layerscheckout(self.testlayer_path) + + result = runCmd('bitbake-layers update-layers-setup {json} {repo}'.format(json=jsonfile, repo=test_repo)) + self.validate_layersjson(jsonfile) + + with open(jsonfile) as f: + data = json.load(f) + + curr_rev = data['sources'][test_repo]['git-remote']['rev'] + curr_desc = data['sources'][test_repo]['git-remote']['describe'] + self.assertEqual(curr_rev, test_rev, "Revision incorrect: '{}', expected '{}'".format(curr_rev, test_rev)) + self.assertEqual(curr_desc, test_desc, "Describe incorrect: '{}', expected '{}'".format(curr_desc, test_desc)) -- 2.42.0.windows.2
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#190297): https://lists.openembedded.org/g/openembedded-core/message/190297 Mute This Topic: https://lists.openembedded.org/mt/102444612/21656 Group Owner: openembedded-core+ow...@lists.openembedded.org Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-