Skip to content

Commit

Permalink
Make parser tests a bit nicer
Browse files Browse the repository at this point in the history
  • Loading branch information
knutwannheden committed Sep 24, 2024
1 parent 2727213 commit fbc42e6
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 6 deletions.
2 changes: 1 addition & 1 deletion openrewrite/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions openrewrite/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
},
"dependencies": {
"@types/node": "^22.5.4",
"dedent": "^1.5.3",
"diff": "^7.0.0",
"uuid": "^10.0.0"
},
Expand Down
41 changes: 36 additions & 5 deletions openrewrite/test/javascript/parser.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,54 @@ import {InMemoryExecutionContext, ParserInput} from '../../src/core';
import {JavaScriptParser} from "../../src/javascript";
import * as J from "../../src/java/tree";
import * as JS from "../../src/javascript/tree";
import dedent from "dedent";

describe('Parser API', () => {
const parser = JavaScriptParser.builder().build();

describe('JavaScriptParser', () => {
test('parseInputs', () => {
const parser = JavaScriptParser.builder().build();
const [sourceFile] = parser.parseInputs([new ParserInput('foo.ts', null, true, () => Buffer.from('1', 'utf8'))], null, new InMemoryExecutionContext());
console.log(sourceFile);
const [sourceFile] = parser.parseInputs(
[new ParserInput('foo.ts', null, true, () => Buffer.from('1', 'utf8'))],
null,
new InMemoryExecutionContext()
) as Iterable<JS.CompilationUnit>;
expect(sourceFile).toBeDefined();
});

test('parseStrings', () => {
const parser = JavaScriptParser.builder().build();
const [sourceFile] = parser.parseStrings(`
const c = 1;
/* c1*/ /*c2 */const d = 1;`) as Iterable<JS.CompilationUnit>;
expect(sourceFile).toBeDefined();
});
});

describe('LST mapping', () => {
const parser = JavaScriptParser.builder().build();

test('parseInputs', () => {
const sourceFile = javaScript('1');
expect(sourceFile).toBeDefined();
expect(sourceFile.statements).toHaveLength(1);
expect(sourceFile.statements[0]).toBeInstanceOf(JS.ExpressionStatement);
});

test('parseStrings', () => {
//language=typescript
const sourceFile = javaScript(`
const c = 1;
/* c1*/ /*c2 */
const d = 1;
`);
expect(sourceFile).toBeDefined();
expect(sourceFile.statements).toHaveLength(2);
sourceFile.statements.forEach(statement => {
expect(statement).toBeInstanceOf(J.Unknown);
})
});

function javaScript(source: string): JS.CompilationUnit {
const [sourceFile] = parser.parseStrings(dedent(source)) as Iterable<JS.CompilationUnit>;
return sourceFile;
}
});

0 comments on commit fbc42e6

Please sign in to comment.