mirror of
https://github.com/pchuan98/codex.git
synced 2026-07-01 00:31:56 +08:00
Fix fs/readDirectory to skip broken symlinks (#17907)
## Summary - Skip directory entries whose metadata lookup fails during `fs/readDirectory` - Add an exec-server regression test covering a broken symlink beside valid entries ## Testing - `just fmt` - `cargo test -p codex-exec-server` (started, but dependency/network updates stalled before completion in this environment)
This commit is contained in:
@@ -305,7 +305,9 @@ impl ExecutorFileSystem for DirectFileSystem {
|
|||||||
let mut entries = Vec::new();
|
let mut entries = Vec::new();
|
||||||
let mut read_dir = tokio::fs::read_dir(path.as_path()).await?;
|
let mut read_dir = tokio::fs::read_dir(path.as_path()).await?;
|
||||||
while let Some(entry) = read_dir.next_entry().await? {
|
while let Some(entry) = read_dir.next_entry().await? {
|
||||||
let metadata = tokio::fs::metadata(entry.path()).await?;
|
let Ok(metadata) = tokio::fs::metadata(entry.path()).await else {
|
||||||
|
continue;
|
||||||
|
};
|
||||||
entries.push(ReadDirectoryEntry {
|
entries.push(ReadDirectoryEntry {
|
||||||
file_name: entry.file_name().to_string_lossy().into_owned(),
|
file_name: entry.file_name().to_string_lossy().into_owned(),
|
||||||
is_directory: metadata.is_dir(),
|
is_directory: metadata.is_dir(),
|
||||||
|
|||||||
@@ -272,6 +272,11 @@ async fn file_system_methods_cover_surface_area(use_remote: bool) -> Result<()>
|
|||||||
"hello from trait"
|
"hello from trait"
|
||||||
);
|
);
|
||||||
|
|
||||||
|
symlink(
|
||||||
|
source_dir.join("missing-target"),
|
||||||
|
source_dir.join("broken-link"),
|
||||||
|
)?;
|
||||||
|
|
||||||
let mut entries = file_system
|
let mut entries = file_system
|
||||||
.read_directory(&absolute_path(source_dir), /*sandbox*/ None)
|
.read_directory(&absolute_path(source_dir), /*sandbox*/ None)
|
||||||
.await
|
.await
|
||||||
|
|||||||
Reference in New Issue
Block a user