| # |
| # Copyright OpenEmbedded Contributors |
| # |
| # SPDX-License-Identifier: MIT |
| # |
| |
| import os |
| import shutil |
| import tempfile |
| |
| from oeqa.selftest.case import OESelftestTestCase |
| from oeqa.utils.commands import get_bb_var, runCmd |
| |
| class ExternalSrc(OESelftestTestCase): |
| # test that srctree_hash_files does not crash |
| # we should be actually checking do_compile[file-checksums] but oeqa currently does not support it |
| # so we check only that a recipe with externalsrc can be parsed |
| def test_externalsrc_srctree_hash_files(self): |
| test_recipe = "git-submodule-test" |
| git_url = "git://git.yoctoproject.org/git-submodule-test" |
| externalsrc_dir = tempfile.TemporaryDirectory(prefix="externalsrc").name |
| |
| self.write_config( |
| """ |
| INHERIT += "externalsrc" |
| EXTERNALSRC:pn-%s = "%s" |
| """ % (test_recipe, externalsrc_dir) |
| ) |
| |
| # test with git without submodules |
| runCmd('git clone %s %s' % (git_url, externalsrc_dir)) |
| os.unlink(externalsrc_dir + "/.gitmodules") |
| open(".gitmodules", 'w').close() # local file .gitmodules in cwd should not affect externalsrc parsing |
| self.assertEqual(get_bb_var("S", test_recipe), externalsrc_dir, msg = "S does not equal to EXTERNALSRC") |
| os.unlink(".gitmodules") |
| |
| # test with git with submodules |
| runCmd('git checkout .gitmodules', cwd=externalsrc_dir) |
| runCmd('git submodule update --init --recursive', cwd=externalsrc_dir) |
| self.assertEqual(get_bb_var("S", test_recipe), externalsrc_dir, msg = "S does not equal to EXTERNALSRC") |
| |
| # test without git |
| shutil.rmtree(os.path.join(externalsrc_dir, ".git")) |
| self.assertEqual(get_bb_var("S", test_recipe), externalsrc_dir, msg = "S does not equal to EXTERNALSRC") |