summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta-selftest/recipes-test/selftest-chown/selftest-chown.bb25
-rw-r--r--meta/lib/oeqa/selftest/cases/package.py23
2 files changed, 48 insertions, 0 deletions
diff --git a/meta-selftest/recipes-test/selftest-chown/selftest-chown.bb b/meta-selftest/recipes-test/selftest-chown/selftest-chown.bb
new file mode 100644
index 0000000000..87bf9438b8
--- /dev/null
+++ b/meta-selftest/recipes-test/selftest-chown/selftest-chown.bb
@@ -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/*"
diff --git a/meta/lib/oeqa/selftest/cases/package.py b/meta/lib/oeqa/selftest/cases/package.py
index b87f8dc3e2..3010b1af49 100644
--- a/meta/lib/oeqa/selftest/cases/package.py
+++ b/meta/lib/oeqa/selftest/cases/package.py
@@ -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)