mirror of
https://git.yoctoproject.org/poky
synced 2026-01-29 21:08:42 +01:00
selftest/package: Add test to ensure ownership is preserved
Yocto Bug: https://bugzilla.yoctoproject.org/show_bug.cgi?id=13806 Add test_preserve_ownership to selftest/package. This test creates a file, a directory and a symbolic link and changes ownership, then compares with them installed in rootfs to ensure ownership is preserved. [Test without a commit 'bitbake: lib/bb/utils.py: Preserve ownership of symlink'] | 2020-03-14 10:01:14,519 - oe-selftest - INFO - test_preserve_ownership (package.PackageTests) | 2020-03-14 10:56:44,612 - oe-selftest - INFO - Check ownership of /etc/selftest-chown/file | 2020-03-14 10:56:44,770 - oe-selftest - INFO - Check ownership of /etc/selftest-chown/dir | 2020-03-14 10:56:44,822 - oe-selftest - INFO - Check ownership of /etc/selftest-chown/symlink | 2020-03-14 10:56:44,879 - oe-selftest - ERROR - Incrrect ownership /etc/selftest-chown/symlink [root:root] | 2020-03-14 10:56:45,884 - oe-selftest - INFO - ... FAIL [Test with a commit 'bitbake: lib/bb/utils.py: Preserve ownership of symlink'] | 2020-03-14 10:58:49,599 - oe-selftest - INFO - test_preserve_ownership (package.PackageTests) | 2020-03-14 11:51:39,947 - oe-selftest - INFO - Check ownership of /etc/selftest-chown/file | 2020-03-14 11:51:40,013 - oe-selftest - INFO - Check ownership of /etc/selftest-chown/dir | 2020-03-14 11:51:40,063 - oe-selftest - INFO - Check ownership of /etc/selftest-chown/symlink | 2020-03-14 11:51:41,118 - oe-selftest - INFO - ... ok (From OE-Core rev: 88c1824468109d0f78d5fee7b71baa1f3944db7f) Signed-off-by: Daisuke Yamane <daisuke.yamane@cybertrust.co.jp> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
6efa038c01
commit
caa530a277
25
meta-selftest/recipes-test/selftest-chown/selftest-chown.bb
Normal file
25
meta-selftest/recipes-test/selftest-chown/selftest-chown.bb
Normal file
@@ -0,0 +1,25 @@
|
||||
SUMMARY = "selftest chown"
|
||||
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
|
||||
|
||||
LICENSE = "MIT"
|
||||
|
||||
S = "${WORKDIR}"
|
||||
|
||||
inherit useradd allarch
|
||||
|
||||
USERADD_PACKAGES = "${PN}"
|
||||
USERADD_PARAM_${PN} = "-u 1234 -M test"
|
||||
TESTDIR = "${D}${sysconfdir}/selftest-chown"
|
||||
|
||||
do_install() {
|
||||
install -d ${TESTDIR}
|
||||
install -d ${TESTDIR}/dir
|
||||
touch ${TESTDIR}/file
|
||||
ln -s ./file ${TESTDIR}/symlink
|
||||
|
||||
chown test:test ${TESTDIR}/file
|
||||
chown -R test:test ${TESTDIR}/dir
|
||||
chown -h test:test ${TESTDIR}/symlink
|
||||
}
|
||||
|
||||
FILES_${PN} = "${sysconfdir}/selftest-chown/*"
|
||||
@@ -148,3 +148,26 @@ class PackageTests(OESelftestTestCase):
|
||||
'/usr/libexec/hello4']:
|
||||
if not gdbtest(qemu, binary):
|
||||
self.fail('GDB %s failed' % binary)
|
||||
|
||||
def test_preserve_ownership(self):
|
||||
import os, stat, oe.cachedpath
|
||||
features = 'IMAGE_INSTALL_append = " selftest-chown"\n'
|
||||
self.write_config(features)
|
||||
bitbake("core-image-minimal")
|
||||
|
||||
sysconfdir = get_bb_var('sysconfdir', 'selftest-chown')
|
||||
def check_ownership(qemu, gid, uid, path):
|
||||
self.logger.info("Check ownership of %s", path)
|
||||
status, output = qemu.run_serial(r'/bin/stat -c "%U %G" ' + path, timeout=60)
|
||||
output = output.split(" ")
|
||||
if output[0] != uid or output[1] != gid :
|
||||
self.logger.error("Incrrect ownership %s [%s:%s]", path, output[0], output[1])
|
||||
return False
|
||||
return True
|
||||
|
||||
with runqemu('core-image-minimal') as qemu:
|
||||
for path in [ sysconfdir + "/selftest-chown/file",
|
||||
sysconfdir + "/selftest-chown/dir",
|
||||
sysconfdir + "/selftest-chown/symlink"]:
|
||||
if not check_ownership(qemu, "test", "test", path):
|
||||
self.fail('Test ownership %s failed' % path)
|
||||
|
||||
Reference in New Issue
Block a user