feat: add ErrorStrategy(#230)
* refactor: rename errorHandler to errorListener * feat: add ErrorStrategy to mark context exceptions * test: errorStrategy unit tests
This commit is contained in:
		@ -1,5 +1,5 @@
 | 
			
		||||
import { CommonTokenStream } from 'antlr4ts';
 | 
			
		||||
import { ErrorHandler, FlinkSQL } from '../../src';
 | 
			
		||||
import { ErrorListener, FlinkSQL } from '../../src';
 | 
			
		||||
import { FlinkSqlLexer } from '../../src/lib/flinksql/FlinkSqlLexer';
 | 
			
		||||
 | 
			
		||||
describe('BasicParser unit tests', () => {
 | 
			
		||||
@ -12,13 +12,13 @@ describe('BasicParser unit tests', () => {
 | 
			
		||||
        expect(lexer).not.toBeNull();
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    test('Create lexer with errorHandler', () => {
 | 
			
		||||
    test('Create lexer with errorListener', () => {
 | 
			
		||||
        const sql = '袋鼠云数栈UED团队';
 | 
			
		||||
        const errors: any[] = [];
 | 
			
		||||
        const errorHandler: ErrorHandler<any> = (err) => {
 | 
			
		||||
        const errorListener: ErrorListener<any> = (err) => {
 | 
			
		||||
            errors.push(err);
 | 
			
		||||
        };
 | 
			
		||||
        const lexer = flinkParser.createLexer(sql, errorHandler);
 | 
			
		||||
        const lexer = flinkParser.createLexer(sql, errorListener);
 | 
			
		||||
        const tokenStream = new CommonTokenStream(lexer);
 | 
			
		||||
        tokenStream.fill();
 | 
			
		||||
        expect(errors.length).not.toBe(0);
 | 
			
		||||
@ -32,24 +32,24 @@ describe('BasicParser unit tests', () => {
 | 
			
		||||
        expect(parser).not.toBeNull();
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    test('Create parser with errorHandler (lexer error)', () => {
 | 
			
		||||
    test('Create parser with errorListener (lexer error)', () => {
 | 
			
		||||
        const sql = '袋鼠云数栈UED团队';
 | 
			
		||||
        const errors: any[] = [];
 | 
			
		||||
        const errorHandler: ErrorHandler<any> = (err) => {
 | 
			
		||||
        const errorListener: ErrorListener<any> = (err) => {
 | 
			
		||||
            errors.push(err);
 | 
			
		||||
        };
 | 
			
		||||
        const parser = flinkParser.createParser(sql, errorHandler);
 | 
			
		||||
        const parser = flinkParser.createParser(sql, errorListener);
 | 
			
		||||
        parser.program();
 | 
			
		||||
        expect(errors.length).not.toBe(0);
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    test('Create parser with errorHandler (parse error)', () => {
 | 
			
		||||
    test('Create parser with errorListener (parse error)', () => {
 | 
			
		||||
        const sql = 'SHOW TA';
 | 
			
		||||
        const errors: any[] = [];
 | 
			
		||||
        const errorHandler: ErrorHandler<any> = (err) => {
 | 
			
		||||
        const errorListener: ErrorListener<any> = (err) => {
 | 
			
		||||
            errors.push(err);
 | 
			
		||||
        };
 | 
			
		||||
        const parser = flinkParser.createParser(sql, errorHandler);
 | 
			
		||||
        const parser = flinkParser.createParser(sql, errorListener);
 | 
			
		||||
        parser.program();
 | 
			
		||||
        expect(errors.length).not.toBe(0);
 | 
			
		||||
    });
 | 
			
		||||
@ -57,10 +57,10 @@ describe('BasicParser unit tests', () => {
 | 
			
		||||
    test('Parse right input', () => {
 | 
			
		||||
        const sql = 'SELECT * FROM tb1';
 | 
			
		||||
        const errors: any[] = [];
 | 
			
		||||
        const errorHandler: ErrorHandler<any> = (err) => {
 | 
			
		||||
        const errorListener: ErrorListener<any> = (err) => {
 | 
			
		||||
            errors.push(err);
 | 
			
		||||
        };
 | 
			
		||||
        const parseTree = flinkParser.parse(sql, errorHandler);
 | 
			
		||||
        const parseTree = flinkParser.parse(sql, errorListener);
 | 
			
		||||
 | 
			
		||||
        expect(parseTree).not.toBeUndefined();
 | 
			
		||||
        expect(parseTree).not.toBeNull();
 | 
			
		||||
@ -70,10 +70,10 @@ describe('BasicParser unit tests', () => {
 | 
			
		||||
    test('Parse wrong input', () => {
 | 
			
		||||
        const sql = '袋鼠云数栈UED团队';
 | 
			
		||||
        const errors: any[] = [];
 | 
			
		||||
        const errorHandler: ErrorHandler<any> = (err) => {
 | 
			
		||||
        const errorListener: ErrorListener<any> = (err) => {
 | 
			
		||||
            errors.push(err);
 | 
			
		||||
        };
 | 
			
		||||
        const parseTree = flinkParser.parse(sql, errorHandler);
 | 
			
		||||
        const parseTree = flinkParser.parse(sql, errorListener);
 | 
			
		||||
 | 
			
		||||
        expect(parseTree).not.toBeUndefined();
 | 
			
		||||
        expect(parseTree).not.toBeNull();
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user