Commit LLM generated test cases
This commit is contained in:
parent
0ce82353e0
commit
302f1fa3c4
110 changed files with 7761 additions and 0 deletions
|
|
@ -0,0 +1,65 @@
|
|||
import type { ClientState, TestDefinition } from "../test-definition";
|
||||
import { assert } from "../utils/assert";
|
||||
|
||||
/**
|
||||
* EDGE CASE: File deleted locally while a create request is in-flight.
|
||||
*
|
||||
* The create request succeeds on the server, but by the time
|
||||
* applyServerResponse runs, the document has been removed from pathIndex
|
||||
* (deleted locally). The code at sync-actions.ts line 256-283 handles this:
|
||||
* it confirms the create (so the server has a documentId), then immediately
|
||||
* marks it as deleted-locally so the delete can be sent to the server.
|
||||
*
|
||||
* This test verifies that:
|
||||
* 1. The file is properly deleted on both clients
|
||||
* 2. No orphaned documents exist on the server
|
||||
* 3. No duplicate documentIds in the VFS
|
||||
*/
|
||||
function verifyNoFiles(state: ClientState): void {
|
||||
assert(
|
||||
state.files.size === 0,
|
||||
`Expected 0 files, got ${state.files.size}: ${Array.from(state.files.keys()).join(", ")}`
|
||||
);
|
||||
}
|
||||
|
||||
export const deleteDuringPendingCreateTest: TestDefinition = {
|
||||
name: "Delete During Pending Create (Server Paused)",
|
||||
description:
|
||||
"Client creates a file, server is paused so the create request stalls. " +
|
||||
"Client then deletes the file while the create is in-flight. When the " +
|
||||
"server resumes, the create succeeds but the file should still end up " +
|
||||
"deleted on both clients.",
|
||||
clients: 2,
|
||||
steps: [
|
||||
{ type: "enable-sync", client: 0 },
|
||||
{ type: "enable-sync", client: 1 },
|
||||
{ type: "sync" },
|
||||
{ type: "barrier" },
|
||||
|
||||
// Pause server so the create request stalls
|
||||
{ type: "pause-server" },
|
||||
|
||||
// Client 0 creates a file (HTTP request will stall)
|
||||
{
|
||||
type: "create",
|
||||
client: 0,
|
||||
path: "ephemeral.md",
|
||||
content: "this will be deleted"
|
||||
},
|
||||
|
||||
// Wait a bit to ensure the create is queued
|
||||
|
||||
// Client 0 deletes the file while create is pending
|
||||
{ type: "delete", client: 0, path: "ephemeral.md" },
|
||||
|
||||
// Resume server — the create request completes, then delete follows
|
||||
{ type: "resume-server" },
|
||||
{ type: "sync" },
|
||||
{ type: "barrier" },
|
||||
|
||||
// File should be gone on both clients
|
||||
{ type: "assert-not-exists", client: 0, path: "ephemeral.md" },
|
||||
{ type: "assert-not-exists", client: 1, path: "ephemeral.md" },
|
||||
{ type: "assert-consistent", verify: verifyNoFiles }
|
||||
]
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue