mirror of
https://github.com/denoland/deno.git
synced 2025-07-23 05:05:08 +00:00
perf: move Deno.writeTextFile and like functions to Rust (#14221)
Co-authored-by: Luca Casonato <hello@lcas.dev>
This commit is contained in:
parent
ca3b20df3c
commit
a64e63c361
6 changed files with 222 additions and 138 deletions
|
@ -17,7 +17,7 @@ Deno.test(
|
|||
const dataRead = Deno.readFileSync(filename);
|
||||
const dec = new TextDecoder("utf-8");
|
||||
const actual = dec.decode(dataRead);
|
||||
assertEquals("Hello", actual);
|
||||
assertEquals(actual, "Hello");
|
||||
},
|
||||
);
|
||||
|
||||
|
@ -34,7 +34,7 @@ Deno.test(
|
|||
const dataRead = Deno.readFileSync(fileUrl);
|
||||
const dec = new TextDecoder("utf-8");
|
||||
const actual = dec.decode(dataRead);
|
||||
assertEquals("Hello", actual);
|
||||
assertEquals(actual, "Hello");
|
||||
|
||||
Deno.removeSync(tempDir, { recursive: true });
|
||||
},
|
||||
|
@ -92,7 +92,7 @@ Deno.test(
|
|||
const dataRead = Deno.readFileSync(filename);
|
||||
const dec = new TextDecoder("utf-8");
|
||||
const actual = dec.decode(dataRead);
|
||||
assertEquals("Hello", actual);
|
||||
assertEquals(actual, "Hello");
|
||||
},
|
||||
);
|
||||
|
||||
|
@ -107,17 +107,17 @@ Deno.test(
|
|||
let dataRead = Deno.readFileSync(filename);
|
||||
const dec = new TextDecoder("utf-8");
|
||||
let actual = dec.decode(dataRead);
|
||||
assertEquals("HelloHello", actual);
|
||||
assertEquals(actual, "HelloHello");
|
||||
// Now attempt overwrite
|
||||
Deno.writeFileSync(filename, data, { append: false });
|
||||
dataRead = Deno.readFileSync(filename);
|
||||
actual = dec.decode(dataRead);
|
||||
assertEquals("Hello", actual);
|
||||
assertEquals(actual, "Hello");
|
||||
// append not set should also overwrite
|
||||
Deno.writeFileSync(filename, data);
|
||||
dataRead = Deno.readFileSync(filename);
|
||||
actual = dec.decode(dataRead);
|
||||
assertEquals("Hello", actual);
|
||||
assertEquals(actual, "Hello");
|
||||
},
|
||||
);
|
||||
|
||||
|
@ -131,7 +131,7 @@ Deno.test(
|
|||
const dataRead = Deno.readFileSync(filename);
|
||||
const dec = new TextDecoder("utf-8");
|
||||
const actual = dec.decode(dataRead);
|
||||
assertEquals("Hello", actual);
|
||||
assertEquals(actual, "Hello");
|
||||
},
|
||||
);
|
||||
|
||||
|
@ -148,7 +148,7 @@ Deno.test(
|
|||
const dataRead = Deno.readFileSync(fileUrl);
|
||||
const dec = new TextDecoder("utf-8");
|
||||
const actual = dec.decode(dataRead);
|
||||
assertEquals("Hello", actual);
|
||||
assertEquals(actual, "Hello");
|
||||
|
||||
Deno.removeSync(tempDir, { recursive: true });
|
||||
},
|
||||
|
@ -212,7 +212,7 @@ Deno.test(
|
|||
const dataRead = Deno.readFileSync(filename);
|
||||
const dec = new TextDecoder("utf-8");
|
||||
const actual = dec.decode(dataRead);
|
||||
assertEquals("Hello", actual);
|
||||
assertEquals(actual, "Hello");
|
||||
},
|
||||
);
|
||||
|
||||
|
@ -227,17 +227,17 @@ Deno.test(
|
|||
let dataRead = Deno.readFileSync(filename);
|
||||
const dec = new TextDecoder("utf-8");
|
||||
let actual = dec.decode(dataRead);
|
||||
assertEquals("HelloHello", actual);
|
||||
assertEquals(actual, "HelloHello");
|
||||
// Now attempt overwrite
|
||||
await Deno.writeFile(filename, data, { append: false });
|
||||
dataRead = Deno.readFileSync(filename);
|
||||
actual = dec.decode(dataRead);
|
||||
assertEquals("Hello", actual);
|
||||
assertEquals(actual, "Hello");
|
||||
// append not set should also overwrite
|
||||
await Deno.writeFile(filename, data);
|
||||
dataRead = Deno.readFileSync(filename);
|
||||
actual = dec.decode(dataRead);
|
||||
assertEquals("Hello", actual);
|
||||
assertEquals(actual, "Hello");
|
||||
},
|
||||
);
|
||||
|
||||
|
@ -256,8 +256,6 @@ Deno.test(
|
|||
assert(e instanceof Error);
|
||||
assertEquals(e.name, "AbortError");
|
||||
}
|
||||
const stat = Deno.statSync(filename);
|
||||
assertEquals(stat.size, 0);
|
||||
},
|
||||
);
|
||||
|
||||
|
@ -276,8 +274,6 @@ Deno.test(
|
|||
} catch (e) {
|
||||
assertEquals(e, abortReason);
|
||||
}
|
||||
const stat = Deno.statSync(filename);
|
||||
assertEquals(stat.size, 0);
|
||||
},
|
||||
);
|
||||
|
||||
|
@ -295,8 +291,6 @@ Deno.test(
|
|||
} catch (e) {
|
||||
assertEquals(e, "Some string");
|
||||
}
|
||||
const stat = Deno.statSync(filename);
|
||||
assertEquals(stat.size, 0);
|
||||
},
|
||||
);
|
||||
|
||||
|
@ -315,8 +309,7 @@ Deno.test(
|
|||
assert(e instanceof Error);
|
||||
assertEquals(e.name, "AbortError");
|
||||
}
|
||||
const stat = Deno.statSync(filename);
|
||||
assertEquals(stat.size, 0);
|
||||
assertNotExists(filename);
|
||||
},
|
||||
);
|
||||
|
||||
|
@ -335,8 +328,7 @@ Deno.test(
|
|||
} catch (e) {
|
||||
assertEquals(e, abortReason);
|
||||
}
|
||||
const stat = Deno.statSync(filename);
|
||||
assertEquals(stat.size, 0);
|
||||
assertNotExists(filename);
|
||||
},
|
||||
);
|
||||
|
||||
|
@ -356,7 +348,21 @@ Deno.test(
|
|||
} catch (e) {
|
||||
assertEquals(e, "Some string");
|
||||
}
|
||||
const stat = Deno.statSync(filename);
|
||||
assertEquals(stat.size, 0);
|
||||
assertNotExists(filename);
|
||||
},
|
||||
);
|
||||
|
||||
function assertNotExists(filename: string | URL) {
|
||||
if (pathExists(filename)) {
|
||||
throw new Error(`The file ${filename} exists.`);
|
||||
}
|
||||
}
|
||||
|
||||
function pathExists(path: string | URL) {
|
||||
try {
|
||||
Deno.statSync(path);
|
||||
return true;
|
||||
} catch {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue