summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cli/standalone/virtual_fs.rs1
-rw-r--r--ext/fs/interface.rs1
-rw-r--r--ext/fs/std_fs.rs1
-rw-r--r--ext/node/polyfills/_fs/_fs_dirent.ts9
-rw-r--r--tests/unit_node/_fs/_fs_dirent_test.ts13
5 files changed, 25 insertions, 0 deletions
diff --git a/cli/standalone/virtual_fs.rs b/cli/standalone/virtual_fs.rs
index 4c14f0e9a..3e6823d50 100644
--- a/cli/standalone/virtual_fs.rs
+++ b/cli/standalone/virtual_fs.rs
@@ -764,6 +764,7 @@ impl FileBackedVfs {
.entries
.iter()
.map(|entry| FsDirEntry {
+ parent_path: path.to_string_lossy().into_owned(),
name: entry.name().to_string(),
is_file: matches!(entry, VfsEntry::File(_)),
is_directory: matches!(entry, VfsEntry::Dir(_)),
diff --git a/ext/fs/interface.rs b/ext/fs/interface.rs
index 5031dc134..833f362bf 100644
--- a/ext/fs/interface.rs
+++ b/ext/fs/interface.rs
@@ -72,6 +72,7 @@ pub enum FsFileType {
#[derive(Serialize)]
#[serde(rename_all = "camelCase")]
pub struct FsDirEntry {
+ pub parent_path: String,
pub name: String,
pub is_file: bool,
pub is_directory: bool,
diff --git a/ext/fs/std_fs.rs b/ext/fs/std_fs.rs
index 9e2acedcc..054f5c9c4 100644
--- a/ext/fs/std_fs.rs
+++ b/ext/fs/std_fs.rs
@@ -785,6 +785,7 @@ fn read_dir(path: &Path) -> FsResult<Vec<FsDirEntry>> {
};
}
Some(FsDirEntry {
+ parent_path: path.to_string_lossy().to_string(),
name,
is_file: method_or_false!(is_file),
is_directory: method_or_false!(is_dir),
diff --git a/ext/node/polyfills/_fs/_fs_dirent.ts b/ext/node/polyfills/_fs/_fs_dirent.ts
index 155d5cb03..0f80fc135 100644
--- a/ext/node/polyfills/_fs/_fs_dirent.ts
+++ b/ext/node/polyfills/_fs/_fs_dirent.ts
@@ -43,4 +43,13 @@ export default class Dirent {
get name(): string | null {
return this.entry.name;
}
+
+ get parentPath(): string {
+ return this.entry.parentPath;
+ }
+
+ /** @deprecated */
+ get path(): string {
+ return this.parentPath;
+ }
}
diff --git a/tests/unit_node/_fs/_fs_dirent_test.ts b/tests/unit_node/_fs/_fs_dirent_test.ts
index 7c88a6d3f..853888925 100644
--- a/tests/unit_node/_fs/_fs_dirent_test.ts
+++ b/tests/unit_node/_fs/_fs_dirent_test.ts
@@ -6,6 +6,7 @@ import { Dirent as Dirent_ } from "node:fs";
const Dirent = Dirent_ as any;
class DirEntryMock implements Deno.DirEntry {
+ parentPath = "";
name = "";
isFile = false;
isDirectory = false;
@@ -80,3 +81,15 @@ Deno.test({
);
},
});
+
+Deno.test({
+ name: "Path and parent path is correct",
+ fn() {
+ const entry: DirEntryMock = new DirEntryMock();
+ entry.name = "my_file";
+ entry.parentPath = "/home/user";
+ assertEquals(new Dirent(entry).name, "my_file");
+ assertEquals(new Dirent(entry).path, "/home/user");
+ assertEquals(new Dirent(entry).parentPath, "/home/user");
+ },
+});