mirror of
git://git.openembedded.org/meta-openembedded
synced 2025-12-31 13:38:06 +00:00
unionfs-fuse: add ptest support
It takes about a second to execute. Added two patches: - One adapts the testuite to ptest, to test the installed binary instead of testing the one from the build folder. - Another that fixes a bug in unionfsctl, which made the test fail. This patch is submitted upstream. Sample output: root@qemux86-64:~# ptest-runner START: ptest-runner 2025-12-26T19:03 BEGIN: /usr/lib/unionfs-fuse/ptest ptestuser:!:20448:0:99999:7::: PASS: test_all.IOCTL_TestCase.test_debug PASS: test_all.IOCTL_TestCase.test_wrong_args PASS: test_all.UnionFS_Help.test_help [...many lines...] PASS: test_all.UnionFS_RW_RW_PreserveBranch_TestCase.test_permissions_after_creating_directories PASS: test_all.UnionFS_Sync.test_sync PASS: test_all.UnionFS_Version.test_help ============================================================================ Testsuite summary DURATION: 0 END: /usr/lib/unionfs-fuse/ptest 2025-12-26T19:03 STOP: ptest-runner TOTAL: 1 FAIL: 0 Signed-off-by: Gyorgy Sarvari <skandigraun@gmail.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
This commit is contained in:
parent
d53205ad36
commit
cecee4bb94
@ -8,6 +8,7 @@
|
||||
|
||||
PTESTS_FAST_META_FILESYSTEMS = "\
|
||||
e2tools \
|
||||
unionfs-fuse \
|
||||
"
|
||||
|
||||
PTESTS_SLOW_META_FILESYSTEMS = "\
|
||||
|
||||
@ -0,0 +1,43 @@
|
||||
From 8de40703857e63483a5c1b83ee7a5b6323c0b7d3 Mon Sep 17 00:00:00 2001
|
||||
From: Gyorgy Sarvari <skandigraun@gmail.com>
|
||||
Date: Fri, 26 Dec 2025 19:50:20 +0100
|
||||
Subject: [PATCH] adapt tests to ptest
|
||||
|
||||
The tests are expected to be executed after compilation, and
|
||||
they look for the tested binaries in the build folder. However
|
||||
for ptests we want to test the already installed binaries,
|
||||
so change the tests to use them.
|
||||
|
||||
Also, adapt the fusermount executable name to what's installed
|
||||
in the ptest images.
|
||||
|
||||
Upstream-Status: Inappropriate [oe-specific]
|
||||
Signed-off-by: Gyorgy Sarvari <skandigraun@gmail.com>
|
||||
---
|
||||
test_all.py | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/test_all.py b/test_all.py
|
||||
index 6ead5b4..bb167a9 100755
|
||||
--- a/test_all.py
|
||||
+++ b/test_all.py
|
||||
@@ -41,8 +41,8 @@ def get_osxfuse_unionfs_mounts():
|
||||
|
||||
class Common:
|
||||
def setUp(self):
|
||||
- self.unionfs_path = os.path.abspath('src/unionfs')
|
||||
- self.unionfsctl_path = os.path.abspath('src/unionfsctl')
|
||||
+ self.unionfs_path = 'unionfs'
|
||||
+ self.unionfsctl_path = 'unionfsctl'
|
||||
|
||||
self.tmpdir = tempfile.mkdtemp()
|
||||
self.original_cwd = os.getcwd()
|
||||
@@ -81,7 +81,7 @@ class Common:
|
||||
if platform.system() == 'Darwin':
|
||||
call('umount %s' % self.mount_device)
|
||||
else:
|
||||
- call('fusermount -u union')
|
||||
+ call('fusermount3 -u union')
|
||||
|
||||
os.chdir(self.original_cwd)
|
||||
shutil.rmtree(self.tmpdir)
|
||||
@ -0,0 +1,58 @@
|
||||
From bf552c479a0c0b0ef2d52d8456030c56b8cc6dbb Mon Sep 17 00:00:00 2001
|
||||
From: Gyorgy Sarvari <skandigraun@gmail.com>
|
||||
Date: Fri, 26 Dec 2025 19:33:54 +0100
|
||||
Subject: [PATCH] fix debug ioctl call
|
||||
|
||||
When calling the ioctl to set a debug file, the ioctl expects to receive a datatype
|
||||
that is specified in the ioctl definition: char[PATHLEN_MAX]
|
||||
|
||||
However when passing the pointer from getopts, this is only true if the passed path
|
||||
has the maximal allowed length. Since usually this path is shorter than the max,
|
||||
the kernel is trying to read over the end of the argument, and returns "EFAULT/Bad address".
|
||||
|
||||
To solve this, copy the argument to a buffer that has the exact size of what the ioctl
|
||||
expects, and pass this buffer to the ioctl.
|
||||
|
||||
Upstream-Status: Submitted [https://github.com/rpodgorny/unionfs-fuse/pull/164]
|
||||
Signed-off-by: Gyorgy Sarvari <skandigraun@gmail.com>
|
||||
---
|
||||
src/unionfsctl.c | 11 +++++++----
|
||||
1 file changed, 7 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/src/unionfsctl.c b/src/unionfsctl.c
|
||||
index 74c4d33..efed505 100644
|
||||
--- a/src/unionfsctl.c
|
||||
+++ b/src/unionfsctl.c
|
||||
@@ -44,25 +44,28 @@ int main(int argc, char **argv) {
|
||||
|
||||
int opt;
|
||||
const char* argument_param;
|
||||
+ char debug_file[PATHLEN_MAX];
|
||||
int debug_on_off;
|
||||
int ioctl_res;
|
||||
while ((opt = getopt(argc, argv, "d:p:")) != -1) {
|
||||
switch (opt) {
|
||||
case 'p':
|
||||
- argument_param = optarg;
|
||||
- if (strlen(argument_param) < 1) {
|
||||
+ if (strlen(optarg) < 1) {
|
||||
fprintf(stderr,
|
||||
"Not a valid debug path given!\n");
|
||||
print_help(progname);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
- if (strlen(argument_param) > PATHLEN_MAX) {
|
||||
+ if (strlen(optarg) > PATHLEN_MAX) {
|
||||
fprintf(stderr, "Debug path too long!\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
- ioctl_res = ioctl(fd, UNIONFS_SET_DEBUG_FILE, argument_param);
|
||||
+ memset(debug_file, 0, PATHLEN_MAX);
|
||||
+ strncpy(debug_file, optarg, PATHLEN_MAX - 1);
|
||||
+
|
||||
+ ioctl_res = ioctl(fd, UNIONFS_SET_DEBUG_FILE, debug_file);
|
||||
if (ioctl_res == -1) {
|
||||
fprintf(stderr, "debug-file ioctl failed: %s\n",
|
||||
strerror(errno) );
|
||||
@ -0,0 +1,9 @@
|
||||
#!/bin/sh
|
||||
# not all tests can run with root, so create a test user
|
||||
# if it doesn't exist yet
|
||||
|
||||
if ! grep ptestuser /etc/shadow; then
|
||||
useradd ptestuser
|
||||
fi
|
||||
|
||||
su ptestuser -c "python3 -m putao.unittest"
|
||||
@ -6,11 +6,20 @@ LIC_FILES_CHKSUM = "file://src/unionfs.c;beginline=3;endline=8;md5=30fa8de70fd8a
|
||||
file://LICENSE;md5=0e75c95b3e0e1c01489b39e7fadd3e2d \
|
||||
"
|
||||
|
||||
SRC_URI = "git://github.com/rpodgorny/${BPN}.git;branch=master;protocol=https;tag=v${PV}"
|
||||
SRC_URI = "git://github.com/rpodgorny/${BPN}.git;branch=master;protocol=https;tag=v${PV} \
|
||||
file://run-ptest \
|
||||
file://0001-fix-debug-ioctl-call.patch \
|
||||
file://0001-adapt-tests-to-ptest.patch \
|
||||
"
|
||||
|
||||
SRCREV = "3fcbd11f78b9a9e02ea0e861d741840fe45dc9c8"
|
||||
|
||||
DEPENDS = "fuse3"
|
||||
RDEPENDS:${PN} = "bash"
|
||||
RDEPENDS:${PN}-ptest += "python3-core python3-unittest python3-unittest-automake-output"
|
||||
|
||||
inherit cmake pkgconfig ptest
|
||||
|
||||
inherit cmake pkgconfig
|
||||
do_install_ptest(){
|
||||
install ${S}/test_all.py ${D}${PTEST_PATH}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user