Edit workspace files directly on web (#2270)
* feat(files): edit workspace files on web Keep source buffers synchronized with host file changes and require an explicit overwrite or reload when revisions diverge. * feat(panels): surface and protect modified tabs Expose tooltip and modification state through the generic panel boundary so tabs can show stable metadata and guard every close route consistently. * fix(tests): use portable fake timeout handle * fix(files): harden editor conflict handling Preserve modified panel state across tab eviction, use precise revisions for optimistic writes, coalesce concurrent file watchers, and localize the editor interface. * fix(files): close editor concurrency gaps Coalesce clean reloads, preserve subscriber identities and file permissions, suspend pending saves during close confirmation, and carry precise revisions through file reads. * test(files): expect read revision metadata
This commit is contained in:
@@ -1,5 +1,10 @@
|
||||
import { describe, it, expect } from "vitest";
|
||||
import { isLanguageSupported, getSupportedExtensions, getParserForFile } from "../parsers.js";
|
||||
import {
|
||||
isLanguageSupported,
|
||||
getSupportedExtensions,
|
||||
getParserForFile,
|
||||
getLanguageForFile,
|
||||
} from "../parsers.js";
|
||||
|
||||
describe("isLanguageSupported", () => {
|
||||
it("returns true for supported file extensions", () => {
|
||||
@@ -60,6 +65,13 @@ describe("getSupportedExtensions", () => {
|
||||
});
|
||||
|
||||
describe("getParserForFile", () => {
|
||||
it("projects the parser retained by the editor language registry", () => {
|
||||
for (const extension of getSupportedExtensions()) {
|
||||
const filename = `source.${extension}`;
|
||||
expect(getParserForFile(filename)).toBe(getLanguageForFile(filename)?.parser);
|
||||
}
|
||||
});
|
||||
|
||||
it("returns a parser for supported files", () => {
|
||||
expect(getParserForFile("test.js")).not.toBeNull();
|
||||
expect(getParserForFile("test.py")).not.toBeNull();
|
||||
|
||||
Reference in New Issue
Block a user