selftest/devtool: add devtool upgrade selftest for recipes with git submodules

Tests [YOCTO #15943]

Move code from test_devtool_upgrade_git() into separate, local function.
Add a test_devtool_upgrade_gitsm() selftest for devtool.
Add recipes for testing gitsm components.

(From OE-Core rev: c996801af3a22f50955ed4e47220461d6d243a3b)

Signed-off-by: Tobias Pistora <pistora.tobias@gmail.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Tobias Pistora 2025-08-13 11:20:42 +02:00 committed by Richard Purdie
parent 4c7b000732
commit 921faf3246
3 changed files with 70 additions and 3 deletions

View File

@ -0,0 +1,32 @@
SUMMARY = "Test recipe for fetching git submodules"
HOMEPAGE = "http://git.yoctoproject.org/cgit/cgit.cgi/git-submodule-test/"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
INHIBIT_DEFAULT_DEPS = "1"
# Note: this is intentionally not the latest version in the original .bb
SRCREV = "132fea6e4dee56b61bcf5721c94e8b2445c6a017"
PV = "0.1+git"
PR = "r2"
SRC_URI = "gitsm://git.yoctoproject.org/git-submodule-test;branch=master"
UPSTREAM_CHECK_COMMITS = "1"
RECIPE_NO_UPDATE_REASON = "This recipe is used to test devtool upgrade feature"
EXCLUDE_FROM_WORLD = "1"
do_test_git_as_user() {
cd ${S}
git status
git submodule status
}
addtask test_git_as_user after do_unpack
fakeroot do_test_git_as_root() {
cd ${S}
git status
git submodule status
}
do_test_git_as_root[depends] += "virtual/fakeroot-native:do_populate_sysroot"
addtask test_git_as_root after do_unpack

View File

@ -0,0 +1,31 @@
SUMMARY = "Test recipe for fetching git submodules"
HOMEPAGE = "http://git.yoctoproject.org/cgit/cgit.cgi/git-submodule-test/"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
INHIBIT_DEFAULT_DEPS = "1"
# Note: this is intentionally not the latest version in the original .bb
SRCREV = "a2885dd7d25380d23627e7544b7bbb55014b16ee"
PV = "0.1+git"
SRC_URI = "gitsm://git.yoctoproject.org/git-submodule-test;branch=master"
UPSTREAM_CHECK_COMMITS = "1"
RECIPE_NO_UPDATE_REASON = "This recipe is used to test devtool upgrade feature"
EXCLUDE_FROM_WORLD = "1"
do_test_git_as_user() {
cd ${S}
git status
git submodule status
}
addtask test_git_as_user after do_unpack
fakeroot do_test_git_as_root() {
cd ${S}
git status
git submodule status
}
do_test_git_as_root[depends] += "virtual/fakeroot-native:do_populate_sysroot"
addtask test_git_as_root after do_unpack

View File

@ -1958,13 +1958,11 @@ class DevtoolUpgradeTests(DevtoolBase):
self.assertNotIn(recipe, result.output)
self.assertNotExists(os.path.join(self.workspacedir, 'recipes', recipe), 'Recipe directory should not exist after resetting')
def test_devtool_upgrade_git(self):
def _test_devtool_upgrade_git_by_recipe(self, recipe, commit):
# Check preconditions
self.assertTrue(not os.path.exists(self.workspacedir), 'This test cannot be run with a workspace directory under the build directory')
self.track_for_cleanup(self.workspacedir)
self.add_command_to_tearDown('bitbake-layers remove-layer */workspace')
recipe = 'devtool-upgrade-test2'
commit = '6cc6077a36fe2648a5f993fe7c16c9632f946517'
oldrecipefile = get_bb_var('FILE', recipe)
tempdir = tempfile.mkdtemp(prefix='devtoolqa')
self.track_for_cleanup(tempdir)
@ -1994,6 +1992,12 @@ class DevtoolUpgradeTests(DevtoolBase):
self.assertNotIn(recipe, result.output)
self.assertNotExists(os.path.join(self.workspacedir, 'recipes', recipe), 'Recipe directory should not exist after resetting')
def test_devtool_upgrade_git(self):
self._test_devtool_upgrade_git_by_recipe('devtool-upgrade-test2', '6cc6077a36fe2648a5f993fe7c16c9632f946517')
def test_devtool_upgrade_gitsm(self):
self._test_devtool_upgrade_git_by_recipe('devtool-upgrade-test5', 'a2885dd7d25380d23627e7544b7bbb55014b16ee')
def test_devtool_upgrade_drop_md5sum(self):
# Check preconditions
self.assertTrue(not os.path.exists(self.workspacedir), 'This test cannot be run with a workspace directory under the build directory')