Something went wrong. Try again.
Monorepo for the nibling.run platform
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758import assert from "node:assert/strict";import { test } from "node:test";import { memoryFiles } from "../src/files.ts";import { fileDocs } from "../src/collab/file-docs.ts";
test("two opens of the same path share one doc", () => { const files = memoryFiles({ "a.ts": "one" }); const docs = fileDocs(files); assert.equal(docs.open("a.ts"), docs.open("a.ts"));});
test("a second fileDocs(files) call shares the same doc as the first", () => { const files = memoryFiles({ "a.ts": "one" }); assert.equal(fileDocs(files).open("a.ts"), fileDocs(files).open("a.ts"));});
test("editing the doc writes files", () => { const files = memoryFiles({ "a.ts": "one" }); const doc = fileDocs(files).open("a.ts"); doc.write("two"); assert.equal(files.read("a.ts"), "two");});
test("an external files.write updates the doc", () => { const files = memoryFiles({ "a.ts": "one" }); const doc = fileDocs(files).open("a.ts"); files.write("a.ts", "three"); assert.equal(doc.text, "three");});
test("an external write does not bounce back into files, and a local edit writes files exactly once", () => { const files = memoryFiles({ "a.ts": "one" }); const writes: string[] = []; files.watch((path) => writes.push(path)); const doc = fileDocs(files).open("a.ts");
files.write("a.ts", "three"); assert.deepEqual(writes, ["a.ts"]); assert.equal(doc.text, "three");
doc.write("four"); assert.deepEqual(writes, ["a.ts", "a.ts"]); assert.equal(files.read("a.ts"), "four");});
test("opening a path seeds the doc from files, including an unknown path as empty text", () => { const files = memoryFiles({ "a.ts": "seeded" }); const docs = fileDocs(files); assert.equal(docs.open("a.ts").text, "seeded"); assert.equal(docs.open("missing.ts").text, "");});
test("two Files instances never share a doc", () => { const a = memoryFiles({ "a.ts": "a" }); const b = memoryFiles({ "a.ts": "a" }); assert.notEqual(fileDocs(a).open("a.ts"), fileDocs(b).open("a.ts"));});