summaryrefslogtreecommitdiffstats
path: root/tests.sh
Commit message (Collapse)AuthorAgeFilesLines
* tests: Add tests for mode 000Tavian Barnes2018-07-201-0/+21
|
* printf: Output ? for errors in %YTavian Barnes2018-07-201-0/+16
|
* eval: Fix -delete when following symlinks.Tavian Barnes2018-07-121-0/+14
| | | | | Same bug as https://savannah.gnu.org/bugs/?46305. Please don't ever do this though.
* tests: Add some more tests for broken symlinksTavian Barnes2018-07-071-0/+45
|
* tests: Use -maxdepth 0 instead of | head -n1Tavian Barnes2018-07-071-1/+1
| | | | | | | This avoids the potential for "broken pipe" errors observed on some systems, e.g. http://build.alpinelinux.org/buildlogs/build-edge-s390x/testing/bfs/bfs-1.2.2-r0.log
* tests: Relax test_depth_errorTavian Barnes2018-06-241-3/+0
| | | | | Whether bfs can return children of a directory without search permission depends on whether d_type is filled in, which can't be guaranteed.
* tests: New test for -depth in the presence of read errorsTavian Barnes2018-06-231-0/+18
|
* tests: Work around broken rm in cleanupTavian Barnes2018-03-181-0/+7
| | | | | | | BusyBox rm, for example, doesn't handle long paths properly, so give it some help. C.f. http://lists.busybox.net/pipermail/busybox/2018-March/086302.html
* tests: Don't use process substitution for diffTavian Barnes2018-03-181-7/+18
| | | | | This frees up an extra FD for some diff implementations like openbox that need it when ulimit -n is low.
* tests: Be robust to ls -i implementation that output a leading spaceTavian Barnes2018-03-181-1/+1
|
* tests: Add a --noclean option to preserve the test directoryTavian Barnes2018-03-181-2/+14
| | | | Useful for debugging testsuite failures.
* printf: Add %w and %Wk for file birth timesTavian Barnes2018-01-201-0/+6
| | | | | %w and %W were chosen to match the format specifiers for file birth times from stat(1)
* exec: Recover from E2BIGTavian Barnes2017-11-121-0/+9
|
* parse: Support -perm +7777, for compatibility with BSD and old GNU findTavian Barnes2017-11-051-5/+10
|
* parse: Keep track of what files are already openTavian Barnes2017-10-211-4/+20
| | | | Fixes #22
* Report errors that occur when closing filesTavian Barnes2017-10-211-1/+19
| | | | Otherwise we miss write errors that occur when flushing the cache.
* tests: -quit is not POSIXTavian Barnes2017-09-201-1/+1
|
* opt: Fix -depth with arguments bigger than INT_MAXTavian Barnes2017-09-171-0/+5
|
* tests: Add tests that trigger some optimizationsTavian Barnes2017-09-161-0/+40
|
* tests: Silence error messages while creating deep/Tavian Barnes2017-09-091-1/+1
| | | | | Some platforms will print errors like "cannot access parent directories: Result too large"
* Try /proc/self/fd before /dev/fdTavian Barnes2017-09-091-2/+8
| | | | On Solaris, /proc/self/fd is dynamic while /dev/fd is static.
* Revert "tests: Test hardlinks to symlinks"Tavian Barnes2017-09-071-2/+0
| | | | | | Apparently macOS doesn't support ln -P. This reverts commit 80eec18020f531abbdb2abbb919ab6c6fa34107c.
* parse: Don't reorder or remove tests with potential side effectsTavian Barnes2017-09-061-0/+8
| | | | | | -empty and -xtype may have side effects like reporting permission errors, which even affect the exit status of bfs. We shouldn't remove these effects without -Ofast.
* tests: Test hardlinks to symlinksTavian Barnes2017-09-061-0/+2
|
* tests: Make test_deep pass with other find implementationsTavian Barnes2017-09-041-6/+5
| | | | | And move test_deep_strict to the bfs-specific tests, since it's not likely to ever pass for other implementations.
* tests: Use human-readable filenames in links/Tavian Barnes2017-09-021-26/+27
|
* tests: Remove unnecessary sort-args.sh invocationsTavian Barnes2017-08-161-2/+2
|
* tests: Add some syntax highlighting to --verboseTavian Barnes2017-08-121-3/+22
|
* Unify broken symlink handlingTavian Barnes2017-08-121-0/+29
| | | | | | | | | Rather than open-code the fallback logic for broken symlinks everywhere it's needed, introduce a new xfstatat() utility function that performs the fallback automatically. Using xfstatat() consistently fixes a few bugs, including cases where broken symlinks are given as arguments to predicates like -samefile.
* tests: Add a test for -exec ... {} + with a failing commandTavian Barnes2017-08-121-0/+8
|
* exec: Fix more corner cases with -ok ... +Tavian Barnes2017-07-291-0/+10
| | | | -ok should look for a ; even if it sees {} +, according to POSIX.
* tests.sh: Add a --verbose modeTavian Barnes2017-07-291-22/+58
|
* exec: Don't allow anything between {} and +Tavian Barnes2017-07-291-27/+31
| | | | | | | | | POSIX explicitly forbids this extension: > Only a <plus-sign> that immediately follows an argument containing > only the two characters "{}" shall punctuate the end of the primary > expression. Other uses of the <plus-sign> shall not be treated as > special.
* Re-license under the BSD Zero Clause LicenseTavian Barnes2017-07-271-10/+15
|
* Fix a couple terrible optimizer bugsTavian Barnes2017-07-211-0/+12
| | | | | | | Just because an expression is always true or false, doesn't mean we can execute it more often than it otherwise would be, unless it's also pure. But that's equivalent to being identically -true/-false, so just check that.
* Implement -printxTavian Barnes2017-07-211-0/+5
| | | | Also from NetBSD.
* eval: Add some sanity checksTavian Barnes2017-07-201-0/+10
|
* Implement -exit [STATUS]Tavian Barnes2017-07-201-0/+15
| | | | From NetBSD again.
* Implement -rm as an alias for -deleteTavian Barnes2017-07-201-4/+19
| | | | From NetBSD.
* Revert "tests.sh: Better line overwriting"Tavian Barnes2017-07-201-4/+5
| | | | | | This reverts commit 4b02d5dae771a8797868ccaddf1bbb7cf0b67c2b. Overwriting the last line of the test output is worse.
* tests.sh: Better line overwritingTavian Barnes2017-07-181-5/+4
| | | | | This way the cursor is always at the beginning of the line, so any error output is more readable.
* tests.sh: Make closefrom() behave like its namesakeTavian Barnes2017-07-181-3/+3
|
* tests.sh: Close extraneous fds for tests that depend on ulimitTavian Barnes2017-07-161-0/+17
|
* Handle ENOTDIR the same as ENOENTTavian Barnes2017-07-091-0/+10
| | | | | | For a/b/c, ENOTDIR is returned instead of ENOENT if a or b are not directories. Handle this uniformly when detecting broken symlinks, readdir races, etc.
* bftw: Fix ENAMETOOLONG handling when the root is closedTavian Barnes2017-07-081-2/+10
| | | | | The root has depth == 0, but we still need to include it in the components array.
* bftw: Recover from ENAMETOOLONGTavian Barnes2017-07-081-0/+30
| | | | | | | | | | | | | | | | | | | | | | | | It is always possible to force a breadth-first traversal to encounter ENAMETOOLONG, regardless of the dircache eviction policy. As a concrete example, consider this directory structure: ./1/{NAME_MAX}/{NAME_MAX}/{NAME_MAX}/... (longer than {PATH_MAX}) ./2/{NAME_MAX}/{NAME_MAX}/{NAME_MAX}/... ./3/{NAME_MAX}/{NAME_MAX}/{NAME_MAX}/... ... (more than RLIMIT_NOFILE directories under .) Eventually, the next file to be processed will not have any parents in the cache, as the cache can only hold RLIMIT_NOFILE entries. Then the whole path must be traversed from ., which will exceed {PATH_MAX} bytes. Work around this by performing a component-by-component traversal manually when we see ENAMETOOLONG. This is required by POSIX: > The find utility shall be able to descend to arbitrary depths in a file > hierarchy and shall not fail due to path length limitations (unless a > path operand specified by the application exceeds {PATH_MAX} > requirements).
* -perm: Handle permcopy (e.g. u=rw,g=u) correctlyTavian Barnes2017-06-151-0/+5
|
* tests: Fix test_printf_nul with non-GNU sortTavian Barnes2017-06-111-1/+7
| | | | | Other UNIX sort implementations seem to truncate at the nul bytes, so open-code it without the sort.
* printf: Fix embedded nul bytesTavian Barnes2017-06-101-0/+6
| | | | Fixes #26.
* Don't make -quit disable the implicit -printTavian Barnes2017-05-111-2/+7
|