aboutsummaryrefslogtreecommitdiffstats
path: root/test
AgeCommit message (Collapse)AuthorLines
2025-02-18Fix a typo in test/ci-build.sh (ct vs cat)Bernd Schubert-1/+1
Signed-off-by: Bernd Schubert <bschubert@ddn.com>
2025-02-18tests: Re-enable mknod and mkfifo tests on FreeBSDVassili Tchersky-6/+0
Signed-off-by: Vassili Tchersky <vt+git@vbcy.org>
2025-02-18tests: Disable tests with TMP_FILE on FreeBSDVassili Tchersky-0/+4
Not supported yet on this platform. See https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=283179 Signed-off-by: Vassili Tchersky <vt+git@vbcy.org>
2025-02-17ci-build test: Add a 32-bit compilation testBernd Schubert-0/+17
That was missing so far. Signed-off-by: Bernd Schubert <bernd@bsbernd.com>
2025-02-17tests: Skip the ioctl test for x86 cross compilationBernd Schubert-0/+13
Probably some weird corner case in cross compilation, for now we ignore this. Signed-off-by: Bernd Schubert <bschubert@ddn.com>
2025-02-10Build fixes for -OgBernd Schubert-1/+1
Cleaning... 18 files. [35/69] Compiling C object example/passthrough_ll.p/passthrough_ll.c.o ../example/passthrough_ll.c: In function ‘lo_opendir’: ../example/passthrough_ll.c:666:20: warning: ‘fd’ may be used uninitialized [-Wmaybe-uninitialized] 666 | if (fd != -1) | ^ ../example/passthrough_ll.c:637:13: note: ‘fd’ was declared here 637 | int fd; | ^~ [38/69] Compiling C object test/test_syscalls.p/test_syscalls.c.o ../test/test_syscalls.c: In function ‘test_seekdir’: ../test/test_syscalls.c:804:16: warning: ‘de’ may be used uninitialized [-Wmaybe-uninitialized] 804 | while (de) | ^~ ../test/test_syscalls.c:776:24: note: ‘de’ was declared here 776 | struct dirent *de; | ^~ These are actually valid. Signed-off-by: Bernd Schubert <bschubert@ddn.com>
2025-01-03Fix libfuse build with FUSE_USE_VERSION 30Amir Goldstein-0/+6
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
2024-12-30Add 64-bit conn::{capable,want}_ext fieldsBernd Schubert-1/+1
The previous fields are left for ABI compatibility, although it is not beautiful to add that complexity when we have to increase the so-version as we had ABI breakage anyway. example/printcap is simplified to use an array, as every line would have needed to be modified anyway. Missing 'FUSE_CAP_PASSTHROUGH' was added. Signed-off-by: Bernd Schubert <bernd@bsbernd.com>
2024-12-17tests: Add debug messages to some tests and umountBernd Schubert-15/+97
On my nfs mount the tests were hanging and it was impossible to diagnoze what is actually the issue. Also get rid of 'looseversion' python package dependency, as that package is not in ubuntu - add a handcode kernel version parser.
2024-11-27support FUSE_TMPFILE in the low level APIHorst Birthelmer-0/+101
Note that name hashes and using paths as parameters makes it very hard to support anonymous files in the high level API. Known Issues: - tests have to bail out when O_TMPFILE is not supported. This will always be the case with high level passthrough implementations. - test_create_and_link_tmpfile has to be skipped due to unidentified problems with github runner
2024-06-25Use off_t instead of loff_tCismonX-3/+1
Since we're already enforcing 64-bit off_t, using loff_t makes no difference. Also loff_t is Linux-only, which breaks compatibility for *BSD.
2024-03-27Install all test/build python packages from requirements.txtAshley Pittman-12/+3
Have GitHub actions setup python on runners and install all python dependencies via pip. Signed-off-by: Ashley Pittman <ashley@pittman.co.uk>
2024-03-20ci-build.sh: Fix checking for function arguments (#909)Bernd Schubert-1/+1
Checking for an emtpy string actually doesn't work for $@, so just check for number of arguments. Co-authored-by: Bernd Schubert <bschubert@ddn.com>
2024-03-20/test_ctests / test_notify1: Print cmdline on failureBernd Schubert-0/+1
Tests sometimes fail with pytest.fail('file system process terminated prematurely') And it is not clear what actually happens.
2024-03-20ci-build.sh: Add back test without versioned symbolsBernd Schubert-6/+15
Commit b1cdc497 ("ci-build.sh: Run ASAN and UBSAN at the same time") also accidentally removed the test for versioned symbols. Also export clang/clang++ to make sure new shells get it.
2024-03-20Build clang/sanitized build firstBernd Schubert-37/+45
This was stalling - easier to check what happens when it fails fast. And in general, sanitized builds are faster than valgrind and detect almost as much errors as valgrind (same level would be achieved with MSAN, but that is hard to use), so failures can be detected faster whan sanitizers run first.
2024-03-20Add back s-bit for compiled fusermountBernd Schubert-0/+8
This is also needed by some tests and was accidentally removed in commit aab146eea8877ee744a1b5a0da8bbbf31d14bad1
2024-03-20Fix test failures: Create missing mount dirBernd Schubert-2/+14
Tests were failing because mount dir was missing. Unclear to me why this became only recently an issue (github internal - out of the sudden tests were hanging).
2024-03-20ci-build.sh: Reduce pytest --maxfail from 99 to 1Bernd Schubert-1/+3
We want to see errors - reduce allowed errors. With --maxfail=99 tests out of the sudden started to hang in github, without a change in libfuse (I had actually tested to previous release tags). With --maxfail=1 pytest aborts and we see failing github. Also increase python log level to NOTSET - NOTSET should print all messages. Also use "pytest" has wrapper for "python3 -m"
2024-03-07Merge pull request #901 from bsbernd/posix_spawnBernd Schubert-25/+33
Switch from fork to posix_spawn
2024-03-07ci-build.sh: Always install and add s-bit for fusermount3Bernd Schubert-6/+14
As per pull #898, fusermount3 had a severe issue that should have been detected by ASAN. I guess tests used the system default and not the sanitized binary. Order of execution of fusermount3 is to try 1) full install path if that fails 2) just fusermount3 So tests should be fixed by installing libfuse, setting the s-bit on fusermount3 and then to run the tests.
2024-03-07ci-build.sh: Run ASAN and UBSAN at the same timeBernd Schubert-20/+20
Also set halt_on_error=1 to make UBSAN to fail if it would find something.
2024-03-06Fix undefined loff_t in test_write_cache.c on alpineBernd Schubert-0/+2
This fixes #899. Seems that Alpine (and maybe Fedora) need _GNU_SOURCE to get loff_t.
2024-02-26Fix tests/test_write_cache in write back mode (#892)Bernd Schubert-8/+33
This test could fail whenever a something (kernel, userspace) decides to flush in between of two 2048B writes. These two writes are supposed to be merged into a single 4906 byte write by the kernel writeback cache, but _sometimes_ the test fails because 2048 byte writes get through. Fixes #882 Solution here is a modification how the test works - instead of requiring an exact aggregation of 2x2048B into 4096B, it now writes 64x2048B and requires in write-back modes the number of received writes requests is lower than 64 - we can expect that at least some writes get aggregated, but we do know how many. Co-authored-by: Bernd Schubert <bschubert@ddn.com>
2024-01-29make FUSE_CAP_EXPIRE_ONLY test depend on available cap and not on versionHereThereBeDragons-2/+2
2023-12-17Allow *xattr operations on root directory (ino 1)amitgeron-2/+3
2023-07-01Reduce default write size by halfNikolaus Rath-1/+1
Hopefully this will reduce test flakiness on CI.
2023-07-01Add missing include.Nikolaus Rath-0/+1
2023-06-30Make expire only function fail if no kernel support (#789)HereThereBeDragons-0/+2
2023-05-11Fix issue #746. (#782)Peri-0/+173
Added a secondary check in fuse_lib_unlink() after hide_node() to check again under a lock if the (now hidden) file is still open. If not then delete it. This should synchronise fuse_lib_unlink() with fuse_lib_release(), when nullpath_ok is set.
2023-04-12Disable leak suppression (#773)Matthias Görgens-10/+0
2023-04-12Fuse mount: make auto_unmount compatible with suid/dev mount options (#762)Matthias Görgens-0/+31
* Fuse mount: make auto_unmount compatible with suid/dev mount options > When you run as root, fuse normally does not call fusermount but uses > the mount system call directly. When you specify auto_unmount, it goes > through fusermount instead. However, fusermount is a setuid binary that > is normally called by regular users, so it cannot in general accept suid > or dev options. In this patch, we split up how fuse mounts as root when `auto_unmount` is specified. First, we mount using system calls directly, then we reach out to fusermount to set up auto_unmount only (with no actual mounting done in fusermount). Fixes: #148
2023-04-11Migrate away from deprecated distutilsMatthias Goergens-3/+3
Before: ``` =============================== warnings summary =============================== test/test_ctests.py:12 /tmp/libfuse-build-mB50ZC/build-gcc-9/test/test_ctests.py:12: DeprecationWarning: The distutils package is deprecated and slated for removal in Python 3.12. Use setuptools or check PEP 632 for potential alternatives from distutils.version import LooseVersion -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html ```
2023-04-11Fix typoMatthias Goergens-1/+1
2023-04-07Fix PytestReturnNotNoneWarningMatthias Goergens-2/+4
``` test_examples.py::test_printcap /usr/local/lib/python3.9/dist-packages/_pytest/python.py:199: PytestReturnNotNoneWarning: Expected None, but test_examples.py::test_printcap returned ((7, 38), {'FUSE_CAP_READDIRPLUS_AUTO', 'FUSE_CAP_ASYNC_DIO', 'FUSE_CAP_SPLICE_READ', 'FUSE_CAP_CACHE_SYMLINKS', 'FUSE_CAP_IOCTL_DIR', 'FUSE_CAP_NO_OPENDIR_SUPPORT', 'FUSE_CAP_NO_OPEN_SUPPORT', 'FUSE_CAP_POSIX_LOCKS', 'FUSE_CAP_READDIRPLUS', 'FUSE_CAP_POSIX_ACL', 'FUSE_CAP_ATOMIC_O_TRUNC', 'FUSE_CAP_SPLICE_MOVE', 'FUSE_CAP_EXPORT_SUPPORT', 'FUSE_CAP_FLOCK_LOCKS', 'FUSE_CAP_EXPLICIT_INVAL_DATA', 'FUSE_CAP_EXPIRE_ONLY', 'FUSE_CAP_DONT_MASK', 'FUSE_CAP_WRITEBACK_CACHE', 'FUSE_CAP_AUTO_INVAL_DATA', 'FUSE_CAP_PARALLEL_DIROPS', 'FUSE_CAP_SPLICE_WRITE', 'FUSE_CAP_ASYNC_READ'}), which will be an error in a future version of pytest. Did you mean to use `assert` instead of `return`? warnings.warn( ```
2023-04-07Fix deprecated @pytest.mark.hookwrapperMatthias Goergens-1/+1
``` PytestDeprecationWarning: The hookimpl pytest_pyfunc_call uses old-style configuration options (marks or attributes). Please use the pytest.hookimpl(hookwrapper=True) decorator instead to configure the hooks. See https://docs.pytest.org/en/latest/deprecations.html#configuring-hook-specs-impls-using-markers @pytest.mark.hookwrapper ```
2023-04-07Fix meson deprecation warningMatthias Goergens-2/+2
Also for rest of CI
2023-04-07Upgrade meson version in CIMatthias Goergens-2/+1
2023-04-01Add unit tests for setxattr() et alNikolaus Rath-3/+11
Hopefully, this will catch issues as in commit 024eccbf3
2023-02-20Migrate from Travis to Github actionsNikolaus Rath-1/+5
With current Ubuntu, Valgrind apparently does not like clang debug info, so do not run valgrind with clang-compiled binaries.
2023-01-28Install a the configure_file (config.h) and use in headersBernd Schubert-4/+4
This addresses: https://github.com/libfuse/libfuse/issues/724 HAVE_LIBC_VERSIONED_SYMBOLS configures the library if to use versioned symbols and is set at meson configuration time. External filesystems (the main target, actually) include fuse headers and the preprocessor then acts on HAVE_LIBC_VERSIONED_SYMBOLS. Problem was now that 'config.h' was not distributed with libfuse and so HAVE_LIBC_VERSIONED_SYMBOLS was never defined with external tools and the preprocessor did the wrong decision. This commit also increases the the minimal meson version, as this depends on meson feature only available in 0.50 <quote 'meson' > WARNING: Project specifies a minimum meson_ version '>= 0.42' but uses features which were added in newer versions: * 0.50.0: {'install arg in configure_file'} </quote> Additionally the config file has been renamed to "fuse_config.h" to avoid clashes - 'config.h' is not very specific.
2023-01-28Update travis to ubuntu jammy (22.04)Bernd Schubert-1/+1
A newer ubuntu version is required to get a more recent meson (at least 0.50 now)
2023-01-13passthrough_hp: Add options for clone_fd, max_threads, daemonizeBernd Schubert-0/+2
This is useful for benchmarking. Note: This changes behavior - passthrough_hp runs in background by default now.
2023-01-10Support application-defined I/O functions for FUSE fdTofik Sonono-1/+82
The io for FUSE requests and responses can now be further customized by allowing to write custom functions for reading/writing the responses. This includes overriding the splice io. The reason for this addition is that having a custom file descriptor is not sufficient to allow custom io. Different types of file descriptor require different mechanisms of io interaction. For example, some file descriptor communication has boundaries (SOCK_DGRAM, EOF, etc...), while other types of fd:s might be unbounded (SOCK_STREAMS, ...). For unbounded communication, you have to read the header of the FUSE request first, and then read the remaining packet data. Furthermore, the one read call does not necessarily return all the data expected, requiring further calls in a loop.
2023-01-06Test for fuse_lowlevel_notify_expire_entry.HereThereBeDragons-1/+4
This test is too simple to check for all functionalities of notify_expire as it always successfully passes when libfuse supports the function (even if kernel does not support it - it just takes it as notify_inval)
2023-01-04Fixes when HAVE_LIBC_VERSIONED_SYMBOLS is not definedBernd Schubert-8/+29
fuse_loop_mt and fuse_new had not been defined when HAVE_LIBC_VERSIONED_SYMBOLS had not been set and additionally, fuse_new_31 was missing in the version script and was therefore an unusable symbol. This also adds a test for unset HAVE_LIBC_VERSIONED_SYMBOLS.
2022-05-06Fix a test strncpy compilation warning with recent gccBernd Schubert-2/+4
meson configure -D buildtype=debugoptimized meson configure -D b_sanitize=address,undefined Results in '-fsanitize=address,undefined ... -O2 -g' that made compilation to give errors with recent gcc versions. bernd@t1700bs build-ubuntu>ninja -v [1/2] ccache gcc -Itest/test_syscalls.p -Itest -I../test -Iinclude -I../include -Ilib -I../lib -I. -I.. -fdiagnostics-color=always -fsanitize=address,undefined -fno-omit-frame-pointer -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -Werror -O2 -g -D_REENTRANT -DHAVE_CONFIG_H -Wno-sign-compare -Wstrict-prototypes -Wmissing-declarations -Wwrite-strings -fno-strict-aliasing -Wno-unused-result -DHAVE_SYMVER_ATTRIBUTE -MD -MQ test/test_syscalls.p/test_syscalls.c.o -MF test/test_syscalls.p/test_syscalls.c.o.d -o test/test_syscalls.p/test_syscalls.c.o -c ../test/test_syscalls.c FAILED: test/test_syscalls.p/test_syscalls.c.o ccache gcc -Itest/test_syscalls.p -Itest -I../test -Iinclude -I../include -Ilib -I../lib -I. -I.. -fdiagnostics-color=always -fsanitize=address,undefined -fno-omit-frame-pointer -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -Werror -O2 -g -D_REENTRANT -DHAVE_CONFIG_H -Wno-sign-compare -Wstrict-prototypes -Wmissing-declarations -Wwrite-strings -fno-strict-aliasing -Wno-unused-result -DHAVE_SYMVER_ATTRIBUTE -MD -MQ test/test_syscalls.p/test_syscalls.c.o -MF test/test_syscalls.p/test_syscalls.c.o.d -o test/test_syscalls.p/test_syscalls.c.o -c ../test/test_syscalls.c In file included from /usr/include/string.h:519, from ../test/test_syscalls.c:7: In function ‘strncpy’, inlined from ‘test_socket’ at ../test/test_syscalls.c:1885:2, inlined from ‘main’ at ../test/test_syscalls.c:2030:9: /usr/include/x86_64-linux-gnu/bits/string_fortified.h:95:10: error: ‘__builtin_strncpy’ output may be truncated copying 107 bytes from a string of length 1023 [-Werror=stringop-truncation] 95 | return __builtin___strncpy_chk (__dest, __src, __len, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 96 | __glibc_objsize (__dest)); | ~~~~~~~~~~~~~~~~~~~~~~~~~ I disagree a bit on the gcc sanity here, as the code was behaving correctly and even already checked the string length. But sice the string length is already verified, that length can be used for the final strncpy.
2022-01-05Add test for FOPEN_NOFLUSH flagAmir Goldstein-1/+65
Simulate write() delay and verify that close(rofd) does not block waiting on pending writes. The support for the flag was added in kernel v5.16-rc1. Signed-off-by: Amir Goldstein <amir73il@gmail.com>
2021-11-20test/test_syscalls.c: allow EBADF in fcheck_stat() (#631)Luis Henriques-1/+2
Test test/test_examples.py::test_passthrough_hp[False] fails because, on kernels >= 5.14, fstat() will return -EBADF: 3 [check_unlinked_testfile] fcheck_stat() - fstat: Bad file descriptor 4 [check_unlinked_testfile] fcheck_stat() - fstat: Bad file descriptor 5 [check_unlinked_testfile] fcheck_stat() - fstat: Bad file descriptor 9 [check_unlinked_testfile] fcheck_stat() - fstat: Bad file descriptor ... This patch simply whitelists the EBADF errno code. Signed-off-by: Luís Henriques <lhenriques@suse.de> Co-authored-by: Luís Henriques <lhenriques@suse.de>
2021-06-24Travis-CI: Make sure lsan supppressions file can be read by root.Nikolaus Rath-5/+8