mirror of
https://github.com/kovidgoyal/kitty
synced 2026-06-06 01:05:48 +02:00
Fix failing test
This commit is contained in:
15
kitty/dnd.c
15
kitty/dnd.c
@@ -2103,7 +2103,11 @@ add_payload(Window *w, DragRemoteItem *ri, bool has_more, const uint8_t *payload
|
||||
if (symlinkat((char*)ri->data, dirfd, ri->dir_entry_name) != 0) abrt(errno, "failed to create symlink for drag source item");
|
||||
break;
|
||||
default:
|
||||
if (mkdirat(dirfd, ri->dir_entry_name, dir_permissions) != 0 && errno != EEXIST) abrt(errno, "failed to create directory for drag source item");
|
||||
if (mkdirat(dirfd, ri->dir_entry_name, dir_permissions) != 0 && errno != EEXIST) {
|
||||
int err = errno;
|
||||
log_error("Failed to create directory for drag source item with name: %s and error: %s", ri->dir_entry_name, strerror(err));
|
||||
abrt(err, "failed to create directory for drag source item");
|
||||
}
|
||||
populate_dir_entries(w, ri);
|
||||
break;
|
||||
}
|
||||
@@ -2139,12 +2143,17 @@ toplevel_data_for_drag(
|
||||
const char *uri = mi.uri_list[uri_item_idx];
|
||||
char *fname = sanitized_filename_from_url(uri);
|
||||
if (!fname) abrt(EINVAL, "could not sanitize filename for URI in drag source uri-list");
|
||||
if (!fname[0]) abrt(EINVAL, "URI must not have an empty path");
|
||||
ri->dir_entry_name = fname;
|
||||
char path[32];
|
||||
snprintf(path, sizeof(path), "%u", uri_item_idx);
|
||||
if (mkdirat(ds.base_dir_fd_plus_one - 1, path, dir_permissions) != 0 && errno != EEXIST) abrt(errno, "failed to create directory for drag source item");
|
||||
if (mkdirat(ds.base_dir_fd_plus_one - 1, path, dir_permissions) != 0 && errno != EEXIST) {
|
||||
int err = errno;
|
||||
log_error("Failed to create directory for drag source item at: %s/%u with error: %s", ds.base_dir_for_remote_items, uri_item_idx, strerror(err));
|
||||
abrt(err, "failed to create directory for drag source item");
|
||||
}
|
||||
int fd = safe_openat(ds.base_dir_fd_plus_one - 1, path, O_RDONLY | O_DIRECTORY, 0);
|
||||
if (fd < 0) abrt(errno, "failed to create directory for drag source item");
|
||||
if (fd < 0) abrt(errno, "failed to open directory for drag source item");
|
||||
ri->top_level_parent_dir_fd_plus_one = fd + 1;
|
||||
if (!ds.file_promises) {
|
||||
free(mi.uri_list[uri_item_idx]);
|
||||
|
||||
@@ -1190,7 +1190,8 @@ def sanitized_filename_from_url(url: str) -> str:
|
||||
from urllib.parse import unquote, urlparse
|
||||
try:
|
||||
purl = urlparse(url)
|
||||
fname = posixpath.basename(unquote(purl.path))
|
||||
fpath = purl.path.rstrip('/') or '/'
|
||||
fname = posixpath.basename(unquote(fpath))
|
||||
return fname.replace(os.sep, '_')
|
||||
except Exception:
|
||||
return ''
|
||||
|
||||
@@ -446,11 +446,12 @@ class TestDnDKitten(BaseTest):
|
||||
if line and not line.startswith('#'):
|
||||
purl = urlparse(line)
|
||||
if purl.scheme == 'file':
|
||||
paths.add(purl.path)
|
||||
fpath = purl.path.rstrip('/') or '/'
|
||||
paths.add(fpath)
|
||||
if remote_client:
|
||||
self.assertNotEqual(self.src_data_dir, os.path.dirname(purl.path))
|
||||
self.assertNotEqual(self.src_data_dir, os.path.dirname(fpath))
|
||||
else:
|
||||
self.assertEqual(self.src_data_dir, os.path.dirname(purl.path))
|
||||
self.assertEqual(self.src_data_dir, os.path.dirname(fpath))
|
||||
src_items = set(os.listdir(self.src_data_dir))
|
||||
self.assertEqual(src_items, {os.path.basename(x) for x in paths})
|
||||
if remote_client:
|
||||
|
||||
Reference in New Issue
Block a user