summaryrefslogtreecommitdiff
path: root/cli/tests/unit/files_test.ts
diff options
context:
space:
mode:
Diffstat (limited to 'cli/tests/unit/files_test.ts')
-rw-r--r--cli/tests/unit/files_test.ts32
1 files changed, 32 insertions, 0 deletions
diff --git a/cli/tests/unit/files_test.ts b/cli/tests/unit/files_test.ts
index d15f1f538..5fb590d72 100644
--- a/cli/tests/unit/files_test.ts
+++ b/cli/tests/unit/files_test.ts
@@ -263,6 +263,38 @@ Deno.test(
},
);
+Deno.test(
+ { permissions: { write: true } },
+ async function writeSyncWhileAsyncFails() {
+ const tempDir = await Deno.makeTempDir();
+ try {
+ const filePath = tempDir + "/file.txt";
+ const file = await Deno.open(filePath, { create: true, write: true });
+ const rid = file.rid;
+ try {
+ // set a file lock so the async write will be held up
+ await Deno.flock(rid, true);
+ let p: Promise<number> | undefined;
+ try {
+ p = Deno.write(rid, new TextEncoder().encode("test"));
+ assertThrows(
+ () => Deno.writeSync(rid, new TextEncoder().encode("test")),
+ Error,
+ "Resource is unavailable because it is in use by a promise",
+ );
+ } finally {
+ await Deno.funlock(rid);
+ }
+ await p;
+ } finally {
+ file.close();
+ }
+ } finally {
+ Deno.removeSync(tempDir, { recursive: true });
+ }
+ },
+);
+
Deno.test(async function openOptions() {
const filename = "cli/tests/testdata/fixture.json";
await assertRejects(