build: open ts strict check (#279)
* feat: no check lib dir * feat: open strict check to src dir * test: update test tsconfig.json * feat: remove any type * feat: do not export AbstractParseTreeVisitor * feat: export StmtContextType as enum * build: improve antlr4 script
This commit is contained in:
@ -1,6 +1,5 @@
|
||||
import { ParseTreeListener } from 'antlr4ng';
|
||||
import { HiveSQL } from 'src/parser/hive';
|
||||
import { ProgramContext, SelectItemContext } from 'src/lib/hive/HiveSqlParser';
|
||||
import { SelectItemContext } from 'src/lib/hive/HiveSqlParser';
|
||||
import { HiveSqlParserListener } from 'src/lib/hive/HiveSqlParserListener';
|
||||
|
||||
describe('HiveSQL Listener Tests', () => {
|
||||
@ -10,39 +9,33 @@ describe('HiveSQL Listener Tests', () => {
|
||||
const sql = `select ${expectTableName} from tablename where inc_day='20190601' limit 1000;`;
|
||||
const parseTree = hive.parse(sql);
|
||||
|
||||
let result = '';
|
||||
class MyListener implements HiveSqlParserListener {
|
||||
enterSelectItem(ctx: SelectItemContext) {
|
||||
result = ctx.getText();
|
||||
}
|
||||
visitTerminal() {}
|
||||
visitErrorNode() {}
|
||||
enterEveryRule() {}
|
||||
exitEveryRule() {}
|
||||
}
|
||||
const listenTableName = new MyListener();
|
||||
class MyListener extends HiveSqlParserListener {
|
||||
result = '';
|
||||
|
||||
await hive.listen(listenTableName as ParseTreeListener, parseTree as ProgramContext);
|
||||
expect(result).toBe(expectTableName);
|
||||
enterSelectItem = (ctx: SelectItemContext) => {
|
||||
this.result = ctx.getText();
|
||||
};
|
||||
}
|
||||
const listener = new MyListener();
|
||||
|
||||
hive.listen(listener, parseTree);
|
||||
expect(listener.result).toBe(expectTableName);
|
||||
});
|
||||
|
||||
test('Listener enterCreateTable', async () => {
|
||||
const sql = `drop table table_name;`;
|
||||
const parseTree = hive.parse(sql);
|
||||
let result = '';
|
||||
class MyListener implements HiveSqlParserListener {
|
||||
enterDropTableStatement(ctx) {
|
||||
result = ctx.getText();
|
||||
}
|
||||
class MyListener extends HiveSqlParserListener {
|
||||
result = '';
|
||||
|
||||
visitTerminal() {}
|
||||
visitErrorNode() {}
|
||||
enterEveryRule() {}
|
||||
exitEveryRule() {}
|
||||
enterDropTableStatement = (ctx) => {
|
||||
this.result = ctx.getText();
|
||||
};
|
||||
}
|
||||
const listenTableName = new MyListener();
|
||||
const listener = new MyListener();
|
||||
|
||||
await hive.listen(listenTableName as ParseTreeListener, parseTree as ProgramContext);
|
||||
expect(result).toBe('droptabletable_name');
|
||||
hive.listen(listener, parseTree);
|
||||
expect(listener.result).toBe('droptabletable_name');
|
||||
});
|
||||
|
||||
test('Split sql listener', async () => {
|
||||
|
@ -1,5 +1,3 @@
|
||||
import { AbstractParseTreeVisitor } from 'antlr4ng';
|
||||
|
||||
import { HiveSQL } from 'src/parser/hive';
|
||||
import { HiveSqlParserVisitor } from 'src/lib/hive/HiveSqlParserVisitor';
|
||||
import { ProgramContext, TableNameContext } from 'src/lib/hive/HiveSqlParser';
|
||||
@ -14,19 +12,23 @@ describe('HiveSQL Visitor Tests', () => {
|
||||
});
|
||||
|
||||
test('Visitor visitTableName', () => {
|
||||
let result = '';
|
||||
class MyVisitor extends AbstractParseTreeVisitor<any> implements HiveSqlParserVisitor<any> {
|
||||
defaultResult() {
|
||||
return result;
|
||||
class MyVisitor extends HiveSqlParserVisitor<string> {
|
||||
defaultResult(): string {
|
||||
return '';
|
||||
}
|
||||
|
||||
visitTableName(ctx: TableNameContext) {
|
||||
result = ctx.getText().toLowerCase();
|
||||
aggregateResult(aggregate: string, nextResult: string): string {
|
||||
return aggregate + nextResult;
|
||||
}
|
||||
visitProgram = (ctx: ProgramContext) => {
|
||||
return this.visitChildren(ctx);
|
||||
};
|
||||
visitTableName = (ctx: TableNameContext) => {
|
||||
return ctx.getText().toLowerCase();
|
||||
};
|
||||
}
|
||||
|
||||
const visitor = new MyVisitor();
|
||||
visitor.visit(parseTree as ProgramContext);
|
||||
const result = visitor.visit(parseTree);
|
||||
|
||||
expect(result).toBe(expectTableName);
|
||||
});
|
||||
|
Reference in New Issue
Block a user