diff mbox series

[RFC,1/2] usergrouptests: Add initial useradd testing

Message ID 9dc02c0f89156ed4ce47350f90d44cb05e7d3897.1700746611.git.pidge@baylibre.com
State New
Headers show
Series useradd improvements | expand

Commit Message

Eilís 'pidge' Ní Fhlannagáin Nov. 23, 2023, 1:49 p.m. UTC
This commit tests for
https://bugzilla.yoctoproject.org/show_bug.cgi?id=13419
https://bugzilla.yoctoproject.org/show_bug.cgi?id=14961

Fixes for these are in following commits.

Signed-off-by: Eilís 'pidge' Ní Fhlannagáin <pidge@baylibre.com>
---
 .../selftest-users/creategroup1.bb            | 32 +++++++++++++++++++
 .../selftest-users/creategroup2.bb            | 32 +++++++++++++++++++
 .../selftest-users/useraddbadtask.bb          | 20 ++++++++++++
 .../lib/oeqa/selftest/cases/usergrouptests.py | 32 +++++++++++++++++++
 4 files changed, 116 insertions(+)
 create mode 100644 meta-selftest/recipes-test/selftest-users/creategroup1.bb
 create mode 100644 meta-selftest/recipes-test/selftest-users/creategroup2.bb
 create mode 100644 meta-selftest/recipes-test/selftest-users/useraddbadtask.bb
 create mode 100644 meta/lib/oeqa/selftest/cases/usergrouptests.py

Comments

Richard Purdie Nov. 27, 2023, 2:40 p.m. UTC | #1
On Thu, 2023-11-23 at 13:49 +0000, Eilís 'pidge' Ní Fhlannagáin wrote:
> This commit tests for
> https://bugzilla.yoctoproject.org/show_bug.cgi?id=13419
> https://bugzilla.yoctoproject.org/show_bug.cgi?id=14961
> 
> Fixes for these are in following commits.
> 
> Signed-off-by: Eilís 'pidge' Ní Fhlannagáin <pidge@baylibre.com>
> ---
>  .../selftest-users/creategroup1.bb            | 32 +++++++++++++++++++
>  .../selftest-users/creategroup2.bb            | 32 +++++++++++++++++++
>  .../selftest-users/useraddbadtask.bb          | 20 ++++++++++++
>  .../lib/oeqa/selftest/cases/usergrouptests.py | 32 +++++++++++++++++++
>  4 files changed, 116 insertions(+)
>  create mode 100644 meta-selftest/recipes-test/selftest-users/creategroup1.bb
>  create mode 100644 meta-selftest/recipes-test/selftest-users/creategroup2.bb
>  create mode 100644 meta-selftest/recipes-test/selftest-users/useraddbadtask.bb
>  create mode 100644 meta/lib/oeqa/selftest/cases/usergrouptests.py
> 
> diff --git a/meta-selftest/recipes-test/selftest-users/creategroup1.bb b/meta-selftest/recipes-test/selftest-users/creategroup1.bb
> new file mode 100644
> index 00000000000..2b0c443858c
> --- /dev/null
> +++ b/meta-selftest/recipes-test/selftest-users/creategroup1.bb
> @@ -0,0 +1,32 @@
> +SUMMARY = "creategroup pt 1"
> +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
> +
> +LICENSE = "MIT"
> +
> +DEPENDS:append = "coreutils-native"
> +
> +S = "${WORKDIR}"
> +
> +inherit useradd allarch
> +
> +USERADD_PACKAGES = "${PN}"
> +USERADD_PARAM:${PN} = "-u 5555 --gid grouptest gt1"
> +GROUPADD_PARAM:${PN} = "-r grouptest"
> +
> +TESTDIR = "${D}${sysconfdir}/creategroup"
> +
> +do_install() {
> +	install -d   ${TESTDIR}
> +	install -d   ${TESTDIR}/dir
> +	touch        ${TESTDIR}/file
> +	ln -s ./file ${TESTDIR}/symlink
> +	install -d   ${TESTDIR}/fifotest
> +	mkfifo       ${TESTDIR}/fifotest/fifo
> +    which chown
> +	chown    gt1:grouptest ${TESTDIR}/file
> +	chown -R gt1:grouptest ${TESTDIR}/dir
> +	chown -h gt1:grouptest ${TESTDIR}/symlink
> +	chown -R gt1:grouptest ${TESTDIR}/fifotest
> +}
> +
> +FILES:${PN} = "${sysconfdir}/creategroup/*"
> diff --git a/meta-selftest/recipes-test/selftest-users/creategroup2.bb b/meta-selftest/recipes-test/selftest-users/creategroup2.bb
> new file mode 100644
> index 00000000000..6f25592c09f
> --- /dev/null
> +++ b/meta-selftest/recipes-test/selftest-users/creategroup2.bb
> @@ -0,0 +1,32 @@
> +SUMMARY = "creategroup pt 2"
> +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
> +
> +LICENSE = "MIT"
> +
> +DEPENDS:append = "coreutils-native creategroup1"
> +
> +S = "${WORKDIR}"
> +
> +inherit useradd allarch
> +
> +USERADD_PACKAGES = "${PN}"
> +USERADD_PARAM:${PN} = "-u 5556 --gid grouptest gt2"
> +
> +TESTDIR = "${D}${sysconfdir}/creategroup"
> +
> +do_install() {
> +	install -d   ${TESTDIR}
> +	install -d   ${TESTDIR}/dir
> +	touch        ${TESTDIR}/file
> +	ln -s ./file ${TESTDIR}/symlink
> +	install -d   ${TESTDIR}/fifotest
> +	mkfifo       ${TESTDIR}/fifotest/fifo
> +
> +	chown    gt2:grouptest ${TESTDIR}/file
> +	chown -R gt2:grouptest ${TESTDIR}/dir
> +	chown -h gt2:grouptest ${TESTDIR}/symlink
> +	chown -R gt2:grouptest ${TESTDIR}/fifotest
> +}
> +
> +FILES:${PN} = "${sysconfdir}/creategroup/*"
> +
> diff --git a/meta-selftest/recipes-test/selftest-users/useraddbadtask.bb b/meta-selftest/recipes-test/selftest-users/useraddbadtask.bb
> new file mode 100644
> index 00000000000..99e04a80b34
> --- /dev/null
> +++ b/meta-selftest/recipes-test/selftest-users/useraddbadtask.bb
> @@ -0,0 +1,20 @@
> +SUMMARY = "UserAddBadTask"
> +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
> +
> +LICENSE = "MIT"
> +
> +DEPENDS:append = "coreutils-native"
> +
> +S = "${WORKDIR}"
> +
> +inherit useradd allarch
> +
> +USERADD_PACKAGES = "${PN}"
> +USERADD_PARAM:${PN} = "-u 5555 --gid groupaddtask useraddtask"
> +GROUPADD_PARAM:${PN} = "-r groupaddtask"
> +
> +do_badthingshappen() {
> + echo "foo"
> +}
> +
> +addtask badthingshappen after do_populate_sysroot before do_package
> diff --git a/meta/lib/oeqa/selftest/cases/usergrouptests.py b/meta/lib/oeqa/selftest/cases/usergrouptests.py
> new file mode 100644
> index 00000000000..14f7a0beab0
> --- /dev/null
> +++ b/meta/lib/oeqa/selftest/cases/usergrouptests.py
> @@ -0,0 +1,32 @@
> +#
> +# Copyright OpenEmbedded Contributors
> +#
> +# SPDX-License-Identifier: MIT
> +#
> +
> +from oeqa.selftest.case import OESelftestTestCase
> +from oeqa.utils.commands import bitbake, get_bb_var
> +import bb.utils
> +import os
> +
> +class UserGroupTests(OESelftestTestCase):
> +    def test_group_from_dep_package(self):
> +        self.logger.info("Building creategroup2")
> +        self.logger.info("Cleaning sstate for creategroup1 and creategroup2")
> +        bitbake(' creategroup1 creategroup2 -f -c cleansstate')

Unfortunately this test isn't safe for a shared sstate cache like we
have on the autobuilder since we should never use cleansstate there
without special handling (isolated cache). You would also never need -f
with clean*.

Instead you could do something like a "bitbake creategroup2 -C fetch"
if you always want it to rebuild.

Cheers,

Richard
diff mbox series

Patch

diff --git a/meta-selftest/recipes-test/selftest-users/creategroup1.bb b/meta-selftest/recipes-test/selftest-users/creategroup1.bb
new file mode 100644
index 00000000000..2b0c443858c
--- /dev/null
+++ b/meta-selftest/recipes-test/selftest-users/creategroup1.bb
@@ -0,0 +1,32 @@ 
+SUMMARY = "creategroup pt 1"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+LICENSE = "MIT"
+
+DEPENDS:append = "coreutils-native"
+
+S = "${WORKDIR}"
+
+inherit useradd allarch
+
+USERADD_PACKAGES = "${PN}"
+USERADD_PARAM:${PN} = "-u 5555 --gid grouptest gt1"
+GROUPADD_PARAM:${PN} = "-r grouptest"
+
+TESTDIR = "${D}${sysconfdir}/creategroup"
+
+do_install() {
+	install -d   ${TESTDIR}
+	install -d   ${TESTDIR}/dir
+	touch        ${TESTDIR}/file
+	ln -s ./file ${TESTDIR}/symlink
+	install -d   ${TESTDIR}/fifotest
+	mkfifo       ${TESTDIR}/fifotest/fifo
+    which chown
+	chown    gt1:grouptest ${TESTDIR}/file
+	chown -R gt1:grouptest ${TESTDIR}/dir
+	chown -h gt1:grouptest ${TESTDIR}/symlink
+	chown -R gt1:grouptest ${TESTDIR}/fifotest
+}
+
+FILES:${PN} = "${sysconfdir}/creategroup/*"
diff --git a/meta-selftest/recipes-test/selftest-users/creategroup2.bb b/meta-selftest/recipes-test/selftest-users/creategroup2.bb
new file mode 100644
index 00000000000..6f25592c09f
--- /dev/null
+++ b/meta-selftest/recipes-test/selftest-users/creategroup2.bb
@@ -0,0 +1,32 @@ 
+SUMMARY = "creategroup pt 2"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+LICENSE = "MIT"
+
+DEPENDS:append = "coreutils-native creategroup1"
+
+S = "${WORKDIR}"
+
+inherit useradd allarch
+
+USERADD_PACKAGES = "${PN}"
+USERADD_PARAM:${PN} = "-u 5556 --gid grouptest gt2"
+
+TESTDIR = "${D}${sysconfdir}/creategroup"
+
+do_install() {
+	install -d   ${TESTDIR}
+	install -d   ${TESTDIR}/dir
+	touch        ${TESTDIR}/file
+	ln -s ./file ${TESTDIR}/symlink
+	install -d   ${TESTDIR}/fifotest
+	mkfifo       ${TESTDIR}/fifotest/fifo
+
+	chown    gt2:grouptest ${TESTDIR}/file
+	chown -R gt2:grouptest ${TESTDIR}/dir
+	chown -h gt2:grouptest ${TESTDIR}/symlink
+	chown -R gt2:grouptest ${TESTDIR}/fifotest
+}
+
+FILES:${PN} = "${sysconfdir}/creategroup/*"
+
diff --git a/meta-selftest/recipes-test/selftest-users/useraddbadtask.bb b/meta-selftest/recipes-test/selftest-users/useraddbadtask.bb
new file mode 100644
index 00000000000..99e04a80b34
--- /dev/null
+++ b/meta-selftest/recipes-test/selftest-users/useraddbadtask.bb
@@ -0,0 +1,20 @@ 
+SUMMARY = "UserAddBadTask"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+LICENSE = "MIT"
+
+DEPENDS:append = "coreutils-native"
+
+S = "${WORKDIR}"
+
+inherit useradd allarch
+
+USERADD_PACKAGES = "${PN}"
+USERADD_PARAM:${PN} = "-u 5555 --gid groupaddtask useraddtask"
+GROUPADD_PARAM:${PN} = "-r groupaddtask"
+
+do_badthingshappen() {
+ echo "foo"
+}
+
+addtask badthingshappen after do_populate_sysroot before do_package
diff --git a/meta/lib/oeqa/selftest/cases/usergrouptests.py b/meta/lib/oeqa/selftest/cases/usergrouptests.py
new file mode 100644
index 00000000000..14f7a0beab0
--- /dev/null
+++ b/meta/lib/oeqa/selftest/cases/usergrouptests.py
@@ -0,0 +1,32 @@ 
+#
+# Copyright OpenEmbedded Contributors
+#
+# SPDX-License-Identifier: MIT
+#
+
+from oeqa.selftest.case import OESelftestTestCase
+from oeqa.utils.commands import bitbake, get_bb_var
+import bb.utils
+import os
+
+class UserGroupTests(OESelftestTestCase):
+    def test_group_from_dep_package(self):
+        self.logger.info("Building creategroup2")
+        self.logger.info("Cleaning sstate for creategroup1 and creategroup2")
+        bitbake(' creategroup1 creategroup2 -f -c cleansstate')
+        self.logger.info("Building creategroup2")
+        bitbake(' creategroup2')
+        self.logger.info("Wiping out TMPDIR")
+        tmpdir = get_bb_var('TMPDIR')
+        if os.path.exists(tmpdir):
+            bb.utils.remove(tmpdir, recurse=True)
+        self.logger.info("Packaging creategroup2")
+        self.assertTrue(bitbake(' creategroup2 -c package'))
+
+    def test_add_task_between_p_sysroot_and_package(self):
+        self.logger.info("Cleaning sstate for useraddbadtask")
+        bitbake(' useraddbadtask -f -c cleansstate')
+        self.logger.info("Building useraddbadtask")
+        # This is expected to fail due to bug #14961
+        self.assertTrue(bitbake(' useraddbadtask'))
+