This commit is contained in:
Wilco Kruijer 2026-01-21 04:02:24 +00:00 committed by GitHub
commit 35cc0ef8e4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 63 additions and 6 deletions

View file

@ -1,13 +1,37 @@
import { describe, it, expect, beforeAll, afterAll } from 'vitest';
import helper from './helper';
import type { LookaheadIterator, Language } from '../src';
import helper, { type LanguageName } from './helper';
import { LookaheadIterator, Language } from '../src';
import { Parser } from '../src';
import { readFile } from 'fs/promises';
let JavaScript: Language;
let Rust: Language;
let languageURL: (name: LanguageName) => string;
describe('Language', () => {
beforeAll(async () => ({ JavaScript, Rust } = await helper));
beforeAll(async () => ({ JavaScript, Rust, languageURL } = await helper));
describe('.loadSync', () => {
it('loads a language synchronously from a pre-compiled WebAssembly.Module', async () => {
const wasmPath = languageURL('javascript');
const wasmBytes = await readFile(wasmPath);
const wasmModule = await WebAssembly.compile(wasmBytes);
const lang = Language.loadSync(wasmModule);
expect(lang.name).toBe('javascript');
expect(lang.abiVersion).toBe(15);
// Verify the language actually works by parsing a snippet
const parser = new Parser();
parser.setLanguage(lang);
const tree = parser.parse('const x = 1;');
expect(tree).not.toBeNull();
expect(tree!.rootNode.type).toBe('program');
expect(tree!.rootNode.childCount).toBe(1);
expect(tree!.rootNode.firstChild!.type).toBe('lexical_declaration');
parser.delete();
});
});
describe('.name, .version', () => {
it('returns the name and version of the language', () => {