summaryrefslogtreecommitdiffstats
path: root/tests
Commit message (Collapse)AuthorAgeFilesLines
* tests/common: Add tests for -[am]{min,time}Tavian Barnes2024-06-048-0/+84
|
* xtime: Add support for @epochseconds timestampsTavian Barnes2024-06-042-25/+12
|
* Merge branch 'revert-eloop'Tavian Barnes2024-06-034-2/+4
|\
| * Make ELOOP an error again, except for -xtype.3.3.1Tavian Barnes2024-06-034-2/+4
| | | | | | | | | | | | | | | | | | | | POSIX requires an error if (for example) -L encounters a symlink loop. The GNU find change was restricted to -xtype, so add a manual ELOOP test to eval_xtype() for compatibility. This reverts commit 470589cbd9ca3e73d8c01ac3a96cbc065179dcc5. Link: https://savannah.gnu.org/bugs/?19605
* | parse: Allow -Darg/-Sarg as well as -D arg / -S argTavian Barnes2024-06-036-0/+59
| |
* | parse: Handle multiple flags at once like -LEXO2Tavian Barnes2024-06-0311-0/+43
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The POSIX Utility Syntax Guidelines specify that flag groups like -HL should be handled like -H -L. GNU find doesn't support grouping flags in this way, but BSD find does. To avoid conflicts with non-flag primaries, for now we require at least one flag in a group to be a capital letter. That is, we support things like -Lds but not -ds. We also do not support -fPATH (without a space) as it would conflict with -follow, -fprint, etc. It is impossible to be compatible with both GNU and BSD find here: user@gnu$ find -follow link link/file ... user@bsd$ find -follow find: ollow: No such file or directory Link: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html
* | list: New SLIST_SPLICE() macroTavian Barnes2024-05-313-0/+101
| |
* | bit: Update to match C23Tavian Barnes2024-05-291-18/+18
|/ | | | | | | | | | Based on the latest C23 draft (N3220): - Argument types to generic bit functions should be unsigned - Bit functions return unsigned int - Byte-swapping functions (stdc_memreverse8*()) weren't added - stdc_rotate_{left,right}() weren't added - first_leading_*() counts from the *left*
* Implement the remaining regex typesTavian Barnes2024-05-2812-0/+27
| | | | Closes: https://github.com/tavianator/bfs/issues/21
* tests: Add some more weird namesTavian Barnes2024-05-289-0/+67
|
* xregex: Support non-capturing groups with -regextype emacsTavian Barnes2024-05-271-1/+1
| | | | | Link: https://savannah.gnu.org/bugs/index.php?65770 Link: https://github.com/kkos/oniguruma/issues/296
* bfstd: Treat ELOOP like ENOENTTavian Barnes2024-05-274-1/+23
| | | | | | | GNU findutils just made the same change, so looping symlinks will be considered broken rather than a hard error. Link: https://savannah.gnu.org/bugs/?51926
* tests/posix: Add a test for -prune with EACCESSTavian Barnes2024-05-272-0/+9
| | | | Link: https://savannah.gnu.org/bugs/?60207
* tests: Make diff listen to $NO_COLORTavian Barnes2024-05-241-2/+2
|
* tests: Make hide_bar actually hide the barTavian Barnes2024-05-222-1/+15
|
* tests: Print progress outside the scroll regionTavian Barnes2024-05-223-44/+132
|
* tests: Restart wait when interrupted by a signalTavian Barnes2024-05-221-6/+15
|
* Stop using %mTavian Barnes2024-05-201-1/+2
|
* printf: The ' ' (space) flag must be numericTavian Barnes2024-05-192-1/+2
|
* Cast AT_FDCWD to int for comparisonsTavian Barnes2024-05-171-1/+1
| | | | | Some platforms define AT_FDCWD to a constant like 0xFFFAFDCD that gets typed as an unsigned int.
* diag: New helpers to include xstrerror(errno) automaticallyTavian Barnes2024-05-177-50/+42
|
* sighook: New utilities for hooking signalsTavian Barnes2024-05-163-0/+101
| | | | This allows multiple hooks to be installed for a single signal.
* xtime: Use the libc's timegm() if presentTavian Barnes2024-05-061-4/+8
|
* build: Replace `make config` with a `./configure` scriptTavian Barnes2024-04-292-18/+6
| | | | | | | | | | This lets us do more traditional out-of-tree builds like $ ../path/to/bfs/configure $ make The .mk files are moved from ./config to ./build, mostly so that ./configure will auto-complete easily.
* eval: Plug memory leak if bfs_opendir() failsTavian Barnes2024-04-246-0/+10
|
* config: Check for struct stat::st_{a,c,m,birth}{tim,timespec}Tavian Barnes2024-04-191-2/+2
|
* Rename config.h to prelude.hTavian Barnes2024-04-1910-10/+10
|
* tests: Add ../src to the include pathTavian Barnes2024-04-1911-36/+36
|
* tests: Quiet diffTavian Barnes2024-04-161-2/+2
| | | | | | On Solaris/Illumos, `diff` prints "No differences encountered" if the files are the same. Guard it with `cmp -s` so we get no output for passing tests.
* tests: Move newer_link out of posix/Tavian Barnes2024-04-094-0/+5
| | | | | | | | POSIX has clarified that it's unspecified whether -newer uses times from stat() or lstat(), because implementations vary. It does specify that it must fall back to lstat() for broken links, so test that. Link: https://austingroupbugs.net/view.php?id=1776
* build: Add a separate configuration stepTavian Barnes2024-04-092-3/+9
|
* tests/bsd: Add a -sparse testTavian Barnes2024-03-282-0/+13
|
* tests/gnu: Add a -used testTavian Barnes2024-03-282-0/+44
|
* tests/common: Add a -delete error handling testTavian Barnes2024-03-282-0/+17
|
* xspawn: Fix bfs_resolve_late() error reportingTavian Barnes2024-03-271-0/+23
|
* tests/xspawn: Test path resolution failureTavian Barnes2024-03-271-3/+30
|
* tests/xspawn: Also test dup2()Tavian Barnes2024-03-271-1/+3
|
* tests/xspawn: New unit testTavian Barnes2024-03-274-0/+175
|
* tests: New bfs_pcheck() macro to report xstrerror(errno)Tavian Barnes2024-03-273-3/+25
|
* bfstd: Escape ASCII tildesTavian Barnes2024-03-261-0/+2
| | | | | | | | The POSIX spec [1] lists some characters that may need to be escaped. Unfortunately, the document uses ˜ (U+02DC SMALL TILDE) instead of ~ (U+007E TILDE), and I copy-pasted from it. [1]: https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_02
* xtime: Don't update tm if xtimegm() overflowsTavian Barnes2024-03-261-12/+22
|
* bfstd: New asciilen() functionTavian Barnes2024-03-211-0/+15
|
* bit: Check __BYTE_ORDER__ for the native endianTavian Barnes2024-03-211-0/+13
| | | | __ORDER_NATIVE_ENDIAN__ is not a thing.
* bfstd: Check that wcwidth() is positiveTavian Barnes2024-03-201-0/+3
| | | | | wcwidth() returns -1 for non-printable characters, but terminals typically don't print anything for them, so treat them as 0.
* Implement -limit NTavian Barnes2024-03-206-0/+9
| | | | Closes: https://github.com/tavianator/bfs/issues/133
* Re-run include-what-you-useTavian Barnes2024-03-117-9/+7
|
* tests/xtime: Add tests for integer overflowTavian Barnes2024-03-101-0/+28
|
* xtime: Call tzset() from main() instead of lazilyTavian Barnes2024-03-074-13/+18
| | | | | | | | | | | | | POSIX specifies[1] that If a thread accesses tzname, daylight, or timezone directly while another thread is in a call to tzset(), or to any function that is required or allowed to set timezone information as if by calling tzset(), the behavior is undefined. So calling it lazily from arbitrary threads is risky. [1]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/tzset.html
* tests: Change the timezone for -daystart testsTavian Barnes2024-03-072-2/+2
| | | | | | | Otherwise, if the test files are created just before midnight, and the test runs just after midnight, -daystart will consider them one day old. Fixes #132
* tests/ioq: Check that we push and pop the same number of timesTavian Barnes2024-03-021-3/+5
|