============================= test session starts ==============================
platform sunos5 -- Python $(PYTHON_VERSION).X -- $(PYTHON)
cachedir: .pytest_cache
rootdir: $(@D)
configfile: pyproject.toml
collecting ... collected 464 items

tests/test_cli.py::test_cli_main_empty PASSED
tests/test_cli.py::test_parser_empty PASSED
tests/test_cli.py::test_main_help PASSED
tests/test_cli.py::test_valid_args PASSED
tests/test_cli.py::test_invalid_choice PASSED
tests/test_cli.py::test_invalid_args PASSED
tests/test_cli.py::test_invalid_infile PASSED
tests/test_cli.py::test_invalid_outfile PASSED
tests/test_cli.py::test_stdout PASSED
tests/test_cli.py::test_script PASSED
tests/test_cli.py::test_encoding_stdout[encoding_utf8.sql-utf-8] PASSED
tests/test_cli.py::test_encoding_stdout[encoding_gbk.sql-gbk] PASSED
tests/test_cli.py::test_encoding_output_file[encoding_utf8.sql-utf-8] PASSED
tests/test_cli.py::test_encoding_output_file[encoding_gbk.sql-gbk] PASSED
tests/test_cli.py::test_encoding_stdin[encoding_utf8.sql-utf-8] PASSED
tests/test_cli.py::test_encoding_stdin[encoding_gbk.sql-gbk] PASSED
tests/test_cli.py::test_encoding PASSED
tests/test_format.py::TestFormat::test_keywordcase PASSED
tests/test_format.py::TestFormat::test_keywordcase_invalid_option PASSED
tests/test_format.py::TestFormat::test_identifiercase PASSED
tests/test_format.py::TestFormat::test_identifiercase_invalid_option PASSED
tests/test_format.py::TestFormat::test_identifiercase_quotes PASSED
tests/test_format.py::TestFormat::test_strip_comments_single PASSED
tests/test_format.py::TestFormat::test_strip_comments_invalid_option PASSED
tests/test_format.py::TestFormat::test_strip_comments_multi PASSED
tests/test_format.py::TestFormat::test_strip_comments_preserves_linebreak PASSED
tests/test_format.py::TestFormat::test_strip_comments_preserves_whitespace PASSED
tests/test_format.py::TestFormat::test_strip_comments_preserves_hint PASSED
tests/test_format.py::TestFormat::test_strip_ws PASSED
tests/test_format.py::TestFormat::test_strip_ws_invalid_option PASSED
tests/test_format.py::TestFormat::test_preserve_ws PASSED
tests/test_format.py::TestFormat::test_notransform_of_quoted_crlf PASSED
tests/test_format.py::TestFormatReindentAligned::test_basic PASSED
tests/test_format.py::TestFormatReindentAligned::test_joins PASSED
tests/test_format.py::TestFormatReindentAligned::test_case_statement PASSED
tests/test_format.py::TestFormatReindentAligned::test_case_statement_with_between PASSED
tests/test_format.py::TestFormatReindentAligned::test_group_by PASSED
tests/test_format.py::TestFormatReindentAligned::test_group_by_subquery PASSED
tests/test_format.py::TestFormatReindentAligned::test_window_functions PASSED
tests/test_format.py::TestSpacesAroundOperators::test_basic PASSED
tests/test_format.py::TestSpacesAroundOperators::test_bools PASSED
tests/test_format.py::TestSpacesAroundOperators::test_nested PASSED
tests/test_format.py::TestSpacesAroundOperators::test_wildcard_vs_mult PASSED
tests/test_format.py::TestFormatReindent::test_option PASSED
tests/test_format.py::TestFormatReindent::test_stmts PASSED
tests/test_format.py::TestFormatReindent::test_keywords PASSED
tests/test_format.py::TestFormatReindent::test_keywords_between PASSED
tests/test_format.py::TestFormatReindent::test_parenthesis PASSED
tests/test_format.py::TestFormatReindent::test_where PASSED
tests/test_format.py::TestFormatReindent::test_join PASSED
tests/test_format.py::TestFormatReindent::test_identifier_list PASSED
tests/test_format.py::TestFormatReindent::test_identifier_list_with_wrap_after PASSED
tests/test_format.py::TestFormatReindent::test_identifier_list_comment_first PASSED
tests/test_format.py::TestFormatReindent::test_identifier_list_with_functions PASSED
tests/test_format.py::TestFormatReindent::test_long_identifier_list_with_functions PASSED
tests/test_format.py::TestFormatReindent::test_case PASSED
tests/test_format.py::TestFormatReindent::test_case2 PASSED
tests/test_format.py::TestFormatReindent::test_nested_identifier_list PASSED
tests/test_format.py::TestFormatReindent::test_duplicate_linebreaks PASSED
tests/test_format.py::TestFormatReindent::test_keywordfunctions PASSED
tests/test_format.py::TestFormatReindent::test_identifier_and_functions PASSED
tests/test_format.py::TestFormatReindent::test_insert_values PASSED
tests/test_format.py::TestOutputFormat::test_python PASSED
tests/test_format.py::TestOutputFormat::test_python_multiple_statements PASSED
tests/test_format.py::TestOutputFormat::test_python_multiple_statements_with_formatting XFAIL
tests/test_format.py::TestOutputFormat::test_php PASSED
tests/test_format.py::TestOutputFormat::test_sql PASSED
tests/test_format.py::TestOutputFormat::test_invalid_option PASSED
tests/test_format.py::test_format_column_ordering PASSED
tests/test_format.py::test_truncate_strings PASSED
tests/test_format.py::test_truncate_strings_invalid_option2[bar] PASSED
tests/test_format.py::test_truncate_strings_invalid_option2[-1] PASSED
tests/test_format.py::test_truncate_strings_invalid_option2[0] PASSED
tests/test_format.py::test_truncate_strings_doesnt_truncate_identifiers[select verrrylongcolumn from foo] PASSED
tests/test_format.py::test_truncate_strings_doesnt_truncate_identifiers[select "verrrylongcolumn" from "foo"] PASSED
tests/test_format.py::test_having_produces_newline PASSED
tests/test_format.py::test_format_right_margin_invalid_option[ten] PASSED
tests/test_format.py::test_format_right_margin_invalid_option[2] PASSED
tests/test_format.py::test_format_right_margin XFAIL (Needs fixing)
tests/test_format.py::test_format_json_ops PASSED
tests/test_format.py::test_compact[case when foo then 1 else bar end-case\n    when foo then 1\n    else bar\nend-case when foo then 1 else bar end] PASSED
tests/test_format.py::test_strip_ws_removes_trailing_ws_in_groups PASSED
tests/test_grouping.py::test_grouping_parenthesis PASSED
tests/test_grouping.py::test_grouping_assignment[foo := 1;] PASSED
tests/test_grouping.py::test_grouping_assignment[foo := 1] PASSED
tests/test_grouping.py::test_grouping_typed_literal[x > DATE '2020-01-01'] PASSED
tests/test_grouping.py::test_grouping_typed_literal[x > TIMESTAMP '2020-01-01 00:00:00'] PASSED
tests/test_grouping.py::test_compare_expr[select a from b where c < d + e-Identifier-Identifier] PASSED
tests/test_grouping.py::test_compare_expr[select a from b where c < d + interval '1 day'-Identifier-TypedLiteral] PASSED
tests/test_grouping.py::test_compare_expr[select a from b where c < d + interval '6' month-Identifier-TypedLiteral] PASSED
tests/test_grouping.py::test_compare_expr[select a from b where c < current_timestamp - interval '1 day'-Token-TypedLiteral] PASSED
tests/test_grouping.py::test_grouping_identifiers PASSED
tests/test_grouping.py::test_simple_identifiers[1 as f] PASSED
tests/test_grouping.py::test_simple_identifiers[foo as f] PASSED
tests/test_grouping.py::test_simple_identifiers[foo f] PASSED
tests/test_grouping.py::test_simple_identifiers[1/2 as f] PASSED
tests/test_grouping.py::test_simple_identifiers[1/2 f] PASSED
tests/test_grouping.py::test_simple_identifiers[1<2 as f] PASSED
tests/test_grouping.py::test_simple_identifiers[1<2 f] PASSED
tests/test_grouping.py::test_group_identifier_list[foo, bar] PASSED
tests/test_grouping.py::test_group_identifier_list[sum(a), sum(b)] PASSED
tests/test_grouping.py::test_group_identifier_list[sum(a) as x, b as y] PASSED
tests/test_grouping.py::test_group_identifier_list[sum(a)::integer, b] PASSED
tests/test_grouping.py::test_group_identifier_list[sum(a)/count(b) as x, y] PASSED
tests/test_grouping.py::test_group_identifier_list[sum(a)::integer as x, y] PASSED
tests/test_grouping.py::test_group_identifier_list[sum(a)::integer/count(b) as x, y] PASSED
tests/test_grouping.py::test_grouping_identifier_wildcard PASSED
tests/test_grouping.py::test_grouping_identifier_name_wildcard PASSED
tests/test_grouping.py::test_grouping_identifier_invalid PASSED
tests/test_grouping.py::test_grouping_identifier_invalid_in_middle PASSED
tests/test_grouping.py::test_grouping_identifer_as[foo as (select *)] PASSED
tests/test_grouping.py::test_grouping_identifer_as[foo as(select *)] PASSED
tests/test_grouping.py::test_grouping_identifier_as_invalid PASSED
tests/test_grouping.py::test_grouping_identifier_function PASSED
tests/test_grouping.py::test_grouping_operation[foo+100] PASSED
tests/test_grouping.py::test_grouping_operation[foo + 100] PASSED
tests/test_grouping.py::test_grouping_operation[foo*100] PASSED
tests/test_grouping.py::test_grouping_identifier_list PASSED
tests/test_grouping.py::test_grouping_identifier_list_subquery PASSED
tests/test_grouping.py::test_grouping_identifier_list_case PASSED
tests/test_grouping.py::test_grouping_identifier_list_other PASSED
tests/test_grouping.py::test_grouping_identifier_list_with_inline_comments PASSED
tests/test_grouping.py::test_grouping_identifiers_with_operators PASSED
tests/test_grouping.py::test_grouping_identifier_list_with_order PASSED
tests/test_grouping.py::test_grouping_nested_identifier_with_order PASSED
tests/test_grouping.py::test_grouping_where PASSED
tests/test_grouping.py::test_grouping_where_union[select 1 where 1 = 2 union select 2] PASSED
tests/test_grouping.py::test_grouping_where_union[select 1 where 1 = 2 union all select 2] PASSED
tests/test_grouping.py::test_returning_kw_ends_where_clause PASSED
tests/test_grouping.py::test_into_kw_ends_where_clause PASSED
tests/test_grouping.py::test_grouping_typecast[select foo::integer from bar-integer] PASSED
tests/test_grouping.py::test_grouping_typecast[select (current_database())::information_schema.sql_identifier-information_schema.sql_identifier] PASSED
tests/test_grouping.py::test_grouping_alias PASSED
tests/test_grouping.py::test_grouping_alias_case PASSED
tests/test_grouping.py::test_grouping_alias_ctas PASSED
tests/test_grouping.py::test_grouping_subquery_no_parens PASSED
tests/test_grouping.py::test_grouping_alias_returns_none[foo.bar] PASSED
tests/test_grouping.py::test_grouping_alias_returns_none[x, y] PASSED
tests/test_grouping.py::test_grouping_alias_returns_none[x > y] PASSED
tests/test_grouping.py::test_grouping_alias_returns_none[x / y] PASSED
tests/test_grouping.py::test_grouping_idlist_function PASSED
tests/test_grouping.py::test_grouping_comparison_exclude PASSED
tests/test_grouping.py::test_grouping_function PASSED
tests/test_grouping.py::test_grouping_function_not_in PASSED
tests/test_grouping.py::test_grouping_varchar PASSED
tests/test_grouping.py::test_statement_get_type PASSED
tests/test_grouping.py::test_identifier_with_operators PASSED
tests/test_grouping.py::test_identifier_with_op_trailing_ws PASSED
tests/test_grouping.py::test_identifier_with_string_literals PASSED
tests/test_grouping.py::test_identifier_consumes_ordering PASSED
tests/test_grouping.py::test_comparison_with_keywords PASSED
tests/test_grouping.py::test_comparison_with_floats PASSED
tests/test_grouping.py::test_comparison_with_parenthesis PASSED
tests/test_grouping.py::test_comparison_with_strings[=] PASSED
tests/test_grouping.py::test_comparison_with_strings[!=] PASSED
tests/test_grouping.py::test_comparison_with_strings[>] PASSED
tests/test_grouping.py::test_comparison_with_strings[<] PASSED
tests/test_grouping.py::test_comparison_with_strings[<=] PASSED
tests/test_grouping.py::test_comparison_with_strings[>=] PASSED
tests/test_grouping.py::test_comparison_with_strings[~] PASSED
tests/test_grouping.py::test_comparison_with_strings[~~] PASSED
tests/test_grouping.py::test_comparison_with_strings[!~~] PASSED
tests/test_grouping.py::test_comparison_with_strings[LIKE] PASSED
tests/test_grouping.py::test_comparison_with_strings[NOT LIKE] PASSED
tests/test_grouping.py::test_comparison_with_strings[ILIKE] PASSED
tests/test_grouping.py::test_comparison_with_strings[NOT ILIKE] PASSED
tests/test_grouping.py::test_like_and_ilike_comparison PASSED
tests/test_grouping.py::test_comparison_with_functions PASSED
tests/test_grouping.py::test_comparison_with_typed_literal PASSED
tests/test_grouping.py::test_forloops[FOR] PASSED
tests/test_grouping.py::test_forloops[FOREACH] PASSED
tests/test_grouping.py::test_nested_for PASSED
tests/test_grouping.py::test_begin PASSED
tests/test_grouping.py::test_keyword_followed_by_parenthesis PASSED
tests/test_grouping.py::test_nested_begin PASSED
tests/test_grouping.py::test_aliased_column_without_as PASSED
tests/test_grouping.py::test_qualified_function PASSED
tests/test_grouping.py::test_aliased_function_without_as PASSED
tests/test_grouping.py::test_aliased_literal_without_as PASSED
tests/test_grouping.py::test_grouping_as_cte PASSED
tests/test_grouping.py::test_grouping_create_table PASSED
tests/test_keywords.py::TestSQLREGEX::test_float_numbers[1.0] PASSED
tests/test_keywords.py::TestSQLREGEX::test_float_numbers[-1.0] PASSED
tests/test_keywords.py::TestSQLREGEX::test_float_numbers[1.] PASSED
tests/test_keywords.py::TestSQLREGEX::test_float_numbers[-1.] PASSED
tests/test_keywords.py::TestSQLREGEX::test_float_numbers[.1] PASSED
tests/test_keywords.py::TestSQLREGEX::test_float_numbers[-.1] PASSED
tests/test_parse.py::test_parse_tokenize PASSED
tests/test_parse.py::test_parse_multistatement PASSED
tests/test_parse.py::test_parse_newlines[select\n*from foo;] PASSED
tests/test_parse.py::test_parse_newlines[select\r\n*from foo] PASSED
tests/test_parse.py::test_parse_newlines[select\r*from foo] PASSED
tests/test_parse.py::test_parse_newlines[select\r\n*from foo\n] PASSED
tests/test_parse.py::test_parse_within PASSED
tests/test_parse.py::test_parse_child_of PASSED
tests/test_parse.py::test_parse_has_ancestor PASSED
tests/test_parse.py::test_parse_float[.5] PASSED
tests/test_parse.py::test_parse_float[.51] PASSED
tests/test_parse.py::test_parse_float[1.5] PASSED
tests/test_parse.py::test_parse_float[12.5] PASSED
tests/test_parse.py::test_parse_placeholder[select * from foo where user = ?-?] PASSED
tests/test_parse.py::test_parse_placeholder[select * from foo where user = :1-:1] PASSED
tests/test_parse.py::test_parse_placeholder[select * from foo where user = :name-:name] PASSED
tests/test_parse.py::test_parse_placeholder[select * from foo where user = %s-%s] PASSED
tests/test_parse.py::test_parse_placeholder[select * from foo where user = $a-$a] PASSED
tests/test_parse.py::test_parse_modulo_not_placeholder PASSED
tests/test_parse.py::test_parse_access_symbol PASSED
tests/test_parse.py::test_parse_square_brackets_notation_isnt_too_greedy PASSED
tests/test_parse.py::test_parse_square_brackets_notation_isnt_too_greedy2 PASSED
tests/test_parse.py::test_parse_keyword_like_identifier PASSED
tests/test_parse.py::test_parse_function_parameter PASSED
tests/test_parse.py::test_parse_function_param_single_literal PASSED
tests/test_parse.py::test_parse_nested_function PASSED
tests/test_parse.py::test_parse_casted_params PASSED
tests/test_parse.py::test_parse_div_operator PASSED
tests/test_parse.py::test_quoted_identifier PASSED
tests/test_parse.py::test_valid_identifier_names[foo] PASSED
tests/test_parse.py::test_valid_identifier_names[_foo] PASSED
tests/test_parse.py::test_valid_identifier_names[1_data] PASSED
tests/test_parse.py::test_valid_identifier_names[\u696d\u8005\u540d\u7a31] PASSED
tests/test_parse.py::test_psql_quotation_marks PASSED
tests/test_parse.py::test_double_precision_is_builtin PASSED
tests/test_parse.py::test_placeholder[?] PASSED
tests/test_parse.py::test_placeholder[:1] PASSED
tests/test_parse.py::test_placeholder[:foo] PASSED
tests/test_parse.py::test_placeholder[%s] PASSED
tests/test_parse.py::test_placeholder[%(foo)s] PASSED
tests/test_parse.py::test_scientific_numbers[6.67428E-8-expected0] PASSED
tests/test_parse.py::test_scientific_numbers[1.988e33-expected1] PASSED
tests/test_parse.py::test_scientific_numbers[1e-12-expected2] PASSED
tests/test_parse.py::test_scientific_numbers[e1-None] PASSED
tests/test_parse.py::test_single_quotes_are_strings PASSED
tests/test_parse.py::test_double_quotes_are_identifiers PASSED
tests/test_parse.py::test_single_quotes_with_linebreaks PASSED
tests/test_parse.py::test_sqlite_identifiers PASSED
tests/test_parse.py::test_simple_1d_array_index PASSED
tests/test_parse.py::test_2d_array_index PASSED
tests/test_parse.py::test_array_index_function_result PASSED
tests/test_parse.py::test_schema_qualified_array_index PASSED
tests/test_parse.py::test_aliased_array_index PASSED
tests/test_parse.py::test_array_literal PASSED
tests/test_parse.py::test_typed_array_definition PASSED
tests/test_parse.py::test_single_line_comments[select 1 -- foo] PASSED
tests/test_parse.py::test_single_line_comments[select 1 # foo] PASSED
tests/test_parse.py::test_names_and_special_names[foo] PASSED
tests/test_parse.py::test_names_and_special_names[@foo] PASSED
tests/test_parse.py::test_names_and_special_names[#foo] PASSED
tests/test_parse.py::test_names_and_special_names[##foo] PASSED
tests/test_parse.py::test_get_token_at_offset PASSED
tests/test_parse.py::test_pprint PASSED
tests/test_parse.py::test_wildcard_multiplication PASSED
tests/test_parse.py::test_stmt_tokens_parents PASSED
tests/test_parse.py::test_dbldollar_as_literal[$$foo$$-True] PASSED
tests/test_parse.py::test_dbldollar_as_literal[$_$foo$_$-True] PASSED
tests/test_parse.py::test_dbldollar_as_literal[$token$ foo $token$-True] PASSED
tests/test_parse.py::test_dbldollar_as_literal[$_$ foo $token$bar$token$ baz$_$-True] PASSED
tests/test_parse.py::test_dbldollar_as_literal[$A$ foo $B$-False] PASSED
tests/test_parse.py::test_non_ascii PASSED
tests/test_parse.py::test_get_real_name PASSED
tests/test_parse.py::test_from_subquery PASSED
tests/test_parse.py::test_parenthesis PASSED
tests/test_parse.py::test_configurable_keywords PASSED
tests/test_parse.py::test_configurable_regex PASSED
tests/test_parse.py::test_json_operators[->] PASSED
tests/test_parse.py::test_json_operators[->>] PASSED
tests/test_parse.py::test_json_operators[#>] PASSED
tests/test_parse.py::test_json_operators[#>>] PASSED
tests/test_parse.py::test_json_operators[@>] PASSED
tests/test_parse.py::test_json_operators[<@] PASSED
tests/test_parse.py::test_json_operators[||] PASSED
tests/test_parse.py::test_json_operators[-] PASSED
tests/test_parse.py::test_json_operators[#-] PASSED
tests/test_regressions.py::test_issue9 PASSED
tests/test_regressions.py::test_issue13 PASSED
tests/test_regressions.py::test_issue26[--hello] PASSED
tests/test_regressions.py::test_issue26[-- hello] PASSED
tests/test_regressions.py::test_issue26[--hello\n] PASSED
tests/test_regressions.py::test_issue26[--] PASSED
tests/test_regressions.py::test_issue26[--\n] PASSED
tests/test_regressions.py::test_issue34[create] PASSED
tests/test_regressions.py::test_issue34[CREATE] PASSED
tests/test_regressions.py::test_issue35 PASSED
tests/test_regressions.py::test_issue38 PASSED
tests/test_regressions.py::test_issue39 PASSED
tests/test_regressions.py::test_issue40 PASSED
tests/test_regressions.py::test_issue78[get_name-z-select x.y::text as z from foo] PASSED
tests/test_regressions.py::test_issue78[get_name-z-select x.y::text as "z" from foo] PASSED
tests/test_regressions.py::test_issue78[get_name-z-select x."y"::text as z from foo] PASSED
tests/test_regressions.py::test_issue78[get_name-z-select x."y"::text as "z" from foo] PASSED
tests/test_regressions.py::test_issue78[get_name-z-select "x".y::text as z from foo] PASSED
tests/test_regressions.py::test_issue78[get_name-z-select "x".y::text as "z" from foo] PASSED
tests/test_regressions.py::test_issue78[get_name-z-select "x"."y"::text as z from foo] PASSED
tests/test_regressions.py::test_issue78[get_name-z-select "x"."y"::text as "z" from foo] PASSED
tests/test_regressions.py::test_issue78[get_real_name-y-select x.y::text as z from foo] PASSED
tests/test_regressions.py::test_issue78[get_real_name-y-select x.y::text as "z" from foo] PASSED
tests/test_regressions.py::test_issue78[get_real_name-y-select x."y"::text as z from foo] PASSED
tests/test_regressions.py::test_issue78[get_real_name-y-select x."y"::text as "z" from foo] PASSED
tests/test_regressions.py::test_issue78[get_real_name-y-select "x".y::text as z from foo] PASSED
tests/test_regressions.py::test_issue78[get_real_name-y-select "x".y::text as "z" from foo] PASSED
tests/test_regressions.py::test_issue78[get_real_name-y-select "x"."y"::text as z from foo] PASSED
tests/test_regressions.py::test_issue78[get_real_name-y-select "x"."y"::text as "z" from foo] PASSED
tests/test_regressions.py::test_issue78[get_parent_name-x-select x.y::text as z from foo] PASSED
tests/test_regressions.py::test_issue78[get_parent_name-x-select x.y::text as "z" from foo] PASSED
tests/test_regressions.py::test_issue78[get_parent_name-x-select x."y"::text as z from foo] PASSED
tests/test_regressions.py::test_issue78[get_parent_name-x-select x."y"::text as "z" from foo] PASSED
tests/test_regressions.py::test_issue78[get_parent_name-x-select "x".y::text as z from foo] PASSED
tests/test_regressions.py::test_issue78[get_parent_name-x-select "x".y::text as "z" from foo] PASSED
tests/test_regressions.py::test_issue78[get_parent_name-x-select "x"."y"::text as z from foo] PASSED
tests/test_regressions.py::test_issue78[get_parent_name-x-select "x"."y"::text as "z" from foo] PASSED
tests/test_regressions.py::test_issue78[get_alias-z-select x.y::text as z from foo] PASSED
tests/test_regressions.py::test_issue78[get_alias-z-select x.y::text as "z" from foo] PASSED
tests/test_regressions.py::test_issue78[get_alias-z-select x."y"::text as z from foo] PASSED
tests/test_regressions.py::test_issue78[get_alias-z-select x."y"::text as "z" from foo] PASSED
tests/test_regressions.py::test_issue78[get_alias-z-select "x".y::text as z from foo] PASSED
tests/test_regressions.py::test_issue78[get_alias-z-select "x".y::text as "z" from foo] PASSED
tests/test_regressions.py::test_issue78[get_alias-z-select "x"."y"::text as z from foo] PASSED
tests/test_regressions.py::test_issue78[get_alias-z-select "x"."y"::text as "z" from foo] PASSED
tests/test_regressions.py::test_issue78[get_typecast-text-select x.y::text as z from foo] PASSED
tests/test_regressions.py::test_issue78[get_typecast-text-select x.y::text as "z" from foo] PASSED
tests/test_regressions.py::test_issue78[get_typecast-text-select x."y"::text as z from foo] PASSED
tests/test_regressions.py::test_issue78[get_typecast-text-select x."y"::text as "z" from foo] PASSED
tests/test_regressions.py::test_issue78[get_typecast-text-select "x".y::text as z from foo] PASSED
tests/test_regressions.py::test_issue78[get_typecast-text-select "x".y::text as "z" from foo] PASSED
tests/test_regressions.py::test_issue78[get_typecast-text-select "x"."y"::text as z from foo] PASSED
tests/test_regressions.py::test_issue78[get_typecast-text-select "x"."y"::text as "z" from foo] PASSED
tests/test_regressions.py::test_issue83 PASSED
tests/test_regressions.py::test_comment_encoding_when_reindent PASSED
tests/test_regressions.py::test_parse_sql_with_binary PASSED
tests/test_regressions.py::test_dont_alias_keywords PASSED
tests/test_regressions.py::test_format_accepts_encoding PASSED
tests/test_regressions.py::test_stream PASSED
tests/test_regressions.py::test_issue90 PASSED
tests/test_regressions.py::test_except_formatting PASSED
tests/test_regressions.py::test_null_with_as PASSED
tests/test_regressions.py::test_issue190_open_file PASSED
tests/test_regressions.py::test_issue193_splitting_function PASSED
tests/test_regressions.py::test_issue194_splitting_function PASSED
tests/test_regressions.py::test_issue186_get_type PASSED
tests/test_regressions.py::test_issue212_py2unicode PASSED
tests/test_regressions.py::test_issue213_leadingws PASSED
tests/test_regressions.py::test_issue227_gettype_cte PASSED
tests/test_regressions.py::test_issue207_runaway_format PASSED
tests/test_regressions.py::test_token_next_doesnt_ignore_skip_cm PASSED
tests/test_regressions.py::test_issue284_as_grouping[SELECT x AS] PASSED
tests/test_regressions.py::test_issue284_as_grouping[AS] PASSED
tests/test_regressions.py::test_issue315_utf8_by_default PASSED
tests/test_regressions.py::test_issue322_concurrently_is_keyword PASSED
tests/test_regressions.py::test_issue359_index_error_assignments[SELECT @min_price:=MIN(price), @max_price:=MAX(price) FROM shop;] PASSED
tests/test_regressions.py::test_issue359_index_error_assignments[SELECT @min_price:=MIN(price), @max_price:=MAX(price) FROM shop] PASSED
tests/test_regressions.py::test_issue469_copy_as_psql_command PASSED
tests/test_regressions.py::test_issue484_comments_and_newlines XPASS
tests/test_regressions.py::test_issue485_split_multi PASSED
tests/test_regressions.py::test_issue489_tzcasts PASSED
tests/test_regressions.py::test_issue562_tzcasts PASSED
tests/test_regressions.py::test_as_in_parentheses_indents PASSED
tests/test_regressions.py::test_format_invalid_where_clause PASSED
tests/test_regressions.py::test_splitting_at_and_backticks_issue588 PASSED
tests/test_regressions.py::test_comment_between_cte_clauses_issue632 PASSED
tests/test_regressions.py::test_copy_issue672 PASSED
tests/test_regressions.py::test_primary_key_issue740 PASSED
tests/test_regressions.py::test_max_recursion PASSED
tests/test_split.py::test_split_semicolon PASSED
tests/test_split.py::test_split_backslash PASSED
tests/test_split.py::test_split_create_function[function.sql] PASSED
tests/test_split.py::test_split_create_function[function_psql.sql] PASSED
tests/test_split.py::test_split_create_function[function_psql2.sql] PASSED
tests/test_split.py::test_split_create_function[function_psql3.sql] PASSED
tests/test_split.py::test_split_create_function[function_psql4.sql] PASSED
tests/test_split.py::test_split_dashcomments PASSED
tests/test_split.py::test_split_dashcomments_eol[select foo; -- comment\n] PASSED
tests/test_split.py::test_split_dashcomments_eol[select foo; -- comment\r] PASSED
tests/test_split.py::test_split_dashcomments_eol[select foo; -- comment\r\n] PASSED
tests/test_split.py::test_split_dashcomments_eol[select foo; -- comment] PASSED
tests/test_split.py::test_split_begintag PASSED
tests/test_split.py::test_split_begintag_2 PASSED
tests/test_split.py::test_split_dropif PASSED
tests/test_split.py::test_split_comment_with_umlaut PASSED
tests/test_split.py::test_split_comment_end_of_line PASSED
tests/test_split.py::test_split_casewhen PASSED
tests/test_split.py::test_split_casewhen_procedure PASSED
tests/test_split.py::test_split_cursor_declare PASSED
tests/test_split.py::test_split_if_function PASSED
tests/test_split.py::test_split_stream PASSED
tests/test_split.py::test_split_encoding_parsestream PASSED
tests/test_split.py::test_split_unicode_parsestream PASSED
tests/test_split.py::test_split_simple PASSED
tests/test_split.py::test_split_ignores_empty_newlines PASSED
tests/test_split.py::test_split_quotes_with_new_line PASSED
tests/test_split.py::test_split_mysql_handler_for PASSED
tests/test_split.py::test_split_strip_semicolon[select * from foo;-expected0] PASSED
tests/test_split.py::test_split_strip_semicolon[select * from foo-expected1] PASSED
tests/test_split.py::test_split_strip_semicolon[select * from foo; select * from bar;-expected2] PASSED
tests/test_split.py::test_split_strip_semicolon[  select * from foo;\n\nselect * from bar;\n\n\n\n-expected3] PASSED
tests/test_split.py::test_split_strip_semicolon[select * from foo\n\n;  bar-expected4] PASSED
tests/test_split.py::test_split_strip_semicolon_procedure PASSED
tests/test_split.py::test_split_go[USE foo;\nGO\nSELECT 1;\nGO-4] PASSED
tests/test_split.py::test_split_go[SELECT * FROM foo;\nGO-2] PASSED
tests/test_split.py::test_split_go[USE foo;\nGO 2\nSELECT 1;-3] PASSED
tests/test_split.py::test_split_multiple_case_in_begin PASSED
tests/test_tokenize.py::test_tokenize_simple PASSED
tests/test_tokenize.py::test_tokenize_backticks PASSED
tests/test_tokenize.py::test_tokenize_linebreaks[foo\nbar\n] PASSED
tests/test_tokenize.py::test_tokenize_linebreaks[foo\rbar\r] PASSED
tests/test_tokenize.py::test_tokenize_linebreaks[foo\r\nbar\r\n] PASSED
tests/test_tokenize.py::test_tokenize_linebreaks[foo\r\nbar\n] PASSED
tests/test_tokenize.py::test_tokenize_inline_keywords PASSED
tests/test_tokenize.py::test_tokenize_negative_numbers PASSED
tests/test_tokenize.py::test_token_str PASSED
tests/test_tokenize.py::test_token_repr PASSED
tests/test_tokenize.py::test_token_flatten PASSED
tests/test_tokenize.py::test_tokenlist_repr PASSED
tests/test_tokenize.py::test_single_quotes PASSED
tests/test_tokenize.py::test_tokenlist_first PASSED
tests/test_tokenize.py::test_tokenlist_token_matching PASSED
tests/test_tokenize.py::test_stream_simple PASSED
tests/test_tokenize.py::test_stream_error PASSED
tests/test_tokenize.py::test_parse_join[JOIN] PASSED
tests/test_tokenize.py::test_parse_join[LEFT JOIN] PASSED
tests/test_tokenize.py::test_parse_join[LEFT OUTER JOIN] PASSED
tests/test_tokenize.py::test_parse_join[FULL OUTER JOIN] PASSED
tests/test_tokenize.py::test_parse_join[NATURAL JOIN] PASSED
tests/test_tokenize.py::test_parse_join[CROSS JOIN] PASSED
tests/test_tokenize.py::test_parse_join[STRAIGHT JOIN] PASSED
tests/test_tokenize.py::test_parse_join[INNER JOIN] PASSED
tests/test_tokenize.py::test_parse_join[LEFT INNER JOIN] PASSED
tests/test_tokenize.py::test_parse_union PASSED
tests/test_tokenize.py::test_parse_endifloop[END IF] PASSED
tests/test_tokenize.py::test_parse_endifloop[END   IF] PASSED
tests/test_tokenize.py::test_parse_endifloop[END\t\nIF] PASSED
tests/test_tokenize.py::test_parse_endifloop[END LOOP] PASSED
tests/test_tokenize.py::test_parse_endifloop[END   LOOP] PASSED
tests/test_tokenize.py::test_parse_endifloop[END\t\nLOOP] PASSED
tests/test_tokenize.py::test_parse_order[ASC] PASSED
tests/test_tokenize.py::test_parse_order[DESC] PASSED
tests/test_tokenize.py::test_parse_order[NULLS FIRST] PASSED
tests/test_tokenize.py::test_parse_order[NULLS LAST] PASSED
tests/test_tokenize.py::test_parse_order[ASC NULLS FIRST] PASSED
tests/test_tokenize.py::test_parse_order[ASC NULLS LAST] PASSED
tests/test_tokenize.py::test_parse_order[DESC NULLS FIRST] PASSED
tests/test_tokenize.py::test_parse_order[DESC NULLS LAST] PASSED
tests/test_tokenize.py::test_parse_identifiers[foo] PASSED
tests/test_tokenize.py::test_parse_identifiers[Foo] PASSED
tests/test_tokenize.py::test_parse_identifiers[FOO] PASSED
tests/test_tokenize.py::test_parse_identifiers[v$name] PASSED
tests/test_tokenize.py::test_parse_group_by PASSED
tests/test_tokenize.py::test_parse_order_by PASSED
tests/test_tokenize.py::test_parse_window_as PASSED
tests/test_tokenize.py::test_like_and_ilike_parsed_as_comparisons[LIKE] PASSED
tests/test_tokenize.py::test_like_and_ilike_parsed_as_comparisons[ILIKE] PASSED
tests/test_tokenize.py::test_like_and_ilike_parsed_as_comparisons[NOT LIKE] PASSED
tests/test_tokenize.py::test_like_and_ilike_parsed_as_comparisons[NOT ILIKE] PASSED
tests/test_tokenize.py::test_like_and_ilike_parsed_as_comparisons[NOT   LIKE] PASSED
tests/test_tokenize.py::test_like_and_ilike_parsed_as_comparisons[NOT    ILIKE] PASSED
tests/test_tokenize.py::test_near_like_and_ilike_parsed_appropriately[LIKEaaa] PASSED
tests/test_tokenize.py::test_near_like_and_ilike_parsed_appropriately[bILIKE] PASSED
tests/test_tokenize.py::test_near_like_and_ilike_parsed_appropriately[aaILIKEbb] PASSED
tests/test_tokenize.py::test_near_like_and_ilike_parsed_appropriately[NOTLIKE] PASSED
tests/test_tokenize.py::test_near_like_and_ilike_parsed_appropriately[NOTILIKE] PASSED
tests/test_tokenize.py::test_parse_tzcast[AT TIME ZONE 'UTC'] PASSED
tests/test_tokenize.py::test_cli_commands PASSED
tests/test_utils.py::test_remove_quotes[None-None] PASSED
tests/test_utils.py::test_remove_quotes['foo'-foo] PASSED
tests/test_utils.py::test_remove_quotes["foo"-foo] PASSED
tests/test_utils.py::test_remove_quotes[`foo`-foo] PASSED

======== 461 passed, 2 xfailed, 1 xpassed ========