Merge c0f5e88c6f into 6739742fb6
This commit is contained in:
commit
35cc0ef8e4
5 changed files with 63 additions and 6 deletions
|
|
@ -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', () => {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue