def test__dialect__base_file_parse(dialect, file): """For given test examples, check successful parsing.""" raw = load_file(dialect, file) # Load the right dialect config = FluffConfig(overrides=dict(dialect=dialect)) context = ParseContext.from_config(config) fs, lex_vs = FileSegment.from_raw(raw, config=config) # From just the initial parse, check we're all there assert fs.raw == raw # Check we don't have lexing issues assert not lex_vs # Do the parse WITHOUT lots of logging # The logs get too long here to be useful. We should use # specfic segment tests if we want to debug logs. # with caplog.at_level(logging.DEBUG): print("Pre-parse structure: {0}".format(fs.to_tuple(show_raw=True))) print("Pre-parse structure: {0}".format(fs.stringify())) parsed = fs.parse( parse_context=context) # Optional: set recurse=1 to limit recursion print("Post-parse structure: {0}".format(fs.to_tuple(show_raw=True))) print("Post-parse structure: {0}".format(fs.stringify())) # Check we're all there. assert parsed.raw == raw # Check that there's nothing un parsable typs = parsed.type_set() assert 'unparsable' not in typs
def test__dialect__ansi__file_from_raw(raw, res, caplog): """Test we don't drop bits on simple examples.""" config = FluffConfig(overrides=dict(dialect='ansi')) with caplog.at_level(logging.DEBUG): fs = FileSegment.from_raw(raw, config=config) # From just the initial parse, check we're all there assert fs.raw == raw assert fs.raw_list() == res
def test__parser__lexer_fail_via_parse(): """Test the how the parser fails and reports errors while lexing.""" _, vs = FileSegment.from_raw("Select \u0394", config=FluffConfig()) assert vs assert len(vs) == 1 err = vs[0] assert isinstance(err, SQLLexError) assert err.pos_marker().char_pos == 7
def test__dialect__base_parse_struct(dialect, sqlfile, yamlfile, yaml_loader): """For given test examples, check parsed structure against yaml.""" # Load the right dialect config = FluffConfig(overrides=dict(dialect=dialect)) context = ParseContext.from_config(config) # Load the SQL raw = load_file(dialect, sqlfile) fs, _ = FileSegment.from_raw(raw, config=config) # Load the YAML res = yaml_loader(make_dialect_path(dialect, yamlfile)) # with caplog.at_level(logging.DEBUG): parsed = fs.parse(parse_context=context) assert parsed.to_tuple(code_only=True, show_raw=True) == res
def test__dialect__base_file_parse(dialect, file, caplog): """For given test examples, check successful parsing.""" raw = load_file(dialect, file) # Load the right dialect config = FluffConfig(overrides=dict(dialect=dialect)) context = ParseContext.from_config(config) fs = FileSegment.from_raw(raw, config=config) # From just the initial parse, check we're all there assert fs.raw == raw # Do the parse with lots of logging with caplog.at_level(logging.DEBUG): logging.debug("Pre-parse structure: {0}".format(fs.to_tuple(show_raw=True))) logging.debug("Pre-parse structure: {0}".format(fs.stringify())) parsed = fs.parse(parse_context=context) # Optional: set recurse=1 to limit recursion logging.debug("Post-parse structure: {0}".format(fs.to_tuple(show_raw=True))) logging.debug("Post-parse structure: {0}".format(fs.stringify())) # Check we're all there. assert parsed.raw == raw # Check that there's nothing un parsable typs = parsed.type_set() assert 'unparsable' not in typs
def test__parser__lexer_fail_via_parse(): """Test the how the parser fails and reports errors while lexing.""" try: FileSegment.from_raw("Select \u0394", config=FluffConfig()) except SQLLexError as err: assert err.pos_marker().char_pos == 7