perf: move Deno.writeTextFile and like functions to Rust (#14221)

Co-authored-by: Luca Casonato <hello@lcas.dev>
This commit is contained in:
David Sherret 2022-04-18 18:00:14 -04:00 committed by GitHub
parent ca3b20df3c
commit a64e63c361
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 222 additions and 138 deletions

View file

@ -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;
}
}