summaryrefslogtreecommitdiff
path: root/cli/js/stat_test.ts
diff options
context:
space:
mode:
Diffstat (limited to 'cli/js/stat_test.ts')
-rw-r--r--cli/js/stat_test.ts50
1 files changed, 50 insertions, 0 deletions
diff --git a/cli/js/stat_test.ts b/cli/js/stat_test.ts
index 9e78888a3..7b4f06114 100644
--- a/cli/js/stat_test.ts
+++ b/cli/js/stat_test.ts
@@ -170,3 +170,53 @@ testPerm({ read: true }, async function lstatNotFound(): Promise<void> {
assert(caughtError);
assertEquals(badInfo, undefined);
});
+
+const isWindows = Deno.build.os === "win";
+
+// OS dependent tests
+if (isWindows) {
+ testPerm(
+ { read: true, write: true },
+ async function statNoUnixFields(): Promise<void> {
+ const enc = new TextEncoder();
+ const data = enc.encode("Hello");
+ const tempDir = Deno.makeTempDirSync();
+ const filename = tempDir + "/test.txt";
+ Deno.writeFileSync(filename, data, { perm: 0o666 });
+ const s = Deno.statSync(filename);
+ assert(s.dev === null);
+ assert(s.ino === null);
+ assert(s.mode === null);
+ assert(s.nlink === null);
+ assert(s.uid === null);
+ assert(s.gid === null);
+ assert(s.rdev === null);
+ assert(s.blksize === null);
+ assert(s.blocks === null);
+ }
+ );
+} else {
+ testPerm(
+ { read: true, write: true },
+ async function statUnixFields(): Promise<void> {
+ const enc = new TextEncoder();
+ const data = enc.encode("Hello");
+ const tempDir = Deno.makeTempDirSync();
+ const filename = tempDir + "/test.txt";
+ const filename2 = tempDir + "/test2.txt";
+ Deno.writeFileSync(filename, data, { perm: 0o666 });
+ // Create a link
+ Deno.linkSync(filename, filename2);
+ const s = Deno.statSync(filename);
+ assert(s.dev !== null);
+ assert(s.ino !== null);
+ assertEquals(s.mode & 0o666, 0o666);
+ assertEquals(s.nlink, 2);
+ assert(s.uid !== null);
+ assert(s.gid !== null);
+ assert(s.rdev !== null);
+ assert(s.blksize !== null);
+ assert(s.blocks !== null);
+ }
+ );
+}