chore: import upstream snapshot with attribution
CI / Deep Native Runtime Cases (1/6) (push) Has been skipped
CI / Native Preflight (push) Failing after 1s
CI / Native Runtime Cases (1/2) (push) Failing after 0s
CI / Native Runtime Cases (2/2) (push) Failing after 1s
CI / Native Metadata Reports (push) Failing after 0s
CI / Native Direct Backend Artifacts (push) Failing after 0s
CI / Native Sanitizer Smoke (push) Failing after 1s
CI / Command Contract Snapshots (push) Failing after 1s
CI / Deep Conformance Suite (push) Has been skipped
CI / Graph Build Perf (push) Failing after 1s
CI / Deep Native Preflight (push) Has been skipped
CI / Deep Native Runtime Cases (2/6) (push) Has been skipped
CI / Deep Native Runtime Cases (3/6) (push) Has been skipped
CI / Conformance Suite (push) Failing after 1s
CI / Workspace Checks (push) Failing after 0s
CI / Deep Native Runtime Cases (5/6) (push) Has been skipped
CI / Deep Native Runtime Cases (6/6) (push) Has been skipped
CI / Deep Native Runtime Cases (4/6) (push) Has been skipped
CI / Deep Graph Build Perf (push) Has been skipped
CI / Deep Native Runtime Cases (1/6) (push) Has been skipped
CI / Native Preflight (push) Failing after 1s
CI / Native Runtime Cases (1/2) (push) Failing after 0s
CI / Native Runtime Cases (2/2) (push) Failing after 1s
CI / Native Metadata Reports (push) Failing after 0s
CI / Native Direct Backend Artifacts (push) Failing after 0s
CI / Native Sanitizer Smoke (push) Failing after 1s
CI / Command Contract Snapshots (push) Failing after 1s
CI / Deep Conformance Suite (push) Has been skipped
CI / Graph Build Perf (push) Failing after 1s
CI / Deep Native Preflight (push) Has been skipped
CI / Deep Native Runtime Cases (2/6) (push) Has been skipped
CI / Deep Native Runtime Cases (3/6) (push) Has been skipped
CI / Conformance Suite (push) Failing after 1s
CI / Workspace Checks (push) Failing after 0s
CI / Deep Native Runtime Cases (5/6) (push) Has been skipped
CI / Deep Native Runtime Cases (6/6) (push) Has been skipped
CI / Deep Native Runtime Cases (4/6) (push) Has been skipped
CI / Deep Graph Build Perf (push) Has been skipped
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
import assert from "node:assert/strict";
|
||||
import { readFile } from "node:fs/promises";
|
||||
import { describe, it } from "node:test";
|
||||
|
||||
describe("VS Code extension manifest", () => {
|
||||
it("contributes Zero language support for .0 files", async () => {
|
||||
const manifest = JSON.parse(await readFile("package.json", "utf8"));
|
||||
const language = manifest.contributes?.languages?.find((entry) => entry.id === "zero");
|
||||
const grammar = manifest.contributes?.grammars?.find((entry) => entry.language === "zero");
|
||||
const snippets = manifest.contributes?.snippets?.find((entry) => entry.language === "zero");
|
||||
|
||||
assert.ok(language);
|
||||
assert.deepEqual(language.extensions, [".0"]);
|
||||
assert.equal(language.configuration, "./language-configuration/zero.json");
|
||||
|
||||
assert.ok(grammar);
|
||||
assert.equal(grammar.scopeName, "source.zero");
|
||||
assert.equal(grammar.path, "./syntaxes/zero.tmLanguage.json");
|
||||
|
||||
assert.ok(snippets);
|
||||
assert.equal(snippets.path, "./snippets/zero.json");
|
||||
});
|
||||
|
||||
it("ships snippets for main, type, fn, and test", async () => {
|
||||
const snippets = JSON.parse(await readFile("snippets/zero.json", "utf8"));
|
||||
assert.ok(snippets.main);
|
||||
assert.ok(snippets.type);
|
||||
assert.ok(snippets.function);
|
||||
assert.ok(snippets.test);
|
||||
});
|
||||
|
||||
it("highlights core Zero keywords and types", async () => {
|
||||
const grammar = JSON.parse(await readFile("syntaxes/zero.tmLanguage.json", "utf8"));
|
||||
const matches = Object.values(grammar.repository)
|
||||
.flatMap((entry) => entry.patterns)
|
||||
.map((pattern) => pattern.match ?? "")
|
||||
.join("\n");
|
||||
|
||||
assert.match(matches, /fn/);
|
||||
assert.match(matches, /raises/);
|
||||
assert.match(matches, /type/);
|
||||
assert.match(matches, /World/);
|
||||
assert.doesNotMatch(matches, /Vercel|Request|Response/);
|
||||
|
||||
const declarationKeywords = grammar.repository.keywords.patterns.find(
|
||||
(pattern) => pattern.name === "keyword.declaration.zero"
|
||||
)?.match;
|
||||
assert.match(declarationKeywords, /\|mut\|/);
|
||||
});
|
||||
|
||||
it("highlights comments, strings, and numbers", async () => {
|
||||
const grammar = JSON.parse(await readFile("syntaxes/zero.tmLanguage.json", "utf8"));
|
||||
assert.equal(grammar.repository.comments.patterns[0].name, "comment.line.double-slash.zero");
|
||||
assert.equal(grammar.repository.comments.patterns[1].name, "comment.block.zero");
|
||||
assert.equal(grammar.repository.strings.patterns[0].name, "string.quoted.double.zero");
|
||||
assert.equal(grammar.repository.numbers.patterns[0].name, "constant.numeric.zero");
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user