summaryrefslogtreecommitdiff
path: root/tests/unit
diff options
context:
space:
mode:
authorMatt Mastracci <matthew@mastracci.com>2024-02-21 13:11:04 -0700
committerGitHub <noreply@github.com>2024-02-21 20:11:04 +0000
commit76ebf567e25d0b7f3ed365dd2da336a9b5768fad (patch)
treecbe6963ca696d6e37661bc08495a7d3a89903ba7 /tests/unit
parenta2c1cc5a1a8513b9f6434de2764602ae97e6d8b3 (diff)
fix(ext/fs): make errors in tempfile creation clearer (#22498)
When using a prefix or suffix containing an invalid filename character, it's not entirely clear where the errors come from. We make these errors more consistent across platforms. In addition, all permission prompts for tempfile and tempdir were printing the same API name. We also take the opportunity to make the tempfile random space larger by 2x (using a base32-encoded u64 rather than a hex-encoded u32).
Diffstat (limited to 'tests/unit')
-rw-r--r--tests/unit/make_temp_test.ts22
1 files changed, 22 insertions, 0 deletions
diff --git a/tests/unit/make_temp_test.ts b/tests/unit/make_temp_test.ts
index cbbae8dfe..2c771177b 100644
--- a/tests/unit/make_temp_test.ts
+++ b/tests/unit/make_temp_test.ts
@@ -155,3 +155,25 @@ Deno.test(
}
},
);
+
+Deno.test(
+ { permissions: { read: true, write: true } },
+ function makeTempInvalidCharacter() {
+ // Various control and ASCII characters that are disallowed on all platforms
+ for (const invalid of ["\0", "*", "\x9f"]) {
+ assertThrows(() => Deno.makeTempFileSync({ prefix: invalid }));
+ assertThrows(() => Deno.makeTempDirSync({ prefix: invalid }));
+ assertThrows(() => Deno.makeTempFileSync({ suffix: invalid }));
+ assertThrows(() => Deno.makeTempDirSync({ suffix: invalid }));
+ }
+
+ // On Windows, files can't end with space or period
+ if (Deno.build.os === "windows") {
+ assertThrows(() => Deno.makeTempFileSync({ suffix: "." }));
+ assertThrows(() => Deno.makeTempFileSync({ suffix: " " }));
+ } else {
+ Deno.makeTempFileSync({ suffix: "." });
+ Deno.makeTempFileSync({ suffix: " " });
+ }
+ },
+);