kitty/kitty_tests
copilot-swe-agent[bot] 519fd49ce6
Fix bugs in t=k remote drag implementation and add comprehensive tests
Bug fixes in dnd.c:
- mktempdir_in_cache: add missing 'return ans' after successful strdup
- mktempdir_in_cache (utils.py): use O_RDONLY instead of O_RDWR for directories
- remote_items allocation: use mi.num_uris instead of ds.num_mimes
- Off-by-one: uri_item_idx > changed to >= for bounds checks
- Off-by-one: entry_num > changed to >= for bounds checks
- populate_dir_entries: fix missing last entry after final null separator
- add_payload directory finalization: create directory on disk with mkdirat
- get_errno_name: add EFBIG, EISDIR, ENOSPC error codes

Test infrastructure:
- Add dnd_test_force_drag_dropped() to simulate DROPPED state
- Make notify_drag_data_ready() succeed in test mode

Comprehensive t=k tests added:
- Single file, empty file, single symlink transfer
- Chunked file transfer with m=1
- Single directory with children
- Directory with symlinks
- Multiple URIs
- Deep directory trees (breadth-first and depth-first, 3+ levels)
- Mixed file/dir/symlink at top level
- Completion signal
- Error handling (client errors, invalid state)
- DoS limits (REMOTE_DRAG_LIMIT, PRESENT_DATA_CAP)
- Invalid input (bad base64, too large chunks, invalid indices/handles)
- URI list with comments
- Multiple chunks for directory listing

Agent-Logs-Url: https://github.com/kovidgoyal/kitty/sessions/9da0bff7-6a1a-490f-a4c5-8cb328e056ce

Co-authored-by: kovidgoyal <1308621+kovidgoyal@users.noreply.github.com>
2026-04-13 15:54:34 +00:00
..
__init__.py
atexit.py
CascadiaCode-Regular.otf
check_build.py
clipboard.py
command_palette.py
completion.py
crypto.py
datatypes.py
dnd.py
file_transmission.py
FiraCode-Medium.otf
fonts.py
glfw.py
gr.py
GraphemeBreakTest.json
graphics.py
iosevka-regular.ttf
keys.py
layout.py
LiberationMono-Regular.ttf
main.py
mouse.py
multicell.py
notifications.py
open_actions.py
options.py
panels.py
parser.py
screen.py
search_query_parser.py
shell_integration.py
shm.py
ssh.py
tui.py
twemoji_smiley-cff2_colr_1.otf
utmp.py