summaryrefslogtreecommitdiffstats
path: root/tests
Commit message (Collapse)AuthorAgeFilesLines
...
* 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
|
* tests: New bfs_check() macroTavian Barnes2024-02-296-234/+247
| | | | | We now report failures and continue, rather than aborting after the first failure.
* tests: Add more datetime parsing integration testsTavian Barnes2024-02-292-4/+6
|
* xtime: Fix some xgetdate() bugsTavian Barnes2024-02-281-9/+93
| | | | And add some more test cases.
* tests/ioq: New unit testTavian Barnes2024-02-283-0/+77
|
* tests/bfs/D_opt: Don't rely on directory link countsTavian Barnes2024-02-282-12/+1
| | | | Fixes: https://github.com/tavianator/bfs/issues/131
* tests: Redirect stdin in bfs_pty()Tavian Barnes2024-02-171-1/+1
| | | | Otherwise bfs will think it's interactive.
* bftw: stat() files asynchronouslyTavian Barnes2024-02-061-1/+1
|
* tests: Fix --stopTavian Barnes2024-02-051-1/+1
|
* tests: Implement jobserver inheritanceTavian Barnes2024-02-034-35/+125
|
* tests: Don't clobber inherited FDsTavian Barnes2024-02-0111-52/+45
| | | | | Rather than attempting to close any unexpected FDs, just count them and adjust our ulimit -n calls to account for them.
* tests: Use variable redirections to dup std{out,err}Tavian Barnes2024-02-012-28/+15
| | | | | | | | | | | Previously, we hardcoded file descriptors 3 and 4 for duplicating stdandard output/error respectively. In preparation for keeping inherited FDs open, switch to using bash's variable redirection feature to dynamically assign FDs. This feature is only available from bash 4.1 onwards, so this marks the end of our support for bash 3. macOS users will need to install a modern bash version to run our tests.
* bftw: Actually stop if the callback returns BFTW_STOPTavian Barnes2024-01-312-0/+5
| | | | | | Otherwise, bftw_ids() or bftw_eds() might keep going! Fixes: 5f16169 ("bftw: Share the bftw_state between iterations of ids/eds")
* tests/posix: Avoid catastrophic backtrackingTavian Barnes2024-01-172-11/+2
| | | | | | Using -path 'deep/*/*/.../*' to simulate -mindepth 18 falls off a performance cliff on systems that use backtracking for fnmatch(). This was observed on macOS 12.4. Instead, just use -type f.
* tests: Properly filter escape sequences with --verbose=testsTavian Barnes2024-01-131-1/+1
|
* bfstd: New {error,errno}_is_like() functionsTavian Barnes2024-01-131-14/+3
| | | | | | | We used to have is_nonexistence_error() to consistently treat ENOENT and ENOTDIR the same. Recently, we started considering EFAULT the same as ENAMETOOLONG on DragonFly BSD to work around a kernel bug. Unify both of these behind a more generic interface.
* tests.h: Add a header guardTavian Barnes2024-01-131-0/+5
|
* tests: Merge unit test executables into oneTavian Barnes2024-01-127-13/+149
|
* tests: New output formatTavian Barnes2024-01-111-13/+28
|
* tests: Don't do chmod +sTavian Barnes2024-01-091-2/+3
| | | | | | | | | | | | | | | | | | POSIX says > When using the symbolic mode form on a regular file, it is > implementation-defined whether or not: > > - Requests to set the set-user-ID-on-execution or set-group-ID-on- > execution bit when all execute bits are currently clear and none > are being set are ignored. And indeed, illumos ignores them with a warning: chmod: WARNING: /tmp/bfs.XXXX7KaGWb/rainbow/suid: Execute permission required for set-ID on execution Link: https://pubs.opengroup.org/onlinepubs/9699919799/utilities/chmod.html
* tests/bfs/D_opt: New test for more -D opt coverageTavian Barnes2024-01-072-0/+19
|
* Work around DragonFly BSD kernel bugTavian Barnes2024-01-041-0/+6
| | | | | | | | | DragonFly's x86_64 assembly implementation of copyinstr() checks the wrong pointer when deciding whether to return EFAULT or ENAMETOOLONG, causing it to always return EFAULT for overlong paths. Work around it by treating EFAULT the same as ENAMETOOLONG on DragonFly. Link: https://twitter.com/tavianator/status/1742991411203485713
* tests/posix/name_bracket: Skip on NetBSD tooTavian Barnes2024-01-031-2/+6
|
* tests/bsd/type_w: Check for truncate(1) before using itTavian Barnes2024-01-031-1/+5
|