Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | bftw: stat() files asynchronously | Tavian Barnes | 2024-02-06 | 1 | -1/+1 |
| | |||||
* | tests: Fix --stop | Tavian Barnes | 2024-02-05 | 1 | -1/+1 |
| | |||||
* | tests: Implement jobserver inheritance | Tavian Barnes | 2024-02-03 | 4 | -35/+125 |
| | |||||
* | tests: Don't clobber inherited FDs | Tavian Barnes | 2024-02-01 | 11 | -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 Barnes | 2024-02-01 | 2 | -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_STOP | Tavian Barnes | 2024-01-31 | 2 | -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 backtracking | Tavian Barnes | 2024-01-17 | 2 | -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=tests | Tavian Barnes | 2024-01-13 | 1 | -1/+1 |
| | |||||
* | bfstd: New {error,errno}_is_like() functions | Tavian Barnes | 2024-01-13 | 1 | -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 guard | Tavian Barnes | 2024-01-13 | 1 | -0/+5 |
| | |||||
* | tests: Merge unit test executables into one | Tavian Barnes | 2024-01-12 | 7 | -13/+149 |
| | |||||
* | tests: New output format | Tavian Barnes | 2024-01-11 | 1 | -13/+28 |
| | |||||
* | tests: Don't do chmod +s | Tavian Barnes | 2024-01-09 | 1 | -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 coverage | Tavian Barnes | 2024-01-07 | 2 | -0/+19 |
| | |||||
* | Work around DragonFly BSD kernel bug | Tavian Barnes | 2024-01-04 | 1 | -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 too | Tavian Barnes | 2024-01-03 | 1 | -2/+6 |
| | |||||
* | tests/bsd/type_w: Check for truncate(1) before using it | Tavian Barnes | 2024-01-03 | 1 | -1/+5 |
| | |||||
* | tests: Remove unneeded command -v unbuffer || skip | Tavian Barnes | 2024-01-01 | 2 | -4/+0 |
| | |||||
* | parse: Reject integers that start with whitespace | Tavian Barnes | 2023-12-09 | 1 | -0/+1 |
| | |||||
* | tests: Set abort_on_error for the sanitizers | Tavian Barnes | 2023-11-23 | 1 | -1/+1 |
| | |||||
* | tests: Fix --stop | Tavian Barnes | 2023-11-23 | 1 | -0/+6 |
| | |||||
* | tests: Fix a possible infinite loop | Tavian Barnes | 2023-11-15 | 1 | -2/+4 |
| | | | | | | | | | | | | | | | | | | | The POSIX spec for readdir() [1] says: > If a file is removed from or added to the directory after the most > recent call to opendir() or rewinddir(), whether a subsequent call > to readdir() returns an entry for that file is unspecified. which implies that a loop of readdir()/unlink()/creat() may continue to return new files unendingly. This was even observed on a Linux 6.6 tmpfs mount [2]. It's not clear whether find(1) is also permitted to loop endlessly in this case, but in case it is, let's avoid the whole problem by limiting the -exec to happen at most once. [1]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/readdir.html [2]: https://lore.kernel.org/linux-fsdevel/20231113180616.2831430-1-tavianator@tavianator.com/ | ||||
* | tests: Fix --verbose=commands with --bfs="wrapper bfs" | Tavian Barnes | 2023-11-13 | 1 | -1/+1 |
| | |||||
* | Revert "bit: Implement a branchless has_single_bit()" | Tavian Barnes | 2023-11-11 | 1 | -0/+1 |
| | | | | | | Doesn't work for the highest bit due to overflow. This reverts commit 208376ef99da243545efcd6fb02d3469b4c068ed. | ||||
* | bit: Implement a branchless has_single_bit() | Tavian Barnes | 2023-11-10 | 1 | -0/+3 |
| | |||||
* | config: Add (de)allocator attributes | Tavian Barnes | 2023-11-09 | 1 | -0/+4 |
| | |||||
* | parse: Reject -{exec,ok}dir if $PATH contains a relative path | Tavian Barnes | 2023-11-07 | 6 | -0/+6 |
| | | | | This matches the behaviour of GNU find. | ||||
* | tests: Fix output interleaving with -j1 | Tavian Barnes | 2023-11-07 | 1 | -5/+5 |
| | |||||
* | Treat NO_COLOR="" the same as unset | Tavian Barnes | 2023-11-06 | 2 | -0/+32 |
| | | | | | | | | | | | | | | The docs say > Command-line software which adds ANSI color to its output by default > should check for a NO_COLOR environment variable that, when present > and not an empty string (regardless of its value), prevents the > addition of ANSI color. but we were not checking for the empty string. Link: https://no-color.org/ Link: https://github.com/sharkdp/fd/pull/1421 | ||||
* | tests: Add tests for ulimit -n after -exec | Tavian Barnes | 2023-11-02 | 4 | -0/+36 |
| | |||||
* | tests/bfs/help: Fix exit status | Tavian Barnes | 2023-10-23 | 1 | -4/+4 |
| | |||||
* | tests/bfs/help: Use ... && fail instead of ! ... | Tavian Barnes | 2023-10-23 | 2 | -5/+4 |
| | | | | ! false doesn't trigger an error with set -e. | ||||
* | tests/bfs/printf_color: Fix race condition | Tavian Barnes | 2023-10-23 | 2 | -1/+2 |
| | | | | | Invoking bfs in the top directory can lead it to explore other tests' scratch directories, so explicitly exclude them. | ||||
* | tests: Document -j | Tavian Barnes | 2023-10-23 | 1 | -21/+20 |
| | |||||
* | tests: Clean up verbose logging a bit | Tavian Barnes | 2023-10-23 | 1 | -20/+36 |
| | |||||
* | tests: Fix Bash 3 compatibility | Tavian Barnes | 2023-10-23 | 7 | -37/+47 |
| | |||||
* | tests: Run test cases in parallel | Tavian Barnes | 2023-10-23 | 2 | -15/+58 |
| | |||||
* | tests: Use test-specific scratch directories | Tavian Barnes | 2023-10-22 | 77 | -368/+330 |
| | |||||
* | tests: Fix column detection with redirected stderr | Tavian Barnes | 2023-10-20 | 1 | -1/+1 |
| | |||||
* | tests/color: Remove some useless cats | Tavian Barnes | 2023-10-20 | 4 | -53/+50 |
| | |||||
* | tests: Use xtouch to create the whole deep tree at once | Tavian Barnes | 2023-10-20 | 1 | -15/+6 |
| | |||||
* | tests/xtouch: Recover from ENAMETOOLONG | Tavian Barnes | 2023-10-20 | 1 | -45/+84 |
| | |||||
* | tests: Don't unset array[-1] | Tavian Barnes | 2023-10-19 | 1 | -6/+7 |
| | | | | This was only added in Bash 4.3 which is too new for macOS. | ||||
* | tests: Refactor implementation into separate files | Tavian Barnes | 2023-10-19 | 13 | -823/+906 |
| | |||||
* | tests: Update bash coding style | Tavian Barnes | 2023-10-19 | 1 | -32/+32 |
| | |||||
* | tests: Clean up colorization | Tavian Barnes | 2023-10-19 | 1 | -76/+102 |
| | |||||
* | tests: Use the ERR trap to print the failing command | Tavian Barnes | 2023-10-19 | 1 | -4/+46 |
| | |||||
* | tests: Fix uses of $? with set -e | Tavian Barnes | 2023-10-19 | 1 | -10/+12 |
| | |||||
* | tests: New defer function | Tavian Barnes | 2023-10-19 | 18 | -34/+54 |
| | |||||
* | tests: Rename --noclean -> --no-clean | Tavian Barnes | 2023-10-19 | 1 | -3/+3 |
| |