mirror of
https://github.com/denoland/deno.git
synced 2025-08-04 10:59:13 +00:00
fix(ext/cache): cache.put overwrites previous call (#18649)
This commit is contained in:
parent
65b0d2316d
commit
18e0ee368c
3 changed files with 85 additions and 22 deletions
|
@ -127,3 +127,57 @@ fn cache_matching_package_json_dep_should_not_install_all() {
|
|||
"Initialize @types/node@18.8.2\n",
|
||||
));
|
||||
}
|
||||
|
||||
// Regression test for https://github.com/denoland/deno/issues/17299
|
||||
#[test]
|
||||
fn cache_put_overwrite() {
|
||||
let test_context = TestContextBuilder::new().use_temp_cwd().build();
|
||||
let temp_dir = test_context.temp_dir();
|
||||
|
||||
let part_one = r#"
|
||||
const req = new Request('http://localhost/abc');
|
||||
const res1 = new Response('res1');
|
||||
const res2 = new Response('res2');
|
||||
|
||||
const cache = await caches.open('test');
|
||||
|
||||
await cache.put(req, res1);
|
||||
await cache.put(req, res2);
|
||||
|
||||
const res = await cache.match(req).then((res) => res?.text());
|
||||
console.log(res);
|
||||
"#;
|
||||
|
||||
let part_two = r#"
|
||||
const req = new Request("http://localhost/abc");
|
||||
const res1 = new Response("res1");
|
||||
const res2 = new Response("res2");
|
||||
|
||||
const cache = await caches.open("test");
|
||||
|
||||
// Swap the order of put() calls.
|
||||
await cache.put(req, res2);
|
||||
await cache.put(req, res1);
|
||||
|
||||
const res = await cache.match(req).then((res) => res?.text());
|
||||
console.log(res);
|
||||
"#;
|
||||
|
||||
temp_dir.write("cache_put.js", part_one);
|
||||
|
||||
let run_command =
|
||||
test_context.new_command().args_vec(["run", "cache_put.js"]);
|
||||
|
||||
let output = run_command.run();
|
||||
output.assert_matches_text("res2\n");
|
||||
output.assert_exit_code(0);
|
||||
|
||||
// The wait will surface the bug as we check last written time
|
||||
// when we overwrite a response.
|
||||
std::thread::sleep(std::time::Duration::from_secs(1));
|
||||
|
||||
temp_dir.write("cache_put.js", part_two);
|
||||
let output = run_command.run();
|
||||
output.assert_matches_text("res1\n");
|
||||
output.assert_exit_code(0);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue