mirror of
https://github.com/denoland/deno.git
synced 2025-02-12 16:59:32 -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 {
|
isSymbolicLink(): boolean {
|
||||||
return this.entry.isSymLink;
|
return this.entry.isSymlink;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @deprecated */
|
/** @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.
|
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
|
||||||
import { assertEquals, assertNotEquals, fail } from "@std/assert/mod.ts";
|
import { assertEquals, assertNotEquals, fail } from "@std/assert/mod.ts";
|
||||||
import { assertCallbackErrorUncaught } from "../_test_utils.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";
|
import { join } from "@std/path/mod.ts";
|
||||||
|
|
||||||
Deno.test({
|
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