mirror of
https://github.com/denoland/deno.git
synced 2025-02-08 07:16:56 -05:00
fix: node dirent tests
This commit is contained in:
parent
42400415b9
commit
0337a7efbf
3 changed files with 65 additions and 92 deletions
|
@ -44,7 +44,7 @@ export default class Dirent {
|
|||
}
|
||||
|
||||
isSymbolicLink(): boolean {
|
||||
return this.entry.isSymLink;
|
||||
return this.entry.isSymlink;
|
||||
}
|
||||
|
||||
/** @deprecated */
|
||||
|
|
|
@ -1,90 +0,0 @@
|
|||
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
|
||||
import { assert, assertEquals, assertThrows } from "@std/assert/mod.ts";
|
||||
import { Dirent } from "node:fs";
|
||||
|
||||
class DirEntryMock implements Deno.DirEntry {
|
||||
name = "";
|
||||
isFile = false;
|
||||
isDirectory = false;
|
||||
isSymlink = false;
|
||||
}
|
||||
|
||||
Deno.test({
|
||||
name: "Directories are correctly identified",
|
||||
fn() {
|
||||
const entry = new DirEntryMock();
|
||||
entry.isDirectory = true;
|
||||
entry.isFile = false;
|
||||
entry.isSymlink = false;
|
||||
const dir = new Dirent("foo", "parent", entry);
|
||||
assert(dir.isDirectory());
|
||||
assert(!dir.isFile());
|
||||
assert(!dir.isSymbolicLink());
|
||||
},
|
||||
});
|
||||
|
||||
Deno.test({
|
||||
name: "Files are correctly identified",
|
||||
fn() {
|
||||
const entry = new DirEntryMock();
|
||||
entry.isDirectory = false;
|
||||
entry.isFile = true;
|
||||
entry.isSymlink = false;
|
||||
const dir = new Dirent("foo", "parent", entry);
|
||||
assert(!dir.isDirectory());
|
||||
assert(dir.isFile());
|
||||
assert(!dir.isSymbolicLink());
|
||||
},
|
||||
});
|
||||
|
||||
Deno.test({
|
||||
name: "Symlinks are correctly identified",
|
||||
fn() {
|
||||
const entry = new DirEntryMock();
|
||||
entry.isDirectory = false;
|
||||
entry.isFile = false;
|
||||
entry.isSymlink = true;
|
||||
const dir = new Dirent("foo", "parent", entry);
|
||||
assert(!dir.isDirectory());
|
||||
assert(!dir.isFile());
|
||||
assert(dir.isSymbolicLink());
|
||||
},
|
||||
});
|
||||
|
||||
Deno.test({
|
||||
name: "File name is correct",
|
||||
fn() {
|
||||
const entry = new DirEntryMock();
|
||||
const mock = new Dirent("my_file", "parent", entry);
|
||||
assertEquals(mock.name, "my_file");
|
||||
},
|
||||
});
|
||||
|
||||
Deno.test({
|
||||
name: "Socket and FIFO pipes aren't yet available",
|
||||
fn() {
|
||||
const entry = new DirEntryMock();
|
||||
const dir = new Dirent("my_file", "parent", entry);
|
||||
assertThrows(
|
||||
() => dir.isFIFO(),
|
||||
Error,
|
||||
"does not yet support",
|
||||
);
|
||||
assertThrows(
|
||||
() => dir.isSocket(),
|
||||
Error,
|
||||
"does not yet support",
|
||||
);
|
||||
},
|
||||
});
|
||||
|
||||
Deno.test({
|
||||
name: "Path and parent path is correct",
|
||||
fn() {
|
||||
const entry = new DirEntryMock();
|
||||
const dir = new Dirent("my_file", "/home/user", entry);
|
||||
assertEquals(dir.name, "my_file");
|
||||
assertEquals(dir.path, "/home/user");
|
||||
assertEquals(dir.parentPath, "/home/user");
|
||||
},
|
||||
});
|
|
@ -1,7 +1,7 @@
|
|||
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
|
||||
import { assertEquals, assertNotEquals, fail } from "@std/assert/mod.ts";
|
||||
import { assertCallbackErrorUncaught } from "../_test_utils.ts";
|
||||
import { readdir, readdirSync } from "node:fs";
|
||||
import { Dirent, readdir, readdirSync } from "node:fs";
|
||||
import { join } from "@std/path/mod.ts";
|
||||
|
||||
Deno.test({
|
||||
|
@ -90,3 +90,66 @@ Deno.test("[std/node/fs] readdir callback isn't called twice if error is thrown"
|
|||
},
|
||||
});
|
||||
});
|
||||
|
||||
Deno.test("[node/fs] readdir creates Dirent instances", async () => {
|
||||
const tempDir = await Deno.makeTempDir();
|
||||
await Deno.writeTextFile(join(tempDir, "file.txt"), "file content");
|
||||
await Deno.symlink(join(tempDir, "file.txt"), join(tempDir, "link"));
|
||||
await Deno.mkdir(join(tempDir, "dir"));
|
||||
|
||||
try {
|
||||
const result = await new Promise<Dirent[]>((resolve, reject) => {
|
||||
readdir(tempDir, { withFileTypes: true }, (err, files) => {
|
||||
if (err) reject(err);
|
||||
resolve(files);
|
||||
});
|
||||
});
|
||||
result.sort((a, b) => a.name.localeCompare(b.name));
|
||||
|
||||
assertEquals(result[0].name, "dir");
|
||||
assertEquals(result[0].isFile(), false);
|
||||
assertEquals(result[0].isDirectory(), true);
|
||||
assertEquals(result[0].isSymbolicLink(), false);
|
||||
|
||||
assertEquals(result[1].name, "file.txt");
|
||||
assertEquals(result[1].isFile(), true);
|
||||
assertEquals(result[1].isDirectory(), false);
|
||||
assertEquals(result[1].isSymbolicLink(), false);
|
||||
|
||||
assertEquals(result[2].name, "link");
|
||||
assertEquals(result[2].isFile(), false);
|
||||
assertEquals(result[2].isDirectory(), false);
|
||||
assertEquals(result[2].isSymbolicLink(), true);
|
||||
} finally {
|
||||
await Deno.remove(tempDir, { recursive: true });
|
||||
}
|
||||
});
|
||||
|
||||
Deno.test("[node/fs] readdirSync creates Dirent instances", async () => {
|
||||
const tempDir = await Deno.makeTempDir();
|
||||
await Deno.writeTextFile(join(tempDir, "file.txt"), "file content");
|
||||
await Deno.symlink(join(tempDir, "file.txt"), join(tempDir, "link"));
|
||||
await Deno.mkdir(join(tempDir, "dir"));
|
||||
|
||||
try {
|
||||
const result = readdirSync(tempDir, { withFileTypes: true });
|
||||
result.sort((a, b) => a.name.localeCompare(b.name));
|
||||
|
||||
assertEquals(result[0].name, "dir");
|
||||
assertEquals(result[0].isFile(), false);
|
||||
assertEquals(result[0].isDirectory(), true);
|
||||
assertEquals(result[0].isSymbolicLink(), false);
|
||||
|
||||
assertEquals(result[1].name, "file.txt");
|
||||
assertEquals(result[1].isFile(), true);
|
||||
assertEquals(result[1].isDirectory(), false);
|
||||
assertEquals(result[1].isSymbolicLink(), false);
|
||||
|
||||
assertEquals(result[2].name, "link");
|
||||
assertEquals(result[2].isFile(), false);
|
||||
assertEquals(result[2].isDirectory(), false);
|
||||
assertEquals(result[2].isSymbolicLink(), true);
|
||||
} finally {
|
||||
await Deno.remove(tempDir, { recursive: true });
|
||||
}
|
||||
});
|
||||
|
|
Loading…
Add table
Reference in a new issue