From e7c205322285085353080e534491cbab35546728 Mon Sep 17 00:00:00 2001 From: Roberto Alsina Date: Sun, 4 Aug 2024 19:18:43 -0300 Subject: [PATCH] Reorganize tests into a real spec suite --- spec/tartrazine_spec.cr | 111 +++++++++++++- .../apacheconf/test_directive_no_args.txt | 0 .../test_fix_lock_absolute_path.txt | 0 .../tests}/apacheconf/test_include_globs.txt | 0 ...malformed_scoped_directive_closing_tag.txt | 0 .../apacheconf/test_multi_include_globs.txt | 0 .../test_multi_include_globs_root.txt | 0 .../apacheconf/test_multiline_argument.txt | 0 .../apacheconf/test_multiline_comment.txt | 0 .../test_normal_scoped_directive.txt | 0 .../tests}/apl/test_leading_underscore.txt | 0 {tests => spec/tests}/awk/test_ternary.txt | 0 .../tests/bash}/test_array_nums.txt | 0 .../bash}/test_curly_no_escape_and_quotes.txt | 0 .../tests/bash}/test_curly_with_escape.txt | 0 .../tests/bash}/test_end_of_line_nums.txt | 0 .../shell => spec/tests/bash}/test_math.txt | 0 .../tests/bash}/test_parsed_single.txt | 0 .../tests/bash}/test_short_variable_names.txt | 0 .../tests/bash_session}/fake_ps2_prompt.txt | 0 .../tests/bash_session}/prompt_in_output.txt | 0 .../tests/bash_session}/ps2_prompt.txt | 0 .../test_comment_after_prompt.txt | 0 .../test_newline_in_echo_no_ps2.txt | 0 .../test_newline_in_echo_ps2.txt | 0 .../test_newline_in_ls_no_ps2.txt | 0 .../bash_session}/test_newline_in_ls_ps2.txt | 0 .../tests/bash_session}/test_virtualenv.txt | 0 .../tests}/bibtex/test_basic_bst.txt | 0 {tests => spec/tests}/bibtex/test_comment.txt | 0 {tests => spec/tests}/bibtex/test_entry.txt | 0 .../tests}/bibtex/test_mismatched_brace.txt | 0 .../tests}/bibtex/test_missing_body.txt | 0 .../tests}/bibtex/test_preamble.txt | 0 {tests => spec/tests}/bibtex/test_string.txt | 0 {tests => spec/tests}/bqn/test_arguments.txt | 0 {tests => spec/tests}/bqn/test_comment.txt | 0 {tests => spec/tests}/bqn/test_define.txt | 0 .../tests}/bqn/test_syntax_roles.txt | 0 .../tests/c++}/alternative_tokens.txt | 0 .../tests/c++}/extension_keywords.txt | 0 .../tests/c++}/test_good_comment.txt | 0 .../tests/c++}/test_open_comment.txt | 0 .../tests/c++}/test_unicode_identifiers.txt | 0 {tests => spec/tests}/c/builtin_types.txt | 0 {tests => spec/tests}/c/test_comment_end.txt | 0 .../tests}/c/test_function_comments.txt | 0 {tests => spec/tests}/c/test_label.txt | 0 .../c/test_label_followed_by_statement.txt | 0 .../c/test_label_space_before_colon.txt | 0 {tests => spec/tests}/c/test_numbers.txt | 0 {tests => spec/tests}/c/test_preproc_file.txt | 0 .../tests}/c/test_preproc_file2.txt | 0 .../tests}/c/test_preproc_file3.txt | 0 .../tests}/c/test_preproc_file4.txt | 0 .../tests}/c/test_preproc_file5.txt | 0 .../c/test_string_resembling_decl_end.txt | 0 {tests => spec/tests}/c/test_switch.txt | 0 .../c/test_switch_space_before_colon.txt | 0 .../test_beware_infinite_loop.txt | 0 .../coffeescript/test_mixed_slashes.txt | 0 {tests => spec/tests}/coq/test_unicode.txt | 0 .../tests}/crystal/test_annotation.txt | 0 .../tests}/crystal/test_array_access.txt | 0 {tests => spec/tests}/crystal/test_chars.txt | 0 .../crystal/test_constant_and_module.txt | 0 .../crystal/test_empty_percent_strings.txt | 0 .../crystal/test_escaped_bracestring.txt | 0 .../crystal/test_escaped_interpolation.txt | 0 .../test_interpolation_nested_curly.txt | 0 {tests => spec/tests}/crystal/test_lib.txt | 0 {tests => spec/tests}/crystal/test_macro.txt | 0 .../tests}/crystal/test_numbers.txt | 0 .../tests}/crystal/test_operator_methods.txt | 0 .../tests}/crystal/test_percent_strings.txt | 0 .../crystal/test_percent_strings_special.txt | 0 .../tests}/crystal/test_pseudo_builtins.txt | 0 .../tests}/crystal/test_pseudo_keywords.txt | 0 .../tests}/crystal/test_range_syntax1.txt | 0 .../tests}/crystal/test_range_syntax2.txt | 0 .../tests}/crystal/test_string_escapes.txt | 0 .../tests}/crystal/test_symbols.txt | 0 {tests => spec/tests}/css/percent_in_func.txt | 0 .../tests/desktop_entry}/example.txt | 0 {tests => spec/tests}/diff/normal.txt | 0 {tests => spec/tests}/diff/unified.txt | 0 {tests/zone => spec/tests/dns}/a-record.txt | 0 {tests/zone => spec/tests/dns}/include.txt | 0 {tests/zone => spec/tests/dns}/soa.txt | 0 .../tests}/fortran/test_string_cataback.txt | 0 {tests => spec/tests}/gas/test_comments.txt | 0 {tests/asm => spec/tests/gas}/test_cpuid.txt | 0 .../tests}/gdscript/test_comment.txt | 0 .../tests}/gdscript/test_export_array.txt | 0 .../gdscript/test_function_with_types.txt | 0 .../tests}/gdscript/test_inner_class.txt | 0 .../tests}/gdscript/test_multiline_string.txt | 0 .../tests}/gdscript/test_signal.txt | 0 .../tests}/gdscript/test_simple_function.txt | 0 ...est_variable_declaration_and_assigment.txt | 0 .../tests}/haskell/test_promoted_names.txt | 0 {tests => spec/tests}/html/css.txt | 0 .../tests}/html/css_backtracking.txt | 0 {tests => spec/tests}/html/javascript.txt | 0 .../tests}/html/javascript_backtracking.txt | 0 .../tests}/html/javascript_unclosed.txt | 0 ...line-comment-catastrophic-backtracking.txt | 0 .../tests}/idris/test_compiler_directive.txt | 0 .../tests}/idris/test_reserved_word.txt | 0 .../tests}/ini/test_indented_entries_1.txt | 0 .../tests}/ini/test_indented_entries_2.txt | 0 .../tests}/ini/test_indented_entries_3.txt | 0 .../tests}/j/test_deal_operator.txt | 0 .../j/test_deal_operator_fixed_seed.txt | 0 .../tests}/java/test_backtracking.txt | 0 {tests => spec/tests}/java/test_default.txt | 0 .../tests}/java/test_enhanced_for.txt | 0 .../tests}/java/test_multiline_string.txt | 0 .../java/test_multiline_string_only.txt | 0 .../tests}/java/test_numeric_literals.txt | 0 {tests => spec/tests}/java/test_record.txt | 0 .../tests}/java/test_string_literals.txt | 0 {tests/js => spec/tests/javascript}/super.txt | 0 .../test_binary_literal_negative_matches.txt | 0 .../test_binary_literal_positive_matches.txt | 0 .../test_float_literals_negative_matches.txt | 0 .../test_float_literals_positive_matches.txt | 0 ...t_hexadecimal_literal_negative_matches.txt | 0 ...t_hexadecimal_literal_positive_matches.txt | 0 .../test_integer_literal_negative_matches.txt | 0 .../test_integer_literal_positive_matches.txt | 0 .../test_octal_literal_negative_matches.txt | 0 .../test_octal_literal_positive_matches.txt | 0 {tests => spec/tests}/json/test_arrays.txt | 0 .../tests}/json/test_backtracking.txt | 0 {tests => spec/tests}/json/test_basic.txt | 0 .../tests}/json/test_basic_bare.txt | 0 {tests => spec/tests}/json/test_comments.txt | 0 {tests => spec/tests}/json/test_constants.txt | 0 .../tests}/json/test_escape_sequences.txt | 0 {tests => spec/tests}/json/test_floats.txt | 0 {tests => spec/tests}/json/test_integers.txt | 0 {tests => spec/tests}/json/test_objects.txt | 0 .../tests}/json/test_round_trip.txt | 0 {tests => spec/tests}/json/test_strings.txt | 0 .../tests}/json/test_whitespace.txt | 0 {tests => spec/tests}/julia/test_keywords.txt | 0 {tests => spec/tests}/julia/test_macros.txt | 0 {tests => spec/tests}/julia/test_names.txt | 0 {tests => spec/tests}/julia/test_numbers.txt | 0 .../tests}/julia/test_operators.txt | 0 {tests => spec/tests}/julia/test_strings.txt | 0 {tests => spec/tests}/julia/test_symbols.txt | 0 {tests => spec/tests}/julia/test_types.txt | 0 {tests => spec/tests}/julia/test_unicode.txt | 0 ...est_can_cope_generics_in_destructuring.txt | 0 ..._cope_with_backtick_names_in_functions.txt | 0 ...th_commas_and_dashes_in_backtick_Names.txt | 0 .../test_can_cope_with_destructuring.txt | 0 .../kotlin/test_can_cope_with_generics.txt | 0 .../tests}/kotlin/test_modifier_keyword.txt | 0 ...st_should_cope_with_multiline_comments.txt | 0 .../kotlin/test_string_interpolation.txt | 0 {tests => spec/tests}/llvm/test_constants.txt | 0 {tests => spec/tests}/llvm/test_vectors.txt | 0 .../mason/test_handles_tags_correctly.txt | 0 .../matlab/test_classes_with_properties.txt | 0 .../tests}/matlab/test_command_mode.txt | 0 .../test_comment_after_continuation.txt | 0 .../tests}/matlab/test_dot_operator.txt | 0 .../matlab/test_keywords_ended_by_newline.txt | 0 .../tests}/matlab/test_line_continuation.txt | 0 ...st_multiple_spaces_variable_assignment.txt | 0 .../matlab/test_one_space_assignment.txt | 0 .../matlab/test_operator_multiple_space.txt | 0 .../tests}/matlab/test_single_line.txt | 0 .../tests}/mcfunction/commenting.txt | 0 .../tests}/mcfunction/coordinates.txt | 0 {tests => spec/tests}/mcfunction/data.txt | 0 .../tests}/mcfunction/difficult_1.txt | 0 .../tests}/mcfunction/multiline.txt | 0 .../tests}/mcfunction/selectors.txt | 0 {tests => spec/tests}/mcfunction/simple.txt | 0 {tests => spec/tests}/nasm/checkid.txt | 0 {tests => spec/tests}/nix/basic_values.txt | 0 {tests => spec/tests}/nix/built_in.txt | 0 {tests => spec/tests}/nix/comments.txt | 0 {tests => spec/tests}/nix/compound_values.txt | 0 .../tests}/nix/computed_property_names.txt | 0 .../tests}/nix/control_structures.txt | 0 {tests => spec/tests}/nix/floats.txt | 0 {tests => spec/tests}/nix/functions.txt | 0 {tests => spec/tests}/nix/operators.txt | 0 {tests => spec/tests}/nix/string_escape.txt | 0 .../objective-c}/test_literal_number_bool.txt | 0 .../test_literal_number_bool_expression.txt | 0 .../test_literal_number_expression.txt | 0 .../objective-c}/test_literal_number_int.txt | 0 .../test_literal_number_nested_expression.txt | 0 .../tests/objective-c}/test_module_import.txt | 0 .../tests}/octave/test_multilinecomment.txt | 0 {tests => spec/tests}/openscad/test_basic.txt | 0 {tests => spec/tests}/php/anonymous_class.txt | 0 {tests => spec/tests}/php/attributes.txt | 0 .../php/test_backslashes_in_strings.txt | 0 .../tests}/php/test_string_escaping_run.txt | 0 .../tests}/php/variable_variable.txt | 0 .../powershell/test_colon_punctuation.txt | 0 .../powershell/test_remoting_session.txt | 0 .../tests}/powershell/test_session.txt | 0 {tests => spec/tests}/promela/do.txt | 0 .../tests}/promela/dotted-assign.txt | 0 {tests => spec/tests}/promela/if.txt | 0 {tests => spec/tests}/promela/intruder.txt | 0 {tests => spec/tests}/promela/ltl.txt | 0 {tests => spec/tests}/promela/msg.txt | 0 {tests => spec/tests}/promela/skip.txt | 0 {tests => spec/tests}/promela/welfare.txt | 0 .../promql/test_complex_exp_single_quotes.txt | 0 .../promql/test_expression_and_comment.txt | 0 .../tests}/promql/test_function_delta.txt | 0 .../promql/test_function_multi_line.txt | 0 .../test_function_multi_line_with_offset.txt | 0 .../promql/test_function_sum_with_args.txt | 0 .../test_matching_operator_no_regex_match.txt | 0 {tests => spec/tests}/promql/test_metric.txt | 0 .../promql/test_metric_multiple_labels.txt | 0 ...est_metric_multiple_labels_with_spaces.txt | 0 .../tests}/promql/test_metric_one_label.txt | 0 .../tests}/properties/test_comments.txt | 0 .../properties/test_escaped_space_in_key.txt | 0 .../test_escaped_space_in_value.txt | 0 .../tests}/properties/test_just_key.txt | 0 .../properties/test_just_key_with_space.txt | 0 .../test_leading_whitespace_comments.txt | 0 .../test_space_delimited_kv_pair.txt | 0 {tests => spec/tests}/prql/filename.txt | 0 {tests => spec/tests}/prql/fstring.txt | 0 {tests => spec/tests}/prql/rstring.txt | 0 {tests => spec/tests}/prql/sstring.txt | 0 .../tests}/python/test_bytes_escape_codes.txt | 0 {tests => spec/tests}/python/test_floats.txt | 0 .../tests}/python/test_fstring_01a.txt | 0 .../tests}/python/test_fstring_01b.txt | 0 .../tests}/python/test_fstring_02a.txt | 0 .../tests}/python/test_fstring_02b.txt | 0 .../tests}/python/test_fstring_03a.txt | 0 .../tests}/python/test_fstring_03b.txt | 0 .../tests}/python/test_fstring_04a.txt | 0 .../tests}/python/test_fstring_04b.txt | 0 .../tests}/python/test_fstring_05a.txt | 0 .../tests}/python/test_fstring_05b.txt | 0 .../tests}/python/test_fstring_06a.txt | 0 .../tests}/python/test_fstring_06b.txt | 0 .../tests}/python/test_fstring_07a.txt | 0 .../tests}/python/test_fstring_07b.txt | 0 .../tests}/python/test_fstring_08a.txt | 0 .../tests}/python/test_fstring_08b.txt | 0 .../tests}/python/test_fstring_09a.txt | 0 .../tests}/python/test_fstring_09b.txt | 0 .../tests}/python/test_fstring_10a.txt | 0 .../tests}/python/test_fstring_10b.txt | 0 .../tests}/python/test_fstring_11a.txt | 0 .../tests}/python/test_fstring_11b.txt | 0 .../tests}/python/test_fstring_12a.txt | 0 .../tests}/python/test_fstring_12b.txt | 0 .../tests}/python/test_fstring_13a.txt | 0 .../tests}/python/test_fstring_13b.txt | 0 .../tests}/python/test_fstring_14a.txt | 0 .../tests}/python/test_fstring_14b.txt | 0 .../tests}/python/test_fstring_15a.txt | 0 .../tests}/python/test_fstring_15b.txt | 0 .../tests}/python/test_fstring_16a.txt | 0 .../tests}/python/test_fstring_16b.txt | 0 .../tests}/python/test_fstring_17a.txt | 0 .../tests}/python/test_fstring_17b.txt | 0 .../tests}/python/test_fstring_18a.txt | 0 .../tests}/python/test_fstring_18b.txt | 0 .../tests}/python/test_fstring_19a.txt | 0 .../tests}/python/test_fstring_19b.txt | 0 .../tests}/python/test_fstring_20a.txt | 0 .../tests}/python/test_fstring_20b.txt | 0 .../tests}/python/test_fstring_21a.txt | 0 .../tests}/python/test_fstring_21b.txt | 0 .../tests}/python/test_fstring_22a.txt | 0 .../tests}/python/test_fstring_22b.txt | 0 .../tests}/python/test_fstring_23a.txt | 0 .../tests}/python/test_fstring_23b.txt | 0 .../tests}/python/test_fstring_24a.txt | 0 .../tests}/python/test_fstring_24b.txt | 0 .../tests}/python/test_fstring_25a.txt | 0 .../tests}/python/test_fstring_25b.txt | 0 .../tests}/python/test_fstring_26a.txt | 0 .../tests}/python/test_fstring_26b.txt | 0 .../tests}/python/test_fstring_27a.txt | 0 .../tests}/python/test_fstring_27b.txt | 0 .../tests}/python/test_fstring_28a.txt | 0 .../tests}/python/test_fstring_28b.txt | 0 .../tests}/python/test_fstring_29a.txt | 0 .../tests}/python/test_fstring_29b.txt | 0 .../tests}/python/test_fstring_30a.txt | 0 .../tests}/python/test_fstring_30b.txt | 0 .../tests}/python/test_fstring_31a.txt | 0 .../tests}/python/test_fstring_31b.txt | 0 .../tests}/python/test_fstring_32a.txt | 0 .../tests}/python/test_fstring_32b.txt | 0 .../tests}/python/test_fstring_33a.txt | 0 .../tests}/python/test_fstring_33b.txt | 0 .../tests}/python/test_fstring_34a.txt | 0 .../tests}/python/test_fstring_34b.txt | 0 .../tests}/python/test_fstring_35a.txt | 0 .../tests}/python/test_fstring_35b.txt | 0 .../tests}/python/test_fstring_36a.txt | 0 .../tests}/python/test_fstring_36b.txt | 0 .../tests}/python/test_needs_name.txt | 0 {tests => spec/tests}/python/test_pep_515.txt | 0 .../tests}/python/test_raw_fstring.txt | 0 .../tests}/python/test_soft_kwds.txt | 0 .../python/test_string_escape_codes.txt | 0 .../tests}/python/test_walrus_operator.txt | 0 .../tests/python_2}/test_cls_builtin.txt | 0 .../qbasic/test_keywords_with_dollar.txt | 0 {tests => spec/tests}/r/test_call.txt | 0 .../tests}/r/test_custom_operator.txt | 0 {tests => spec/tests}/r/test_dot_indexing.txt | 0 {tests => spec/tests}/r/test_dot_name.txt | 0 {tests => spec/tests}/r/test_indexing.txt | 0 {tests => spec/tests}/r/test_name1.txt | 0 {tests => spec/tests}/r/test_name2.txt | 0 {tests => spec/tests}/r/test_name3.txt | 0 .../tests/react}/test_aria_attribute.txt | 0 .../react}/test_arrow_function_attribute.txt | 0 .../tests/react}/test_fragment.txt | 0 .../react}/test_function_returning_jsx.text | 0 .../tests/react}/test_multiple_attributes.txt | 0 .../tests/react}/test_object_attribute.txt | 0 .../tests/react}/test_short_syntax.txt | 0 .../tests}/ruby/test_escaped_bracestring.txt | 0 .../ruby/test_interpolation_nested_curly.txt | 0 .../tests}/ruby/test_operator_methods.txt | 0 .../tests}/ruby/test_range_syntax1.txt | 0 .../tests}/ruby/test_range_syntax2.txt | 0 .../tests}/ruby/test_range_syntax3.txt | 0 {tests => spec/tests}/rust/test_attribute.txt | 0 {tests => spec/tests}/rust/test_break.txt | 0 {tests => spec/tests}/rust/test_func.txt | 0 .../tests}/rust/test_rawstrings.txt | 0 {tests => spec/tests}/rust/test_struct.txt | 0 {tests => spec/tests}/rust/test_use.txt | 0 .../scala/test_colon_colon_function_name.txt | 0 .../tests}/scala/test_default_parameter.txt | 0 {tests => spec/tests}/scala/test_end_val.txt | 0 {tests => spec/tests}/scala/test_end_valx.txt | 0 .../scala/test_float_with_exponents.txt | 0 .../scala/test_function_operator_name.txt | 0 .../tests}/scala/test_import_path.txt | 0 .../test_invalid_symbol_and_invalid_char.txt | 0 .../tests}/scala/test_open_soft_keyword.txt | 0 .../tests}/scala/test_package_name.txt | 0 .../tests}/scala/test_prepend_operator.txt | 0 .../tests}/scala/test_qualified_name.txt | 0 .../scala/test_qualified_name_class.txt | 0 .../tests}/scala/test_script_header.txt | 0 .../scala/test_symbol_followed_by_op.txt | 0 .../test_symbol_name_ending_with_star.txt | 0 .../tests}/scala/test_underscore_name.txt | 0 {tests => spec/tests}/scheme/keywords.txt | 0 {tests => spec/tests}/scheme/numbers.txt | 0 {tests => spec/tests}/scheme/strings.txt | 0 .../tests}/smarty/test_nested_curly.txt | 0 {tests => spec/tests}/swift/strings.txt | 0 {tests => spec/tests}/systemd/example1.txt | 0 .../tests}/systemverilog/test_basic.txt | 0 .../tests}/systemverilog/test_classes.txt | 0 .../tests}/systemverilog/test_numbers.txt | 0 .../tests}/systemverilog/test_operators.txt | 0 .../tests}/tcl/test_comma_and_at.txt | 0 {tests => spec/tests}/tcl/test_vars.txt | 0 .../tests}/terraform/test_attributes.txt | 0 .../tests}/terraform/test_backend.txt | 0 .../tests}/terraform/test_comment.txt | 0 .../tests}/terraform/test_functions.txt | 0 .../tests}/terraform/test_heredoc.txt | 0 .../tests}/terraform/test_module.txt | 0 .../tests}/terraform/test_resource.txt | 0 .../tests}/terraform/test_types.txt | 0 .../terraform/test_variable_declaration.txt | 0 .../tests}/terraform/test_variable_read.txt | 0 {tests => spec/tests}/tex/test_basic.txt | 0 {tests => spec/tests}/tex/test_math.txt | 0 {tests => spec/tests}/toml/bool-comment.txt | 0 .../tests}/toml/comment-section-header.txt | 0 .../tests}/toml/multiline-string-comment.txt | 0 {tests => spec/tests}/toml/number-keys.txt | 0 .../tests}/toml/section-header-whitespace.txt | 0 {tests => spec/tests}/toml/string-escapes.txt | 0 {tests => spec/tests}/toml/strings-eager.txt | 0 .../tests}/toml/table-header-string.txt | 0 ...est_prefixed_name_starting_with_number.txt | 0 .../typescript/test_function_definition.txt | 0 .../address-space.txt | 0 .../webgpu_shading_language}/attribute.txt | 0 .../block-comment.txt | 0 .../webgpu_shading_language}/bool-types.txt | 0 .../const-numbers.txt | 0 .../depth-texture.txt | 0 .../external-texture.txt | 0 .../webgpu_shading_language}/line-comment.txt | 0 .../multisampled-texture.txt | 0 .../numeric-types.txt | 0 .../sampled-texture.txt | 0 .../storage-texture.txt | 0 .../texel-formats.txt | 0 .../webgpu_shading_language}/tiny-render.txt | 0 .../type-generators.txt | 0 .../tests}/whiley/test_whiley_operator.txt | 0 ...line-comment-catastrophic-backtracking.txt | 0 {tests => spec/tests}/yaml/test_yaml.txt | 0 .../tests}/yaml/test_yaml_colon_in_key.txt | 0 .../yaml/test_yaml_colon_in_key_double.txt | 0 .../yaml/test_yaml_colon_in_key_start.txt | 0 .../tests}/yang/test_float_value.txt | 0 .../tests}/yang/test_integer_value.txt | 0 .../tests}/yang/test_namespace_1.txt | 0 .../tests}/yang/test_namespace_2.txt | 0 .../tests}/yang/test_revision_date.txt | 0 .../tests}/yang/test_string_value.txt | 0 .../unsupported_lexers}/asn1/certificate.txt | 0 .../asn1/nested-comment.txt | 0 .../carbon/unterminated_comment.txt | 0 .../cfm/test_basic_comment.txt | 0 .../cfm/test_nested_comment.txt | 0 .../csound/test_braced_strings.txt | 0 .../csound/test_comments.txt | 0 .../csound/test_escape_sequences.txt | 0 .../test_function_like_macro_definitions.txt | 0 .../csound/test_function_like_macros.txt | 0 .../csound/test_global_value_identifiers.txt | 0 .../csound/test_goto_statements.txt | 0 .../csound/test_include_directives.txt | 0 .../csound/test_includestr_directives.txt | 0 .../csound/test_instrument_blocks.txt | 0 .../csound/test_keywords.txt | 0 .../csound/test_labels.txt | 0 .../test_macro_preprocessor_directives.txt | 0 .../unsupported_lexers}/csound/test_name.txt | 0 .../csound/test_numbers.txt | 0 .../test_object_like_macro_definitions.txt | 0 .../csound/test_operators.txt | 0 .../test_other_preprocessor_directives.txt | 0 ...st_printks_and_prints_escape_sequences.txt | 0 .../csound/test_quoted_strings.txt | 0 .../csound/test_user_defined_opcodes.txt | 0 .../test_fragment_out_of_root_node.txt | 0 .../doscon/test_gt_only.txt | 0 .../elpi/test_catastrophic_backtracking.txt | 0 .../unsupported_lexers}/elpi/test_chr.txt | 0 .../unsupported_lexers}/elpi/test_clause.txt | 0 .../elpi/test_namespace.txt | 0 .../unsupported_lexers}/elpi/test_pred.txt | 0 .../elpi/test_quotations.txt | 0 .../unsupported_lexers}/elpi/test_type.txt | 0 .../ezhil/test_function.txt | 0 .../ezhil/test_gcd_expr.txt | 0 .../ezhil/test_if_statement.txt | 0 .../unsupported_lexers}/ezhil/test_sum.txt | 0 .../http/test_application_calendar_xml.txt | 0 .../http/test_application_xml.txt | 0 .../http/test_http_status_line.txt | 0 ...http_status_line_without_reason_phrase.txt | 0 ...us_line_without_reason_phrase_rfc_7230.txt | 0 .../http/test_urlencoded.txt | 0 .../janet/bool_lit-false.txt | 0 .../janet/bool_lit-true.txt | 0 .../janet/buf_lit-multiline.txt | 0 .../janet/buf_lit-simple.txt | 0 .../janet/buf_lit-with-escape.txt | 0 .../janet/buf_lit-with-hex-escape.txt | 0 ...f_lit-with-utf8-four-hex-digits-escape.txt | 0 ...uf_lit-with-utf8-six-hex-digits-escape.txt | 0 .../janet/comment-multiple.txt | 0 .../janet/comment-simple.txt | 0 .../janet/kwd_lit-just-a-colon.txt | 0 .../janet/kwd_lit-just-two-colons.txt | 0 .../janet/kwd_lit-simple.txt | 0 .../janet/kwd_lit-with-leading-number.txt | 0 ...f_lit-more-than-one-backtick-per-delim.txt | 0 .../janet/long_buf_lit-simple.txt | 0 ...r_lit-more-than-one-backtick-per-delim.txt | 0 .../janet/long_str_lit-simple.txt | 0 .../janet/nil_lit-the-only.txt | 0 .../janet/num_lit-double-with-exponent.txt | 0 .../num_lit-double-with-negative-exponent.txt | 0 .../janet/num_lit-double-with-underscores.txt | 0 .../janet/num_lit-double.txt | 0 ...x-with-fractional-part-and-underscores.txt | 0 .../num_lit-hex-with-fractional-part.txt | 0 .../janet/num_lit-hex-with-underscores.txt | 0 .../unsupported_lexers}/janet/num_lit-hex.txt | 0 ...um_lit-integer-ending-with-underscores.txt | 0 ...it-integer-with-sequential-underscores.txt | 0 .../num_lit-integer-with-underscores.txt | 0 .../janet/num_lit-integer.txt | 0 .../janet/num_lit-negative-double.txt | 0 .../janet/num_lit-negative-hex.txt | 0 .../janet/num_lit-negative-integer.txt | 0 .../janet/num_lit-negative-radix.txt | 0 .../janet/num_lit-radix-with-exponent.txt | 0 .../janet/num_lit-radix.txt | 0 .../num_lit-shouting-double-with-exponent.txt | 0 .../janet/par_arr_lit-empty.txt | 0 .../janet/par_arr_lit-recursive.txt | 0 .../janet/par_arr_lit-simple.txt | 0 .../janet/par_tup_lit-empty.txt | 0 .../janet/par_tup_lit-recurisve.txt | 0 .../janet/par_tup_lit-simple.txt | 0 .../janet/qq_lit-paren-tuple.txt | 0 .../janet/qq_lit-simple.txt | 0 .../janet/quote_lit-simple.txt | 0 .../janet/quote_lit-tuple.txt | 0 .../janet/short_fn_lit-call.txt | 0 .../janet/short_fn_lit-keyword.txt | 0 .../janet/short_fn_lit-number.txt | 0 .../short_fn_lit-square-bracket-array.txt | 0 .../short_fn_lit-square-bracket-tuple.txt | 0 .../janet/short_fn_lit-string.txt | 0 .../janet/short_fn_lit-struct.txt | 0 .../janet/short_fn_lit-symbol.txt | 0 .../janet/splice_lit-in-call.txt | 0 .../janet/sqr_arr_lit-empty.txt | 0 .../janet/sqr_arr_lit-recursive.txt | 0 .../janet/sqr_arr_lit-simple.txt | 0 .../janet/sqr_tup_lit-empty.txt | 0 .../janet/sqr_tup_lit-recursive.txt | 0 .../janet/sqr_tup_lit-simple.txt | 0 .../janet/str_lit-multiline.txt | 0 .../janet/str_lit-simple.txt | 0 .../janet/str_lit-with-escapes.txt | 0 .../janet/str_lit-with-hex-escape.txt | 0 ...r_lit-with-utf8-four-hex-digits-escape.txt | 0 ...tr_lit-with-utf8-six-hex-digits-escape.txt | 0 .../janet/struct_lit-empty.txt | 0 .../janet/struct_lit-recursive.txt | 0 .../janet/struct_lit-simple.txt | 0 .../janet/sym_lit-alphabetic.txt | 0 .../janet/sym_lit-ear-muffs.txt | 0 .../janet/sym_lit-full-of-stars.txt | 0 .../janet/sym_lit-kebab-case.txt | 0 .../janet/sym_lit-legal-but-hard-to-read.txt | 0 .../janet/sym_lit-name-with-module-name.txt | 0 .../janet/sym_lit-snake-case.txt | 0 .../janet/tbl_lit-empty.txt | 0 .../janet/tbl_lit-recursive.txt | 0 .../janet/tbl_lit-simple.txt | 0 .../janet/unquote_lit-in-compile-call.txt | 0 .../janet/unquote_lit-in-quasiquote.txt | 0 .../unsupported_lexers}/jslt/test_sample.txt | 0 .../jsonld/test_json_ld.txt | 0 .../julia-repl/test_repl.txt | 0 .../unsupported_lexers}/kusto/test_kusto.txt | 0 .../less/test_single_line_comments.txt | 0 .../markdown/test_code.txt | 0 .../markdown/test_headings.txt | 0 .../markdown/test_invalid_code.txt | 0 .../markdown/test_setext_headings.txt | 0 .../markdown/test_setext_subheadings.txt | 0 .../markdown/test_subheadings.txt | 0 .../matlabsession/test_wrong_continuation.txt | 0 .../md/test_bold_fenced_by_asterisk.txt | 0 .../md/test_bold_fenced_by_underscore.txt | 0 .../md/test_bulleted_list_1.txt | 0 .../md/test_bulleted_list_2.txt | 0 .../md/test_bulleted_list_3.txt | 0 .../md/test_bulleted_list_4.txt | 0 .../test_code_block_fenced_by_backticks.txt | 0 .../md/test_code_block_with_language.txt | 0 .../md/test_escape_italics.txt | 0 .../md/test_inline_code.txt | 0 .../md/test_inline_code_after_block.txt | 0 .../md/test_inline_code_in_list.txt | 0 .../md/test_invalid_bold.txt | 0 .../md/test_invalid_italics.txt | 0 .../md/test_italics_and_bold.txt | 0 .../md/test_italics_fenced_by_asterisk.txt | 0 .../md/test_italics_fenced_by_underscore.txt | 0 .../md/test_italics_no_multiline.txt | 0 .../unsupported_lexers}/md/test_links.txt | 0 .../unsupported_lexers}/md/test_mentions.txt | 0 .../md/test_numbered_list.txt | 0 .../unsupported_lexers}/md/test_quote.txt | 0 .../md/test_reference_style_links.txt | 0 .../md/test_strikethrough.txt | 0 .../unsupported_lexers}/md/test_task_list.txt | 0 .../unsupported_lexers}/md/test_topics.txt | 0 .../mips/deprecated_substrings.txt | 0 .../mips/keyword_substrings.txt | 0 .../mips/variable_substrings.txt | 0 .../unsupported_lexers}/mojo/test_floats.txt | 0 .../unsupported_lexers}/mojo/test_kw.txt | 0 .../mojo/test_needs_name.txt | 0 .../mojo/test_soft_kwds.txt | 0 .../omg-idl/annotation_named_params.txt | 0 .../omg-idl/enumerators.txt | 0 .../unsupported_lexers}/peg/test_basic.txt | 0 .../peg/test_modified_strings.txt | 0 .../peg/test_operators.txt | 0 .../praat/test_broken_unquoted_string.txt | 0 .../praat/test_function_call.txt | 0 .../praat/test_inline_if.txt | 0 ...polated_indexed_numeric_with_precision.txt | 0 ...erpolated_local_numeric_with_precision.txt | 0 .../praat/test_interpolated_numeric_hash.txt | 0 .../test_interpolated_numeric_indexed.txt | 0 ...st_interpolated_numeric_with_precision.txt | 0 .../praat/test_interpolated_string_hash.txt | 0 .../test_interpolated_string_indexed.txt | 0 .../praat/test_interpolation_boundary.txt | 0 .../praat/test_numeric_assignment.txt | 0 .../praat/test_string_assignment.txt | 0 .../praat/test_string_escaped_quotes.txt | 0 .../procfile/test_basic.txt | 0 .../ptx/test_ptx_snippet.txt | 0 .../pwsh-session/test_continuation.txt | 0 .../unsupported_lexers}/pycon/broken_tb.txt | 0 .../unsupported_lexers}/pycon/multiple_tb.txt | 0 .../pycon/unterminated_tb.txt | 0 .../robotframework/test_basic.txt | 0 ...est_prefixed_name_starting_with_number.txt | 0 .../unsupported_lexers}/snbt/json.txt | 0 .../unsupported_lexers}/snbt/literals.txt | 0 .../unsupported_lexers}/snbt/multiline.txt | 0 .../unsupported_lexers}/snbt/nesting.txt | 0 .../unsupported_lexers}/snbt/quoted_keys.txt | 0 .../soong/test_comments.txt | 0 .../soong/test_modules.txt | 0 .../test_variable_assignment_after_module.txt | 0 .../soong/test_variable_assignments.txt | 0 .../teal/test_comments.txt | 0 .../teal/test_literals.txt | 0 .../unsupported_lexers}/teal/test_strings.txt | 0 .../unsupported_lexers}/thingsdb/basic.txt | 0 .../unixconfig/etc_group.txt | 0 .../unixconfig/etc_passwd.txt | 0 .../unixconfig/etc_shadow.txt | 0 .../urlencoded/example.txt | 0 .../unsupported_lexers}/usd/basic.txt | 0 .../usd/test_attribute.txt | 0 .../usd/test_composition_arcs.txt | 0 .../unsupported_lexers}/usd/test_metadata.txt | 0 .../unsupported_lexers}/usd/test_numbers.txt | 0 .../usd/test_outer_match_at_sign.txt | 0 .../usd/test_outer_match_double.txt | 0 .../usd/test_outer_match_single.txt | 0 .../usd/test_string_multiple_line.txt | 0 .../usd/test_string_priority.txt | 0 .../usd/test_string_single_line.txt | 0 .../vbscript/test_floats.txt | 0 .../vbscript/test_floats_multiple.txt | 0 .../vbscript/test_integers.txt | 0 .../vbscript/test_invalid_character.txt | 0 .../vbscript/test_names.txt | 0 .../vbscript/test_reject_almost_float.txt | 0 .../vbscript/test_unterminated_string.txt | 0 .../unsupported_lexers}/vyper/test.txt | 0 ..._and_offset_accept_hexadecimal_numbers.txt | 0 .../wat/test_comment_with_open_paren.txt | 0 .../wat/test_comment_with_semicolon.txt | 0 .../wat/test_i32_const_is_builtin.txt | 0 .../wat/test_multiline_comment.txt | 0 .../wat/test_nested_comment.txt | 0 .../wat/test_string_byte_escape.txt | 0 .../wat/test_string_with_escape.txt | 0 .../wat/test_variable_name_pattern.txt | 0 .../wikitext/bold-italic.txt | 0 .../unsupported_lexers}/wikitext/entity.txt | 0 .../unsupported_lexers}/wikitext/extlink.txt | 0 .../unsupported_lexers}/wikitext/heading.txt | 0 .../unsupported_lexers}/wikitext/hr.txt | 0 .../unsupported_lexers}/wikitext/html.txt | 0 .../wikitext/language-converter.txt | 0 .../unsupported_lexers}/wikitext/list.txt | 0 .../wikitext/magic-link.txt | 0 .../wikitext/magic-word.txt | 0 .../wikitext/medialink.txt | 0 .../only-highlight-first-redirect.txt | 0 .../wikitext/parser-function.txt | 0 .../wikitext/parser-tag.txt | 0 .../wikitext/signurature.txt | 0 .../unsupported_lexers}/wikitext/table.txt | 0 .../unsupported_lexers}/wikitext/template.txt | 0 .../unsupported_lexers}/wikitext/wikilink.txt | 0 .../unsupported_lexers}/wren/lonely-paren.txt | 0 src/tartrazine.cr | 141 ++++-------------- 693 files changed, 136 insertions(+), 116 deletions(-) rename {tests => spec/tests}/apacheconf/test_directive_no_args.txt (100%) rename {tests => spec/tests}/apacheconf/test_fix_lock_absolute_path.txt (100%) rename {tests => spec/tests}/apacheconf/test_include_globs.txt (100%) rename {tests => spec/tests}/apacheconf/test_malformed_scoped_directive_closing_tag.txt (100%) rename {tests => spec/tests}/apacheconf/test_multi_include_globs.txt (100%) rename {tests => spec/tests}/apacheconf/test_multi_include_globs_root.txt (100%) rename {tests => spec/tests}/apacheconf/test_multiline_argument.txt (100%) rename {tests => spec/tests}/apacheconf/test_multiline_comment.txt (100%) rename {tests => spec/tests}/apacheconf/test_normal_scoped_directive.txt (100%) rename {tests => spec/tests}/apl/test_leading_underscore.txt (100%) rename {tests => spec/tests}/awk/test_ternary.txt (100%) rename {tests/shell => spec/tests/bash}/test_array_nums.txt (100%) rename {tests/shell => spec/tests/bash}/test_curly_no_escape_and_quotes.txt (100%) rename {tests/shell => spec/tests/bash}/test_curly_with_escape.txt (100%) rename {tests/shell => spec/tests/bash}/test_end_of_line_nums.txt (100%) rename {tests/shell => spec/tests/bash}/test_math.txt (100%) rename {tests/shell => spec/tests/bash}/test_parsed_single.txt (100%) rename {tests/shell => spec/tests/bash}/test_short_variable_names.txt (100%) rename {tests/console => spec/tests/bash_session}/fake_ps2_prompt.txt (100%) rename {tests/console => spec/tests/bash_session}/prompt_in_output.txt (100%) rename {tests/console => spec/tests/bash_session}/ps2_prompt.txt (100%) rename {tests/console => spec/tests/bash_session}/test_comment_after_prompt.txt (100%) rename {tests/console => spec/tests/bash_session}/test_newline_in_echo_no_ps2.txt (100%) rename {tests/console => spec/tests/bash_session}/test_newline_in_echo_ps2.txt (100%) rename {tests/console => spec/tests/bash_session}/test_newline_in_ls_no_ps2.txt (100%) rename {tests/console => spec/tests/bash_session}/test_newline_in_ls_ps2.txt (100%) rename {tests/console => spec/tests/bash_session}/test_virtualenv.txt (100%) rename {tests => spec/tests}/bibtex/test_basic_bst.txt (100%) rename {tests => spec/tests}/bibtex/test_comment.txt (100%) rename {tests => spec/tests}/bibtex/test_entry.txt (100%) rename {tests => spec/tests}/bibtex/test_mismatched_brace.txt (100%) rename {tests => spec/tests}/bibtex/test_missing_body.txt (100%) rename {tests => spec/tests}/bibtex/test_preamble.txt (100%) rename {tests => spec/tests}/bibtex/test_string.txt (100%) rename {tests => spec/tests}/bqn/test_arguments.txt (100%) rename {tests => spec/tests}/bqn/test_comment.txt (100%) rename {tests => spec/tests}/bqn/test_define.txt (100%) rename {tests => spec/tests}/bqn/test_syntax_roles.txt (100%) rename {tests/cpp => spec/tests/c++}/alternative_tokens.txt (100%) rename {tests/cpp => spec/tests/c++}/extension_keywords.txt (100%) rename {tests/cpp => spec/tests/c++}/test_good_comment.txt (100%) rename {tests/cpp => spec/tests/c++}/test_open_comment.txt (100%) rename {tests/cpp => spec/tests/c++}/test_unicode_identifiers.txt (100%) rename {tests => spec/tests}/c/builtin_types.txt (100%) rename {tests => spec/tests}/c/test_comment_end.txt (100%) rename {tests => spec/tests}/c/test_function_comments.txt (100%) rename {tests => spec/tests}/c/test_label.txt (100%) rename {tests => spec/tests}/c/test_label_followed_by_statement.txt (100%) rename {tests => spec/tests}/c/test_label_space_before_colon.txt (100%) rename {tests => spec/tests}/c/test_numbers.txt (100%) rename {tests => spec/tests}/c/test_preproc_file.txt (100%) rename {tests => spec/tests}/c/test_preproc_file2.txt (100%) rename {tests => spec/tests}/c/test_preproc_file3.txt (100%) rename {tests => spec/tests}/c/test_preproc_file4.txt (100%) rename {tests => spec/tests}/c/test_preproc_file5.txt (100%) rename {tests => spec/tests}/c/test_string_resembling_decl_end.txt (100%) rename {tests => spec/tests}/c/test_switch.txt (100%) rename {tests => spec/tests}/c/test_switch_space_before_colon.txt (100%) rename {tests => spec/tests}/coffeescript/test_beware_infinite_loop.txt (100%) rename {tests => spec/tests}/coffeescript/test_mixed_slashes.txt (100%) rename {tests => spec/tests}/coq/test_unicode.txt (100%) rename {tests => spec/tests}/crystal/test_annotation.txt (100%) rename {tests => spec/tests}/crystal/test_array_access.txt (100%) rename {tests => spec/tests}/crystal/test_chars.txt (100%) rename {tests => spec/tests}/crystal/test_constant_and_module.txt (100%) rename {tests => spec/tests}/crystal/test_empty_percent_strings.txt (100%) rename {tests => spec/tests}/crystal/test_escaped_bracestring.txt (100%) rename {tests => spec/tests}/crystal/test_escaped_interpolation.txt (100%) rename {tests => spec/tests}/crystal/test_interpolation_nested_curly.txt (100%) rename {tests => spec/tests}/crystal/test_lib.txt (100%) rename {tests => spec/tests}/crystal/test_macro.txt (100%) rename {tests => spec/tests}/crystal/test_numbers.txt (100%) rename {tests => spec/tests}/crystal/test_operator_methods.txt (100%) rename {tests => spec/tests}/crystal/test_percent_strings.txt (100%) rename {tests => spec/tests}/crystal/test_percent_strings_special.txt (100%) rename {tests => spec/tests}/crystal/test_pseudo_builtins.txt (100%) rename {tests => spec/tests}/crystal/test_pseudo_keywords.txt (100%) rename {tests => spec/tests}/crystal/test_range_syntax1.txt (100%) rename {tests => spec/tests}/crystal/test_range_syntax2.txt (100%) rename {tests => spec/tests}/crystal/test_string_escapes.txt (100%) rename {tests => spec/tests}/crystal/test_symbols.txt (100%) rename {tests => spec/tests}/css/percent_in_func.txt (100%) rename {tests/desktop => spec/tests/desktop_entry}/example.txt (100%) rename {tests => spec/tests}/diff/normal.txt (100%) rename {tests => spec/tests}/diff/unified.txt (100%) rename {tests/zone => spec/tests/dns}/a-record.txt (100%) rename {tests/zone => spec/tests/dns}/include.txt (100%) rename {tests/zone => spec/tests/dns}/soa.txt (100%) rename {tests => spec/tests}/fortran/test_string_cataback.txt (100%) rename {tests => spec/tests}/gas/test_comments.txt (100%) rename {tests/asm => spec/tests/gas}/test_cpuid.txt (100%) rename {tests => spec/tests}/gdscript/test_comment.txt (100%) rename {tests => spec/tests}/gdscript/test_export_array.txt (100%) rename {tests => spec/tests}/gdscript/test_function_with_types.txt (100%) rename {tests => spec/tests}/gdscript/test_inner_class.txt (100%) rename {tests => spec/tests}/gdscript/test_multiline_string.txt (100%) rename {tests => spec/tests}/gdscript/test_signal.txt (100%) rename {tests => spec/tests}/gdscript/test_simple_function.txt (100%) rename {tests => spec/tests}/gdscript/test_variable_declaration_and_assigment.txt (100%) rename {tests => spec/tests}/haskell/test_promoted_names.txt (100%) rename {tests => spec/tests}/html/css.txt (100%) rename {tests => spec/tests}/html/css_backtracking.txt (100%) rename {tests => spec/tests}/html/javascript.txt (100%) rename {tests => spec/tests}/html/javascript_backtracking.txt (100%) rename {tests => spec/tests}/html/javascript_unclosed.txt (100%) rename {tests => spec/tests}/html/multiline-comment-catastrophic-backtracking.txt (100%) rename {tests => spec/tests}/idris/test_compiler_directive.txt (100%) rename {tests => spec/tests}/idris/test_reserved_word.txt (100%) rename {tests => spec/tests}/ini/test_indented_entries_1.txt (100%) rename {tests => spec/tests}/ini/test_indented_entries_2.txt (100%) rename {tests => spec/tests}/ini/test_indented_entries_3.txt (100%) rename {tests => spec/tests}/j/test_deal_operator.txt (100%) rename {tests => spec/tests}/j/test_deal_operator_fixed_seed.txt (100%) rename {tests => spec/tests}/java/test_backtracking.txt (100%) rename {tests => spec/tests}/java/test_default.txt (100%) rename {tests => spec/tests}/java/test_enhanced_for.txt (100%) rename {tests => spec/tests}/java/test_multiline_string.txt (100%) rename {tests => spec/tests}/java/test_multiline_string_only.txt (100%) rename {tests => spec/tests}/java/test_numeric_literals.txt (100%) rename {tests => spec/tests}/java/test_record.txt (100%) rename {tests => spec/tests}/java/test_string_literals.txt (100%) rename {tests/js => spec/tests/javascript}/super.txt (100%) rename {tests => spec/tests}/javascript/test_binary_literal_negative_matches.txt (100%) rename {tests => spec/tests}/javascript/test_binary_literal_positive_matches.txt (100%) rename {tests => spec/tests}/javascript/test_float_literals_negative_matches.txt (100%) rename {tests => spec/tests}/javascript/test_float_literals_positive_matches.txt (100%) rename {tests => spec/tests}/javascript/test_hexadecimal_literal_negative_matches.txt (100%) rename {tests => spec/tests}/javascript/test_hexadecimal_literal_positive_matches.txt (100%) rename {tests => spec/tests}/javascript/test_integer_literal_negative_matches.txt (100%) rename {tests => spec/tests}/javascript/test_integer_literal_positive_matches.txt (100%) rename {tests => spec/tests}/javascript/test_octal_literal_negative_matches.txt (100%) rename {tests => spec/tests}/javascript/test_octal_literal_positive_matches.txt (100%) rename {tests => spec/tests}/json/test_arrays.txt (100%) rename {tests => spec/tests}/json/test_backtracking.txt (100%) rename {tests => spec/tests}/json/test_basic.txt (100%) rename {tests => spec/tests}/json/test_basic_bare.txt (100%) rename {tests => spec/tests}/json/test_comments.txt (100%) rename {tests => spec/tests}/json/test_constants.txt (100%) rename {tests => spec/tests}/json/test_escape_sequences.txt (100%) rename {tests => spec/tests}/json/test_floats.txt (100%) rename {tests => spec/tests}/json/test_integers.txt (100%) rename {tests => spec/tests}/json/test_objects.txt (100%) rename {tests => spec/tests}/json/test_round_trip.txt (100%) rename {tests => spec/tests}/json/test_strings.txt (100%) rename {tests => spec/tests}/json/test_whitespace.txt (100%) rename {tests => spec/tests}/julia/test_keywords.txt (100%) rename {tests => spec/tests}/julia/test_macros.txt (100%) rename {tests => spec/tests}/julia/test_names.txt (100%) rename {tests => spec/tests}/julia/test_numbers.txt (100%) rename {tests => spec/tests}/julia/test_operators.txt (100%) rename {tests => spec/tests}/julia/test_strings.txt (100%) rename {tests => spec/tests}/julia/test_symbols.txt (100%) rename {tests => spec/tests}/julia/test_types.txt (100%) rename {tests => spec/tests}/julia/test_unicode.txt (100%) rename {tests => spec/tests}/kotlin/test_can_cope_generics_in_destructuring.txt (100%) rename {tests => spec/tests}/kotlin/test_can_cope_with_backtick_names_in_functions.txt (100%) rename {tests => spec/tests}/kotlin/test_can_cope_with_commas_and_dashes_in_backtick_Names.txt (100%) rename {tests => spec/tests}/kotlin/test_can_cope_with_destructuring.txt (100%) rename {tests => spec/tests}/kotlin/test_can_cope_with_generics.txt (100%) rename {tests => spec/tests}/kotlin/test_modifier_keyword.txt (100%) rename {tests => spec/tests}/kotlin/test_should_cope_with_multiline_comments.txt (100%) rename {tests => spec/tests}/kotlin/test_string_interpolation.txt (100%) rename {tests => spec/tests}/llvm/test_constants.txt (100%) rename {tests => spec/tests}/llvm/test_vectors.txt (100%) rename {tests => spec/tests}/mason/test_handles_tags_correctly.txt (100%) rename {tests => spec/tests}/matlab/test_classes_with_properties.txt (100%) rename {tests => spec/tests}/matlab/test_command_mode.txt (100%) rename {tests => spec/tests}/matlab/test_comment_after_continuation.txt (100%) rename {tests => spec/tests}/matlab/test_dot_operator.txt (100%) rename {tests => spec/tests}/matlab/test_keywords_ended_by_newline.txt (100%) rename {tests => spec/tests}/matlab/test_line_continuation.txt (100%) rename {tests => spec/tests}/matlab/test_multiple_spaces_variable_assignment.txt (100%) rename {tests => spec/tests}/matlab/test_one_space_assignment.txt (100%) rename {tests => spec/tests}/matlab/test_operator_multiple_space.txt (100%) rename {tests => spec/tests}/matlab/test_single_line.txt (100%) rename {tests => spec/tests}/mcfunction/commenting.txt (100%) rename {tests => spec/tests}/mcfunction/coordinates.txt (100%) rename {tests => spec/tests}/mcfunction/data.txt (100%) rename {tests => spec/tests}/mcfunction/difficult_1.txt (100%) rename {tests => spec/tests}/mcfunction/multiline.txt (100%) rename {tests => spec/tests}/mcfunction/selectors.txt (100%) rename {tests => spec/tests}/mcfunction/simple.txt (100%) rename {tests => spec/tests}/nasm/checkid.txt (100%) rename {tests => spec/tests}/nix/basic_values.txt (100%) rename {tests => spec/tests}/nix/built_in.txt (100%) rename {tests => spec/tests}/nix/comments.txt (100%) rename {tests => spec/tests}/nix/compound_values.txt (100%) rename {tests => spec/tests}/nix/computed_property_names.txt (100%) rename {tests => spec/tests}/nix/control_structures.txt (100%) rename {tests => spec/tests}/nix/floats.txt (100%) rename {tests => spec/tests}/nix/functions.txt (100%) rename {tests => spec/tests}/nix/operators.txt (100%) rename {tests => spec/tests}/nix/string_escape.txt (100%) rename {tests/objectivec => spec/tests/objective-c}/test_literal_number_bool.txt (100%) rename {tests/objectivec => spec/tests/objective-c}/test_literal_number_bool_expression.txt (100%) rename {tests/objectivec => spec/tests/objective-c}/test_literal_number_expression.txt (100%) rename {tests/objectivec => spec/tests/objective-c}/test_literal_number_int.txt (100%) rename {tests/objectivec => spec/tests/objective-c}/test_literal_number_nested_expression.txt (100%) rename {tests/objectivec => spec/tests/objective-c}/test_module_import.txt (100%) rename {tests => spec/tests}/octave/test_multilinecomment.txt (100%) rename {tests => spec/tests}/openscad/test_basic.txt (100%) rename {tests => spec/tests}/php/anonymous_class.txt (100%) rename {tests => spec/tests}/php/attributes.txt (100%) rename {tests => spec/tests}/php/test_backslashes_in_strings.txt (100%) rename {tests => spec/tests}/php/test_string_escaping_run.txt (100%) rename {tests => spec/tests}/php/variable_variable.txt (100%) rename {tests => spec/tests}/powershell/test_colon_punctuation.txt (100%) rename {tests => spec/tests}/powershell/test_remoting_session.txt (100%) rename {tests => spec/tests}/powershell/test_session.txt (100%) rename {tests => spec/tests}/promela/do.txt (100%) rename {tests => spec/tests}/promela/dotted-assign.txt (100%) rename {tests => spec/tests}/promela/if.txt (100%) rename {tests => spec/tests}/promela/intruder.txt (100%) rename {tests => spec/tests}/promela/ltl.txt (100%) rename {tests => spec/tests}/promela/msg.txt (100%) rename {tests => spec/tests}/promela/skip.txt (100%) rename {tests => spec/tests}/promela/welfare.txt (100%) rename {tests => spec/tests}/promql/test_complex_exp_single_quotes.txt (100%) rename {tests => spec/tests}/promql/test_expression_and_comment.txt (100%) rename {tests => spec/tests}/promql/test_function_delta.txt (100%) rename {tests => spec/tests}/promql/test_function_multi_line.txt (100%) rename {tests => spec/tests}/promql/test_function_multi_line_with_offset.txt (100%) rename {tests => spec/tests}/promql/test_function_sum_with_args.txt (100%) rename {tests => spec/tests}/promql/test_matching_operator_no_regex_match.txt (100%) rename {tests => spec/tests}/promql/test_metric.txt (100%) rename {tests => spec/tests}/promql/test_metric_multiple_labels.txt (100%) rename {tests => spec/tests}/promql/test_metric_multiple_labels_with_spaces.txt (100%) rename {tests => spec/tests}/promql/test_metric_one_label.txt (100%) rename {tests => spec/tests}/properties/test_comments.txt (100%) rename {tests => spec/tests}/properties/test_escaped_space_in_key.txt (100%) rename {tests => spec/tests}/properties/test_escaped_space_in_value.txt (100%) rename {tests => spec/tests}/properties/test_just_key.txt (100%) rename {tests => spec/tests}/properties/test_just_key_with_space.txt (100%) rename {tests => spec/tests}/properties/test_leading_whitespace_comments.txt (100%) rename {tests => spec/tests}/properties/test_space_delimited_kv_pair.txt (100%) rename {tests => spec/tests}/prql/filename.txt (100%) rename {tests => spec/tests}/prql/fstring.txt (100%) rename {tests => spec/tests}/prql/rstring.txt (100%) rename {tests => spec/tests}/prql/sstring.txt (100%) rename {tests => spec/tests}/python/test_bytes_escape_codes.txt (100%) rename {tests => spec/tests}/python/test_floats.txt (100%) rename {tests => spec/tests}/python/test_fstring_01a.txt (100%) rename {tests => spec/tests}/python/test_fstring_01b.txt (100%) rename {tests => spec/tests}/python/test_fstring_02a.txt (100%) rename {tests => spec/tests}/python/test_fstring_02b.txt (100%) rename {tests => spec/tests}/python/test_fstring_03a.txt (100%) rename {tests => spec/tests}/python/test_fstring_03b.txt (100%) rename {tests => spec/tests}/python/test_fstring_04a.txt (100%) rename {tests => spec/tests}/python/test_fstring_04b.txt (100%) rename {tests => spec/tests}/python/test_fstring_05a.txt (100%) rename {tests => spec/tests}/python/test_fstring_05b.txt (100%) rename {tests => spec/tests}/python/test_fstring_06a.txt (100%) rename {tests => spec/tests}/python/test_fstring_06b.txt (100%) rename {tests => spec/tests}/python/test_fstring_07a.txt (100%) rename {tests => spec/tests}/python/test_fstring_07b.txt (100%) rename {tests => spec/tests}/python/test_fstring_08a.txt (100%) rename {tests => spec/tests}/python/test_fstring_08b.txt (100%) rename {tests => spec/tests}/python/test_fstring_09a.txt (100%) rename {tests => spec/tests}/python/test_fstring_09b.txt (100%) rename {tests => spec/tests}/python/test_fstring_10a.txt (100%) rename {tests => spec/tests}/python/test_fstring_10b.txt (100%) rename {tests => spec/tests}/python/test_fstring_11a.txt (100%) rename {tests => spec/tests}/python/test_fstring_11b.txt (100%) rename {tests => spec/tests}/python/test_fstring_12a.txt (100%) rename {tests => spec/tests}/python/test_fstring_12b.txt (100%) rename {tests => spec/tests}/python/test_fstring_13a.txt (100%) rename {tests => spec/tests}/python/test_fstring_13b.txt (100%) rename {tests => spec/tests}/python/test_fstring_14a.txt (100%) rename {tests => spec/tests}/python/test_fstring_14b.txt (100%) rename {tests => spec/tests}/python/test_fstring_15a.txt (100%) rename {tests => spec/tests}/python/test_fstring_15b.txt (100%) rename {tests => spec/tests}/python/test_fstring_16a.txt (100%) rename {tests => spec/tests}/python/test_fstring_16b.txt (100%) rename {tests => spec/tests}/python/test_fstring_17a.txt (100%) rename {tests => spec/tests}/python/test_fstring_17b.txt (100%) rename {tests => spec/tests}/python/test_fstring_18a.txt (100%) rename {tests => spec/tests}/python/test_fstring_18b.txt (100%) rename {tests => spec/tests}/python/test_fstring_19a.txt (100%) rename {tests => spec/tests}/python/test_fstring_19b.txt (100%) rename {tests => spec/tests}/python/test_fstring_20a.txt (100%) rename {tests => spec/tests}/python/test_fstring_20b.txt (100%) rename {tests => spec/tests}/python/test_fstring_21a.txt (100%) rename {tests => spec/tests}/python/test_fstring_21b.txt (100%) rename {tests => spec/tests}/python/test_fstring_22a.txt (100%) rename {tests => spec/tests}/python/test_fstring_22b.txt (100%) rename {tests => spec/tests}/python/test_fstring_23a.txt (100%) rename {tests => spec/tests}/python/test_fstring_23b.txt (100%) rename {tests => spec/tests}/python/test_fstring_24a.txt (100%) rename {tests => spec/tests}/python/test_fstring_24b.txt (100%) rename {tests => spec/tests}/python/test_fstring_25a.txt (100%) rename {tests => spec/tests}/python/test_fstring_25b.txt (100%) rename {tests => spec/tests}/python/test_fstring_26a.txt (100%) rename {tests => spec/tests}/python/test_fstring_26b.txt (100%) rename {tests => spec/tests}/python/test_fstring_27a.txt (100%) rename {tests => spec/tests}/python/test_fstring_27b.txt (100%) rename {tests => spec/tests}/python/test_fstring_28a.txt (100%) rename {tests => spec/tests}/python/test_fstring_28b.txt (100%) rename {tests => spec/tests}/python/test_fstring_29a.txt (100%) rename {tests => spec/tests}/python/test_fstring_29b.txt (100%) rename {tests => spec/tests}/python/test_fstring_30a.txt (100%) rename {tests => spec/tests}/python/test_fstring_30b.txt (100%) rename {tests => spec/tests}/python/test_fstring_31a.txt (100%) rename {tests => spec/tests}/python/test_fstring_31b.txt (100%) rename {tests => spec/tests}/python/test_fstring_32a.txt (100%) rename {tests => spec/tests}/python/test_fstring_32b.txt (100%) rename {tests => spec/tests}/python/test_fstring_33a.txt (100%) rename {tests => spec/tests}/python/test_fstring_33b.txt (100%) rename {tests => spec/tests}/python/test_fstring_34a.txt (100%) rename {tests => spec/tests}/python/test_fstring_34b.txt (100%) rename {tests => spec/tests}/python/test_fstring_35a.txt (100%) rename {tests => spec/tests}/python/test_fstring_35b.txt (100%) rename {tests => spec/tests}/python/test_fstring_36a.txt (100%) rename {tests => spec/tests}/python/test_fstring_36b.txt (100%) rename {tests => spec/tests}/python/test_needs_name.txt (100%) rename {tests => spec/tests}/python/test_pep_515.txt (100%) rename {tests => spec/tests}/python/test_raw_fstring.txt (100%) rename {tests => spec/tests}/python/test_soft_kwds.txt (100%) rename {tests => spec/tests}/python/test_string_escape_codes.txt (100%) rename {tests => spec/tests}/python/test_walrus_operator.txt (100%) rename {tests/python2 => spec/tests/python_2}/test_cls_builtin.txt (100%) rename {tests => spec/tests}/qbasic/test_keywords_with_dollar.txt (100%) rename {tests => spec/tests}/r/test_call.txt (100%) rename {tests => spec/tests}/r/test_custom_operator.txt (100%) rename {tests => spec/tests}/r/test_dot_indexing.txt (100%) rename {tests => spec/tests}/r/test_dot_name.txt (100%) rename {tests => spec/tests}/r/test_indexing.txt (100%) rename {tests => spec/tests}/r/test_name1.txt (100%) rename {tests => spec/tests}/r/test_name2.txt (100%) rename {tests => spec/tests}/r/test_name3.txt (100%) rename {tests/jsx => spec/tests/react}/test_aria_attribute.txt (100%) rename {tests/jsx => spec/tests/react}/test_arrow_function_attribute.txt (100%) rename {tests/jsx => spec/tests/react}/test_fragment.txt (100%) rename {tests/jsx => spec/tests/react}/test_function_returning_jsx.text (100%) rename {tests/jsx => spec/tests/react}/test_multiple_attributes.txt (100%) rename {tests/jsx => spec/tests/react}/test_object_attribute.txt (100%) rename {tests/jsx => spec/tests/react}/test_short_syntax.txt (100%) rename {tests => spec/tests}/ruby/test_escaped_bracestring.txt (100%) rename {tests => spec/tests}/ruby/test_interpolation_nested_curly.txt (100%) rename {tests => spec/tests}/ruby/test_operator_methods.txt (100%) rename {tests => spec/tests}/ruby/test_range_syntax1.txt (100%) rename {tests => spec/tests}/ruby/test_range_syntax2.txt (100%) rename {tests => spec/tests}/ruby/test_range_syntax3.txt (100%) rename {tests => spec/tests}/rust/test_attribute.txt (100%) rename {tests => spec/tests}/rust/test_break.txt (100%) rename {tests => spec/tests}/rust/test_func.txt (100%) rename {tests => spec/tests}/rust/test_rawstrings.txt (100%) rename {tests => spec/tests}/rust/test_struct.txt (100%) rename {tests => spec/tests}/rust/test_use.txt (100%) rename {tests => spec/tests}/scala/test_colon_colon_function_name.txt (100%) rename {tests => spec/tests}/scala/test_default_parameter.txt (100%) rename {tests => spec/tests}/scala/test_end_val.txt (100%) rename {tests => spec/tests}/scala/test_end_valx.txt (100%) rename {tests => spec/tests}/scala/test_float_with_exponents.txt (100%) rename {tests => spec/tests}/scala/test_function_operator_name.txt (100%) rename {tests => spec/tests}/scala/test_import_path.txt (100%) rename {tests => spec/tests}/scala/test_invalid_symbol_and_invalid_char.txt (100%) rename {tests => spec/tests}/scala/test_open_soft_keyword.txt (100%) rename {tests => spec/tests}/scala/test_package_name.txt (100%) rename {tests => spec/tests}/scala/test_prepend_operator.txt (100%) rename {tests => spec/tests}/scala/test_qualified_name.txt (100%) rename {tests => spec/tests}/scala/test_qualified_name_class.txt (100%) rename {tests => spec/tests}/scala/test_script_header.txt (100%) rename {tests => spec/tests}/scala/test_symbol_followed_by_op.txt (100%) rename {tests => spec/tests}/scala/test_symbol_name_ending_with_star.txt (100%) rename {tests => spec/tests}/scala/test_underscore_name.txt (100%) rename {tests => spec/tests}/scheme/keywords.txt (100%) rename {tests => spec/tests}/scheme/numbers.txt (100%) rename {tests => spec/tests}/scheme/strings.txt (100%) rename {tests => spec/tests}/smarty/test_nested_curly.txt (100%) rename {tests => spec/tests}/swift/strings.txt (100%) rename {tests => spec/tests}/systemd/example1.txt (100%) rename {tests => spec/tests}/systemverilog/test_basic.txt (100%) rename {tests => spec/tests}/systemverilog/test_classes.txt (100%) rename {tests => spec/tests}/systemverilog/test_numbers.txt (100%) rename {tests => spec/tests}/systemverilog/test_operators.txt (100%) rename {tests => spec/tests}/tcl/test_comma_and_at.txt (100%) rename {tests => spec/tests}/tcl/test_vars.txt (100%) rename {tests => spec/tests}/terraform/test_attributes.txt (100%) rename {tests => spec/tests}/terraform/test_backend.txt (100%) rename {tests => spec/tests}/terraform/test_comment.txt (100%) rename {tests => spec/tests}/terraform/test_functions.txt (100%) rename {tests => spec/tests}/terraform/test_heredoc.txt (100%) rename {tests => spec/tests}/terraform/test_module.txt (100%) rename {tests => spec/tests}/terraform/test_resource.txt (100%) rename {tests => spec/tests}/terraform/test_types.txt (100%) rename {tests => spec/tests}/terraform/test_variable_declaration.txt (100%) rename {tests => spec/tests}/terraform/test_variable_read.txt (100%) rename {tests => spec/tests}/tex/test_basic.txt (100%) rename {tests => spec/tests}/tex/test_math.txt (100%) rename {tests => spec/tests}/toml/bool-comment.txt (100%) rename {tests => spec/tests}/toml/comment-section-header.txt (100%) rename {tests => spec/tests}/toml/multiline-string-comment.txt (100%) rename {tests => spec/tests}/toml/number-keys.txt (100%) rename {tests => spec/tests}/toml/section-header-whitespace.txt (100%) rename {tests => spec/tests}/toml/string-escapes.txt (100%) rename {tests => spec/tests}/toml/strings-eager.txt (100%) rename {tests => spec/tests}/toml/table-header-string.txt (100%) rename {tests/shexc => spec/tests/turtle}/test_prefixed_name_starting_with_number.txt (100%) rename {tests => spec/tests}/typescript/test_function_definition.txt (100%) rename {tests/wgsl => spec/tests/webgpu_shading_language}/address-space.txt (100%) rename {tests/wgsl => spec/tests/webgpu_shading_language}/attribute.txt (100%) rename {tests/wgsl => spec/tests/webgpu_shading_language}/block-comment.txt (100%) rename {tests/wgsl => spec/tests/webgpu_shading_language}/bool-types.txt (100%) rename {tests/wgsl => spec/tests/webgpu_shading_language}/const-numbers.txt (100%) rename {tests/wgsl => spec/tests/webgpu_shading_language}/depth-texture.txt (100%) rename {tests/wgsl => spec/tests/webgpu_shading_language}/external-texture.txt (100%) rename {tests/wgsl => spec/tests/webgpu_shading_language}/line-comment.txt (100%) rename {tests/wgsl => spec/tests/webgpu_shading_language}/multisampled-texture.txt (100%) rename {tests/wgsl => spec/tests/webgpu_shading_language}/numeric-types.txt (100%) rename {tests/wgsl => spec/tests/webgpu_shading_language}/sampled-texture.txt (100%) rename {tests/wgsl => spec/tests/webgpu_shading_language}/storage-texture.txt (100%) rename {tests/wgsl => spec/tests/webgpu_shading_language}/texel-formats.txt (100%) rename {tests/wgsl => spec/tests/webgpu_shading_language}/tiny-render.txt (100%) rename {tests/wgsl => spec/tests/webgpu_shading_language}/type-generators.txt (100%) rename {tests => spec/tests}/whiley/test_whiley_operator.txt (100%) rename {tests => spec/tests}/xml/multiline-comment-catastrophic-backtracking.txt (100%) rename {tests => spec/tests}/yaml/test_yaml.txt (100%) rename {tests => spec/tests}/yaml/test_yaml_colon_in_key.txt (100%) rename {tests => spec/tests}/yaml/test_yaml_colon_in_key_double.txt (100%) rename {tests => spec/tests}/yaml/test_yaml_colon_in_key_start.txt (100%) rename {tests => spec/tests}/yang/test_float_value.txt (100%) rename {tests => spec/tests}/yang/test_integer_value.txt (100%) rename {tests => spec/tests}/yang/test_namespace_1.txt (100%) rename {tests => spec/tests}/yang/test_namespace_2.txt (100%) rename {tests => spec/tests}/yang/test_revision_date.txt (100%) rename {tests => spec/tests}/yang/test_string_value.txt (100%) rename {tests => spec/unsupported_lexers}/asn1/certificate.txt (100%) rename {tests => spec/unsupported_lexers}/asn1/nested-comment.txt (100%) rename {tests => spec/unsupported_lexers}/carbon/unterminated_comment.txt (100%) rename {tests => spec/unsupported_lexers}/cfm/test_basic_comment.txt (100%) rename {tests => spec/unsupported_lexers}/cfm/test_nested_comment.txt (100%) rename {tests => spec/unsupported_lexers}/csound/test_braced_strings.txt (100%) rename {tests => spec/unsupported_lexers}/csound/test_comments.txt (100%) rename {tests => spec/unsupported_lexers}/csound/test_escape_sequences.txt (100%) rename {tests => spec/unsupported_lexers}/csound/test_function_like_macro_definitions.txt (100%) rename {tests => spec/unsupported_lexers}/csound/test_function_like_macros.txt (100%) rename {tests => spec/unsupported_lexers}/csound/test_global_value_identifiers.txt (100%) rename {tests => spec/unsupported_lexers}/csound/test_goto_statements.txt (100%) rename {tests => spec/unsupported_lexers}/csound/test_include_directives.txt (100%) rename {tests => spec/unsupported_lexers}/csound/test_includestr_directives.txt (100%) rename {tests => spec/unsupported_lexers}/csound/test_instrument_blocks.txt (100%) rename {tests => spec/unsupported_lexers}/csound/test_keywords.txt (100%) rename {tests => spec/unsupported_lexers}/csound/test_labels.txt (100%) rename {tests => spec/unsupported_lexers}/csound/test_macro_preprocessor_directives.txt (100%) rename {tests => spec/unsupported_lexers}/csound/test_name.txt (100%) rename {tests => spec/unsupported_lexers}/csound/test_numbers.txt (100%) rename {tests => spec/unsupported_lexers}/csound/test_object_like_macro_definitions.txt (100%) rename {tests => spec/unsupported_lexers}/csound/test_operators.txt (100%) rename {tests => spec/unsupported_lexers}/csound/test_other_preprocessor_directives.txt (100%) rename {tests => spec/unsupported_lexers}/csound/test_printks_and_prints_escape_sequences.txt (100%) rename {tests => spec/unsupported_lexers}/csound/test_quoted_strings.txt (100%) rename {tests => spec/unsupported_lexers}/csound/test_user_defined_opcodes.txt (100%) rename {tests => spec/unsupported_lexers}/devicetree/test_fragment_out_of_root_node.txt (100%) rename {tests => spec/unsupported_lexers}/doscon/test_gt_only.txt (100%) rename {tests => spec/unsupported_lexers}/elpi/test_catastrophic_backtracking.txt (100%) rename {tests => spec/unsupported_lexers}/elpi/test_chr.txt (100%) rename {tests => spec/unsupported_lexers}/elpi/test_clause.txt (100%) rename {tests => spec/unsupported_lexers}/elpi/test_namespace.txt (100%) rename {tests => spec/unsupported_lexers}/elpi/test_pred.txt (100%) rename {tests => spec/unsupported_lexers}/elpi/test_quotations.txt (100%) rename {tests => spec/unsupported_lexers}/elpi/test_type.txt (100%) rename {tests => spec/unsupported_lexers}/ezhil/test_function.txt (100%) rename {tests => spec/unsupported_lexers}/ezhil/test_gcd_expr.txt (100%) rename {tests => spec/unsupported_lexers}/ezhil/test_if_statement.txt (100%) rename {tests => spec/unsupported_lexers}/ezhil/test_sum.txt (100%) rename {tests => spec/unsupported_lexers}/http/test_application_calendar_xml.txt (100%) rename {tests => spec/unsupported_lexers}/http/test_application_xml.txt (100%) rename {tests => spec/unsupported_lexers}/http/test_http_status_line.txt (100%) rename {tests => spec/unsupported_lexers}/http/test_http_status_line_without_reason_phrase.txt (100%) rename {tests => spec/unsupported_lexers}/http/test_http_status_line_without_reason_phrase_rfc_7230.txt (100%) rename {tests => spec/unsupported_lexers}/http/test_urlencoded.txt (100%) rename {tests => spec/unsupported_lexers}/janet/bool_lit-false.txt (100%) rename {tests => spec/unsupported_lexers}/janet/bool_lit-true.txt (100%) rename {tests => spec/unsupported_lexers}/janet/buf_lit-multiline.txt (100%) rename {tests => spec/unsupported_lexers}/janet/buf_lit-simple.txt (100%) rename {tests => spec/unsupported_lexers}/janet/buf_lit-with-escape.txt (100%) rename {tests => spec/unsupported_lexers}/janet/buf_lit-with-hex-escape.txt (100%) rename {tests => spec/unsupported_lexers}/janet/buf_lit-with-utf8-four-hex-digits-escape.txt (100%) rename {tests => spec/unsupported_lexers}/janet/buf_lit-with-utf8-six-hex-digits-escape.txt (100%) rename {tests => spec/unsupported_lexers}/janet/comment-multiple.txt (100%) rename {tests => spec/unsupported_lexers}/janet/comment-simple.txt (100%) rename {tests => spec/unsupported_lexers}/janet/kwd_lit-just-a-colon.txt (100%) rename {tests => spec/unsupported_lexers}/janet/kwd_lit-just-two-colons.txt (100%) rename {tests => spec/unsupported_lexers}/janet/kwd_lit-simple.txt (100%) rename {tests => spec/unsupported_lexers}/janet/kwd_lit-with-leading-number.txt (100%) rename {tests => spec/unsupported_lexers}/janet/long_buf_lit-more-than-one-backtick-per-delim.txt (100%) rename {tests => spec/unsupported_lexers}/janet/long_buf_lit-simple.txt (100%) rename {tests => spec/unsupported_lexers}/janet/long_str_lit-more-than-one-backtick-per-delim.txt (100%) rename {tests => spec/unsupported_lexers}/janet/long_str_lit-simple.txt (100%) rename {tests => spec/unsupported_lexers}/janet/nil_lit-the-only.txt (100%) rename {tests => spec/unsupported_lexers}/janet/num_lit-double-with-exponent.txt (100%) rename {tests => spec/unsupported_lexers}/janet/num_lit-double-with-negative-exponent.txt (100%) rename {tests => spec/unsupported_lexers}/janet/num_lit-double-with-underscores.txt (100%) rename {tests => spec/unsupported_lexers}/janet/num_lit-double.txt (100%) rename {tests => spec/unsupported_lexers}/janet/num_lit-hex-with-fractional-part-and-underscores.txt (100%) rename {tests => spec/unsupported_lexers}/janet/num_lit-hex-with-fractional-part.txt (100%) rename {tests => spec/unsupported_lexers}/janet/num_lit-hex-with-underscores.txt (100%) rename {tests => spec/unsupported_lexers}/janet/num_lit-hex.txt (100%) rename {tests => spec/unsupported_lexers}/janet/num_lit-integer-ending-with-underscores.txt (100%) rename {tests => spec/unsupported_lexers}/janet/num_lit-integer-with-sequential-underscores.txt (100%) rename {tests => spec/unsupported_lexers}/janet/num_lit-integer-with-underscores.txt (100%) rename {tests => spec/unsupported_lexers}/janet/num_lit-integer.txt (100%) rename {tests => spec/unsupported_lexers}/janet/num_lit-negative-double.txt (100%) rename {tests => spec/unsupported_lexers}/janet/num_lit-negative-hex.txt (100%) rename {tests => spec/unsupported_lexers}/janet/num_lit-negative-integer.txt (100%) rename {tests => spec/unsupported_lexers}/janet/num_lit-negative-radix.txt (100%) rename {tests => spec/unsupported_lexers}/janet/num_lit-radix-with-exponent.txt (100%) rename {tests => spec/unsupported_lexers}/janet/num_lit-radix.txt (100%) rename {tests => spec/unsupported_lexers}/janet/num_lit-shouting-double-with-exponent.txt (100%) rename {tests => spec/unsupported_lexers}/janet/par_arr_lit-empty.txt (100%) rename {tests => spec/unsupported_lexers}/janet/par_arr_lit-recursive.txt (100%) rename {tests => spec/unsupported_lexers}/janet/par_arr_lit-simple.txt (100%) rename {tests => spec/unsupported_lexers}/janet/par_tup_lit-empty.txt (100%) rename {tests => spec/unsupported_lexers}/janet/par_tup_lit-recurisve.txt (100%) rename {tests => spec/unsupported_lexers}/janet/par_tup_lit-simple.txt (100%) rename {tests => spec/unsupported_lexers}/janet/qq_lit-paren-tuple.txt (100%) rename {tests => spec/unsupported_lexers}/janet/qq_lit-simple.txt (100%) rename {tests => spec/unsupported_lexers}/janet/quote_lit-simple.txt (100%) rename {tests => spec/unsupported_lexers}/janet/quote_lit-tuple.txt (100%) rename {tests => spec/unsupported_lexers}/janet/short_fn_lit-call.txt (100%) rename {tests => spec/unsupported_lexers}/janet/short_fn_lit-keyword.txt (100%) rename {tests => spec/unsupported_lexers}/janet/short_fn_lit-number.txt (100%) rename {tests => spec/unsupported_lexers}/janet/short_fn_lit-square-bracket-array.txt (100%) rename {tests => spec/unsupported_lexers}/janet/short_fn_lit-square-bracket-tuple.txt (100%) rename {tests => spec/unsupported_lexers}/janet/short_fn_lit-string.txt (100%) rename {tests => spec/unsupported_lexers}/janet/short_fn_lit-struct.txt (100%) rename {tests => spec/unsupported_lexers}/janet/short_fn_lit-symbol.txt (100%) rename {tests => spec/unsupported_lexers}/janet/splice_lit-in-call.txt (100%) rename {tests => spec/unsupported_lexers}/janet/sqr_arr_lit-empty.txt (100%) rename {tests => spec/unsupported_lexers}/janet/sqr_arr_lit-recursive.txt (100%) rename {tests => spec/unsupported_lexers}/janet/sqr_arr_lit-simple.txt (100%) rename {tests => spec/unsupported_lexers}/janet/sqr_tup_lit-empty.txt (100%) rename {tests => spec/unsupported_lexers}/janet/sqr_tup_lit-recursive.txt (100%) rename {tests => spec/unsupported_lexers}/janet/sqr_tup_lit-simple.txt (100%) rename {tests => spec/unsupported_lexers}/janet/str_lit-multiline.txt (100%) rename {tests => spec/unsupported_lexers}/janet/str_lit-simple.txt (100%) rename {tests => spec/unsupported_lexers}/janet/str_lit-with-escapes.txt (100%) rename {tests => spec/unsupported_lexers}/janet/str_lit-with-hex-escape.txt (100%) rename {tests => spec/unsupported_lexers}/janet/str_lit-with-utf8-four-hex-digits-escape.txt (100%) rename {tests => spec/unsupported_lexers}/janet/str_lit-with-utf8-six-hex-digits-escape.txt (100%) rename {tests => spec/unsupported_lexers}/janet/struct_lit-empty.txt (100%) rename {tests => spec/unsupported_lexers}/janet/struct_lit-recursive.txt (100%) rename {tests => spec/unsupported_lexers}/janet/struct_lit-simple.txt (100%) rename {tests => spec/unsupported_lexers}/janet/sym_lit-alphabetic.txt (100%) rename {tests => spec/unsupported_lexers}/janet/sym_lit-ear-muffs.txt (100%) rename {tests => spec/unsupported_lexers}/janet/sym_lit-full-of-stars.txt (100%) rename {tests => spec/unsupported_lexers}/janet/sym_lit-kebab-case.txt (100%) rename {tests => spec/unsupported_lexers}/janet/sym_lit-legal-but-hard-to-read.txt (100%) rename {tests => spec/unsupported_lexers}/janet/sym_lit-name-with-module-name.txt (100%) rename {tests => spec/unsupported_lexers}/janet/sym_lit-snake-case.txt (100%) rename {tests => spec/unsupported_lexers}/janet/tbl_lit-empty.txt (100%) rename {tests => spec/unsupported_lexers}/janet/tbl_lit-recursive.txt (100%) rename {tests => spec/unsupported_lexers}/janet/tbl_lit-simple.txt (100%) rename {tests => spec/unsupported_lexers}/janet/unquote_lit-in-compile-call.txt (100%) rename {tests => spec/unsupported_lexers}/janet/unquote_lit-in-quasiquote.txt (100%) rename {tests => spec/unsupported_lexers}/jslt/test_sample.txt (100%) rename {tests => spec/unsupported_lexers}/jsonld/test_json_ld.txt (100%) rename {tests => spec/unsupported_lexers}/julia-repl/test_repl.txt (100%) rename {tests => spec/unsupported_lexers}/kusto/test_kusto.txt (100%) rename {tests => spec/unsupported_lexers}/less/test_single_line_comments.txt (100%) rename {tests => spec/unsupported_lexers}/markdown/test_code.txt (100%) rename {tests => spec/unsupported_lexers}/markdown/test_headings.txt (100%) rename {tests => spec/unsupported_lexers}/markdown/test_invalid_code.txt (100%) rename {tests => spec/unsupported_lexers}/markdown/test_setext_headings.txt (100%) rename {tests => spec/unsupported_lexers}/markdown/test_setext_subheadings.txt (100%) rename {tests => spec/unsupported_lexers}/markdown/test_subheadings.txt (100%) rename {tests => spec/unsupported_lexers}/matlabsession/test_wrong_continuation.txt (100%) rename {tests => spec/unsupported_lexers}/md/test_bold_fenced_by_asterisk.txt (100%) rename {tests => spec/unsupported_lexers}/md/test_bold_fenced_by_underscore.txt (100%) rename {tests => spec/unsupported_lexers}/md/test_bulleted_list_1.txt (100%) rename {tests => spec/unsupported_lexers}/md/test_bulleted_list_2.txt (100%) rename {tests => spec/unsupported_lexers}/md/test_bulleted_list_3.txt (100%) rename {tests => spec/unsupported_lexers}/md/test_bulleted_list_4.txt (100%) rename {tests => spec/unsupported_lexers}/md/test_code_block_fenced_by_backticks.txt (100%) rename {tests => spec/unsupported_lexers}/md/test_code_block_with_language.txt (100%) rename {tests => spec/unsupported_lexers}/md/test_escape_italics.txt (100%) rename {tests => spec/unsupported_lexers}/md/test_inline_code.txt (100%) rename {tests => spec/unsupported_lexers}/md/test_inline_code_after_block.txt (100%) rename {tests => spec/unsupported_lexers}/md/test_inline_code_in_list.txt (100%) rename {tests => spec/unsupported_lexers}/md/test_invalid_bold.txt (100%) rename {tests => spec/unsupported_lexers}/md/test_invalid_italics.txt (100%) rename {tests => spec/unsupported_lexers}/md/test_italics_and_bold.txt (100%) rename {tests => spec/unsupported_lexers}/md/test_italics_fenced_by_asterisk.txt (100%) rename {tests => spec/unsupported_lexers}/md/test_italics_fenced_by_underscore.txt (100%) rename {tests => spec/unsupported_lexers}/md/test_italics_no_multiline.txt (100%) rename {tests => spec/unsupported_lexers}/md/test_links.txt (100%) rename {tests => spec/unsupported_lexers}/md/test_mentions.txt (100%) rename {tests => spec/unsupported_lexers}/md/test_numbered_list.txt (100%) rename {tests => spec/unsupported_lexers}/md/test_quote.txt (100%) rename {tests => spec/unsupported_lexers}/md/test_reference_style_links.txt (100%) rename {tests => spec/unsupported_lexers}/md/test_strikethrough.txt (100%) rename {tests => spec/unsupported_lexers}/md/test_task_list.txt (100%) rename {tests => spec/unsupported_lexers}/md/test_topics.txt (100%) rename {tests => spec/unsupported_lexers}/mips/deprecated_substrings.txt (100%) rename {tests => spec/unsupported_lexers}/mips/keyword_substrings.txt (100%) rename {tests => spec/unsupported_lexers}/mips/variable_substrings.txt (100%) rename {tests => spec/unsupported_lexers}/mojo/test_floats.txt (100%) rename {tests => spec/unsupported_lexers}/mojo/test_kw.txt (100%) rename {tests => spec/unsupported_lexers}/mojo/test_needs_name.txt (100%) rename {tests => spec/unsupported_lexers}/mojo/test_soft_kwds.txt (100%) rename {tests => spec/unsupported_lexers}/omg-idl/annotation_named_params.txt (100%) rename {tests => spec/unsupported_lexers}/omg-idl/enumerators.txt (100%) rename {tests => spec/unsupported_lexers}/peg/test_basic.txt (100%) rename {tests => spec/unsupported_lexers}/peg/test_modified_strings.txt (100%) rename {tests => spec/unsupported_lexers}/peg/test_operators.txt (100%) rename {tests => spec/unsupported_lexers}/praat/test_broken_unquoted_string.txt (100%) rename {tests => spec/unsupported_lexers}/praat/test_function_call.txt (100%) rename {tests => spec/unsupported_lexers}/praat/test_inline_if.txt (100%) rename {tests => spec/unsupported_lexers}/praat/test_interpolated_indexed_numeric_with_precision.txt (100%) rename {tests => spec/unsupported_lexers}/praat/test_interpolated_local_numeric_with_precision.txt (100%) rename {tests => spec/unsupported_lexers}/praat/test_interpolated_numeric_hash.txt (100%) rename {tests => spec/unsupported_lexers}/praat/test_interpolated_numeric_indexed.txt (100%) rename {tests => spec/unsupported_lexers}/praat/test_interpolated_numeric_with_precision.txt (100%) rename {tests => spec/unsupported_lexers}/praat/test_interpolated_string_hash.txt (100%) rename {tests => spec/unsupported_lexers}/praat/test_interpolated_string_indexed.txt (100%) rename {tests => spec/unsupported_lexers}/praat/test_interpolation_boundary.txt (100%) rename {tests => spec/unsupported_lexers}/praat/test_numeric_assignment.txt (100%) rename {tests => spec/unsupported_lexers}/praat/test_string_assignment.txt (100%) rename {tests => spec/unsupported_lexers}/praat/test_string_escaped_quotes.txt (100%) rename {tests => spec/unsupported_lexers}/procfile/test_basic.txt (100%) rename {tests => spec/unsupported_lexers}/ptx/test_ptx_snippet.txt (100%) rename {tests => spec/unsupported_lexers}/pwsh-session/test_continuation.txt (100%) rename {tests => spec/unsupported_lexers}/pycon/broken_tb.txt (100%) rename {tests => spec/unsupported_lexers}/pycon/multiple_tb.txt (100%) rename {tests => spec/unsupported_lexers}/pycon/unterminated_tb.txt (100%) rename {tests => spec/unsupported_lexers}/robotframework/test_basic.txt (100%) rename {tests/turtle => spec/unsupported_lexers/shexc}/test_prefixed_name_starting_with_number.txt (100%) rename {tests => spec/unsupported_lexers}/snbt/json.txt (100%) rename {tests => spec/unsupported_lexers}/snbt/literals.txt (100%) rename {tests => spec/unsupported_lexers}/snbt/multiline.txt (100%) rename {tests => spec/unsupported_lexers}/snbt/nesting.txt (100%) rename {tests => spec/unsupported_lexers}/snbt/quoted_keys.txt (100%) rename {tests => spec/unsupported_lexers}/soong/test_comments.txt (100%) rename {tests => spec/unsupported_lexers}/soong/test_modules.txt (100%) rename {tests => spec/unsupported_lexers}/soong/test_variable_assignment_after_module.txt (100%) rename {tests => spec/unsupported_lexers}/soong/test_variable_assignments.txt (100%) rename {tests => spec/unsupported_lexers}/teal/test_comments.txt (100%) rename {tests => spec/unsupported_lexers}/teal/test_literals.txt (100%) rename {tests => spec/unsupported_lexers}/teal/test_strings.txt (100%) rename {tests => spec/unsupported_lexers}/thingsdb/basic.txt (100%) rename {tests => spec/unsupported_lexers}/unixconfig/etc_group.txt (100%) rename {tests => spec/unsupported_lexers}/unixconfig/etc_passwd.txt (100%) rename {tests => spec/unsupported_lexers}/unixconfig/etc_shadow.txt (100%) rename {tests => spec/unsupported_lexers}/urlencoded/example.txt (100%) rename {tests => spec/unsupported_lexers}/usd/basic.txt (100%) rename {tests => spec/unsupported_lexers}/usd/test_attribute.txt (100%) rename {tests => spec/unsupported_lexers}/usd/test_composition_arcs.txt (100%) rename {tests => spec/unsupported_lexers}/usd/test_metadata.txt (100%) rename {tests => spec/unsupported_lexers}/usd/test_numbers.txt (100%) rename {tests => spec/unsupported_lexers}/usd/test_outer_match_at_sign.txt (100%) rename {tests => spec/unsupported_lexers}/usd/test_outer_match_double.txt (100%) rename {tests => spec/unsupported_lexers}/usd/test_outer_match_single.txt (100%) rename {tests => spec/unsupported_lexers}/usd/test_string_multiple_line.txt (100%) rename {tests => spec/unsupported_lexers}/usd/test_string_priority.txt (100%) rename {tests => spec/unsupported_lexers}/usd/test_string_single_line.txt (100%) rename {tests => spec/unsupported_lexers}/vbscript/test_floats.txt (100%) rename {tests => spec/unsupported_lexers}/vbscript/test_floats_multiple.txt (100%) rename {tests => spec/unsupported_lexers}/vbscript/test_integers.txt (100%) rename {tests => spec/unsupported_lexers}/vbscript/test_invalid_character.txt (100%) rename {tests => spec/unsupported_lexers}/vbscript/test_names.txt (100%) rename {tests => spec/unsupported_lexers}/vbscript/test_reject_almost_float.txt (100%) rename {tests => spec/unsupported_lexers}/vbscript/test_unterminated_string.txt (100%) rename {tests => spec/unsupported_lexers}/vyper/test.txt (100%) rename {tests => spec/unsupported_lexers}/wat/test_align_and_offset_accept_hexadecimal_numbers.txt (100%) rename {tests => spec/unsupported_lexers}/wat/test_comment_with_open_paren.txt (100%) rename {tests => spec/unsupported_lexers}/wat/test_comment_with_semicolon.txt (100%) rename {tests => spec/unsupported_lexers}/wat/test_i32_const_is_builtin.txt (100%) rename {tests => spec/unsupported_lexers}/wat/test_multiline_comment.txt (100%) rename {tests => spec/unsupported_lexers}/wat/test_nested_comment.txt (100%) rename {tests => spec/unsupported_lexers}/wat/test_string_byte_escape.txt (100%) rename {tests => spec/unsupported_lexers}/wat/test_string_with_escape.txt (100%) rename {tests => spec/unsupported_lexers}/wat/test_variable_name_pattern.txt (100%) rename {tests => spec/unsupported_lexers}/wikitext/bold-italic.txt (100%) rename {tests => spec/unsupported_lexers}/wikitext/entity.txt (100%) rename {tests => spec/unsupported_lexers}/wikitext/extlink.txt (100%) rename {tests => spec/unsupported_lexers}/wikitext/heading.txt (100%) rename {tests => spec/unsupported_lexers}/wikitext/hr.txt (100%) rename {tests => spec/unsupported_lexers}/wikitext/html.txt (100%) rename {tests => spec/unsupported_lexers}/wikitext/language-converter.txt (100%) rename {tests => spec/unsupported_lexers}/wikitext/list.txt (100%) rename {tests => spec/unsupported_lexers}/wikitext/magic-link.txt (100%) rename {tests => spec/unsupported_lexers}/wikitext/magic-word.txt (100%) rename {tests => spec/unsupported_lexers}/wikitext/medialink.txt (100%) rename {tests => spec/unsupported_lexers}/wikitext/only-highlight-first-redirect.txt (100%) rename {tests => spec/unsupported_lexers}/wikitext/parser-function.txt (100%) rename {tests => spec/unsupported_lexers}/wikitext/parser-tag.txt (100%) rename {tests => spec/unsupported_lexers}/wikitext/signurature.txt (100%) rename {tests => spec/unsupported_lexers}/wikitext/table.txt (100%) rename {tests => spec/unsupported_lexers}/wikitext/template.txt (100%) rename {tests => spec/unsupported_lexers}/wikitext/wikilink.txt (100%) rename {tests => spec/unsupported_lexers}/wren/lonely-paren.txt (100%) diff --git a/spec/tartrazine_spec.cr b/spec/tartrazine_spec.cr index 347bf74..42309a7 100644 --- a/spec/tartrazine_spec.cr +++ b/spec/tartrazine_spec.cr @@ -1,9 +1,112 @@ require "./spec_helper" -describe Tartrazine do - # TODO: Write tests +# These are the testcases from Pygments +testcases = Dir.glob("#{__DIR__}/tests/**/*txt").sort - it "works" do - false.should eq(true) +# These lexers don't load because of parsing issues +failing_lexers = { + "webgpu_shading_language", +} + +# These testcases fail because of differences in the way chroma and tartrazine +# represent unicode, but they are actually correct +unicode_problems = { + "#{__DIR__}/tests/java/test_string_literals.txt", + "#{__DIR__}/tests/json/test_strings.txt", + "#{__DIR__}/tests/systemd/example1.txt", +} + +# These testcases fail because of differences in the way chroma and tartrazine tokenize +# but tartrazine is correct +bad_in_chroma = { + "#{__DIR__}/tests/bash_session/test_comment_after_prompt.txt", + "#{__DIR__}/tests/java/test_default.txt", + "#{__DIR__}/tests/java/test_multiline_string.txt", + "#{__DIR__}/tests/java/test_numeric_literals.txt", + "#{__DIR__}/tests/php/test_string_escaping_run.txt", + "#{__DIR__}/tests/python_2/test_cls_builtin.txt", +} + +known_bad = { + "#{__DIR__}/tests/bash_session/fake_ps2_prompt.txt", + "#{__DIR__}/tests/bash_session/prompt_in_output.txt", + "#{__DIR__}/tests/bash_session/test_newline_in_echo_no_ps2.txt", + "#{__DIR__}/tests/bash_session/test_newline_in_ls_ps2.txt", + "#{__DIR__}/tests/bash_session/ps2_prompt.txt", + "#{__DIR__}/tests/bash_session/test_newline_in_ls_no_ps2.txt", + "#{__DIR__}/tests/bash_session/test_virtualenv.txt", + "#{__DIR__}/tests/bash_session/test_newline_in_echo_ps2.txt", + "#{__DIR__}/tests/c/test_string_resembling_decl_end.txt", + "#{__DIR__}/tests/html/css_backtracking.txt", + "#{__DIR__}/tests/mcfunction/data.txt", + "#{__DIR__}/tests/mcfunction/selectors.txt", + "#{__DIR__}/tests/php/anonymous_class.txt", + "#{__DIR__}/tests/html/javascript_unclosed.txt", + +} + +# Tests that fail because of a limitation in PCRE2 +not_my_fault = { + "#{__DIR__}/tests/fortran/test_string_cataback.txt", +} + +describe Tartrazine do + describe "Lexer" do + testcases.each do |testcase| + if known_bad.includes?(testcase) + pending "parses #{testcase}".split("/")[-2...].join("/") do + end + else + it "parses #{testcase}".split("/")[-2...].join("/") do + text = File.read(testcase).split("---input---\n").last.split("---tokens---").first + lexer_name = File.basename(File.dirname(testcase)).downcase + unless failing_lexers.includes?(lexer_name) || + unicode_problems.includes?(testcase) || + bad_in_chroma.includes?(testcase) || + not_my_fault.includes?(testcase) + tokenize(lexer_name, text).should eq(chroma_tokenize(lexer_name, text)) + end + end + end + end end end + +# Helper that creates lexer and tokenizes +def tokenize(lexer_name, text) + lexer = Tartrazine::Lexer.from_xml(File.read("lexers/#{lexer_name}.xml")) + collapse_tokens(lexer.tokenize(text)) +end + +# Helper that tokenizes using chroma to validate the lexer +def chroma_tokenize(lexer_name, text) + output = IO::Memory.new + input = IO::Memory.new(text) + Process.run( + "chroma", + ["-f", "json", "-l", lexer_name], + input: input, output: output + ) + collapse_tokens(Array(Tartrazine::Token).from_json(output.to_s)) +end + +# Collapse consecutive tokens of the same type for easier comparison +def collapse_tokens(tokens : Array(Tartrazine::Token)) + result = [] of Tartrazine::Token + + tokens.each do |token| + if result.empty? + result << token + next + end + last = result.last + if last[:type] == token[:type] + new_token = {type: last[:type], value: last[:value] + token[:value]} + result.pop + result << new_token + else + result << token + end + end + result +end diff --git a/tests/apacheconf/test_directive_no_args.txt b/spec/tests/apacheconf/test_directive_no_args.txt similarity index 100% rename from tests/apacheconf/test_directive_no_args.txt rename to spec/tests/apacheconf/test_directive_no_args.txt diff --git a/tests/apacheconf/test_fix_lock_absolute_path.txt b/spec/tests/apacheconf/test_fix_lock_absolute_path.txt similarity index 100% rename from tests/apacheconf/test_fix_lock_absolute_path.txt rename to spec/tests/apacheconf/test_fix_lock_absolute_path.txt diff --git a/tests/apacheconf/test_include_globs.txt b/spec/tests/apacheconf/test_include_globs.txt similarity index 100% rename from tests/apacheconf/test_include_globs.txt rename to spec/tests/apacheconf/test_include_globs.txt diff --git a/tests/apacheconf/test_malformed_scoped_directive_closing_tag.txt b/spec/tests/apacheconf/test_malformed_scoped_directive_closing_tag.txt similarity index 100% rename from tests/apacheconf/test_malformed_scoped_directive_closing_tag.txt rename to spec/tests/apacheconf/test_malformed_scoped_directive_closing_tag.txt diff --git a/tests/apacheconf/test_multi_include_globs.txt b/spec/tests/apacheconf/test_multi_include_globs.txt similarity index 100% rename from tests/apacheconf/test_multi_include_globs.txt rename to spec/tests/apacheconf/test_multi_include_globs.txt diff --git a/tests/apacheconf/test_multi_include_globs_root.txt b/spec/tests/apacheconf/test_multi_include_globs_root.txt similarity index 100% rename from tests/apacheconf/test_multi_include_globs_root.txt rename to spec/tests/apacheconf/test_multi_include_globs_root.txt diff --git a/tests/apacheconf/test_multiline_argument.txt b/spec/tests/apacheconf/test_multiline_argument.txt similarity index 100% rename from tests/apacheconf/test_multiline_argument.txt rename to spec/tests/apacheconf/test_multiline_argument.txt diff --git a/tests/apacheconf/test_multiline_comment.txt b/spec/tests/apacheconf/test_multiline_comment.txt similarity index 100% rename from tests/apacheconf/test_multiline_comment.txt rename to spec/tests/apacheconf/test_multiline_comment.txt diff --git a/tests/apacheconf/test_normal_scoped_directive.txt b/spec/tests/apacheconf/test_normal_scoped_directive.txt similarity index 100% rename from tests/apacheconf/test_normal_scoped_directive.txt rename to spec/tests/apacheconf/test_normal_scoped_directive.txt diff --git a/tests/apl/test_leading_underscore.txt b/spec/tests/apl/test_leading_underscore.txt similarity index 100% rename from tests/apl/test_leading_underscore.txt rename to spec/tests/apl/test_leading_underscore.txt diff --git a/tests/awk/test_ternary.txt b/spec/tests/awk/test_ternary.txt similarity index 100% rename from tests/awk/test_ternary.txt rename to spec/tests/awk/test_ternary.txt diff --git a/tests/shell/test_array_nums.txt b/spec/tests/bash/test_array_nums.txt similarity index 100% rename from tests/shell/test_array_nums.txt rename to spec/tests/bash/test_array_nums.txt diff --git a/tests/shell/test_curly_no_escape_and_quotes.txt b/spec/tests/bash/test_curly_no_escape_and_quotes.txt similarity index 100% rename from tests/shell/test_curly_no_escape_and_quotes.txt rename to spec/tests/bash/test_curly_no_escape_and_quotes.txt diff --git a/tests/shell/test_curly_with_escape.txt b/spec/tests/bash/test_curly_with_escape.txt similarity index 100% rename from tests/shell/test_curly_with_escape.txt rename to spec/tests/bash/test_curly_with_escape.txt diff --git a/tests/shell/test_end_of_line_nums.txt b/spec/tests/bash/test_end_of_line_nums.txt similarity index 100% rename from tests/shell/test_end_of_line_nums.txt rename to spec/tests/bash/test_end_of_line_nums.txt diff --git a/tests/shell/test_math.txt b/spec/tests/bash/test_math.txt similarity index 100% rename from tests/shell/test_math.txt rename to spec/tests/bash/test_math.txt diff --git a/tests/shell/test_parsed_single.txt b/spec/tests/bash/test_parsed_single.txt similarity index 100% rename from tests/shell/test_parsed_single.txt rename to spec/tests/bash/test_parsed_single.txt diff --git a/tests/shell/test_short_variable_names.txt b/spec/tests/bash/test_short_variable_names.txt similarity index 100% rename from tests/shell/test_short_variable_names.txt rename to spec/tests/bash/test_short_variable_names.txt diff --git a/tests/console/fake_ps2_prompt.txt b/spec/tests/bash_session/fake_ps2_prompt.txt similarity index 100% rename from tests/console/fake_ps2_prompt.txt rename to spec/tests/bash_session/fake_ps2_prompt.txt diff --git a/tests/console/prompt_in_output.txt b/spec/tests/bash_session/prompt_in_output.txt similarity index 100% rename from tests/console/prompt_in_output.txt rename to spec/tests/bash_session/prompt_in_output.txt diff --git a/tests/console/ps2_prompt.txt b/spec/tests/bash_session/ps2_prompt.txt similarity index 100% rename from tests/console/ps2_prompt.txt rename to spec/tests/bash_session/ps2_prompt.txt diff --git a/tests/console/test_comment_after_prompt.txt b/spec/tests/bash_session/test_comment_after_prompt.txt similarity index 100% rename from tests/console/test_comment_after_prompt.txt rename to spec/tests/bash_session/test_comment_after_prompt.txt diff --git a/tests/console/test_newline_in_echo_no_ps2.txt b/spec/tests/bash_session/test_newline_in_echo_no_ps2.txt similarity index 100% rename from tests/console/test_newline_in_echo_no_ps2.txt rename to spec/tests/bash_session/test_newline_in_echo_no_ps2.txt diff --git a/tests/console/test_newline_in_echo_ps2.txt b/spec/tests/bash_session/test_newline_in_echo_ps2.txt similarity index 100% rename from tests/console/test_newline_in_echo_ps2.txt rename to spec/tests/bash_session/test_newline_in_echo_ps2.txt diff --git a/tests/console/test_newline_in_ls_no_ps2.txt b/spec/tests/bash_session/test_newline_in_ls_no_ps2.txt similarity index 100% rename from tests/console/test_newline_in_ls_no_ps2.txt rename to spec/tests/bash_session/test_newline_in_ls_no_ps2.txt diff --git a/tests/console/test_newline_in_ls_ps2.txt b/spec/tests/bash_session/test_newline_in_ls_ps2.txt similarity index 100% rename from tests/console/test_newline_in_ls_ps2.txt rename to spec/tests/bash_session/test_newline_in_ls_ps2.txt diff --git a/tests/console/test_virtualenv.txt b/spec/tests/bash_session/test_virtualenv.txt similarity index 100% rename from tests/console/test_virtualenv.txt rename to spec/tests/bash_session/test_virtualenv.txt diff --git a/tests/bibtex/test_basic_bst.txt b/spec/tests/bibtex/test_basic_bst.txt similarity index 100% rename from tests/bibtex/test_basic_bst.txt rename to spec/tests/bibtex/test_basic_bst.txt diff --git a/tests/bibtex/test_comment.txt b/spec/tests/bibtex/test_comment.txt similarity index 100% rename from tests/bibtex/test_comment.txt rename to spec/tests/bibtex/test_comment.txt diff --git a/tests/bibtex/test_entry.txt b/spec/tests/bibtex/test_entry.txt similarity index 100% rename from tests/bibtex/test_entry.txt rename to spec/tests/bibtex/test_entry.txt diff --git a/tests/bibtex/test_mismatched_brace.txt b/spec/tests/bibtex/test_mismatched_brace.txt similarity index 100% rename from tests/bibtex/test_mismatched_brace.txt rename to spec/tests/bibtex/test_mismatched_brace.txt diff --git a/tests/bibtex/test_missing_body.txt b/spec/tests/bibtex/test_missing_body.txt similarity index 100% rename from tests/bibtex/test_missing_body.txt rename to spec/tests/bibtex/test_missing_body.txt diff --git a/tests/bibtex/test_preamble.txt b/spec/tests/bibtex/test_preamble.txt similarity index 100% rename from tests/bibtex/test_preamble.txt rename to spec/tests/bibtex/test_preamble.txt diff --git a/tests/bibtex/test_string.txt b/spec/tests/bibtex/test_string.txt similarity index 100% rename from tests/bibtex/test_string.txt rename to spec/tests/bibtex/test_string.txt diff --git a/tests/bqn/test_arguments.txt b/spec/tests/bqn/test_arguments.txt similarity index 100% rename from tests/bqn/test_arguments.txt rename to spec/tests/bqn/test_arguments.txt diff --git a/tests/bqn/test_comment.txt b/spec/tests/bqn/test_comment.txt similarity index 100% rename from tests/bqn/test_comment.txt rename to spec/tests/bqn/test_comment.txt diff --git a/tests/bqn/test_define.txt b/spec/tests/bqn/test_define.txt similarity index 100% rename from tests/bqn/test_define.txt rename to spec/tests/bqn/test_define.txt diff --git a/tests/bqn/test_syntax_roles.txt b/spec/tests/bqn/test_syntax_roles.txt similarity index 100% rename from tests/bqn/test_syntax_roles.txt rename to spec/tests/bqn/test_syntax_roles.txt diff --git a/tests/cpp/alternative_tokens.txt b/spec/tests/c++/alternative_tokens.txt similarity index 100% rename from tests/cpp/alternative_tokens.txt rename to spec/tests/c++/alternative_tokens.txt diff --git a/tests/cpp/extension_keywords.txt b/spec/tests/c++/extension_keywords.txt similarity index 100% rename from tests/cpp/extension_keywords.txt rename to spec/tests/c++/extension_keywords.txt diff --git a/tests/cpp/test_good_comment.txt b/spec/tests/c++/test_good_comment.txt similarity index 100% rename from tests/cpp/test_good_comment.txt rename to spec/tests/c++/test_good_comment.txt diff --git a/tests/cpp/test_open_comment.txt b/spec/tests/c++/test_open_comment.txt similarity index 100% rename from tests/cpp/test_open_comment.txt rename to spec/tests/c++/test_open_comment.txt diff --git a/tests/cpp/test_unicode_identifiers.txt b/spec/tests/c++/test_unicode_identifiers.txt similarity index 100% rename from tests/cpp/test_unicode_identifiers.txt rename to spec/tests/c++/test_unicode_identifiers.txt diff --git a/tests/c/builtin_types.txt b/spec/tests/c/builtin_types.txt similarity index 100% rename from tests/c/builtin_types.txt rename to spec/tests/c/builtin_types.txt diff --git a/tests/c/test_comment_end.txt b/spec/tests/c/test_comment_end.txt similarity index 100% rename from tests/c/test_comment_end.txt rename to spec/tests/c/test_comment_end.txt diff --git a/tests/c/test_function_comments.txt b/spec/tests/c/test_function_comments.txt similarity index 100% rename from tests/c/test_function_comments.txt rename to spec/tests/c/test_function_comments.txt diff --git a/tests/c/test_label.txt b/spec/tests/c/test_label.txt similarity index 100% rename from tests/c/test_label.txt rename to spec/tests/c/test_label.txt diff --git a/tests/c/test_label_followed_by_statement.txt b/spec/tests/c/test_label_followed_by_statement.txt similarity index 100% rename from tests/c/test_label_followed_by_statement.txt rename to spec/tests/c/test_label_followed_by_statement.txt diff --git a/tests/c/test_label_space_before_colon.txt b/spec/tests/c/test_label_space_before_colon.txt similarity index 100% rename from tests/c/test_label_space_before_colon.txt rename to spec/tests/c/test_label_space_before_colon.txt diff --git a/tests/c/test_numbers.txt b/spec/tests/c/test_numbers.txt similarity index 100% rename from tests/c/test_numbers.txt rename to spec/tests/c/test_numbers.txt diff --git a/tests/c/test_preproc_file.txt b/spec/tests/c/test_preproc_file.txt similarity index 100% rename from tests/c/test_preproc_file.txt rename to spec/tests/c/test_preproc_file.txt diff --git a/tests/c/test_preproc_file2.txt b/spec/tests/c/test_preproc_file2.txt similarity index 100% rename from tests/c/test_preproc_file2.txt rename to spec/tests/c/test_preproc_file2.txt diff --git a/tests/c/test_preproc_file3.txt b/spec/tests/c/test_preproc_file3.txt similarity index 100% rename from tests/c/test_preproc_file3.txt rename to spec/tests/c/test_preproc_file3.txt diff --git a/tests/c/test_preproc_file4.txt b/spec/tests/c/test_preproc_file4.txt similarity index 100% rename from tests/c/test_preproc_file4.txt rename to spec/tests/c/test_preproc_file4.txt diff --git a/tests/c/test_preproc_file5.txt b/spec/tests/c/test_preproc_file5.txt similarity index 100% rename from tests/c/test_preproc_file5.txt rename to spec/tests/c/test_preproc_file5.txt diff --git a/tests/c/test_string_resembling_decl_end.txt b/spec/tests/c/test_string_resembling_decl_end.txt similarity index 100% rename from tests/c/test_string_resembling_decl_end.txt rename to spec/tests/c/test_string_resembling_decl_end.txt diff --git a/tests/c/test_switch.txt b/spec/tests/c/test_switch.txt similarity index 100% rename from tests/c/test_switch.txt rename to spec/tests/c/test_switch.txt diff --git a/tests/c/test_switch_space_before_colon.txt b/spec/tests/c/test_switch_space_before_colon.txt similarity index 100% rename from tests/c/test_switch_space_before_colon.txt rename to spec/tests/c/test_switch_space_before_colon.txt diff --git a/tests/coffeescript/test_beware_infinite_loop.txt b/spec/tests/coffeescript/test_beware_infinite_loop.txt similarity index 100% rename from tests/coffeescript/test_beware_infinite_loop.txt rename to spec/tests/coffeescript/test_beware_infinite_loop.txt diff --git a/tests/coffeescript/test_mixed_slashes.txt b/spec/tests/coffeescript/test_mixed_slashes.txt similarity index 100% rename from tests/coffeescript/test_mixed_slashes.txt rename to spec/tests/coffeescript/test_mixed_slashes.txt diff --git a/tests/coq/test_unicode.txt b/spec/tests/coq/test_unicode.txt similarity index 100% rename from tests/coq/test_unicode.txt rename to spec/tests/coq/test_unicode.txt diff --git a/tests/crystal/test_annotation.txt b/spec/tests/crystal/test_annotation.txt similarity index 100% rename from tests/crystal/test_annotation.txt rename to spec/tests/crystal/test_annotation.txt diff --git a/tests/crystal/test_array_access.txt b/spec/tests/crystal/test_array_access.txt similarity index 100% rename from tests/crystal/test_array_access.txt rename to spec/tests/crystal/test_array_access.txt diff --git a/tests/crystal/test_chars.txt b/spec/tests/crystal/test_chars.txt similarity index 100% rename from tests/crystal/test_chars.txt rename to spec/tests/crystal/test_chars.txt diff --git a/tests/crystal/test_constant_and_module.txt b/spec/tests/crystal/test_constant_and_module.txt similarity index 100% rename from tests/crystal/test_constant_and_module.txt rename to spec/tests/crystal/test_constant_and_module.txt diff --git a/tests/crystal/test_empty_percent_strings.txt b/spec/tests/crystal/test_empty_percent_strings.txt similarity index 100% rename from tests/crystal/test_empty_percent_strings.txt rename to spec/tests/crystal/test_empty_percent_strings.txt diff --git a/tests/crystal/test_escaped_bracestring.txt b/spec/tests/crystal/test_escaped_bracestring.txt similarity index 100% rename from tests/crystal/test_escaped_bracestring.txt rename to spec/tests/crystal/test_escaped_bracestring.txt diff --git a/tests/crystal/test_escaped_interpolation.txt b/spec/tests/crystal/test_escaped_interpolation.txt similarity index 100% rename from tests/crystal/test_escaped_interpolation.txt rename to spec/tests/crystal/test_escaped_interpolation.txt diff --git a/tests/crystal/test_interpolation_nested_curly.txt b/spec/tests/crystal/test_interpolation_nested_curly.txt similarity index 100% rename from tests/crystal/test_interpolation_nested_curly.txt rename to spec/tests/crystal/test_interpolation_nested_curly.txt diff --git a/tests/crystal/test_lib.txt b/spec/tests/crystal/test_lib.txt similarity index 100% rename from tests/crystal/test_lib.txt rename to spec/tests/crystal/test_lib.txt diff --git a/tests/crystal/test_macro.txt b/spec/tests/crystal/test_macro.txt similarity index 100% rename from tests/crystal/test_macro.txt rename to spec/tests/crystal/test_macro.txt diff --git a/tests/crystal/test_numbers.txt b/spec/tests/crystal/test_numbers.txt similarity index 100% rename from tests/crystal/test_numbers.txt rename to spec/tests/crystal/test_numbers.txt diff --git a/tests/crystal/test_operator_methods.txt b/spec/tests/crystal/test_operator_methods.txt similarity index 100% rename from tests/crystal/test_operator_methods.txt rename to spec/tests/crystal/test_operator_methods.txt diff --git a/tests/crystal/test_percent_strings.txt b/spec/tests/crystal/test_percent_strings.txt similarity index 100% rename from tests/crystal/test_percent_strings.txt rename to spec/tests/crystal/test_percent_strings.txt diff --git a/tests/crystal/test_percent_strings_special.txt b/spec/tests/crystal/test_percent_strings_special.txt similarity index 100% rename from tests/crystal/test_percent_strings_special.txt rename to spec/tests/crystal/test_percent_strings_special.txt diff --git a/tests/crystal/test_pseudo_builtins.txt b/spec/tests/crystal/test_pseudo_builtins.txt similarity index 100% rename from tests/crystal/test_pseudo_builtins.txt rename to spec/tests/crystal/test_pseudo_builtins.txt diff --git a/tests/crystal/test_pseudo_keywords.txt b/spec/tests/crystal/test_pseudo_keywords.txt similarity index 100% rename from tests/crystal/test_pseudo_keywords.txt rename to spec/tests/crystal/test_pseudo_keywords.txt diff --git a/tests/crystal/test_range_syntax1.txt b/spec/tests/crystal/test_range_syntax1.txt similarity index 100% rename from tests/crystal/test_range_syntax1.txt rename to spec/tests/crystal/test_range_syntax1.txt diff --git a/tests/crystal/test_range_syntax2.txt b/spec/tests/crystal/test_range_syntax2.txt similarity index 100% rename from tests/crystal/test_range_syntax2.txt rename to spec/tests/crystal/test_range_syntax2.txt diff --git a/tests/crystal/test_string_escapes.txt b/spec/tests/crystal/test_string_escapes.txt similarity index 100% rename from tests/crystal/test_string_escapes.txt rename to spec/tests/crystal/test_string_escapes.txt diff --git a/tests/crystal/test_symbols.txt b/spec/tests/crystal/test_symbols.txt similarity index 100% rename from tests/crystal/test_symbols.txt rename to spec/tests/crystal/test_symbols.txt diff --git a/tests/css/percent_in_func.txt b/spec/tests/css/percent_in_func.txt similarity index 100% rename from tests/css/percent_in_func.txt rename to spec/tests/css/percent_in_func.txt diff --git a/tests/desktop/example.txt b/spec/tests/desktop_entry/example.txt similarity index 100% rename from tests/desktop/example.txt rename to spec/tests/desktop_entry/example.txt diff --git a/tests/diff/normal.txt b/spec/tests/diff/normal.txt similarity index 100% rename from tests/diff/normal.txt rename to spec/tests/diff/normal.txt diff --git a/tests/diff/unified.txt b/spec/tests/diff/unified.txt similarity index 100% rename from tests/diff/unified.txt rename to spec/tests/diff/unified.txt diff --git a/tests/zone/a-record.txt b/spec/tests/dns/a-record.txt similarity index 100% rename from tests/zone/a-record.txt rename to spec/tests/dns/a-record.txt diff --git a/tests/zone/include.txt b/spec/tests/dns/include.txt similarity index 100% rename from tests/zone/include.txt rename to spec/tests/dns/include.txt diff --git a/tests/zone/soa.txt b/spec/tests/dns/soa.txt similarity index 100% rename from tests/zone/soa.txt rename to spec/tests/dns/soa.txt diff --git a/tests/fortran/test_string_cataback.txt b/spec/tests/fortran/test_string_cataback.txt similarity index 100% rename from tests/fortran/test_string_cataback.txt rename to spec/tests/fortran/test_string_cataback.txt diff --git a/tests/gas/test_comments.txt b/spec/tests/gas/test_comments.txt similarity index 100% rename from tests/gas/test_comments.txt rename to spec/tests/gas/test_comments.txt diff --git a/tests/asm/test_cpuid.txt b/spec/tests/gas/test_cpuid.txt similarity index 100% rename from tests/asm/test_cpuid.txt rename to spec/tests/gas/test_cpuid.txt diff --git a/tests/gdscript/test_comment.txt b/spec/tests/gdscript/test_comment.txt similarity index 100% rename from tests/gdscript/test_comment.txt rename to spec/tests/gdscript/test_comment.txt diff --git a/tests/gdscript/test_export_array.txt b/spec/tests/gdscript/test_export_array.txt similarity index 100% rename from tests/gdscript/test_export_array.txt rename to spec/tests/gdscript/test_export_array.txt diff --git a/tests/gdscript/test_function_with_types.txt b/spec/tests/gdscript/test_function_with_types.txt similarity index 100% rename from tests/gdscript/test_function_with_types.txt rename to spec/tests/gdscript/test_function_with_types.txt diff --git a/tests/gdscript/test_inner_class.txt b/spec/tests/gdscript/test_inner_class.txt similarity index 100% rename from tests/gdscript/test_inner_class.txt rename to spec/tests/gdscript/test_inner_class.txt diff --git a/tests/gdscript/test_multiline_string.txt b/spec/tests/gdscript/test_multiline_string.txt similarity index 100% rename from tests/gdscript/test_multiline_string.txt rename to spec/tests/gdscript/test_multiline_string.txt diff --git a/tests/gdscript/test_signal.txt b/spec/tests/gdscript/test_signal.txt similarity index 100% rename from tests/gdscript/test_signal.txt rename to spec/tests/gdscript/test_signal.txt diff --git a/tests/gdscript/test_simple_function.txt b/spec/tests/gdscript/test_simple_function.txt similarity index 100% rename from tests/gdscript/test_simple_function.txt rename to spec/tests/gdscript/test_simple_function.txt diff --git a/tests/gdscript/test_variable_declaration_and_assigment.txt b/spec/tests/gdscript/test_variable_declaration_and_assigment.txt similarity index 100% rename from tests/gdscript/test_variable_declaration_and_assigment.txt rename to spec/tests/gdscript/test_variable_declaration_and_assigment.txt diff --git a/tests/haskell/test_promoted_names.txt b/spec/tests/haskell/test_promoted_names.txt similarity index 100% rename from tests/haskell/test_promoted_names.txt rename to spec/tests/haskell/test_promoted_names.txt diff --git a/tests/html/css.txt b/spec/tests/html/css.txt similarity index 100% rename from tests/html/css.txt rename to spec/tests/html/css.txt diff --git a/tests/html/css_backtracking.txt b/spec/tests/html/css_backtracking.txt similarity index 100% rename from tests/html/css_backtracking.txt rename to spec/tests/html/css_backtracking.txt diff --git a/tests/html/javascript.txt b/spec/tests/html/javascript.txt similarity index 100% rename from tests/html/javascript.txt rename to spec/tests/html/javascript.txt diff --git a/tests/html/javascript_backtracking.txt b/spec/tests/html/javascript_backtracking.txt similarity index 100% rename from tests/html/javascript_backtracking.txt rename to spec/tests/html/javascript_backtracking.txt diff --git a/tests/html/javascript_unclosed.txt b/spec/tests/html/javascript_unclosed.txt similarity index 100% rename from tests/html/javascript_unclosed.txt rename to spec/tests/html/javascript_unclosed.txt diff --git a/tests/html/multiline-comment-catastrophic-backtracking.txt b/spec/tests/html/multiline-comment-catastrophic-backtracking.txt similarity index 100% rename from tests/html/multiline-comment-catastrophic-backtracking.txt rename to spec/tests/html/multiline-comment-catastrophic-backtracking.txt diff --git a/tests/idris/test_compiler_directive.txt b/spec/tests/idris/test_compiler_directive.txt similarity index 100% rename from tests/idris/test_compiler_directive.txt rename to spec/tests/idris/test_compiler_directive.txt diff --git a/tests/idris/test_reserved_word.txt b/spec/tests/idris/test_reserved_word.txt similarity index 100% rename from tests/idris/test_reserved_word.txt rename to spec/tests/idris/test_reserved_word.txt diff --git a/tests/ini/test_indented_entries_1.txt b/spec/tests/ini/test_indented_entries_1.txt similarity index 100% rename from tests/ini/test_indented_entries_1.txt rename to spec/tests/ini/test_indented_entries_1.txt diff --git a/tests/ini/test_indented_entries_2.txt b/spec/tests/ini/test_indented_entries_2.txt similarity index 100% rename from tests/ini/test_indented_entries_2.txt rename to spec/tests/ini/test_indented_entries_2.txt diff --git a/tests/ini/test_indented_entries_3.txt b/spec/tests/ini/test_indented_entries_3.txt similarity index 100% rename from tests/ini/test_indented_entries_3.txt rename to spec/tests/ini/test_indented_entries_3.txt diff --git a/tests/j/test_deal_operator.txt b/spec/tests/j/test_deal_operator.txt similarity index 100% rename from tests/j/test_deal_operator.txt rename to spec/tests/j/test_deal_operator.txt diff --git a/tests/j/test_deal_operator_fixed_seed.txt b/spec/tests/j/test_deal_operator_fixed_seed.txt similarity index 100% rename from tests/j/test_deal_operator_fixed_seed.txt rename to spec/tests/j/test_deal_operator_fixed_seed.txt diff --git a/tests/java/test_backtracking.txt b/spec/tests/java/test_backtracking.txt similarity index 100% rename from tests/java/test_backtracking.txt rename to spec/tests/java/test_backtracking.txt diff --git a/tests/java/test_default.txt b/spec/tests/java/test_default.txt similarity index 100% rename from tests/java/test_default.txt rename to spec/tests/java/test_default.txt diff --git a/tests/java/test_enhanced_for.txt b/spec/tests/java/test_enhanced_for.txt similarity index 100% rename from tests/java/test_enhanced_for.txt rename to spec/tests/java/test_enhanced_for.txt diff --git a/tests/java/test_multiline_string.txt b/spec/tests/java/test_multiline_string.txt similarity index 100% rename from tests/java/test_multiline_string.txt rename to spec/tests/java/test_multiline_string.txt diff --git a/tests/java/test_multiline_string_only.txt b/spec/tests/java/test_multiline_string_only.txt similarity index 100% rename from tests/java/test_multiline_string_only.txt rename to spec/tests/java/test_multiline_string_only.txt diff --git a/tests/java/test_numeric_literals.txt b/spec/tests/java/test_numeric_literals.txt similarity index 100% rename from tests/java/test_numeric_literals.txt rename to spec/tests/java/test_numeric_literals.txt diff --git a/tests/java/test_record.txt b/spec/tests/java/test_record.txt similarity index 100% rename from tests/java/test_record.txt rename to spec/tests/java/test_record.txt diff --git a/tests/java/test_string_literals.txt b/spec/tests/java/test_string_literals.txt similarity index 100% rename from tests/java/test_string_literals.txt rename to spec/tests/java/test_string_literals.txt diff --git a/tests/js/super.txt b/spec/tests/javascript/super.txt similarity index 100% rename from tests/js/super.txt rename to spec/tests/javascript/super.txt diff --git a/tests/javascript/test_binary_literal_negative_matches.txt b/spec/tests/javascript/test_binary_literal_negative_matches.txt similarity index 100% rename from tests/javascript/test_binary_literal_negative_matches.txt rename to spec/tests/javascript/test_binary_literal_negative_matches.txt diff --git a/tests/javascript/test_binary_literal_positive_matches.txt b/spec/tests/javascript/test_binary_literal_positive_matches.txt similarity index 100% rename from tests/javascript/test_binary_literal_positive_matches.txt rename to spec/tests/javascript/test_binary_literal_positive_matches.txt diff --git a/tests/javascript/test_float_literals_negative_matches.txt b/spec/tests/javascript/test_float_literals_negative_matches.txt similarity index 100% rename from tests/javascript/test_float_literals_negative_matches.txt rename to spec/tests/javascript/test_float_literals_negative_matches.txt diff --git a/tests/javascript/test_float_literals_positive_matches.txt b/spec/tests/javascript/test_float_literals_positive_matches.txt similarity index 100% rename from tests/javascript/test_float_literals_positive_matches.txt rename to spec/tests/javascript/test_float_literals_positive_matches.txt diff --git a/tests/javascript/test_hexadecimal_literal_negative_matches.txt b/spec/tests/javascript/test_hexadecimal_literal_negative_matches.txt similarity index 100% rename from tests/javascript/test_hexadecimal_literal_negative_matches.txt rename to spec/tests/javascript/test_hexadecimal_literal_negative_matches.txt diff --git a/tests/javascript/test_hexadecimal_literal_positive_matches.txt b/spec/tests/javascript/test_hexadecimal_literal_positive_matches.txt similarity index 100% rename from tests/javascript/test_hexadecimal_literal_positive_matches.txt rename to spec/tests/javascript/test_hexadecimal_literal_positive_matches.txt diff --git a/tests/javascript/test_integer_literal_negative_matches.txt b/spec/tests/javascript/test_integer_literal_negative_matches.txt similarity index 100% rename from tests/javascript/test_integer_literal_negative_matches.txt rename to spec/tests/javascript/test_integer_literal_negative_matches.txt diff --git a/tests/javascript/test_integer_literal_positive_matches.txt b/spec/tests/javascript/test_integer_literal_positive_matches.txt similarity index 100% rename from tests/javascript/test_integer_literal_positive_matches.txt rename to spec/tests/javascript/test_integer_literal_positive_matches.txt diff --git a/tests/javascript/test_octal_literal_negative_matches.txt b/spec/tests/javascript/test_octal_literal_negative_matches.txt similarity index 100% rename from tests/javascript/test_octal_literal_negative_matches.txt rename to spec/tests/javascript/test_octal_literal_negative_matches.txt diff --git a/tests/javascript/test_octal_literal_positive_matches.txt b/spec/tests/javascript/test_octal_literal_positive_matches.txt similarity index 100% rename from tests/javascript/test_octal_literal_positive_matches.txt rename to spec/tests/javascript/test_octal_literal_positive_matches.txt diff --git a/tests/json/test_arrays.txt b/spec/tests/json/test_arrays.txt similarity index 100% rename from tests/json/test_arrays.txt rename to spec/tests/json/test_arrays.txt diff --git a/tests/json/test_backtracking.txt b/spec/tests/json/test_backtracking.txt similarity index 100% rename from tests/json/test_backtracking.txt rename to spec/tests/json/test_backtracking.txt diff --git a/tests/json/test_basic.txt b/spec/tests/json/test_basic.txt similarity index 100% rename from tests/json/test_basic.txt rename to spec/tests/json/test_basic.txt diff --git a/tests/json/test_basic_bare.txt b/spec/tests/json/test_basic_bare.txt similarity index 100% rename from tests/json/test_basic_bare.txt rename to spec/tests/json/test_basic_bare.txt diff --git a/tests/json/test_comments.txt b/spec/tests/json/test_comments.txt similarity index 100% rename from tests/json/test_comments.txt rename to spec/tests/json/test_comments.txt diff --git a/tests/json/test_constants.txt b/spec/tests/json/test_constants.txt similarity index 100% rename from tests/json/test_constants.txt rename to spec/tests/json/test_constants.txt diff --git a/tests/json/test_escape_sequences.txt b/spec/tests/json/test_escape_sequences.txt similarity index 100% rename from tests/json/test_escape_sequences.txt rename to spec/tests/json/test_escape_sequences.txt diff --git a/tests/json/test_floats.txt b/spec/tests/json/test_floats.txt similarity index 100% rename from tests/json/test_floats.txt rename to spec/tests/json/test_floats.txt diff --git a/tests/json/test_integers.txt b/spec/tests/json/test_integers.txt similarity index 100% rename from tests/json/test_integers.txt rename to spec/tests/json/test_integers.txt diff --git a/tests/json/test_objects.txt b/spec/tests/json/test_objects.txt similarity index 100% rename from tests/json/test_objects.txt rename to spec/tests/json/test_objects.txt diff --git a/tests/json/test_round_trip.txt b/spec/tests/json/test_round_trip.txt similarity index 100% rename from tests/json/test_round_trip.txt rename to spec/tests/json/test_round_trip.txt diff --git a/tests/json/test_strings.txt b/spec/tests/json/test_strings.txt similarity index 100% rename from tests/json/test_strings.txt rename to spec/tests/json/test_strings.txt diff --git a/tests/json/test_whitespace.txt b/spec/tests/json/test_whitespace.txt similarity index 100% rename from tests/json/test_whitespace.txt rename to spec/tests/json/test_whitespace.txt diff --git a/tests/julia/test_keywords.txt b/spec/tests/julia/test_keywords.txt similarity index 100% rename from tests/julia/test_keywords.txt rename to spec/tests/julia/test_keywords.txt diff --git a/tests/julia/test_macros.txt b/spec/tests/julia/test_macros.txt similarity index 100% rename from tests/julia/test_macros.txt rename to spec/tests/julia/test_macros.txt diff --git a/tests/julia/test_names.txt b/spec/tests/julia/test_names.txt similarity index 100% rename from tests/julia/test_names.txt rename to spec/tests/julia/test_names.txt diff --git a/tests/julia/test_numbers.txt b/spec/tests/julia/test_numbers.txt similarity index 100% rename from tests/julia/test_numbers.txt rename to spec/tests/julia/test_numbers.txt diff --git a/tests/julia/test_operators.txt b/spec/tests/julia/test_operators.txt similarity index 100% rename from tests/julia/test_operators.txt rename to spec/tests/julia/test_operators.txt diff --git a/tests/julia/test_strings.txt b/spec/tests/julia/test_strings.txt similarity index 100% rename from tests/julia/test_strings.txt rename to spec/tests/julia/test_strings.txt diff --git a/tests/julia/test_symbols.txt b/spec/tests/julia/test_symbols.txt similarity index 100% rename from tests/julia/test_symbols.txt rename to spec/tests/julia/test_symbols.txt diff --git a/tests/julia/test_types.txt b/spec/tests/julia/test_types.txt similarity index 100% rename from tests/julia/test_types.txt rename to spec/tests/julia/test_types.txt diff --git a/tests/julia/test_unicode.txt b/spec/tests/julia/test_unicode.txt similarity index 100% rename from tests/julia/test_unicode.txt rename to spec/tests/julia/test_unicode.txt diff --git a/tests/kotlin/test_can_cope_generics_in_destructuring.txt b/spec/tests/kotlin/test_can_cope_generics_in_destructuring.txt similarity index 100% rename from tests/kotlin/test_can_cope_generics_in_destructuring.txt rename to spec/tests/kotlin/test_can_cope_generics_in_destructuring.txt diff --git a/tests/kotlin/test_can_cope_with_backtick_names_in_functions.txt b/spec/tests/kotlin/test_can_cope_with_backtick_names_in_functions.txt similarity index 100% rename from tests/kotlin/test_can_cope_with_backtick_names_in_functions.txt rename to spec/tests/kotlin/test_can_cope_with_backtick_names_in_functions.txt diff --git a/tests/kotlin/test_can_cope_with_commas_and_dashes_in_backtick_Names.txt b/spec/tests/kotlin/test_can_cope_with_commas_and_dashes_in_backtick_Names.txt similarity index 100% rename from tests/kotlin/test_can_cope_with_commas_and_dashes_in_backtick_Names.txt rename to spec/tests/kotlin/test_can_cope_with_commas_and_dashes_in_backtick_Names.txt diff --git a/tests/kotlin/test_can_cope_with_destructuring.txt b/spec/tests/kotlin/test_can_cope_with_destructuring.txt similarity index 100% rename from tests/kotlin/test_can_cope_with_destructuring.txt rename to spec/tests/kotlin/test_can_cope_with_destructuring.txt diff --git a/tests/kotlin/test_can_cope_with_generics.txt b/spec/tests/kotlin/test_can_cope_with_generics.txt similarity index 100% rename from tests/kotlin/test_can_cope_with_generics.txt rename to spec/tests/kotlin/test_can_cope_with_generics.txt diff --git a/tests/kotlin/test_modifier_keyword.txt b/spec/tests/kotlin/test_modifier_keyword.txt similarity index 100% rename from tests/kotlin/test_modifier_keyword.txt rename to spec/tests/kotlin/test_modifier_keyword.txt diff --git a/tests/kotlin/test_should_cope_with_multiline_comments.txt b/spec/tests/kotlin/test_should_cope_with_multiline_comments.txt similarity index 100% rename from tests/kotlin/test_should_cope_with_multiline_comments.txt rename to spec/tests/kotlin/test_should_cope_with_multiline_comments.txt diff --git a/tests/kotlin/test_string_interpolation.txt b/spec/tests/kotlin/test_string_interpolation.txt similarity index 100% rename from tests/kotlin/test_string_interpolation.txt rename to spec/tests/kotlin/test_string_interpolation.txt diff --git a/tests/llvm/test_constants.txt b/spec/tests/llvm/test_constants.txt similarity index 100% rename from tests/llvm/test_constants.txt rename to spec/tests/llvm/test_constants.txt diff --git a/tests/llvm/test_vectors.txt b/spec/tests/llvm/test_vectors.txt similarity index 100% rename from tests/llvm/test_vectors.txt rename to spec/tests/llvm/test_vectors.txt diff --git a/tests/mason/test_handles_tags_correctly.txt b/spec/tests/mason/test_handles_tags_correctly.txt similarity index 100% rename from tests/mason/test_handles_tags_correctly.txt rename to spec/tests/mason/test_handles_tags_correctly.txt diff --git a/tests/matlab/test_classes_with_properties.txt b/spec/tests/matlab/test_classes_with_properties.txt similarity index 100% rename from tests/matlab/test_classes_with_properties.txt rename to spec/tests/matlab/test_classes_with_properties.txt diff --git a/tests/matlab/test_command_mode.txt b/spec/tests/matlab/test_command_mode.txt similarity index 100% rename from tests/matlab/test_command_mode.txt rename to spec/tests/matlab/test_command_mode.txt diff --git a/tests/matlab/test_comment_after_continuation.txt b/spec/tests/matlab/test_comment_after_continuation.txt similarity index 100% rename from tests/matlab/test_comment_after_continuation.txt rename to spec/tests/matlab/test_comment_after_continuation.txt diff --git a/tests/matlab/test_dot_operator.txt b/spec/tests/matlab/test_dot_operator.txt similarity index 100% rename from tests/matlab/test_dot_operator.txt rename to spec/tests/matlab/test_dot_operator.txt diff --git a/tests/matlab/test_keywords_ended_by_newline.txt b/spec/tests/matlab/test_keywords_ended_by_newline.txt similarity index 100% rename from tests/matlab/test_keywords_ended_by_newline.txt rename to spec/tests/matlab/test_keywords_ended_by_newline.txt diff --git a/tests/matlab/test_line_continuation.txt b/spec/tests/matlab/test_line_continuation.txt similarity index 100% rename from tests/matlab/test_line_continuation.txt rename to spec/tests/matlab/test_line_continuation.txt diff --git a/tests/matlab/test_multiple_spaces_variable_assignment.txt b/spec/tests/matlab/test_multiple_spaces_variable_assignment.txt similarity index 100% rename from tests/matlab/test_multiple_spaces_variable_assignment.txt rename to spec/tests/matlab/test_multiple_spaces_variable_assignment.txt diff --git a/tests/matlab/test_one_space_assignment.txt b/spec/tests/matlab/test_one_space_assignment.txt similarity index 100% rename from tests/matlab/test_one_space_assignment.txt rename to spec/tests/matlab/test_one_space_assignment.txt diff --git a/tests/matlab/test_operator_multiple_space.txt b/spec/tests/matlab/test_operator_multiple_space.txt similarity index 100% rename from tests/matlab/test_operator_multiple_space.txt rename to spec/tests/matlab/test_operator_multiple_space.txt diff --git a/tests/matlab/test_single_line.txt b/spec/tests/matlab/test_single_line.txt similarity index 100% rename from tests/matlab/test_single_line.txt rename to spec/tests/matlab/test_single_line.txt diff --git a/tests/mcfunction/commenting.txt b/spec/tests/mcfunction/commenting.txt similarity index 100% rename from tests/mcfunction/commenting.txt rename to spec/tests/mcfunction/commenting.txt diff --git a/tests/mcfunction/coordinates.txt b/spec/tests/mcfunction/coordinates.txt similarity index 100% rename from tests/mcfunction/coordinates.txt rename to spec/tests/mcfunction/coordinates.txt diff --git a/tests/mcfunction/data.txt b/spec/tests/mcfunction/data.txt similarity index 100% rename from tests/mcfunction/data.txt rename to spec/tests/mcfunction/data.txt diff --git a/tests/mcfunction/difficult_1.txt b/spec/tests/mcfunction/difficult_1.txt similarity index 100% rename from tests/mcfunction/difficult_1.txt rename to spec/tests/mcfunction/difficult_1.txt diff --git a/tests/mcfunction/multiline.txt b/spec/tests/mcfunction/multiline.txt similarity index 100% rename from tests/mcfunction/multiline.txt rename to spec/tests/mcfunction/multiline.txt diff --git a/tests/mcfunction/selectors.txt b/spec/tests/mcfunction/selectors.txt similarity index 100% rename from tests/mcfunction/selectors.txt rename to spec/tests/mcfunction/selectors.txt diff --git a/tests/mcfunction/simple.txt b/spec/tests/mcfunction/simple.txt similarity index 100% rename from tests/mcfunction/simple.txt rename to spec/tests/mcfunction/simple.txt diff --git a/tests/nasm/checkid.txt b/spec/tests/nasm/checkid.txt similarity index 100% rename from tests/nasm/checkid.txt rename to spec/tests/nasm/checkid.txt diff --git a/tests/nix/basic_values.txt b/spec/tests/nix/basic_values.txt similarity index 100% rename from tests/nix/basic_values.txt rename to spec/tests/nix/basic_values.txt diff --git a/tests/nix/built_in.txt b/spec/tests/nix/built_in.txt similarity index 100% rename from tests/nix/built_in.txt rename to spec/tests/nix/built_in.txt diff --git a/tests/nix/comments.txt b/spec/tests/nix/comments.txt similarity index 100% rename from tests/nix/comments.txt rename to spec/tests/nix/comments.txt diff --git a/tests/nix/compound_values.txt b/spec/tests/nix/compound_values.txt similarity index 100% rename from tests/nix/compound_values.txt rename to spec/tests/nix/compound_values.txt diff --git a/tests/nix/computed_property_names.txt b/spec/tests/nix/computed_property_names.txt similarity index 100% rename from tests/nix/computed_property_names.txt rename to spec/tests/nix/computed_property_names.txt diff --git a/tests/nix/control_structures.txt b/spec/tests/nix/control_structures.txt similarity index 100% rename from tests/nix/control_structures.txt rename to spec/tests/nix/control_structures.txt diff --git a/tests/nix/floats.txt b/spec/tests/nix/floats.txt similarity index 100% rename from tests/nix/floats.txt rename to spec/tests/nix/floats.txt diff --git a/tests/nix/functions.txt b/spec/tests/nix/functions.txt similarity index 100% rename from tests/nix/functions.txt rename to spec/tests/nix/functions.txt diff --git a/tests/nix/operators.txt b/spec/tests/nix/operators.txt similarity index 100% rename from tests/nix/operators.txt rename to spec/tests/nix/operators.txt diff --git a/tests/nix/string_escape.txt b/spec/tests/nix/string_escape.txt similarity index 100% rename from tests/nix/string_escape.txt rename to spec/tests/nix/string_escape.txt diff --git a/tests/objectivec/test_literal_number_bool.txt b/spec/tests/objective-c/test_literal_number_bool.txt similarity index 100% rename from tests/objectivec/test_literal_number_bool.txt rename to spec/tests/objective-c/test_literal_number_bool.txt diff --git a/tests/objectivec/test_literal_number_bool_expression.txt b/spec/tests/objective-c/test_literal_number_bool_expression.txt similarity index 100% rename from tests/objectivec/test_literal_number_bool_expression.txt rename to spec/tests/objective-c/test_literal_number_bool_expression.txt diff --git a/tests/objectivec/test_literal_number_expression.txt b/spec/tests/objective-c/test_literal_number_expression.txt similarity index 100% rename from tests/objectivec/test_literal_number_expression.txt rename to spec/tests/objective-c/test_literal_number_expression.txt diff --git a/tests/objectivec/test_literal_number_int.txt b/spec/tests/objective-c/test_literal_number_int.txt similarity index 100% rename from tests/objectivec/test_literal_number_int.txt rename to spec/tests/objective-c/test_literal_number_int.txt diff --git a/tests/objectivec/test_literal_number_nested_expression.txt b/spec/tests/objective-c/test_literal_number_nested_expression.txt similarity index 100% rename from tests/objectivec/test_literal_number_nested_expression.txt rename to spec/tests/objective-c/test_literal_number_nested_expression.txt diff --git a/tests/objectivec/test_module_import.txt b/spec/tests/objective-c/test_module_import.txt similarity index 100% rename from tests/objectivec/test_module_import.txt rename to spec/tests/objective-c/test_module_import.txt diff --git a/tests/octave/test_multilinecomment.txt b/spec/tests/octave/test_multilinecomment.txt similarity index 100% rename from tests/octave/test_multilinecomment.txt rename to spec/tests/octave/test_multilinecomment.txt diff --git a/tests/openscad/test_basic.txt b/spec/tests/openscad/test_basic.txt similarity index 100% rename from tests/openscad/test_basic.txt rename to spec/tests/openscad/test_basic.txt diff --git a/tests/php/anonymous_class.txt b/spec/tests/php/anonymous_class.txt similarity index 100% rename from tests/php/anonymous_class.txt rename to spec/tests/php/anonymous_class.txt diff --git a/tests/php/attributes.txt b/spec/tests/php/attributes.txt similarity index 100% rename from tests/php/attributes.txt rename to spec/tests/php/attributes.txt diff --git a/tests/php/test_backslashes_in_strings.txt b/spec/tests/php/test_backslashes_in_strings.txt similarity index 100% rename from tests/php/test_backslashes_in_strings.txt rename to spec/tests/php/test_backslashes_in_strings.txt diff --git a/tests/php/test_string_escaping_run.txt b/spec/tests/php/test_string_escaping_run.txt similarity index 100% rename from tests/php/test_string_escaping_run.txt rename to spec/tests/php/test_string_escaping_run.txt diff --git a/tests/php/variable_variable.txt b/spec/tests/php/variable_variable.txt similarity index 100% rename from tests/php/variable_variable.txt rename to spec/tests/php/variable_variable.txt diff --git a/tests/powershell/test_colon_punctuation.txt b/spec/tests/powershell/test_colon_punctuation.txt similarity index 100% rename from tests/powershell/test_colon_punctuation.txt rename to spec/tests/powershell/test_colon_punctuation.txt diff --git a/tests/powershell/test_remoting_session.txt b/spec/tests/powershell/test_remoting_session.txt similarity index 100% rename from tests/powershell/test_remoting_session.txt rename to spec/tests/powershell/test_remoting_session.txt diff --git a/tests/powershell/test_session.txt b/spec/tests/powershell/test_session.txt similarity index 100% rename from tests/powershell/test_session.txt rename to spec/tests/powershell/test_session.txt diff --git a/tests/promela/do.txt b/spec/tests/promela/do.txt similarity index 100% rename from tests/promela/do.txt rename to spec/tests/promela/do.txt diff --git a/tests/promela/dotted-assign.txt b/spec/tests/promela/dotted-assign.txt similarity index 100% rename from tests/promela/dotted-assign.txt rename to spec/tests/promela/dotted-assign.txt diff --git a/tests/promela/if.txt b/spec/tests/promela/if.txt similarity index 100% rename from tests/promela/if.txt rename to spec/tests/promela/if.txt diff --git a/tests/promela/intruder.txt b/spec/tests/promela/intruder.txt similarity index 100% rename from tests/promela/intruder.txt rename to spec/tests/promela/intruder.txt diff --git a/tests/promela/ltl.txt b/spec/tests/promela/ltl.txt similarity index 100% rename from tests/promela/ltl.txt rename to spec/tests/promela/ltl.txt diff --git a/tests/promela/msg.txt b/spec/tests/promela/msg.txt similarity index 100% rename from tests/promela/msg.txt rename to spec/tests/promela/msg.txt diff --git a/tests/promela/skip.txt b/spec/tests/promela/skip.txt similarity index 100% rename from tests/promela/skip.txt rename to spec/tests/promela/skip.txt diff --git a/tests/promela/welfare.txt b/spec/tests/promela/welfare.txt similarity index 100% rename from tests/promela/welfare.txt rename to spec/tests/promela/welfare.txt diff --git a/tests/promql/test_complex_exp_single_quotes.txt b/spec/tests/promql/test_complex_exp_single_quotes.txt similarity index 100% rename from tests/promql/test_complex_exp_single_quotes.txt rename to spec/tests/promql/test_complex_exp_single_quotes.txt diff --git a/tests/promql/test_expression_and_comment.txt b/spec/tests/promql/test_expression_and_comment.txt similarity index 100% rename from tests/promql/test_expression_and_comment.txt rename to spec/tests/promql/test_expression_and_comment.txt diff --git a/tests/promql/test_function_delta.txt b/spec/tests/promql/test_function_delta.txt similarity index 100% rename from tests/promql/test_function_delta.txt rename to spec/tests/promql/test_function_delta.txt diff --git a/tests/promql/test_function_multi_line.txt b/spec/tests/promql/test_function_multi_line.txt similarity index 100% rename from tests/promql/test_function_multi_line.txt rename to spec/tests/promql/test_function_multi_line.txt diff --git a/tests/promql/test_function_multi_line_with_offset.txt b/spec/tests/promql/test_function_multi_line_with_offset.txt similarity index 100% rename from tests/promql/test_function_multi_line_with_offset.txt rename to spec/tests/promql/test_function_multi_line_with_offset.txt diff --git a/tests/promql/test_function_sum_with_args.txt b/spec/tests/promql/test_function_sum_with_args.txt similarity index 100% rename from tests/promql/test_function_sum_with_args.txt rename to spec/tests/promql/test_function_sum_with_args.txt diff --git a/tests/promql/test_matching_operator_no_regex_match.txt b/spec/tests/promql/test_matching_operator_no_regex_match.txt similarity index 100% rename from tests/promql/test_matching_operator_no_regex_match.txt rename to spec/tests/promql/test_matching_operator_no_regex_match.txt diff --git a/tests/promql/test_metric.txt b/spec/tests/promql/test_metric.txt similarity index 100% rename from tests/promql/test_metric.txt rename to spec/tests/promql/test_metric.txt diff --git a/tests/promql/test_metric_multiple_labels.txt b/spec/tests/promql/test_metric_multiple_labels.txt similarity index 100% rename from tests/promql/test_metric_multiple_labels.txt rename to spec/tests/promql/test_metric_multiple_labels.txt diff --git a/tests/promql/test_metric_multiple_labels_with_spaces.txt b/spec/tests/promql/test_metric_multiple_labels_with_spaces.txt similarity index 100% rename from tests/promql/test_metric_multiple_labels_with_spaces.txt rename to spec/tests/promql/test_metric_multiple_labels_with_spaces.txt diff --git a/tests/promql/test_metric_one_label.txt b/spec/tests/promql/test_metric_one_label.txt similarity index 100% rename from tests/promql/test_metric_one_label.txt rename to spec/tests/promql/test_metric_one_label.txt diff --git a/tests/properties/test_comments.txt b/spec/tests/properties/test_comments.txt similarity index 100% rename from tests/properties/test_comments.txt rename to spec/tests/properties/test_comments.txt diff --git a/tests/properties/test_escaped_space_in_key.txt b/spec/tests/properties/test_escaped_space_in_key.txt similarity index 100% rename from tests/properties/test_escaped_space_in_key.txt rename to spec/tests/properties/test_escaped_space_in_key.txt diff --git a/tests/properties/test_escaped_space_in_value.txt b/spec/tests/properties/test_escaped_space_in_value.txt similarity index 100% rename from tests/properties/test_escaped_space_in_value.txt rename to spec/tests/properties/test_escaped_space_in_value.txt diff --git a/tests/properties/test_just_key.txt b/spec/tests/properties/test_just_key.txt similarity index 100% rename from tests/properties/test_just_key.txt rename to spec/tests/properties/test_just_key.txt diff --git a/tests/properties/test_just_key_with_space.txt b/spec/tests/properties/test_just_key_with_space.txt similarity index 100% rename from tests/properties/test_just_key_with_space.txt rename to spec/tests/properties/test_just_key_with_space.txt diff --git a/tests/properties/test_leading_whitespace_comments.txt b/spec/tests/properties/test_leading_whitespace_comments.txt similarity index 100% rename from tests/properties/test_leading_whitespace_comments.txt rename to spec/tests/properties/test_leading_whitespace_comments.txt diff --git a/tests/properties/test_space_delimited_kv_pair.txt b/spec/tests/properties/test_space_delimited_kv_pair.txt similarity index 100% rename from tests/properties/test_space_delimited_kv_pair.txt rename to spec/tests/properties/test_space_delimited_kv_pair.txt diff --git a/tests/prql/filename.txt b/spec/tests/prql/filename.txt similarity index 100% rename from tests/prql/filename.txt rename to spec/tests/prql/filename.txt diff --git a/tests/prql/fstring.txt b/spec/tests/prql/fstring.txt similarity index 100% rename from tests/prql/fstring.txt rename to spec/tests/prql/fstring.txt diff --git a/tests/prql/rstring.txt b/spec/tests/prql/rstring.txt similarity index 100% rename from tests/prql/rstring.txt rename to spec/tests/prql/rstring.txt diff --git a/tests/prql/sstring.txt b/spec/tests/prql/sstring.txt similarity index 100% rename from tests/prql/sstring.txt rename to spec/tests/prql/sstring.txt diff --git a/tests/python/test_bytes_escape_codes.txt b/spec/tests/python/test_bytes_escape_codes.txt similarity index 100% rename from tests/python/test_bytes_escape_codes.txt rename to spec/tests/python/test_bytes_escape_codes.txt diff --git a/tests/python/test_floats.txt b/spec/tests/python/test_floats.txt similarity index 100% rename from tests/python/test_floats.txt rename to spec/tests/python/test_floats.txt diff --git a/tests/python/test_fstring_01a.txt b/spec/tests/python/test_fstring_01a.txt similarity index 100% rename from tests/python/test_fstring_01a.txt rename to spec/tests/python/test_fstring_01a.txt diff --git a/tests/python/test_fstring_01b.txt b/spec/tests/python/test_fstring_01b.txt similarity index 100% rename from tests/python/test_fstring_01b.txt rename to spec/tests/python/test_fstring_01b.txt diff --git a/tests/python/test_fstring_02a.txt b/spec/tests/python/test_fstring_02a.txt similarity index 100% rename from tests/python/test_fstring_02a.txt rename to spec/tests/python/test_fstring_02a.txt diff --git a/tests/python/test_fstring_02b.txt b/spec/tests/python/test_fstring_02b.txt similarity index 100% rename from tests/python/test_fstring_02b.txt rename to spec/tests/python/test_fstring_02b.txt diff --git a/tests/python/test_fstring_03a.txt b/spec/tests/python/test_fstring_03a.txt similarity index 100% rename from tests/python/test_fstring_03a.txt rename to spec/tests/python/test_fstring_03a.txt diff --git a/tests/python/test_fstring_03b.txt b/spec/tests/python/test_fstring_03b.txt similarity index 100% rename from tests/python/test_fstring_03b.txt rename to spec/tests/python/test_fstring_03b.txt diff --git a/tests/python/test_fstring_04a.txt b/spec/tests/python/test_fstring_04a.txt similarity index 100% rename from tests/python/test_fstring_04a.txt rename to spec/tests/python/test_fstring_04a.txt diff --git a/tests/python/test_fstring_04b.txt b/spec/tests/python/test_fstring_04b.txt similarity index 100% rename from tests/python/test_fstring_04b.txt rename to spec/tests/python/test_fstring_04b.txt diff --git a/tests/python/test_fstring_05a.txt b/spec/tests/python/test_fstring_05a.txt similarity index 100% rename from tests/python/test_fstring_05a.txt rename to spec/tests/python/test_fstring_05a.txt diff --git a/tests/python/test_fstring_05b.txt b/spec/tests/python/test_fstring_05b.txt similarity index 100% rename from tests/python/test_fstring_05b.txt rename to spec/tests/python/test_fstring_05b.txt diff --git a/tests/python/test_fstring_06a.txt b/spec/tests/python/test_fstring_06a.txt similarity index 100% rename from tests/python/test_fstring_06a.txt rename to spec/tests/python/test_fstring_06a.txt diff --git a/tests/python/test_fstring_06b.txt b/spec/tests/python/test_fstring_06b.txt similarity index 100% rename from tests/python/test_fstring_06b.txt rename to spec/tests/python/test_fstring_06b.txt diff --git a/tests/python/test_fstring_07a.txt b/spec/tests/python/test_fstring_07a.txt similarity index 100% rename from tests/python/test_fstring_07a.txt rename to spec/tests/python/test_fstring_07a.txt diff --git a/tests/python/test_fstring_07b.txt b/spec/tests/python/test_fstring_07b.txt similarity index 100% rename from tests/python/test_fstring_07b.txt rename to spec/tests/python/test_fstring_07b.txt diff --git a/tests/python/test_fstring_08a.txt b/spec/tests/python/test_fstring_08a.txt similarity index 100% rename from tests/python/test_fstring_08a.txt rename to spec/tests/python/test_fstring_08a.txt diff --git a/tests/python/test_fstring_08b.txt b/spec/tests/python/test_fstring_08b.txt similarity index 100% rename from tests/python/test_fstring_08b.txt rename to spec/tests/python/test_fstring_08b.txt diff --git a/tests/python/test_fstring_09a.txt b/spec/tests/python/test_fstring_09a.txt similarity index 100% rename from tests/python/test_fstring_09a.txt rename to spec/tests/python/test_fstring_09a.txt diff --git a/tests/python/test_fstring_09b.txt b/spec/tests/python/test_fstring_09b.txt similarity index 100% rename from tests/python/test_fstring_09b.txt rename to spec/tests/python/test_fstring_09b.txt diff --git a/tests/python/test_fstring_10a.txt b/spec/tests/python/test_fstring_10a.txt similarity index 100% rename from tests/python/test_fstring_10a.txt rename to spec/tests/python/test_fstring_10a.txt diff --git a/tests/python/test_fstring_10b.txt b/spec/tests/python/test_fstring_10b.txt similarity index 100% rename from tests/python/test_fstring_10b.txt rename to spec/tests/python/test_fstring_10b.txt diff --git a/tests/python/test_fstring_11a.txt b/spec/tests/python/test_fstring_11a.txt similarity index 100% rename from tests/python/test_fstring_11a.txt rename to spec/tests/python/test_fstring_11a.txt diff --git a/tests/python/test_fstring_11b.txt b/spec/tests/python/test_fstring_11b.txt similarity index 100% rename from tests/python/test_fstring_11b.txt rename to spec/tests/python/test_fstring_11b.txt diff --git a/tests/python/test_fstring_12a.txt b/spec/tests/python/test_fstring_12a.txt similarity index 100% rename from tests/python/test_fstring_12a.txt rename to spec/tests/python/test_fstring_12a.txt diff --git a/tests/python/test_fstring_12b.txt b/spec/tests/python/test_fstring_12b.txt similarity index 100% rename from tests/python/test_fstring_12b.txt rename to spec/tests/python/test_fstring_12b.txt diff --git a/tests/python/test_fstring_13a.txt b/spec/tests/python/test_fstring_13a.txt similarity index 100% rename from tests/python/test_fstring_13a.txt rename to spec/tests/python/test_fstring_13a.txt diff --git a/tests/python/test_fstring_13b.txt b/spec/tests/python/test_fstring_13b.txt similarity index 100% rename from tests/python/test_fstring_13b.txt rename to spec/tests/python/test_fstring_13b.txt diff --git a/tests/python/test_fstring_14a.txt b/spec/tests/python/test_fstring_14a.txt similarity index 100% rename from tests/python/test_fstring_14a.txt rename to spec/tests/python/test_fstring_14a.txt diff --git a/tests/python/test_fstring_14b.txt b/spec/tests/python/test_fstring_14b.txt similarity index 100% rename from tests/python/test_fstring_14b.txt rename to spec/tests/python/test_fstring_14b.txt diff --git a/tests/python/test_fstring_15a.txt b/spec/tests/python/test_fstring_15a.txt similarity index 100% rename from tests/python/test_fstring_15a.txt rename to spec/tests/python/test_fstring_15a.txt diff --git a/tests/python/test_fstring_15b.txt b/spec/tests/python/test_fstring_15b.txt similarity index 100% rename from tests/python/test_fstring_15b.txt rename to spec/tests/python/test_fstring_15b.txt diff --git a/tests/python/test_fstring_16a.txt b/spec/tests/python/test_fstring_16a.txt similarity index 100% rename from tests/python/test_fstring_16a.txt rename to spec/tests/python/test_fstring_16a.txt diff --git a/tests/python/test_fstring_16b.txt b/spec/tests/python/test_fstring_16b.txt similarity index 100% rename from tests/python/test_fstring_16b.txt rename to spec/tests/python/test_fstring_16b.txt diff --git a/tests/python/test_fstring_17a.txt b/spec/tests/python/test_fstring_17a.txt similarity index 100% rename from tests/python/test_fstring_17a.txt rename to spec/tests/python/test_fstring_17a.txt diff --git a/tests/python/test_fstring_17b.txt b/spec/tests/python/test_fstring_17b.txt similarity index 100% rename from tests/python/test_fstring_17b.txt rename to spec/tests/python/test_fstring_17b.txt diff --git a/tests/python/test_fstring_18a.txt b/spec/tests/python/test_fstring_18a.txt similarity index 100% rename from tests/python/test_fstring_18a.txt rename to spec/tests/python/test_fstring_18a.txt diff --git a/tests/python/test_fstring_18b.txt b/spec/tests/python/test_fstring_18b.txt similarity index 100% rename from tests/python/test_fstring_18b.txt rename to spec/tests/python/test_fstring_18b.txt diff --git a/tests/python/test_fstring_19a.txt b/spec/tests/python/test_fstring_19a.txt similarity index 100% rename from tests/python/test_fstring_19a.txt rename to spec/tests/python/test_fstring_19a.txt diff --git a/tests/python/test_fstring_19b.txt b/spec/tests/python/test_fstring_19b.txt similarity index 100% rename from tests/python/test_fstring_19b.txt rename to spec/tests/python/test_fstring_19b.txt diff --git a/tests/python/test_fstring_20a.txt b/spec/tests/python/test_fstring_20a.txt similarity index 100% rename from tests/python/test_fstring_20a.txt rename to spec/tests/python/test_fstring_20a.txt diff --git a/tests/python/test_fstring_20b.txt b/spec/tests/python/test_fstring_20b.txt similarity index 100% rename from tests/python/test_fstring_20b.txt rename to spec/tests/python/test_fstring_20b.txt diff --git a/tests/python/test_fstring_21a.txt b/spec/tests/python/test_fstring_21a.txt similarity index 100% rename from tests/python/test_fstring_21a.txt rename to spec/tests/python/test_fstring_21a.txt diff --git a/tests/python/test_fstring_21b.txt b/spec/tests/python/test_fstring_21b.txt similarity index 100% rename from tests/python/test_fstring_21b.txt rename to spec/tests/python/test_fstring_21b.txt diff --git a/tests/python/test_fstring_22a.txt b/spec/tests/python/test_fstring_22a.txt similarity index 100% rename from tests/python/test_fstring_22a.txt rename to spec/tests/python/test_fstring_22a.txt diff --git a/tests/python/test_fstring_22b.txt b/spec/tests/python/test_fstring_22b.txt similarity index 100% rename from tests/python/test_fstring_22b.txt rename to spec/tests/python/test_fstring_22b.txt diff --git a/tests/python/test_fstring_23a.txt b/spec/tests/python/test_fstring_23a.txt similarity index 100% rename from tests/python/test_fstring_23a.txt rename to spec/tests/python/test_fstring_23a.txt diff --git a/tests/python/test_fstring_23b.txt b/spec/tests/python/test_fstring_23b.txt similarity index 100% rename from tests/python/test_fstring_23b.txt rename to spec/tests/python/test_fstring_23b.txt diff --git a/tests/python/test_fstring_24a.txt b/spec/tests/python/test_fstring_24a.txt similarity index 100% rename from tests/python/test_fstring_24a.txt rename to spec/tests/python/test_fstring_24a.txt diff --git a/tests/python/test_fstring_24b.txt b/spec/tests/python/test_fstring_24b.txt similarity index 100% rename from tests/python/test_fstring_24b.txt rename to spec/tests/python/test_fstring_24b.txt diff --git a/tests/python/test_fstring_25a.txt b/spec/tests/python/test_fstring_25a.txt similarity index 100% rename from tests/python/test_fstring_25a.txt rename to spec/tests/python/test_fstring_25a.txt diff --git a/tests/python/test_fstring_25b.txt b/spec/tests/python/test_fstring_25b.txt similarity index 100% rename from tests/python/test_fstring_25b.txt rename to spec/tests/python/test_fstring_25b.txt diff --git a/tests/python/test_fstring_26a.txt b/spec/tests/python/test_fstring_26a.txt similarity index 100% rename from tests/python/test_fstring_26a.txt rename to spec/tests/python/test_fstring_26a.txt diff --git a/tests/python/test_fstring_26b.txt b/spec/tests/python/test_fstring_26b.txt similarity index 100% rename from tests/python/test_fstring_26b.txt rename to spec/tests/python/test_fstring_26b.txt diff --git a/tests/python/test_fstring_27a.txt b/spec/tests/python/test_fstring_27a.txt similarity index 100% rename from tests/python/test_fstring_27a.txt rename to spec/tests/python/test_fstring_27a.txt diff --git a/tests/python/test_fstring_27b.txt b/spec/tests/python/test_fstring_27b.txt similarity index 100% rename from tests/python/test_fstring_27b.txt rename to spec/tests/python/test_fstring_27b.txt diff --git a/tests/python/test_fstring_28a.txt b/spec/tests/python/test_fstring_28a.txt similarity index 100% rename from tests/python/test_fstring_28a.txt rename to spec/tests/python/test_fstring_28a.txt diff --git a/tests/python/test_fstring_28b.txt b/spec/tests/python/test_fstring_28b.txt similarity index 100% rename from tests/python/test_fstring_28b.txt rename to spec/tests/python/test_fstring_28b.txt diff --git a/tests/python/test_fstring_29a.txt b/spec/tests/python/test_fstring_29a.txt similarity index 100% rename from tests/python/test_fstring_29a.txt rename to spec/tests/python/test_fstring_29a.txt diff --git a/tests/python/test_fstring_29b.txt b/spec/tests/python/test_fstring_29b.txt similarity index 100% rename from tests/python/test_fstring_29b.txt rename to spec/tests/python/test_fstring_29b.txt diff --git a/tests/python/test_fstring_30a.txt b/spec/tests/python/test_fstring_30a.txt similarity index 100% rename from tests/python/test_fstring_30a.txt rename to spec/tests/python/test_fstring_30a.txt diff --git a/tests/python/test_fstring_30b.txt b/spec/tests/python/test_fstring_30b.txt similarity index 100% rename from tests/python/test_fstring_30b.txt rename to spec/tests/python/test_fstring_30b.txt diff --git a/tests/python/test_fstring_31a.txt b/spec/tests/python/test_fstring_31a.txt similarity index 100% rename from tests/python/test_fstring_31a.txt rename to spec/tests/python/test_fstring_31a.txt diff --git a/tests/python/test_fstring_31b.txt b/spec/tests/python/test_fstring_31b.txt similarity index 100% rename from tests/python/test_fstring_31b.txt rename to spec/tests/python/test_fstring_31b.txt diff --git a/tests/python/test_fstring_32a.txt b/spec/tests/python/test_fstring_32a.txt similarity index 100% rename from tests/python/test_fstring_32a.txt rename to spec/tests/python/test_fstring_32a.txt diff --git a/tests/python/test_fstring_32b.txt b/spec/tests/python/test_fstring_32b.txt similarity index 100% rename from tests/python/test_fstring_32b.txt rename to spec/tests/python/test_fstring_32b.txt diff --git a/tests/python/test_fstring_33a.txt b/spec/tests/python/test_fstring_33a.txt similarity index 100% rename from tests/python/test_fstring_33a.txt rename to spec/tests/python/test_fstring_33a.txt diff --git a/tests/python/test_fstring_33b.txt b/spec/tests/python/test_fstring_33b.txt similarity index 100% rename from tests/python/test_fstring_33b.txt rename to spec/tests/python/test_fstring_33b.txt diff --git a/tests/python/test_fstring_34a.txt b/spec/tests/python/test_fstring_34a.txt similarity index 100% rename from tests/python/test_fstring_34a.txt rename to spec/tests/python/test_fstring_34a.txt diff --git a/tests/python/test_fstring_34b.txt b/spec/tests/python/test_fstring_34b.txt similarity index 100% rename from tests/python/test_fstring_34b.txt rename to spec/tests/python/test_fstring_34b.txt diff --git a/tests/python/test_fstring_35a.txt b/spec/tests/python/test_fstring_35a.txt similarity index 100% rename from tests/python/test_fstring_35a.txt rename to spec/tests/python/test_fstring_35a.txt diff --git a/tests/python/test_fstring_35b.txt b/spec/tests/python/test_fstring_35b.txt similarity index 100% rename from tests/python/test_fstring_35b.txt rename to spec/tests/python/test_fstring_35b.txt diff --git a/tests/python/test_fstring_36a.txt b/spec/tests/python/test_fstring_36a.txt similarity index 100% rename from tests/python/test_fstring_36a.txt rename to spec/tests/python/test_fstring_36a.txt diff --git a/tests/python/test_fstring_36b.txt b/spec/tests/python/test_fstring_36b.txt similarity index 100% rename from tests/python/test_fstring_36b.txt rename to spec/tests/python/test_fstring_36b.txt diff --git a/tests/python/test_needs_name.txt b/spec/tests/python/test_needs_name.txt similarity index 100% rename from tests/python/test_needs_name.txt rename to spec/tests/python/test_needs_name.txt diff --git a/tests/python/test_pep_515.txt b/spec/tests/python/test_pep_515.txt similarity index 100% rename from tests/python/test_pep_515.txt rename to spec/tests/python/test_pep_515.txt diff --git a/tests/python/test_raw_fstring.txt b/spec/tests/python/test_raw_fstring.txt similarity index 100% rename from tests/python/test_raw_fstring.txt rename to spec/tests/python/test_raw_fstring.txt diff --git a/tests/python/test_soft_kwds.txt b/spec/tests/python/test_soft_kwds.txt similarity index 100% rename from tests/python/test_soft_kwds.txt rename to spec/tests/python/test_soft_kwds.txt diff --git a/tests/python/test_string_escape_codes.txt b/spec/tests/python/test_string_escape_codes.txt similarity index 100% rename from tests/python/test_string_escape_codes.txt rename to spec/tests/python/test_string_escape_codes.txt diff --git a/tests/python/test_walrus_operator.txt b/spec/tests/python/test_walrus_operator.txt similarity index 100% rename from tests/python/test_walrus_operator.txt rename to spec/tests/python/test_walrus_operator.txt diff --git a/tests/python2/test_cls_builtin.txt b/spec/tests/python_2/test_cls_builtin.txt similarity index 100% rename from tests/python2/test_cls_builtin.txt rename to spec/tests/python_2/test_cls_builtin.txt diff --git a/tests/qbasic/test_keywords_with_dollar.txt b/spec/tests/qbasic/test_keywords_with_dollar.txt similarity index 100% rename from tests/qbasic/test_keywords_with_dollar.txt rename to spec/tests/qbasic/test_keywords_with_dollar.txt diff --git a/tests/r/test_call.txt b/spec/tests/r/test_call.txt similarity index 100% rename from tests/r/test_call.txt rename to spec/tests/r/test_call.txt diff --git a/tests/r/test_custom_operator.txt b/spec/tests/r/test_custom_operator.txt similarity index 100% rename from tests/r/test_custom_operator.txt rename to spec/tests/r/test_custom_operator.txt diff --git a/tests/r/test_dot_indexing.txt b/spec/tests/r/test_dot_indexing.txt similarity index 100% rename from tests/r/test_dot_indexing.txt rename to spec/tests/r/test_dot_indexing.txt diff --git a/tests/r/test_dot_name.txt b/spec/tests/r/test_dot_name.txt similarity index 100% rename from tests/r/test_dot_name.txt rename to spec/tests/r/test_dot_name.txt diff --git a/tests/r/test_indexing.txt b/spec/tests/r/test_indexing.txt similarity index 100% rename from tests/r/test_indexing.txt rename to spec/tests/r/test_indexing.txt diff --git a/tests/r/test_name1.txt b/spec/tests/r/test_name1.txt similarity index 100% rename from tests/r/test_name1.txt rename to spec/tests/r/test_name1.txt diff --git a/tests/r/test_name2.txt b/spec/tests/r/test_name2.txt similarity index 100% rename from tests/r/test_name2.txt rename to spec/tests/r/test_name2.txt diff --git a/tests/r/test_name3.txt b/spec/tests/r/test_name3.txt similarity index 100% rename from tests/r/test_name3.txt rename to spec/tests/r/test_name3.txt diff --git a/tests/jsx/test_aria_attribute.txt b/spec/tests/react/test_aria_attribute.txt similarity index 100% rename from tests/jsx/test_aria_attribute.txt rename to spec/tests/react/test_aria_attribute.txt diff --git a/tests/jsx/test_arrow_function_attribute.txt b/spec/tests/react/test_arrow_function_attribute.txt similarity index 100% rename from tests/jsx/test_arrow_function_attribute.txt rename to spec/tests/react/test_arrow_function_attribute.txt diff --git a/tests/jsx/test_fragment.txt b/spec/tests/react/test_fragment.txt similarity index 100% rename from tests/jsx/test_fragment.txt rename to spec/tests/react/test_fragment.txt diff --git a/tests/jsx/test_function_returning_jsx.text b/spec/tests/react/test_function_returning_jsx.text similarity index 100% rename from tests/jsx/test_function_returning_jsx.text rename to spec/tests/react/test_function_returning_jsx.text diff --git a/tests/jsx/test_multiple_attributes.txt b/spec/tests/react/test_multiple_attributes.txt similarity index 100% rename from tests/jsx/test_multiple_attributes.txt rename to spec/tests/react/test_multiple_attributes.txt diff --git a/tests/jsx/test_object_attribute.txt b/spec/tests/react/test_object_attribute.txt similarity index 100% rename from tests/jsx/test_object_attribute.txt rename to spec/tests/react/test_object_attribute.txt diff --git a/tests/jsx/test_short_syntax.txt b/spec/tests/react/test_short_syntax.txt similarity index 100% rename from tests/jsx/test_short_syntax.txt rename to spec/tests/react/test_short_syntax.txt diff --git a/tests/ruby/test_escaped_bracestring.txt b/spec/tests/ruby/test_escaped_bracestring.txt similarity index 100% rename from tests/ruby/test_escaped_bracestring.txt rename to spec/tests/ruby/test_escaped_bracestring.txt diff --git a/tests/ruby/test_interpolation_nested_curly.txt b/spec/tests/ruby/test_interpolation_nested_curly.txt similarity index 100% rename from tests/ruby/test_interpolation_nested_curly.txt rename to spec/tests/ruby/test_interpolation_nested_curly.txt diff --git a/tests/ruby/test_operator_methods.txt b/spec/tests/ruby/test_operator_methods.txt similarity index 100% rename from tests/ruby/test_operator_methods.txt rename to spec/tests/ruby/test_operator_methods.txt diff --git a/tests/ruby/test_range_syntax1.txt b/spec/tests/ruby/test_range_syntax1.txt similarity index 100% rename from tests/ruby/test_range_syntax1.txt rename to spec/tests/ruby/test_range_syntax1.txt diff --git a/tests/ruby/test_range_syntax2.txt b/spec/tests/ruby/test_range_syntax2.txt similarity index 100% rename from tests/ruby/test_range_syntax2.txt rename to spec/tests/ruby/test_range_syntax2.txt diff --git a/tests/ruby/test_range_syntax3.txt b/spec/tests/ruby/test_range_syntax3.txt similarity index 100% rename from tests/ruby/test_range_syntax3.txt rename to spec/tests/ruby/test_range_syntax3.txt diff --git a/tests/rust/test_attribute.txt b/spec/tests/rust/test_attribute.txt similarity index 100% rename from tests/rust/test_attribute.txt rename to spec/tests/rust/test_attribute.txt diff --git a/tests/rust/test_break.txt b/spec/tests/rust/test_break.txt similarity index 100% rename from tests/rust/test_break.txt rename to spec/tests/rust/test_break.txt diff --git a/tests/rust/test_func.txt b/spec/tests/rust/test_func.txt similarity index 100% rename from tests/rust/test_func.txt rename to spec/tests/rust/test_func.txt diff --git a/tests/rust/test_rawstrings.txt b/spec/tests/rust/test_rawstrings.txt similarity index 100% rename from tests/rust/test_rawstrings.txt rename to spec/tests/rust/test_rawstrings.txt diff --git a/tests/rust/test_struct.txt b/spec/tests/rust/test_struct.txt similarity index 100% rename from tests/rust/test_struct.txt rename to spec/tests/rust/test_struct.txt diff --git a/tests/rust/test_use.txt b/spec/tests/rust/test_use.txt similarity index 100% rename from tests/rust/test_use.txt rename to spec/tests/rust/test_use.txt diff --git a/tests/scala/test_colon_colon_function_name.txt b/spec/tests/scala/test_colon_colon_function_name.txt similarity index 100% rename from tests/scala/test_colon_colon_function_name.txt rename to spec/tests/scala/test_colon_colon_function_name.txt diff --git a/tests/scala/test_default_parameter.txt b/spec/tests/scala/test_default_parameter.txt similarity index 100% rename from tests/scala/test_default_parameter.txt rename to spec/tests/scala/test_default_parameter.txt diff --git a/tests/scala/test_end_val.txt b/spec/tests/scala/test_end_val.txt similarity index 100% rename from tests/scala/test_end_val.txt rename to spec/tests/scala/test_end_val.txt diff --git a/tests/scala/test_end_valx.txt b/spec/tests/scala/test_end_valx.txt similarity index 100% rename from tests/scala/test_end_valx.txt rename to spec/tests/scala/test_end_valx.txt diff --git a/tests/scala/test_float_with_exponents.txt b/spec/tests/scala/test_float_with_exponents.txt similarity index 100% rename from tests/scala/test_float_with_exponents.txt rename to spec/tests/scala/test_float_with_exponents.txt diff --git a/tests/scala/test_function_operator_name.txt b/spec/tests/scala/test_function_operator_name.txt similarity index 100% rename from tests/scala/test_function_operator_name.txt rename to spec/tests/scala/test_function_operator_name.txt diff --git a/tests/scala/test_import_path.txt b/spec/tests/scala/test_import_path.txt similarity index 100% rename from tests/scala/test_import_path.txt rename to spec/tests/scala/test_import_path.txt diff --git a/tests/scala/test_invalid_symbol_and_invalid_char.txt b/spec/tests/scala/test_invalid_symbol_and_invalid_char.txt similarity index 100% rename from tests/scala/test_invalid_symbol_and_invalid_char.txt rename to spec/tests/scala/test_invalid_symbol_and_invalid_char.txt diff --git a/tests/scala/test_open_soft_keyword.txt b/spec/tests/scala/test_open_soft_keyword.txt similarity index 100% rename from tests/scala/test_open_soft_keyword.txt rename to spec/tests/scala/test_open_soft_keyword.txt diff --git a/tests/scala/test_package_name.txt b/spec/tests/scala/test_package_name.txt similarity index 100% rename from tests/scala/test_package_name.txt rename to spec/tests/scala/test_package_name.txt diff --git a/tests/scala/test_prepend_operator.txt b/spec/tests/scala/test_prepend_operator.txt similarity index 100% rename from tests/scala/test_prepend_operator.txt rename to spec/tests/scala/test_prepend_operator.txt diff --git a/tests/scala/test_qualified_name.txt b/spec/tests/scala/test_qualified_name.txt similarity index 100% rename from tests/scala/test_qualified_name.txt rename to spec/tests/scala/test_qualified_name.txt diff --git a/tests/scala/test_qualified_name_class.txt b/spec/tests/scala/test_qualified_name_class.txt similarity index 100% rename from tests/scala/test_qualified_name_class.txt rename to spec/tests/scala/test_qualified_name_class.txt diff --git a/tests/scala/test_script_header.txt b/spec/tests/scala/test_script_header.txt similarity index 100% rename from tests/scala/test_script_header.txt rename to spec/tests/scala/test_script_header.txt diff --git a/tests/scala/test_symbol_followed_by_op.txt b/spec/tests/scala/test_symbol_followed_by_op.txt similarity index 100% rename from tests/scala/test_symbol_followed_by_op.txt rename to spec/tests/scala/test_symbol_followed_by_op.txt diff --git a/tests/scala/test_symbol_name_ending_with_star.txt b/spec/tests/scala/test_symbol_name_ending_with_star.txt similarity index 100% rename from tests/scala/test_symbol_name_ending_with_star.txt rename to spec/tests/scala/test_symbol_name_ending_with_star.txt diff --git a/tests/scala/test_underscore_name.txt b/spec/tests/scala/test_underscore_name.txt similarity index 100% rename from tests/scala/test_underscore_name.txt rename to spec/tests/scala/test_underscore_name.txt diff --git a/tests/scheme/keywords.txt b/spec/tests/scheme/keywords.txt similarity index 100% rename from tests/scheme/keywords.txt rename to spec/tests/scheme/keywords.txt diff --git a/tests/scheme/numbers.txt b/spec/tests/scheme/numbers.txt similarity index 100% rename from tests/scheme/numbers.txt rename to spec/tests/scheme/numbers.txt diff --git a/tests/scheme/strings.txt b/spec/tests/scheme/strings.txt similarity index 100% rename from tests/scheme/strings.txt rename to spec/tests/scheme/strings.txt diff --git a/tests/smarty/test_nested_curly.txt b/spec/tests/smarty/test_nested_curly.txt similarity index 100% rename from tests/smarty/test_nested_curly.txt rename to spec/tests/smarty/test_nested_curly.txt diff --git a/tests/swift/strings.txt b/spec/tests/swift/strings.txt similarity index 100% rename from tests/swift/strings.txt rename to spec/tests/swift/strings.txt diff --git a/tests/systemd/example1.txt b/spec/tests/systemd/example1.txt similarity index 100% rename from tests/systemd/example1.txt rename to spec/tests/systemd/example1.txt diff --git a/tests/systemverilog/test_basic.txt b/spec/tests/systemverilog/test_basic.txt similarity index 100% rename from tests/systemverilog/test_basic.txt rename to spec/tests/systemverilog/test_basic.txt diff --git a/tests/systemverilog/test_classes.txt b/spec/tests/systemverilog/test_classes.txt similarity index 100% rename from tests/systemverilog/test_classes.txt rename to spec/tests/systemverilog/test_classes.txt diff --git a/tests/systemverilog/test_numbers.txt b/spec/tests/systemverilog/test_numbers.txt similarity index 100% rename from tests/systemverilog/test_numbers.txt rename to spec/tests/systemverilog/test_numbers.txt diff --git a/tests/systemverilog/test_operators.txt b/spec/tests/systemverilog/test_operators.txt similarity index 100% rename from tests/systemverilog/test_operators.txt rename to spec/tests/systemverilog/test_operators.txt diff --git a/tests/tcl/test_comma_and_at.txt b/spec/tests/tcl/test_comma_and_at.txt similarity index 100% rename from tests/tcl/test_comma_and_at.txt rename to spec/tests/tcl/test_comma_and_at.txt diff --git a/tests/tcl/test_vars.txt b/spec/tests/tcl/test_vars.txt similarity index 100% rename from tests/tcl/test_vars.txt rename to spec/tests/tcl/test_vars.txt diff --git a/tests/terraform/test_attributes.txt b/spec/tests/terraform/test_attributes.txt similarity index 100% rename from tests/terraform/test_attributes.txt rename to spec/tests/terraform/test_attributes.txt diff --git a/tests/terraform/test_backend.txt b/spec/tests/terraform/test_backend.txt similarity index 100% rename from tests/terraform/test_backend.txt rename to spec/tests/terraform/test_backend.txt diff --git a/tests/terraform/test_comment.txt b/spec/tests/terraform/test_comment.txt similarity index 100% rename from tests/terraform/test_comment.txt rename to spec/tests/terraform/test_comment.txt diff --git a/tests/terraform/test_functions.txt b/spec/tests/terraform/test_functions.txt similarity index 100% rename from tests/terraform/test_functions.txt rename to spec/tests/terraform/test_functions.txt diff --git a/tests/terraform/test_heredoc.txt b/spec/tests/terraform/test_heredoc.txt similarity index 100% rename from tests/terraform/test_heredoc.txt rename to spec/tests/terraform/test_heredoc.txt diff --git a/tests/terraform/test_module.txt b/spec/tests/terraform/test_module.txt similarity index 100% rename from tests/terraform/test_module.txt rename to spec/tests/terraform/test_module.txt diff --git a/tests/terraform/test_resource.txt b/spec/tests/terraform/test_resource.txt similarity index 100% rename from tests/terraform/test_resource.txt rename to spec/tests/terraform/test_resource.txt diff --git a/tests/terraform/test_types.txt b/spec/tests/terraform/test_types.txt similarity index 100% rename from tests/terraform/test_types.txt rename to spec/tests/terraform/test_types.txt diff --git a/tests/terraform/test_variable_declaration.txt b/spec/tests/terraform/test_variable_declaration.txt similarity index 100% rename from tests/terraform/test_variable_declaration.txt rename to spec/tests/terraform/test_variable_declaration.txt diff --git a/tests/terraform/test_variable_read.txt b/spec/tests/terraform/test_variable_read.txt similarity index 100% rename from tests/terraform/test_variable_read.txt rename to spec/tests/terraform/test_variable_read.txt diff --git a/tests/tex/test_basic.txt b/spec/tests/tex/test_basic.txt similarity index 100% rename from tests/tex/test_basic.txt rename to spec/tests/tex/test_basic.txt diff --git a/tests/tex/test_math.txt b/spec/tests/tex/test_math.txt similarity index 100% rename from tests/tex/test_math.txt rename to spec/tests/tex/test_math.txt diff --git a/tests/toml/bool-comment.txt b/spec/tests/toml/bool-comment.txt similarity index 100% rename from tests/toml/bool-comment.txt rename to spec/tests/toml/bool-comment.txt diff --git a/tests/toml/comment-section-header.txt b/spec/tests/toml/comment-section-header.txt similarity index 100% rename from tests/toml/comment-section-header.txt rename to spec/tests/toml/comment-section-header.txt diff --git a/tests/toml/multiline-string-comment.txt b/spec/tests/toml/multiline-string-comment.txt similarity index 100% rename from tests/toml/multiline-string-comment.txt rename to spec/tests/toml/multiline-string-comment.txt diff --git a/tests/toml/number-keys.txt b/spec/tests/toml/number-keys.txt similarity index 100% rename from tests/toml/number-keys.txt rename to spec/tests/toml/number-keys.txt diff --git a/tests/toml/section-header-whitespace.txt b/spec/tests/toml/section-header-whitespace.txt similarity index 100% rename from tests/toml/section-header-whitespace.txt rename to spec/tests/toml/section-header-whitespace.txt diff --git a/tests/toml/string-escapes.txt b/spec/tests/toml/string-escapes.txt similarity index 100% rename from tests/toml/string-escapes.txt rename to spec/tests/toml/string-escapes.txt diff --git a/tests/toml/strings-eager.txt b/spec/tests/toml/strings-eager.txt similarity index 100% rename from tests/toml/strings-eager.txt rename to spec/tests/toml/strings-eager.txt diff --git a/tests/toml/table-header-string.txt b/spec/tests/toml/table-header-string.txt similarity index 100% rename from tests/toml/table-header-string.txt rename to spec/tests/toml/table-header-string.txt diff --git a/tests/shexc/test_prefixed_name_starting_with_number.txt b/spec/tests/turtle/test_prefixed_name_starting_with_number.txt similarity index 100% rename from tests/shexc/test_prefixed_name_starting_with_number.txt rename to spec/tests/turtle/test_prefixed_name_starting_with_number.txt diff --git a/tests/typescript/test_function_definition.txt b/spec/tests/typescript/test_function_definition.txt similarity index 100% rename from tests/typescript/test_function_definition.txt rename to spec/tests/typescript/test_function_definition.txt diff --git a/tests/wgsl/address-space.txt b/spec/tests/webgpu_shading_language/address-space.txt similarity index 100% rename from tests/wgsl/address-space.txt rename to spec/tests/webgpu_shading_language/address-space.txt diff --git a/tests/wgsl/attribute.txt b/spec/tests/webgpu_shading_language/attribute.txt similarity index 100% rename from tests/wgsl/attribute.txt rename to spec/tests/webgpu_shading_language/attribute.txt diff --git a/tests/wgsl/block-comment.txt b/spec/tests/webgpu_shading_language/block-comment.txt similarity index 100% rename from tests/wgsl/block-comment.txt rename to spec/tests/webgpu_shading_language/block-comment.txt diff --git a/tests/wgsl/bool-types.txt b/spec/tests/webgpu_shading_language/bool-types.txt similarity index 100% rename from tests/wgsl/bool-types.txt rename to spec/tests/webgpu_shading_language/bool-types.txt diff --git a/tests/wgsl/const-numbers.txt b/spec/tests/webgpu_shading_language/const-numbers.txt similarity index 100% rename from tests/wgsl/const-numbers.txt rename to spec/tests/webgpu_shading_language/const-numbers.txt diff --git a/tests/wgsl/depth-texture.txt b/spec/tests/webgpu_shading_language/depth-texture.txt similarity index 100% rename from tests/wgsl/depth-texture.txt rename to spec/tests/webgpu_shading_language/depth-texture.txt diff --git a/tests/wgsl/external-texture.txt b/spec/tests/webgpu_shading_language/external-texture.txt similarity index 100% rename from tests/wgsl/external-texture.txt rename to spec/tests/webgpu_shading_language/external-texture.txt diff --git a/tests/wgsl/line-comment.txt b/spec/tests/webgpu_shading_language/line-comment.txt similarity index 100% rename from tests/wgsl/line-comment.txt rename to spec/tests/webgpu_shading_language/line-comment.txt diff --git a/tests/wgsl/multisampled-texture.txt b/spec/tests/webgpu_shading_language/multisampled-texture.txt similarity index 100% rename from tests/wgsl/multisampled-texture.txt rename to spec/tests/webgpu_shading_language/multisampled-texture.txt diff --git a/tests/wgsl/numeric-types.txt b/spec/tests/webgpu_shading_language/numeric-types.txt similarity index 100% rename from tests/wgsl/numeric-types.txt rename to spec/tests/webgpu_shading_language/numeric-types.txt diff --git a/tests/wgsl/sampled-texture.txt b/spec/tests/webgpu_shading_language/sampled-texture.txt similarity index 100% rename from tests/wgsl/sampled-texture.txt rename to spec/tests/webgpu_shading_language/sampled-texture.txt diff --git a/tests/wgsl/storage-texture.txt b/spec/tests/webgpu_shading_language/storage-texture.txt similarity index 100% rename from tests/wgsl/storage-texture.txt rename to spec/tests/webgpu_shading_language/storage-texture.txt diff --git a/tests/wgsl/texel-formats.txt b/spec/tests/webgpu_shading_language/texel-formats.txt similarity index 100% rename from tests/wgsl/texel-formats.txt rename to spec/tests/webgpu_shading_language/texel-formats.txt diff --git a/tests/wgsl/tiny-render.txt b/spec/tests/webgpu_shading_language/tiny-render.txt similarity index 100% rename from tests/wgsl/tiny-render.txt rename to spec/tests/webgpu_shading_language/tiny-render.txt diff --git a/tests/wgsl/type-generators.txt b/spec/tests/webgpu_shading_language/type-generators.txt similarity index 100% rename from tests/wgsl/type-generators.txt rename to spec/tests/webgpu_shading_language/type-generators.txt diff --git a/tests/whiley/test_whiley_operator.txt b/spec/tests/whiley/test_whiley_operator.txt similarity index 100% rename from tests/whiley/test_whiley_operator.txt rename to spec/tests/whiley/test_whiley_operator.txt diff --git a/tests/xml/multiline-comment-catastrophic-backtracking.txt b/spec/tests/xml/multiline-comment-catastrophic-backtracking.txt similarity index 100% rename from tests/xml/multiline-comment-catastrophic-backtracking.txt rename to spec/tests/xml/multiline-comment-catastrophic-backtracking.txt diff --git a/tests/yaml/test_yaml.txt b/spec/tests/yaml/test_yaml.txt similarity index 100% rename from tests/yaml/test_yaml.txt rename to spec/tests/yaml/test_yaml.txt diff --git a/tests/yaml/test_yaml_colon_in_key.txt b/spec/tests/yaml/test_yaml_colon_in_key.txt similarity index 100% rename from tests/yaml/test_yaml_colon_in_key.txt rename to spec/tests/yaml/test_yaml_colon_in_key.txt diff --git a/tests/yaml/test_yaml_colon_in_key_double.txt b/spec/tests/yaml/test_yaml_colon_in_key_double.txt similarity index 100% rename from tests/yaml/test_yaml_colon_in_key_double.txt rename to spec/tests/yaml/test_yaml_colon_in_key_double.txt diff --git a/tests/yaml/test_yaml_colon_in_key_start.txt b/spec/tests/yaml/test_yaml_colon_in_key_start.txt similarity index 100% rename from tests/yaml/test_yaml_colon_in_key_start.txt rename to spec/tests/yaml/test_yaml_colon_in_key_start.txt diff --git a/tests/yang/test_float_value.txt b/spec/tests/yang/test_float_value.txt similarity index 100% rename from tests/yang/test_float_value.txt rename to spec/tests/yang/test_float_value.txt diff --git a/tests/yang/test_integer_value.txt b/spec/tests/yang/test_integer_value.txt similarity index 100% rename from tests/yang/test_integer_value.txt rename to spec/tests/yang/test_integer_value.txt diff --git a/tests/yang/test_namespace_1.txt b/spec/tests/yang/test_namespace_1.txt similarity index 100% rename from tests/yang/test_namespace_1.txt rename to spec/tests/yang/test_namespace_1.txt diff --git a/tests/yang/test_namespace_2.txt b/spec/tests/yang/test_namespace_2.txt similarity index 100% rename from tests/yang/test_namespace_2.txt rename to spec/tests/yang/test_namespace_2.txt diff --git a/tests/yang/test_revision_date.txt b/spec/tests/yang/test_revision_date.txt similarity index 100% rename from tests/yang/test_revision_date.txt rename to spec/tests/yang/test_revision_date.txt diff --git a/tests/yang/test_string_value.txt b/spec/tests/yang/test_string_value.txt similarity index 100% rename from tests/yang/test_string_value.txt rename to spec/tests/yang/test_string_value.txt diff --git a/tests/asn1/certificate.txt b/spec/unsupported_lexers/asn1/certificate.txt similarity index 100% rename from tests/asn1/certificate.txt rename to spec/unsupported_lexers/asn1/certificate.txt diff --git a/tests/asn1/nested-comment.txt b/spec/unsupported_lexers/asn1/nested-comment.txt similarity index 100% rename from tests/asn1/nested-comment.txt rename to spec/unsupported_lexers/asn1/nested-comment.txt diff --git a/tests/carbon/unterminated_comment.txt b/spec/unsupported_lexers/carbon/unterminated_comment.txt similarity index 100% rename from tests/carbon/unterminated_comment.txt rename to spec/unsupported_lexers/carbon/unterminated_comment.txt diff --git a/tests/cfm/test_basic_comment.txt b/spec/unsupported_lexers/cfm/test_basic_comment.txt similarity index 100% rename from tests/cfm/test_basic_comment.txt rename to spec/unsupported_lexers/cfm/test_basic_comment.txt diff --git a/tests/cfm/test_nested_comment.txt b/spec/unsupported_lexers/cfm/test_nested_comment.txt similarity index 100% rename from tests/cfm/test_nested_comment.txt rename to spec/unsupported_lexers/cfm/test_nested_comment.txt diff --git a/tests/csound/test_braced_strings.txt b/spec/unsupported_lexers/csound/test_braced_strings.txt similarity index 100% rename from tests/csound/test_braced_strings.txt rename to spec/unsupported_lexers/csound/test_braced_strings.txt diff --git a/tests/csound/test_comments.txt b/spec/unsupported_lexers/csound/test_comments.txt similarity index 100% rename from tests/csound/test_comments.txt rename to spec/unsupported_lexers/csound/test_comments.txt diff --git a/tests/csound/test_escape_sequences.txt b/spec/unsupported_lexers/csound/test_escape_sequences.txt similarity index 100% rename from tests/csound/test_escape_sequences.txt rename to spec/unsupported_lexers/csound/test_escape_sequences.txt diff --git a/tests/csound/test_function_like_macro_definitions.txt b/spec/unsupported_lexers/csound/test_function_like_macro_definitions.txt similarity index 100% rename from tests/csound/test_function_like_macro_definitions.txt rename to spec/unsupported_lexers/csound/test_function_like_macro_definitions.txt diff --git a/tests/csound/test_function_like_macros.txt b/spec/unsupported_lexers/csound/test_function_like_macros.txt similarity index 100% rename from tests/csound/test_function_like_macros.txt rename to spec/unsupported_lexers/csound/test_function_like_macros.txt diff --git a/tests/csound/test_global_value_identifiers.txt b/spec/unsupported_lexers/csound/test_global_value_identifiers.txt similarity index 100% rename from tests/csound/test_global_value_identifiers.txt rename to spec/unsupported_lexers/csound/test_global_value_identifiers.txt diff --git a/tests/csound/test_goto_statements.txt b/spec/unsupported_lexers/csound/test_goto_statements.txt similarity index 100% rename from tests/csound/test_goto_statements.txt rename to spec/unsupported_lexers/csound/test_goto_statements.txt diff --git a/tests/csound/test_include_directives.txt b/spec/unsupported_lexers/csound/test_include_directives.txt similarity index 100% rename from tests/csound/test_include_directives.txt rename to spec/unsupported_lexers/csound/test_include_directives.txt diff --git a/tests/csound/test_includestr_directives.txt b/spec/unsupported_lexers/csound/test_includestr_directives.txt similarity index 100% rename from tests/csound/test_includestr_directives.txt rename to spec/unsupported_lexers/csound/test_includestr_directives.txt diff --git a/tests/csound/test_instrument_blocks.txt b/spec/unsupported_lexers/csound/test_instrument_blocks.txt similarity index 100% rename from tests/csound/test_instrument_blocks.txt rename to spec/unsupported_lexers/csound/test_instrument_blocks.txt diff --git a/tests/csound/test_keywords.txt b/spec/unsupported_lexers/csound/test_keywords.txt similarity index 100% rename from tests/csound/test_keywords.txt rename to spec/unsupported_lexers/csound/test_keywords.txt diff --git a/tests/csound/test_labels.txt b/spec/unsupported_lexers/csound/test_labels.txt similarity index 100% rename from tests/csound/test_labels.txt rename to spec/unsupported_lexers/csound/test_labels.txt diff --git a/tests/csound/test_macro_preprocessor_directives.txt b/spec/unsupported_lexers/csound/test_macro_preprocessor_directives.txt similarity index 100% rename from tests/csound/test_macro_preprocessor_directives.txt rename to spec/unsupported_lexers/csound/test_macro_preprocessor_directives.txt diff --git a/tests/csound/test_name.txt b/spec/unsupported_lexers/csound/test_name.txt similarity index 100% rename from tests/csound/test_name.txt rename to spec/unsupported_lexers/csound/test_name.txt diff --git a/tests/csound/test_numbers.txt b/spec/unsupported_lexers/csound/test_numbers.txt similarity index 100% rename from tests/csound/test_numbers.txt rename to spec/unsupported_lexers/csound/test_numbers.txt diff --git a/tests/csound/test_object_like_macro_definitions.txt b/spec/unsupported_lexers/csound/test_object_like_macro_definitions.txt similarity index 100% rename from tests/csound/test_object_like_macro_definitions.txt rename to spec/unsupported_lexers/csound/test_object_like_macro_definitions.txt diff --git a/tests/csound/test_operators.txt b/spec/unsupported_lexers/csound/test_operators.txt similarity index 100% rename from tests/csound/test_operators.txt rename to spec/unsupported_lexers/csound/test_operators.txt diff --git a/tests/csound/test_other_preprocessor_directives.txt b/spec/unsupported_lexers/csound/test_other_preprocessor_directives.txt similarity index 100% rename from tests/csound/test_other_preprocessor_directives.txt rename to spec/unsupported_lexers/csound/test_other_preprocessor_directives.txt diff --git a/tests/csound/test_printks_and_prints_escape_sequences.txt b/spec/unsupported_lexers/csound/test_printks_and_prints_escape_sequences.txt similarity index 100% rename from tests/csound/test_printks_and_prints_escape_sequences.txt rename to spec/unsupported_lexers/csound/test_printks_and_prints_escape_sequences.txt diff --git a/tests/csound/test_quoted_strings.txt b/spec/unsupported_lexers/csound/test_quoted_strings.txt similarity index 100% rename from tests/csound/test_quoted_strings.txt rename to spec/unsupported_lexers/csound/test_quoted_strings.txt diff --git a/tests/csound/test_user_defined_opcodes.txt b/spec/unsupported_lexers/csound/test_user_defined_opcodes.txt similarity index 100% rename from tests/csound/test_user_defined_opcodes.txt rename to spec/unsupported_lexers/csound/test_user_defined_opcodes.txt diff --git a/tests/devicetree/test_fragment_out_of_root_node.txt b/spec/unsupported_lexers/devicetree/test_fragment_out_of_root_node.txt similarity index 100% rename from tests/devicetree/test_fragment_out_of_root_node.txt rename to spec/unsupported_lexers/devicetree/test_fragment_out_of_root_node.txt diff --git a/tests/doscon/test_gt_only.txt b/spec/unsupported_lexers/doscon/test_gt_only.txt similarity index 100% rename from tests/doscon/test_gt_only.txt rename to spec/unsupported_lexers/doscon/test_gt_only.txt diff --git a/tests/elpi/test_catastrophic_backtracking.txt b/spec/unsupported_lexers/elpi/test_catastrophic_backtracking.txt similarity index 100% rename from tests/elpi/test_catastrophic_backtracking.txt rename to spec/unsupported_lexers/elpi/test_catastrophic_backtracking.txt diff --git a/tests/elpi/test_chr.txt b/spec/unsupported_lexers/elpi/test_chr.txt similarity index 100% rename from tests/elpi/test_chr.txt rename to spec/unsupported_lexers/elpi/test_chr.txt diff --git a/tests/elpi/test_clause.txt b/spec/unsupported_lexers/elpi/test_clause.txt similarity index 100% rename from tests/elpi/test_clause.txt rename to spec/unsupported_lexers/elpi/test_clause.txt diff --git a/tests/elpi/test_namespace.txt b/spec/unsupported_lexers/elpi/test_namespace.txt similarity index 100% rename from tests/elpi/test_namespace.txt rename to spec/unsupported_lexers/elpi/test_namespace.txt diff --git a/tests/elpi/test_pred.txt b/spec/unsupported_lexers/elpi/test_pred.txt similarity index 100% rename from tests/elpi/test_pred.txt rename to spec/unsupported_lexers/elpi/test_pred.txt diff --git a/tests/elpi/test_quotations.txt b/spec/unsupported_lexers/elpi/test_quotations.txt similarity index 100% rename from tests/elpi/test_quotations.txt rename to spec/unsupported_lexers/elpi/test_quotations.txt diff --git a/tests/elpi/test_type.txt b/spec/unsupported_lexers/elpi/test_type.txt similarity index 100% rename from tests/elpi/test_type.txt rename to spec/unsupported_lexers/elpi/test_type.txt diff --git a/tests/ezhil/test_function.txt b/spec/unsupported_lexers/ezhil/test_function.txt similarity index 100% rename from tests/ezhil/test_function.txt rename to spec/unsupported_lexers/ezhil/test_function.txt diff --git a/tests/ezhil/test_gcd_expr.txt b/spec/unsupported_lexers/ezhil/test_gcd_expr.txt similarity index 100% rename from tests/ezhil/test_gcd_expr.txt rename to spec/unsupported_lexers/ezhil/test_gcd_expr.txt diff --git a/tests/ezhil/test_if_statement.txt b/spec/unsupported_lexers/ezhil/test_if_statement.txt similarity index 100% rename from tests/ezhil/test_if_statement.txt rename to spec/unsupported_lexers/ezhil/test_if_statement.txt diff --git a/tests/ezhil/test_sum.txt b/spec/unsupported_lexers/ezhil/test_sum.txt similarity index 100% rename from tests/ezhil/test_sum.txt rename to spec/unsupported_lexers/ezhil/test_sum.txt diff --git a/tests/http/test_application_calendar_xml.txt b/spec/unsupported_lexers/http/test_application_calendar_xml.txt similarity index 100% rename from tests/http/test_application_calendar_xml.txt rename to spec/unsupported_lexers/http/test_application_calendar_xml.txt diff --git a/tests/http/test_application_xml.txt b/spec/unsupported_lexers/http/test_application_xml.txt similarity index 100% rename from tests/http/test_application_xml.txt rename to spec/unsupported_lexers/http/test_application_xml.txt diff --git a/tests/http/test_http_status_line.txt b/spec/unsupported_lexers/http/test_http_status_line.txt similarity index 100% rename from tests/http/test_http_status_line.txt rename to spec/unsupported_lexers/http/test_http_status_line.txt diff --git a/tests/http/test_http_status_line_without_reason_phrase.txt b/spec/unsupported_lexers/http/test_http_status_line_without_reason_phrase.txt similarity index 100% rename from tests/http/test_http_status_line_without_reason_phrase.txt rename to spec/unsupported_lexers/http/test_http_status_line_without_reason_phrase.txt diff --git a/tests/http/test_http_status_line_without_reason_phrase_rfc_7230.txt b/spec/unsupported_lexers/http/test_http_status_line_without_reason_phrase_rfc_7230.txt similarity index 100% rename from tests/http/test_http_status_line_without_reason_phrase_rfc_7230.txt rename to spec/unsupported_lexers/http/test_http_status_line_without_reason_phrase_rfc_7230.txt diff --git a/tests/http/test_urlencoded.txt b/spec/unsupported_lexers/http/test_urlencoded.txt similarity index 100% rename from tests/http/test_urlencoded.txt rename to spec/unsupported_lexers/http/test_urlencoded.txt diff --git a/tests/janet/bool_lit-false.txt b/spec/unsupported_lexers/janet/bool_lit-false.txt similarity index 100% rename from tests/janet/bool_lit-false.txt rename to spec/unsupported_lexers/janet/bool_lit-false.txt diff --git a/tests/janet/bool_lit-true.txt b/spec/unsupported_lexers/janet/bool_lit-true.txt similarity index 100% rename from tests/janet/bool_lit-true.txt rename to spec/unsupported_lexers/janet/bool_lit-true.txt diff --git a/tests/janet/buf_lit-multiline.txt b/spec/unsupported_lexers/janet/buf_lit-multiline.txt similarity index 100% rename from tests/janet/buf_lit-multiline.txt rename to spec/unsupported_lexers/janet/buf_lit-multiline.txt diff --git a/tests/janet/buf_lit-simple.txt b/spec/unsupported_lexers/janet/buf_lit-simple.txt similarity index 100% rename from tests/janet/buf_lit-simple.txt rename to spec/unsupported_lexers/janet/buf_lit-simple.txt diff --git a/tests/janet/buf_lit-with-escape.txt b/spec/unsupported_lexers/janet/buf_lit-with-escape.txt similarity index 100% rename from tests/janet/buf_lit-with-escape.txt rename to spec/unsupported_lexers/janet/buf_lit-with-escape.txt diff --git a/tests/janet/buf_lit-with-hex-escape.txt b/spec/unsupported_lexers/janet/buf_lit-with-hex-escape.txt similarity index 100% rename from tests/janet/buf_lit-with-hex-escape.txt rename to spec/unsupported_lexers/janet/buf_lit-with-hex-escape.txt diff --git a/tests/janet/buf_lit-with-utf8-four-hex-digits-escape.txt b/spec/unsupported_lexers/janet/buf_lit-with-utf8-four-hex-digits-escape.txt similarity index 100% rename from tests/janet/buf_lit-with-utf8-four-hex-digits-escape.txt rename to spec/unsupported_lexers/janet/buf_lit-with-utf8-four-hex-digits-escape.txt diff --git a/tests/janet/buf_lit-with-utf8-six-hex-digits-escape.txt b/spec/unsupported_lexers/janet/buf_lit-with-utf8-six-hex-digits-escape.txt similarity index 100% rename from tests/janet/buf_lit-with-utf8-six-hex-digits-escape.txt rename to spec/unsupported_lexers/janet/buf_lit-with-utf8-six-hex-digits-escape.txt diff --git a/tests/janet/comment-multiple.txt b/spec/unsupported_lexers/janet/comment-multiple.txt similarity index 100% rename from tests/janet/comment-multiple.txt rename to spec/unsupported_lexers/janet/comment-multiple.txt diff --git a/tests/janet/comment-simple.txt b/spec/unsupported_lexers/janet/comment-simple.txt similarity index 100% rename from tests/janet/comment-simple.txt rename to spec/unsupported_lexers/janet/comment-simple.txt diff --git a/tests/janet/kwd_lit-just-a-colon.txt b/spec/unsupported_lexers/janet/kwd_lit-just-a-colon.txt similarity index 100% rename from tests/janet/kwd_lit-just-a-colon.txt rename to spec/unsupported_lexers/janet/kwd_lit-just-a-colon.txt diff --git a/tests/janet/kwd_lit-just-two-colons.txt b/spec/unsupported_lexers/janet/kwd_lit-just-two-colons.txt similarity index 100% rename from tests/janet/kwd_lit-just-two-colons.txt rename to spec/unsupported_lexers/janet/kwd_lit-just-two-colons.txt diff --git a/tests/janet/kwd_lit-simple.txt b/spec/unsupported_lexers/janet/kwd_lit-simple.txt similarity index 100% rename from tests/janet/kwd_lit-simple.txt rename to spec/unsupported_lexers/janet/kwd_lit-simple.txt diff --git a/tests/janet/kwd_lit-with-leading-number.txt b/spec/unsupported_lexers/janet/kwd_lit-with-leading-number.txt similarity index 100% rename from tests/janet/kwd_lit-with-leading-number.txt rename to spec/unsupported_lexers/janet/kwd_lit-with-leading-number.txt diff --git a/tests/janet/long_buf_lit-more-than-one-backtick-per-delim.txt b/spec/unsupported_lexers/janet/long_buf_lit-more-than-one-backtick-per-delim.txt similarity index 100% rename from tests/janet/long_buf_lit-more-than-one-backtick-per-delim.txt rename to spec/unsupported_lexers/janet/long_buf_lit-more-than-one-backtick-per-delim.txt diff --git a/tests/janet/long_buf_lit-simple.txt b/spec/unsupported_lexers/janet/long_buf_lit-simple.txt similarity index 100% rename from tests/janet/long_buf_lit-simple.txt rename to spec/unsupported_lexers/janet/long_buf_lit-simple.txt diff --git a/tests/janet/long_str_lit-more-than-one-backtick-per-delim.txt b/spec/unsupported_lexers/janet/long_str_lit-more-than-one-backtick-per-delim.txt similarity index 100% rename from tests/janet/long_str_lit-more-than-one-backtick-per-delim.txt rename to spec/unsupported_lexers/janet/long_str_lit-more-than-one-backtick-per-delim.txt diff --git a/tests/janet/long_str_lit-simple.txt b/spec/unsupported_lexers/janet/long_str_lit-simple.txt similarity index 100% rename from tests/janet/long_str_lit-simple.txt rename to spec/unsupported_lexers/janet/long_str_lit-simple.txt diff --git a/tests/janet/nil_lit-the-only.txt b/spec/unsupported_lexers/janet/nil_lit-the-only.txt similarity index 100% rename from tests/janet/nil_lit-the-only.txt rename to spec/unsupported_lexers/janet/nil_lit-the-only.txt diff --git a/tests/janet/num_lit-double-with-exponent.txt b/spec/unsupported_lexers/janet/num_lit-double-with-exponent.txt similarity index 100% rename from tests/janet/num_lit-double-with-exponent.txt rename to spec/unsupported_lexers/janet/num_lit-double-with-exponent.txt diff --git a/tests/janet/num_lit-double-with-negative-exponent.txt b/spec/unsupported_lexers/janet/num_lit-double-with-negative-exponent.txt similarity index 100% rename from tests/janet/num_lit-double-with-negative-exponent.txt rename to spec/unsupported_lexers/janet/num_lit-double-with-negative-exponent.txt diff --git a/tests/janet/num_lit-double-with-underscores.txt b/spec/unsupported_lexers/janet/num_lit-double-with-underscores.txt similarity index 100% rename from tests/janet/num_lit-double-with-underscores.txt rename to spec/unsupported_lexers/janet/num_lit-double-with-underscores.txt diff --git a/tests/janet/num_lit-double.txt b/spec/unsupported_lexers/janet/num_lit-double.txt similarity index 100% rename from tests/janet/num_lit-double.txt rename to spec/unsupported_lexers/janet/num_lit-double.txt diff --git a/tests/janet/num_lit-hex-with-fractional-part-and-underscores.txt b/spec/unsupported_lexers/janet/num_lit-hex-with-fractional-part-and-underscores.txt similarity index 100% rename from tests/janet/num_lit-hex-with-fractional-part-and-underscores.txt rename to spec/unsupported_lexers/janet/num_lit-hex-with-fractional-part-and-underscores.txt diff --git a/tests/janet/num_lit-hex-with-fractional-part.txt b/spec/unsupported_lexers/janet/num_lit-hex-with-fractional-part.txt similarity index 100% rename from tests/janet/num_lit-hex-with-fractional-part.txt rename to spec/unsupported_lexers/janet/num_lit-hex-with-fractional-part.txt diff --git a/tests/janet/num_lit-hex-with-underscores.txt b/spec/unsupported_lexers/janet/num_lit-hex-with-underscores.txt similarity index 100% rename from tests/janet/num_lit-hex-with-underscores.txt rename to spec/unsupported_lexers/janet/num_lit-hex-with-underscores.txt diff --git a/tests/janet/num_lit-hex.txt b/spec/unsupported_lexers/janet/num_lit-hex.txt similarity index 100% rename from tests/janet/num_lit-hex.txt rename to spec/unsupported_lexers/janet/num_lit-hex.txt diff --git a/tests/janet/num_lit-integer-ending-with-underscores.txt b/spec/unsupported_lexers/janet/num_lit-integer-ending-with-underscores.txt similarity index 100% rename from tests/janet/num_lit-integer-ending-with-underscores.txt rename to spec/unsupported_lexers/janet/num_lit-integer-ending-with-underscores.txt diff --git a/tests/janet/num_lit-integer-with-sequential-underscores.txt b/spec/unsupported_lexers/janet/num_lit-integer-with-sequential-underscores.txt similarity index 100% rename from tests/janet/num_lit-integer-with-sequential-underscores.txt rename to spec/unsupported_lexers/janet/num_lit-integer-with-sequential-underscores.txt diff --git a/tests/janet/num_lit-integer-with-underscores.txt b/spec/unsupported_lexers/janet/num_lit-integer-with-underscores.txt similarity index 100% rename from tests/janet/num_lit-integer-with-underscores.txt rename to spec/unsupported_lexers/janet/num_lit-integer-with-underscores.txt diff --git a/tests/janet/num_lit-integer.txt b/spec/unsupported_lexers/janet/num_lit-integer.txt similarity index 100% rename from tests/janet/num_lit-integer.txt rename to spec/unsupported_lexers/janet/num_lit-integer.txt diff --git a/tests/janet/num_lit-negative-double.txt b/spec/unsupported_lexers/janet/num_lit-negative-double.txt similarity index 100% rename from tests/janet/num_lit-negative-double.txt rename to spec/unsupported_lexers/janet/num_lit-negative-double.txt diff --git a/tests/janet/num_lit-negative-hex.txt b/spec/unsupported_lexers/janet/num_lit-negative-hex.txt similarity index 100% rename from tests/janet/num_lit-negative-hex.txt rename to spec/unsupported_lexers/janet/num_lit-negative-hex.txt diff --git a/tests/janet/num_lit-negative-integer.txt b/spec/unsupported_lexers/janet/num_lit-negative-integer.txt similarity index 100% rename from tests/janet/num_lit-negative-integer.txt rename to spec/unsupported_lexers/janet/num_lit-negative-integer.txt diff --git a/tests/janet/num_lit-negative-radix.txt b/spec/unsupported_lexers/janet/num_lit-negative-radix.txt similarity index 100% rename from tests/janet/num_lit-negative-radix.txt rename to spec/unsupported_lexers/janet/num_lit-negative-radix.txt diff --git a/tests/janet/num_lit-radix-with-exponent.txt b/spec/unsupported_lexers/janet/num_lit-radix-with-exponent.txt similarity index 100% rename from tests/janet/num_lit-radix-with-exponent.txt rename to spec/unsupported_lexers/janet/num_lit-radix-with-exponent.txt diff --git a/tests/janet/num_lit-radix.txt b/spec/unsupported_lexers/janet/num_lit-radix.txt similarity index 100% rename from tests/janet/num_lit-radix.txt rename to spec/unsupported_lexers/janet/num_lit-radix.txt diff --git a/tests/janet/num_lit-shouting-double-with-exponent.txt b/spec/unsupported_lexers/janet/num_lit-shouting-double-with-exponent.txt similarity index 100% rename from tests/janet/num_lit-shouting-double-with-exponent.txt rename to spec/unsupported_lexers/janet/num_lit-shouting-double-with-exponent.txt diff --git a/tests/janet/par_arr_lit-empty.txt b/spec/unsupported_lexers/janet/par_arr_lit-empty.txt similarity index 100% rename from tests/janet/par_arr_lit-empty.txt rename to spec/unsupported_lexers/janet/par_arr_lit-empty.txt diff --git a/tests/janet/par_arr_lit-recursive.txt b/spec/unsupported_lexers/janet/par_arr_lit-recursive.txt similarity index 100% rename from tests/janet/par_arr_lit-recursive.txt rename to spec/unsupported_lexers/janet/par_arr_lit-recursive.txt diff --git a/tests/janet/par_arr_lit-simple.txt b/spec/unsupported_lexers/janet/par_arr_lit-simple.txt similarity index 100% rename from tests/janet/par_arr_lit-simple.txt rename to spec/unsupported_lexers/janet/par_arr_lit-simple.txt diff --git a/tests/janet/par_tup_lit-empty.txt b/spec/unsupported_lexers/janet/par_tup_lit-empty.txt similarity index 100% rename from tests/janet/par_tup_lit-empty.txt rename to spec/unsupported_lexers/janet/par_tup_lit-empty.txt diff --git a/tests/janet/par_tup_lit-recurisve.txt b/spec/unsupported_lexers/janet/par_tup_lit-recurisve.txt similarity index 100% rename from tests/janet/par_tup_lit-recurisve.txt rename to spec/unsupported_lexers/janet/par_tup_lit-recurisve.txt diff --git a/tests/janet/par_tup_lit-simple.txt b/spec/unsupported_lexers/janet/par_tup_lit-simple.txt similarity index 100% rename from tests/janet/par_tup_lit-simple.txt rename to spec/unsupported_lexers/janet/par_tup_lit-simple.txt diff --git a/tests/janet/qq_lit-paren-tuple.txt b/spec/unsupported_lexers/janet/qq_lit-paren-tuple.txt similarity index 100% rename from tests/janet/qq_lit-paren-tuple.txt rename to spec/unsupported_lexers/janet/qq_lit-paren-tuple.txt diff --git a/tests/janet/qq_lit-simple.txt b/spec/unsupported_lexers/janet/qq_lit-simple.txt similarity index 100% rename from tests/janet/qq_lit-simple.txt rename to spec/unsupported_lexers/janet/qq_lit-simple.txt diff --git a/tests/janet/quote_lit-simple.txt b/spec/unsupported_lexers/janet/quote_lit-simple.txt similarity index 100% rename from tests/janet/quote_lit-simple.txt rename to spec/unsupported_lexers/janet/quote_lit-simple.txt diff --git a/tests/janet/quote_lit-tuple.txt b/spec/unsupported_lexers/janet/quote_lit-tuple.txt similarity index 100% rename from tests/janet/quote_lit-tuple.txt rename to spec/unsupported_lexers/janet/quote_lit-tuple.txt diff --git a/tests/janet/short_fn_lit-call.txt b/spec/unsupported_lexers/janet/short_fn_lit-call.txt similarity index 100% rename from tests/janet/short_fn_lit-call.txt rename to spec/unsupported_lexers/janet/short_fn_lit-call.txt diff --git a/tests/janet/short_fn_lit-keyword.txt b/spec/unsupported_lexers/janet/short_fn_lit-keyword.txt similarity index 100% rename from tests/janet/short_fn_lit-keyword.txt rename to spec/unsupported_lexers/janet/short_fn_lit-keyword.txt diff --git a/tests/janet/short_fn_lit-number.txt b/spec/unsupported_lexers/janet/short_fn_lit-number.txt similarity index 100% rename from tests/janet/short_fn_lit-number.txt rename to spec/unsupported_lexers/janet/short_fn_lit-number.txt diff --git a/tests/janet/short_fn_lit-square-bracket-array.txt b/spec/unsupported_lexers/janet/short_fn_lit-square-bracket-array.txt similarity index 100% rename from tests/janet/short_fn_lit-square-bracket-array.txt rename to spec/unsupported_lexers/janet/short_fn_lit-square-bracket-array.txt diff --git a/tests/janet/short_fn_lit-square-bracket-tuple.txt b/spec/unsupported_lexers/janet/short_fn_lit-square-bracket-tuple.txt similarity index 100% rename from tests/janet/short_fn_lit-square-bracket-tuple.txt rename to spec/unsupported_lexers/janet/short_fn_lit-square-bracket-tuple.txt diff --git a/tests/janet/short_fn_lit-string.txt b/spec/unsupported_lexers/janet/short_fn_lit-string.txt similarity index 100% rename from tests/janet/short_fn_lit-string.txt rename to spec/unsupported_lexers/janet/short_fn_lit-string.txt diff --git a/tests/janet/short_fn_lit-struct.txt b/spec/unsupported_lexers/janet/short_fn_lit-struct.txt similarity index 100% rename from tests/janet/short_fn_lit-struct.txt rename to spec/unsupported_lexers/janet/short_fn_lit-struct.txt diff --git a/tests/janet/short_fn_lit-symbol.txt b/spec/unsupported_lexers/janet/short_fn_lit-symbol.txt similarity index 100% rename from tests/janet/short_fn_lit-symbol.txt rename to spec/unsupported_lexers/janet/short_fn_lit-symbol.txt diff --git a/tests/janet/splice_lit-in-call.txt b/spec/unsupported_lexers/janet/splice_lit-in-call.txt similarity index 100% rename from tests/janet/splice_lit-in-call.txt rename to spec/unsupported_lexers/janet/splice_lit-in-call.txt diff --git a/tests/janet/sqr_arr_lit-empty.txt b/spec/unsupported_lexers/janet/sqr_arr_lit-empty.txt similarity index 100% rename from tests/janet/sqr_arr_lit-empty.txt rename to spec/unsupported_lexers/janet/sqr_arr_lit-empty.txt diff --git a/tests/janet/sqr_arr_lit-recursive.txt b/spec/unsupported_lexers/janet/sqr_arr_lit-recursive.txt similarity index 100% rename from tests/janet/sqr_arr_lit-recursive.txt rename to spec/unsupported_lexers/janet/sqr_arr_lit-recursive.txt diff --git a/tests/janet/sqr_arr_lit-simple.txt b/spec/unsupported_lexers/janet/sqr_arr_lit-simple.txt similarity index 100% rename from tests/janet/sqr_arr_lit-simple.txt rename to spec/unsupported_lexers/janet/sqr_arr_lit-simple.txt diff --git a/tests/janet/sqr_tup_lit-empty.txt b/spec/unsupported_lexers/janet/sqr_tup_lit-empty.txt similarity index 100% rename from tests/janet/sqr_tup_lit-empty.txt rename to spec/unsupported_lexers/janet/sqr_tup_lit-empty.txt diff --git a/tests/janet/sqr_tup_lit-recursive.txt b/spec/unsupported_lexers/janet/sqr_tup_lit-recursive.txt similarity index 100% rename from tests/janet/sqr_tup_lit-recursive.txt rename to spec/unsupported_lexers/janet/sqr_tup_lit-recursive.txt diff --git a/tests/janet/sqr_tup_lit-simple.txt b/spec/unsupported_lexers/janet/sqr_tup_lit-simple.txt similarity index 100% rename from tests/janet/sqr_tup_lit-simple.txt rename to spec/unsupported_lexers/janet/sqr_tup_lit-simple.txt diff --git a/tests/janet/str_lit-multiline.txt b/spec/unsupported_lexers/janet/str_lit-multiline.txt similarity index 100% rename from tests/janet/str_lit-multiline.txt rename to spec/unsupported_lexers/janet/str_lit-multiline.txt diff --git a/tests/janet/str_lit-simple.txt b/spec/unsupported_lexers/janet/str_lit-simple.txt similarity index 100% rename from tests/janet/str_lit-simple.txt rename to spec/unsupported_lexers/janet/str_lit-simple.txt diff --git a/tests/janet/str_lit-with-escapes.txt b/spec/unsupported_lexers/janet/str_lit-with-escapes.txt similarity index 100% rename from tests/janet/str_lit-with-escapes.txt rename to spec/unsupported_lexers/janet/str_lit-with-escapes.txt diff --git a/tests/janet/str_lit-with-hex-escape.txt b/spec/unsupported_lexers/janet/str_lit-with-hex-escape.txt similarity index 100% rename from tests/janet/str_lit-with-hex-escape.txt rename to spec/unsupported_lexers/janet/str_lit-with-hex-escape.txt diff --git a/tests/janet/str_lit-with-utf8-four-hex-digits-escape.txt b/spec/unsupported_lexers/janet/str_lit-with-utf8-four-hex-digits-escape.txt similarity index 100% rename from tests/janet/str_lit-with-utf8-four-hex-digits-escape.txt rename to spec/unsupported_lexers/janet/str_lit-with-utf8-four-hex-digits-escape.txt diff --git a/tests/janet/str_lit-with-utf8-six-hex-digits-escape.txt b/spec/unsupported_lexers/janet/str_lit-with-utf8-six-hex-digits-escape.txt similarity index 100% rename from tests/janet/str_lit-with-utf8-six-hex-digits-escape.txt rename to spec/unsupported_lexers/janet/str_lit-with-utf8-six-hex-digits-escape.txt diff --git a/tests/janet/struct_lit-empty.txt b/spec/unsupported_lexers/janet/struct_lit-empty.txt similarity index 100% rename from tests/janet/struct_lit-empty.txt rename to spec/unsupported_lexers/janet/struct_lit-empty.txt diff --git a/tests/janet/struct_lit-recursive.txt b/spec/unsupported_lexers/janet/struct_lit-recursive.txt similarity index 100% rename from tests/janet/struct_lit-recursive.txt rename to spec/unsupported_lexers/janet/struct_lit-recursive.txt diff --git a/tests/janet/struct_lit-simple.txt b/spec/unsupported_lexers/janet/struct_lit-simple.txt similarity index 100% rename from tests/janet/struct_lit-simple.txt rename to spec/unsupported_lexers/janet/struct_lit-simple.txt diff --git a/tests/janet/sym_lit-alphabetic.txt b/spec/unsupported_lexers/janet/sym_lit-alphabetic.txt similarity index 100% rename from tests/janet/sym_lit-alphabetic.txt rename to spec/unsupported_lexers/janet/sym_lit-alphabetic.txt diff --git a/tests/janet/sym_lit-ear-muffs.txt b/spec/unsupported_lexers/janet/sym_lit-ear-muffs.txt similarity index 100% rename from tests/janet/sym_lit-ear-muffs.txt rename to spec/unsupported_lexers/janet/sym_lit-ear-muffs.txt diff --git a/tests/janet/sym_lit-full-of-stars.txt b/spec/unsupported_lexers/janet/sym_lit-full-of-stars.txt similarity index 100% rename from tests/janet/sym_lit-full-of-stars.txt rename to spec/unsupported_lexers/janet/sym_lit-full-of-stars.txt diff --git a/tests/janet/sym_lit-kebab-case.txt b/spec/unsupported_lexers/janet/sym_lit-kebab-case.txt similarity index 100% rename from tests/janet/sym_lit-kebab-case.txt rename to spec/unsupported_lexers/janet/sym_lit-kebab-case.txt diff --git a/tests/janet/sym_lit-legal-but-hard-to-read.txt b/spec/unsupported_lexers/janet/sym_lit-legal-but-hard-to-read.txt similarity index 100% rename from tests/janet/sym_lit-legal-but-hard-to-read.txt rename to spec/unsupported_lexers/janet/sym_lit-legal-but-hard-to-read.txt diff --git a/tests/janet/sym_lit-name-with-module-name.txt b/spec/unsupported_lexers/janet/sym_lit-name-with-module-name.txt similarity index 100% rename from tests/janet/sym_lit-name-with-module-name.txt rename to spec/unsupported_lexers/janet/sym_lit-name-with-module-name.txt diff --git a/tests/janet/sym_lit-snake-case.txt b/spec/unsupported_lexers/janet/sym_lit-snake-case.txt similarity index 100% rename from tests/janet/sym_lit-snake-case.txt rename to spec/unsupported_lexers/janet/sym_lit-snake-case.txt diff --git a/tests/janet/tbl_lit-empty.txt b/spec/unsupported_lexers/janet/tbl_lit-empty.txt similarity index 100% rename from tests/janet/tbl_lit-empty.txt rename to spec/unsupported_lexers/janet/tbl_lit-empty.txt diff --git a/tests/janet/tbl_lit-recursive.txt b/spec/unsupported_lexers/janet/tbl_lit-recursive.txt similarity index 100% rename from tests/janet/tbl_lit-recursive.txt rename to spec/unsupported_lexers/janet/tbl_lit-recursive.txt diff --git a/tests/janet/tbl_lit-simple.txt b/spec/unsupported_lexers/janet/tbl_lit-simple.txt similarity index 100% rename from tests/janet/tbl_lit-simple.txt rename to spec/unsupported_lexers/janet/tbl_lit-simple.txt diff --git a/tests/janet/unquote_lit-in-compile-call.txt b/spec/unsupported_lexers/janet/unquote_lit-in-compile-call.txt similarity index 100% rename from tests/janet/unquote_lit-in-compile-call.txt rename to spec/unsupported_lexers/janet/unquote_lit-in-compile-call.txt diff --git a/tests/janet/unquote_lit-in-quasiquote.txt b/spec/unsupported_lexers/janet/unquote_lit-in-quasiquote.txt similarity index 100% rename from tests/janet/unquote_lit-in-quasiquote.txt rename to spec/unsupported_lexers/janet/unquote_lit-in-quasiquote.txt diff --git a/tests/jslt/test_sample.txt b/spec/unsupported_lexers/jslt/test_sample.txt similarity index 100% rename from tests/jslt/test_sample.txt rename to spec/unsupported_lexers/jslt/test_sample.txt diff --git a/tests/jsonld/test_json_ld.txt b/spec/unsupported_lexers/jsonld/test_json_ld.txt similarity index 100% rename from tests/jsonld/test_json_ld.txt rename to spec/unsupported_lexers/jsonld/test_json_ld.txt diff --git a/tests/julia-repl/test_repl.txt b/spec/unsupported_lexers/julia-repl/test_repl.txt similarity index 100% rename from tests/julia-repl/test_repl.txt rename to spec/unsupported_lexers/julia-repl/test_repl.txt diff --git a/tests/kusto/test_kusto.txt b/spec/unsupported_lexers/kusto/test_kusto.txt similarity index 100% rename from tests/kusto/test_kusto.txt rename to spec/unsupported_lexers/kusto/test_kusto.txt diff --git a/tests/less/test_single_line_comments.txt b/spec/unsupported_lexers/less/test_single_line_comments.txt similarity index 100% rename from tests/less/test_single_line_comments.txt rename to spec/unsupported_lexers/less/test_single_line_comments.txt diff --git a/tests/markdown/test_code.txt b/spec/unsupported_lexers/markdown/test_code.txt similarity index 100% rename from tests/markdown/test_code.txt rename to spec/unsupported_lexers/markdown/test_code.txt diff --git a/tests/markdown/test_headings.txt b/spec/unsupported_lexers/markdown/test_headings.txt similarity index 100% rename from tests/markdown/test_headings.txt rename to spec/unsupported_lexers/markdown/test_headings.txt diff --git a/tests/markdown/test_invalid_code.txt b/spec/unsupported_lexers/markdown/test_invalid_code.txt similarity index 100% rename from tests/markdown/test_invalid_code.txt rename to spec/unsupported_lexers/markdown/test_invalid_code.txt diff --git a/tests/markdown/test_setext_headings.txt b/spec/unsupported_lexers/markdown/test_setext_headings.txt similarity index 100% rename from tests/markdown/test_setext_headings.txt rename to spec/unsupported_lexers/markdown/test_setext_headings.txt diff --git a/tests/markdown/test_setext_subheadings.txt b/spec/unsupported_lexers/markdown/test_setext_subheadings.txt similarity index 100% rename from tests/markdown/test_setext_subheadings.txt rename to spec/unsupported_lexers/markdown/test_setext_subheadings.txt diff --git a/tests/markdown/test_subheadings.txt b/spec/unsupported_lexers/markdown/test_subheadings.txt similarity index 100% rename from tests/markdown/test_subheadings.txt rename to spec/unsupported_lexers/markdown/test_subheadings.txt diff --git a/tests/matlabsession/test_wrong_continuation.txt b/spec/unsupported_lexers/matlabsession/test_wrong_continuation.txt similarity index 100% rename from tests/matlabsession/test_wrong_continuation.txt rename to spec/unsupported_lexers/matlabsession/test_wrong_continuation.txt diff --git a/tests/md/test_bold_fenced_by_asterisk.txt b/spec/unsupported_lexers/md/test_bold_fenced_by_asterisk.txt similarity index 100% rename from tests/md/test_bold_fenced_by_asterisk.txt rename to spec/unsupported_lexers/md/test_bold_fenced_by_asterisk.txt diff --git a/tests/md/test_bold_fenced_by_underscore.txt b/spec/unsupported_lexers/md/test_bold_fenced_by_underscore.txt similarity index 100% rename from tests/md/test_bold_fenced_by_underscore.txt rename to spec/unsupported_lexers/md/test_bold_fenced_by_underscore.txt diff --git a/tests/md/test_bulleted_list_1.txt b/spec/unsupported_lexers/md/test_bulleted_list_1.txt similarity index 100% rename from tests/md/test_bulleted_list_1.txt rename to spec/unsupported_lexers/md/test_bulleted_list_1.txt diff --git a/tests/md/test_bulleted_list_2.txt b/spec/unsupported_lexers/md/test_bulleted_list_2.txt similarity index 100% rename from tests/md/test_bulleted_list_2.txt rename to spec/unsupported_lexers/md/test_bulleted_list_2.txt diff --git a/tests/md/test_bulleted_list_3.txt b/spec/unsupported_lexers/md/test_bulleted_list_3.txt similarity index 100% rename from tests/md/test_bulleted_list_3.txt rename to spec/unsupported_lexers/md/test_bulleted_list_3.txt diff --git a/tests/md/test_bulleted_list_4.txt b/spec/unsupported_lexers/md/test_bulleted_list_4.txt similarity index 100% rename from tests/md/test_bulleted_list_4.txt rename to spec/unsupported_lexers/md/test_bulleted_list_4.txt diff --git a/tests/md/test_code_block_fenced_by_backticks.txt b/spec/unsupported_lexers/md/test_code_block_fenced_by_backticks.txt similarity index 100% rename from tests/md/test_code_block_fenced_by_backticks.txt rename to spec/unsupported_lexers/md/test_code_block_fenced_by_backticks.txt diff --git a/tests/md/test_code_block_with_language.txt b/spec/unsupported_lexers/md/test_code_block_with_language.txt similarity index 100% rename from tests/md/test_code_block_with_language.txt rename to spec/unsupported_lexers/md/test_code_block_with_language.txt diff --git a/tests/md/test_escape_italics.txt b/spec/unsupported_lexers/md/test_escape_italics.txt similarity index 100% rename from tests/md/test_escape_italics.txt rename to spec/unsupported_lexers/md/test_escape_italics.txt diff --git a/tests/md/test_inline_code.txt b/spec/unsupported_lexers/md/test_inline_code.txt similarity index 100% rename from tests/md/test_inline_code.txt rename to spec/unsupported_lexers/md/test_inline_code.txt diff --git a/tests/md/test_inline_code_after_block.txt b/spec/unsupported_lexers/md/test_inline_code_after_block.txt similarity index 100% rename from tests/md/test_inline_code_after_block.txt rename to spec/unsupported_lexers/md/test_inline_code_after_block.txt diff --git a/tests/md/test_inline_code_in_list.txt b/spec/unsupported_lexers/md/test_inline_code_in_list.txt similarity index 100% rename from tests/md/test_inline_code_in_list.txt rename to spec/unsupported_lexers/md/test_inline_code_in_list.txt diff --git a/tests/md/test_invalid_bold.txt b/spec/unsupported_lexers/md/test_invalid_bold.txt similarity index 100% rename from tests/md/test_invalid_bold.txt rename to spec/unsupported_lexers/md/test_invalid_bold.txt diff --git a/tests/md/test_invalid_italics.txt b/spec/unsupported_lexers/md/test_invalid_italics.txt similarity index 100% rename from tests/md/test_invalid_italics.txt rename to spec/unsupported_lexers/md/test_invalid_italics.txt diff --git a/tests/md/test_italics_and_bold.txt b/spec/unsupported_lexers/md/test_italics_and_bold.txt similarity index 100% rename from tests/md/test_italics_and_bold.txt rename to spec/unsupported_lexers/md/test_italics_and_bold.txt diff --git a/tests/md/test_italics_fenced_by_asterisk.txt b/spec/unsupported_lexers/md/test_italics_fenced_by_asterisk.txt similarity index 100% rename from tests/md/test_italics_fenced_by_asterisk.txt rename to spec/unsupported_lexers/md/test_italics_fenced_by_asterisk.txt diff --git a/tests/md/test_italics_fenced_by_underscore.txt b/spec/unsupported_lexers/md/test_italics_fenced_by_underscore.txt similarity index 100% rename from tests/md/test_italics_fenced_by_underscore.txt rename to spec/unsupported_lexers/md/test_italics_fenced_by_underscore.txt diff --git a/tests/md/test_italics_no_multiline.txt b/spec/unsupported_lexers/md/test_italics_no_multiline.txt similarity index 100% rename from tests/md/test_italics_no_multiline.txt rename to spec/unsupported_lexers/md/test_italics_no_multiline.txt diff --git a/tests/md/test_links.txt b/spec/unsupported_lexers/md/test_links.txt similarity index 100% rename from tests/md/test_links.txt rename to spec/unsupported_lexers/md/test_links.txt diff --git a/tests/md/test_mentions.txt b/spec/unsupported_lexers/md/test_mentions.txt similarity index 100% rename from tests/md/test_mentions.txt rename to spec/unsupported_lexers/md/test_mentions.txt diff --git a/tests/md/test_numbered_list.txt b/spec/unsupported_lexers/md/test_numbered_list.txt similarity index 100% rename from tests/md/test_numbered_list.txt rename to spec/unsupported_lexers/md/test_numbered_list.txt diff --git a/tests/md/test_quote.txt b/spec/unsupported_lexers/md/test_quote.txt similarity index 100% rename from tests/md/test_quote.txt rename to spec/unsupported_lexers/md/test_quote.txt diff --git a/tests/md/test_reference_style_links.txt b/spec/unsupported_lexers/md/test_reference_style_links.txt similarity index 100% rename from tests/md/test_reference_style_links.txt rename to spec/unsupported_lexers/md/test_reference_style_links.txt diff --git a/tests/md/test_strikethrough.txt b/spec/unsupported_lexers/md/test_strikethrough.txt similarity index 100% rename from tests/md/test_strikethrough.txt rename to spec/unsupported_lexers/md/test_strikethrough.txt diff --git a/tests/md/test_task_list.txt b/spec/unsupported_lexers/md/test_task_list.txt similarity index 100% rename from tests/md/test_task_list.txt rename to spec/unsupported_lexers/md/test_task_list.txt diff --git a/tests/md/test_topics.txt b/spec/unsupported_lexers/md/test_topics.txt similarity index 100% rename from tests/md/test_topics.txt rename to spec/unsupported_lexers/md/test_topics.txt diff --git a/tests/mips/deprecated_substrings.txt b/spec/unsupported_lexers/mips/deprecated_substrings.txt similarity index 100% rename from tests/mips/deprecated_substrings.txt rename to spec/unsupported_lexers/mips/deprecated_substrings.txt diff --git a/tests/mips/keyword_substrings.txt b/spec/unsupported_lexers/mips/keyword_substrings.txt similarity index 100% rename from tests/mips/keyword_substrings.txt rename to spec/unsupported_lexers/mips/keyword_substrings.txt diff --git a/tests/mips/variable_substrings.txt b/spec/unsupported_lexers/mips/variable_substrings.txt similarity index 100% rename from tests/mips/variable_substrings.txt rename to spec/unsupported_lexers/mips/variable_substrings.txt diff --git a/tests/mojo/test_floats.txt b/spec/unsupported_lexers/mojo/test_floats.txt similarity index 100% rename from tests/mojo/test_floats.txt rename to spec/unsupported_lexers/mojo/test_floats.txt diff --git a/tests/mojo/test_kw.txt b/spec/unsupported_lexers/mojo/test_kw.txt similarity index 100% rename from tests/mojo/test_kw.txt rename to spec/unsupported_lexers/mojo/test_kw.txt diff --git a/tests/mojo/test_needs_name.txt b/spec/unsupported_lexers/mojo/test_needs_name.txt similarity index 100% rename from tests/mojo/test_needs_name.txt rename to spec/unsupported_lexers/mojo/test_needs_name.txt diff --git a/tests/mojo/test_soft_kwds.txt b/spec/unsupported_lexers/mojo/test_soft_kwds.txt similarity index 100% rename from tests/mojo/test_soft_kwds.txt rename to spec/unsupported_lexers/mojo/test_soft_kwds.txt diff --git a/tests/omg-idl/annotation_named_params.txt b/spec/unsupported_lexers/omg-idl/annotation_named_params.txt similarity index 100% rename from tests/omg-idl/annotation_named_params.txt rename to spec/unsupported_lexers/omg-idl/annotation_named_params.txt diff --git a/tests/omg-idl/enumerators.txt b/spec/unsupported_lexers/omg-idl/enumerators.txt similarity index 100% rename from tests/omg-idl/enumerators.txt rename to spec/unsupported_lexers/omg-idl/enumerators.txt diff --git a/tests/peg/test_basic.txt b/spec/unsupported_lexers/peg/test_basic.txt similarity index 100% rename from tests/peg/test_basic.txt rename to spec/unsupported_lexers/peg/test_basic.txt diff --git a/tests/peg/test_modified_strings.txt b/spec/unsupported_lexers/peg/test_modified_strings.txt similarity index 100% rename from tests/peg/test_modified_strings.txt rename to spec/unsupported_lexers/peg/test_modified_strings.txt diff --git a/tests/peg/test_operators.txt b/spec/unsupported_lexers/peg/test_operators.txt similarity index 100% rename from tests/peg/test_operators.txt rename to spec/unsupported_lexers/peg/test_operators.txt diff --git a/tests/praat/test_broken_unquoted_string.txt b/spec/unsupported_lexers/praat/test_broken_unquoted_string.txt similarity index 100% rename from tests/praat/test_broken_unquoted_string.txt rename to spec/unsupported_lexers/praat/test_broken_unquoted_string.txt diff --git a/tests/praat/test_function_call.txt b/spec/unsupported_lexers/praat/test_function_call.txt similarity index 100% rename from tests/praat/test_function_call.txt rename to spec/unsupported_lexers/praat/test_function_call.txt diff --git a/tests/praat/test_inline_if.txt b/spec/unsupported_lexers/praat/test_inline_if.txt similarity index 100% rename from tests/praat/test_inline_if.txt rename to spec/unsupported_lexers/praat/test_inline_if.txt diff --git a/tests/praat/test_interpolated_indexed_numeric_with_precision.txt b/spec/unsupported_lexers/praat/test_interpolated_indexed_numeric_with_precision.txt similarity index 100% rename from tests/praat/test_interpolated_indexed_numeric_with_precision.txt rename to spec/unsupported_lexers/praat/test_interpolated_indexed_numeric_with_precision.txt diff --git a/tests/praat/test_interpolated_local_numeric_with_precision.txt b/spec/unsupported_lexers/praat/test_interpolated_local_numeric_with_precision.txt similarity index 100% rename from tests/praat/test_interpolated_local_numeric_with_precision.txt rename to spec/unsupported_lexers/praat/test_interpolated_local_numeric_with_precision.txt diff --git a/tests/praat/test_interpolated_numeric_hash.txt b/spec/unsupported_lexers/praat/test_interpolated_numeric_hash.txt similarity index 100% rename from tests/praat/test_interpolated_numeric_hash.txt rename to spec/unsupported_lexers/praat/test_interpolated_numeric_hash.txt diff --git a/tests/praat/test_interpolated_numeric_indexed.txt b/spec/unsupported_lexers/praat/test_interpolated_numeric_indexed.txt similarity index 100% rename from tests/praat/test_interpolated_numeric_indexed.txt rename to spec/unsupported_lexers/praat/test_interpolated_numeric_indexed.txt diff --git a/tests/praat/test_interpolated_numeric_with_precision.txt b/spec/unsupported_lexers/praat/test_interpolated_numeric_with_precision.txt similarity index 100% rename from tests/praat/test_interpolated_numeric_with_precision.txt rename to spec/unsupported_lexers/praat/test_interpolated_numeric_with_precision.txt diff --git a/tests/praat/test_interpolated_string_hash.txt b/spec/unsupported_lexers/praat/test_interpolated_string_hash.txt similarity index 100% rename from tests/praat/test_interpolated_string_hash.txt rename to spec/unsupported_lexers/praat/test_interpolated_string_hash.txt diff --git a/tests/praat/test_interpolated_string_indexed.txt b/spec/unsupported_lexers/praat/test_interpolated_string_indexed.txt similarity index 100% rename from tests/praat/test_interpolated_string_indexed.txt rename to spec/unsupported_lexers/praat/test_interpolated_string_indexed.txt diff --git a/tests/praat/test_interpolation_boundary.txt b/spec/unsupported_lexers/praat/test_interpolation_boundary.txt similarity index 100% rename from tests/praat/test_interpolation_boundary.txt rename to spec/unsupported_lexers/praat/test_interpolation_boundary.txt diff --git a/tests/praat/test_numeric_assignment.txt b/spec/unsupported_lexers/praat/test_numeric_assignment.txt similarity index 100% rename from tests/praat/test_numeric_assignment.txt rename to spec/unsupported_lexers/praat/test_numeric_assignment.txt diff --git a/tests/praat/test_string_assignment.txt b/spec/unsupported_lexers/praat/test_string_assignment.txt similarity index 100% rename from tests/praat/test_string_assignment.txt rename to spec/unsupported_lexers/praat/test_string_assignment.txt diff --git a/tests/praat/test_string_escaped_quotes.txt b/spec/unsupported_lexers/praat/test_string_escaped_quotes.txt similarity index 100% rename from tests/praat/test_string_escaped_quotes.txt rename to spec/unsupported_lexers/praat/test_string_escaped_quotes.txt diff --git a/tests/procfile/test_basic.txt b/spec/unsupported_lexers/procfile/test_basic.txt similarity index 100% rename from tests/procfile/test_basic.txt rename to spec/unsupported_lexers/procfile/test_basic.txt diff --git a/tests/ptx/test_ptx_snippet.txt b/spec/unsupported_lexers/ptx/test_ptx_snippet.txt similarity index 100% rename from tests/ptx/test_ptx_snippet.txt rename to spec/unsupported_lexers/ptx/test_ptx_snippet.txt diff --git a/tests/pwsh-session/test_continuation.txt b/spec/unsupported_lexers/pwsh-session/test_continuation.txt similarity index 100% rename from tests/pwsh-session/test_continuation.txt rename to spec/unsupported_lexers/pwsh-session/test_continuation.txt diff --git a/tests/pycon/broken_tb.txt b/spec/unsupported_lexers/pycon/broken_tb.txt similarity index 100% rename from tests/pycon/broken_tb.txt rename to spec/unsupported_lexers/pycon/broken_tb.txt diff --git a/tests/pycon/multiple_tb.txt b/spec/unsupported_lexers/pycon/multiple_tb.txt similarity index 100% rename from tests/pycon/multiple_tb.txt rename to spec/unsupported_lexers/pycon/multiple_tb.txt diff --git a/tests/pycon/unterminated_tb.txt b/spec/unsupported_lexers/pycon/unterminated_tb.txt similarity index 100% rename from tests/pycon/unterminated_tb.txt rename to spec/unsupported_lexers/pycon/unterminated_tb.txt diff --git a/tests/robotframework/test_basic.txt b/spec/unsupported_lexers/robotframework/test_basic.txt similarity index 100% rename from tests/robotframework/test_basic.txt rename to spec/unsupported_lexers/robotframework/test_basic.txt diff --git a/tests/turtle/test_prefixed_name_starting_with_number.txt b/spec/unsupported_lexers/shexc/test_prefixed_name_starting_with_number.txt similarity index 100% rename from tests/turtle/test_prefixed_name_starting_with_number.txt rename to spec/unsupported_lexers/shexc/test_prefixed_name_starting_with_number.txt diff --git a/tests/snbt/json.txt b/spec/unsupported_lexers/snbt/json.txt similarity index 100% rename from tests/snbt/json.txt rename to spec/unsupported_lexers/snbt/json.txt diff --git a/tests/snbt/literals.txt b/spec/unsupported_lexers/snbt/literals.txt similarity index 100% rename from tests/snbt/literals.txt rename to spec/unsupported_lexers/snbt/literals.txt diff --git a/tests/snbt/multiline.txt b/spec/unsupported_lexers/snbt/multiline.txt similarity index 100% rename from tests/snbt/multiline.txt rename to spec/unsupported_lexers/snbt/multiline.txt diff --git a/tests/snbt/nesting.txt b/spec/unsupported_lexers/snbt/nesting.txt similarity index 100% rename from tests/snbt/nesting.txt rename to spec/unsupported_lexers/snbt/nesting.txt diff --git a/tests/snbt/quoted_keys.txt b/spec/unsupported_lexers/snbt/quoted_keys.txt similarity index 100% rename from tests/snbt/quoted_keys.txt rename to spec/unsupported_lexers/snbt/quoted_keys.txt diff --git a/tests/soong/test_comments.txt b/spec/unsupported_lexers/soong/test_comments.txt similarity index 100% rename from tests/soong/test_comments.txt rename to spec/unsupported_lexers/soong/test_comments.txt diff --git a/tests/soong/test_modules.txt b/spec/unsupported_lexers/soong/test_modules.txt similarity index 100% rename from tests/soong/test_modules.txt rename to spec/unsupported_lexers/soong/test_modules.txt diff --git a/tests/soong/test_variable_assignment_after_module.txt b/spec/unsupported_lexers/soong/test_variable_assignment_after_module.txt similarity index 100% rename from tests/soong/test_variable_assignment_after_module.txt rename to spec/unsupported_lexers/soong/test_variable_assignment_after_module.txt diff --git a/tests/soong/test_variable_assignments.txt b/spec/unsupported_lexers/soong/test_variable_assignments.txt similarity index 100% rename from tests/soong/test_variable_assignments.txt rename to spec/unsupported_lexers/soong/test_variable_assignments.txt diff --git a/tests/teal/test_comments.txt b/spec/unsupported_lexers/teal/test_comments.txt similarity index 100% rename from tests/teal/test_comments.txt rename to spec/unsupported_lexers/teal/test_comments.txt diff --git a/tests/teal/test_literals.txt b/spec/unsupported_lexers/teal/test_literals.txt similarity index 100% rename from tests/teal/test_literals.txt rename to spec/unsupported_lexers/teal/test_literals.txt diff --git a/tests/teal/test_strings.txt b/spec/unsupported_lexers/teal/test_strings.txt similarity index 100% rename from tests/teal/test_strings.txt rename to spec/unsupported_lexers/teal/test_strings.txt diff --git a/tests/thingsdb/basic.txt b/spec/unsupported_lexers/thingsdb/basic.txt similarity index 100% rename from tests/thingsdb/basic.txt rename to spec/unsupported_lexers/thingsdb/basic.txt diff --git a/tests/unixconfig/etc_group.txt b/spec/unsupported_lexers/unixconfig/etc_group.txt similarity index 100% rename from tests/unixconfig/etc_group.txt rename to spec/unsupported_lexers/unixconfig/etc_group.txt diff --git a/tests/unixconfig/etc_passwd.txt b/spec/unsupported_lexers/unixconfig/etc_passwd.txt similarity index 100% rename from tests/unixconfig/etc_passwd.txt rename to spec/unsupported_lexers/unixconfig/etc_passwd.txt diff --git a/tests/unixconfig/etc_shadow.txt b/spec/unsupported_lexers/unixconfig/etc_shadow.txt similarity index 100% rename from tests/unixconfig/etc_shadow.txt rename to spec/unsupported_lexers/unixconfig/etc_shadow.txt diff --git a/tests/urlencoded/example.txt b/spec/unsupported_lexers/urlencoded/example.txt similarity index 100% rename from tests/urlencoded/example.txt rename to spec/unsupported_lexers/urlencoded/example.txt diff --git a/tests/usd/basic.txt b/spec/unsupported_lexers/usd/basic.txt similarity index 100% rename from tests/usd/basic.txt rename to spec/unsupported_lexers/usd/basic.txt diff --git a/tests/usd/test_attribute.txt b/spec/unsupported_lexers/usd/test_attribute.txt similarity index 100% rename from tests/usd/test_attribute.txt rename to spec/unsupported_lexers/usd/test_attribute.txt diff --git a/tests/usd/test_composition_arcs.txt b/spec/unsupported_lexers/usd/test_composition_arcs.txt similarity index 100% rename from tests/usd/test_composition_arcs.txt rename to spec/unsupported_lexers/usd/test_composition_arcs.txt diff --git a/tests/usd/test_metadata.txt b/spec/unsupported_lexers/usd/test_metadata.txt similarity index 100% rename from tests/usd/test_metadata.txt rename to spec/unsupported_lexers/usd/test_metadata.txt diff --git a/tests/usd/test_numbers.txt b/spec/unsupported_lexers/usd/test_numbers.txt similarity index 100% rename from tests/usd/test_numbers.txt rename to spec/unsupported_lexers/usd/test_numbers.txt diff --git a/tests/usd/test_outer_match_at_sign.txt b/spec/unsupported_lexers/usd/test_outer_match_at_sign.txt similarity index 100% rename from tests/usd/test_outer_match_at_sign.txt rename to spec/unsupported_lexers/usd/test_outer_match_at_sign.txt diff --git a/tests/usd/test_outer_match_double.txt b/spec/unsupported_lexers/usd/test_outer_match_double.txt similarity index 100% rename from tests/usd/test_outer_match_double.txt rename to spec/unsupported_lexers/usd/test_outer_match_double.txt diff --git a/tests/usd/test_outer_match_single.txt b/spec/unsupported_lexers/usd/test_outer_match_single.txt similarity index 100% rename from tests/usd/test_outer_match_single.txt rename to spec/unsupported_lexers/usd/test_outer_match_single.txt diff --git a/tests/usd/test_string_multiple_line.txt b/spec/unsupported_lexers/usd/test_string_multiple_line.txt similarity index 100% rename from tests/usd/test_string_multiple_line.txt rename to spec/unsupported_lexers/usd/test_string_multiple_line.txt diff --git a/tests/usd/test_string_priority.txt b/spec/unsupported_lexers/usd/test_string_priority.txt similarity index 100% rename from tests/usd/test_string_priority.txt rename to spec/unsupported_lexers/usd/test_string_priority.txt diff --git a/tests/usd/test_string_single_line.txt b/spec/unsupported_lexers/usd/test_string_single_line.txt similarity index 100% rename from tests/usd/test_string_single_line.txt rename to spec/unsupported_lexers/usd/test_string_single_line.txt diff --git a/tests/vbscript/test_floats.txt b/spec/unsupported_lexers/vbscript/test_floats.txt similarity index 100% rename from tests/vbscript/test_floats.txt rename to spec/unsupported_lexers/vbscript/test_floats.txt diff --git a/tests/vbscript/test_floats_multiple.txt b/spec/unsupported_lexers/vbscript/test_floats_multiple.txt similarity index 100% rename from tests/vbscript/test_floats_multiple.txt rename to spec/unsupported_lexers/vbscript/test_floats_multiple.txt diff --git a/tests/vbscript/test_integers.txt b/spec/unsupported_lexers/vbscript/test_integers.txt similarity index 100% rename from tests/vbscript/test_integers.txt rename to spec/unsupported_lexers/vbscript/test_integers.txt diff --git a/tests/vbscript/test_invalid_character.txt b/spec/unsupported_lexers/vbscript/test_invalid_character.txt similarity index 100% rename from tests/vbscript/test_invalid_character.txt rename to spec/unsupported_lexers/vbscript/test_invalid_character.txt diff --git a/tests/vbscript/test_names.txt b/spec/unsupported_lexers/vbscript/test_names.txt similarity index 100% rename from tests/vbscript/test_names.txt rename to spec/unsupported_lexers/vbscript/test_names.txt diff --git a/tests/vbscript/test_reject_almost_float.txt b/spec/unsupported_lexers/vbscript/test_reject_almost_float.txt similarity index 100% rename from tests/vbscript/test_reject_almost_float.txt rename to spec/unsupported_lexers/vbscript/test_reject_almost_float.txt diff --git a/tests/vbscript/test_unterminated_string.txt b/spec/unsupported_lexers/vbscript/test_unterminated_string.txt similarity index 100% rename from tests/vbscript/test_unterminated_string.txt rename to spec/unsupported_lexers/vbscript/test_unterminated_string.txt diff --git a/tests/vyper/test.txt b/spec/unsupported_lexers/vyper/test.txt similarity index 100% rename from tests/vyper/test.txt rename to spec/unsupported_lexers/vyper/test.txt diff --git a/tests/wat/test_align_and_offset_accept_hexadecimal_numbers.txt b/spec/unsupported_lexers/wat/test_align_and_offset_accept_hexadecimal_numbers.txt similarity index 100% rename from tests/wat/test_align_and_offset_accept_hexadecimal_numbers.txt rename to spec/unsupported_lexers/wat/test_align_and_offset_accept_hexadecimal_numbers.txt diff --git a/tests/wat/test_comment_with_open_paren.txt b/spec/unsupported_lexers/wat/test_comment_with_open_paren.txt similarity index 100% rename from tests/wat/test_comment_with_open_paren.txt rename to spec/unsupported_lexers/wat/test_comment_with_open_paren.txt diff --git a/tests/wat/test_comment_with_semicolon.txt b/spec/unsupported_lexers/wat/test_comment_with_semicolon.txt similarity index 100% rename from tests/wat/test_comment_with_semicolon.txt rename to spec/unsupported_lexers/wat/test_comment_with_semicolon.txt diff --git a/tests/wat/test_i32_const_is_builtin.txt b/spec/unsupported_lexers/wat/test_i32_const_is_builtin.txt similarity index 100% rename from tests/wat/test_i32_const_is_builtin.txt rename to spec/unsupported_lexers/wat/test_i32_const_is_builtin.txt diff --git a/tests/wat/test_multiline_comment.txt b/spec/unsupported_lexers/wat/test_multiline_comment.txt similarity index 100% rename from tests/wat/test_multiline_comment.txt rename to spec/unsupported_lexers/wat/test_multiline_comment.txt diff --git a/tests/wat/test_nested_comment.txt b/spec/unsupported_lexers/wat/test_nested_comment.txt similarity index 100% rename from tests/wat/test_nested_comment.txt rename to spec/unsupported_lexers/wat/test_nested_comment.txt diff --git a/tests/wat/test_string_byte_escape.txt b/spec/unsupported_lexers/wat/test_string_byte_escape.txt similarity index 100% rename from tests/wat/test_string_byte_escape.txt rename to spec/unsupported_lexers/wat/test_string_byte_escape.txt diff --git a/tests/wat/test_string_with_escape.txt b/spec/unsupported_lexers/wat/test_string_with_escape.txt similarity index 100% rename from tests/wat/test_string_with_escape.txt rename to spec/unsupported_lexers/wat/test_string_with_escape.txt diff --git a/tests/wat/test_variable_name_pattern.txt b/spec/unsupported_lexers/wat/test_variable_name_pattern.txt similarity index 100% rename from tests/wat/test_variable_name_pattern.txt rename to spec/unsupported_lexers/wat/test_variable_name_pattern.txt diff --git a/tests/wikitext/bold-italic.txt b/spec/unsupported_lexers/wikitext/bold-italic.txt similarity index 100% rename from tests/wikitext/bold-italic.txt rename to spec/unsupported_lexers/wikitext/bold-italic.txt diff --git a/tests/wikitext/entity.txt b/spec/unsupported_lexers/wikitext/entity.txt similarity index 100% rename from tests/wikitext/entity.txt rename to spec/unsupported_lexers/wikitext/entity.txt diff --git a/tests/wikitext/extlink.txt b/spec/unsupported_lexers/wikitext/extlink.txt similarity index 100% rename from tests/wikitext/extlink.txt rename to spec/unsupported_lexers/wikitext/extlink.txt diff --git a/tests/wikitext/heading.txt b/spec/unsupported_lexers/wikitext/heading.txt similarity index 100% rename from tests/wikitext/heading.txt rename to spec/unsupported_lexers/wikitext/heading.txt diff --git a/tests/wikitext/hr.txt b/spec/unsupported_lexers/wikitext/hr.txt similarity index 100% rename from tests/wikitext/hr.txt rename to spec/unsupported_lexers/wikitext/hr.txt diff --git a/tests/wikitext/html.txt b/spec/unsupported_lexers/wikitext/html.txt similarity index 100% rename from tests/wikitext/html.txt rename to spec/unsupported_lexers/wikitext/html.txt diff --git a/tests/wikitext/language-converter.txt b/spec/unsupported_lexers/wikitext/language-converter.txt similarity index 100% rename from tests/wikitext/language-converter.txt rename to spec/unsupported_lexers/wikitext/language-converter.txt diff --git a/tests/wikitext/list.txt b/spec/unsupported_lexers/wikitext/list.txt similarity index 100% rename from tests/wikitext/list.txt rename to spec/unsupported_lexers/wikitext/list.txt diff --git a/tests/wikitext/magic-link.txt b/spec/unsupported_lexers/wikitext/magic-link.txt similarity index 100% rename from tests/wikitext/magic-link.txt rename to spec/unsupported_lexers/wikitext/magic-link.txt diff --git a/tests/wikitext/magic-word.txt b/spec/unsupported_lexers/wikitext/magic-word.txt similarity index 100% rename from tests/wikitext/magic-word.txt rename to spec/unsupported_lexers/wikitext/magic-word.txt diff --git a/tests/wikitext/medialink.txt b/spec/unsupported_lexers/wikitext/medialink.txt similarity index 100% rename from tests/wikitext/medialink.txt rename to spec/unsupported_lexers/wikitext/medialink.txt diff --git a/tests/wikitext/only-highlight-first-redirect.txt b/spec/unsupported_lexers/wikitext/only-highlight-first-redirect.txt similarity index 100% rename from tests/wikitext/only-highlight-first-redirect.txt rename to spec/unsupported_lexers/wikitext/only-highlight-first-redirect.txt diff --git a/tests/wikitext/parser-function.txt b/spec/unsupported_lexers/wikitext/parser-function.txt similarity index 100% rename from tests/wikitext/parser-function.txt rename to spec/unsupported_lexers/wikitext/parser-function.txt diff --git a/tests/wikitext/parser-tag.txt b/spec/unsupported_lexers/wikitext/parser-tag.txt similarity index 100% rename from tests/wikitext/parser-tag.txt rename to spec/unsupported_lexers/wikitext/parser-tag.txt diff --git a/tests/wikitext/signurature.txt b/spec/unsupported_lexers/wikitext/signurature.txt similarity index 100% rename from tests/wikitext/signurature.txt rename to spec/unsupported_lexers/wikitext/signurature.txt diff --git a/tests/wikitext/table.txt b/spec/unsupported_lexers/wikitext/table.txt similarity index 100% rename from tests/wikitext/table.txt rename to spec/unsupported_lexers/wikitext/table.txt diff --git a/tests/wikitext/template.txt b/spec/unsupported_lexers/wikitext/template.txt similarity index 100% rename from tests/wikitext/template.txt rename to spec/unsupported_lexers/wikitext/template.txt diff --git a/tests/wikitext/wikilink.txt b/spec/unsupported_lexers/wikitext/wikilink.txt similarity index 100% rename from tests/wikitext/wikilink.txt rename to spec/unsupported_lexers/wikitext/wikilink.txt diff --git a/tests/wren/lonely-paren.txt b/spec/unsupported_lexers/wren/lonely-paren.txt similarity index 100% rename from tests/wren/lonely-paren.txt rename to spec/unsupported_lexers/wren/lonely-paren.txt diff --git a/src/tartrazine.cr b/src/tartrazine.cr index 162877d..1b46c3b 100644 --- a/src/tartrazine.cr +++ b/src/tartrazine.cr @@ -26,7 +26,6 @@ module Tartrazine class Rule property pattern : Regex = Regex.new "" property emitters : Array(Emitter) = [] of Emitter - property transformers : Array(Transformer) = [] of Transformer property xml : String = "foo" def match(text, pos, lexer) : Tuple(Bool, Int32, Array(Token)) @@ -60,7 +59,7 @@ module Tartrazine property state : String = "" def match(text, pos, lexer) : Tuple(Bool, Int32, Array(Token)) - puts "Including state #{state} from #{lexer.state_stack.last}" + # puts "Including state #{state} from #{lexer.state_stack.last}" lexer.states[state].rules.each do |rule| matched, new_pos, new_tokens = rule.match(text, pos, lexer) # p! xml, new_pos, new_tokens if matched @@ -121,20 +120,20 @@ module Tartrazine states_to_push.each do |state| if state == "#pop" # Pop the state - puts "Popping state" + # puts "Popping state" lexer.state_stack.pop else # Really push lexer.state_stack << state - puts "Pushed #{lexer.state_stack}" + # puts "Pushed #{lexer.state_stack}" end end [] of Token when "pop" depth = xml["depth"].to_i - puts "Popping #{depth} states" + # puts "Popping #{depth} states" if lexer.state_stack.size <= depth - puts "Can't pop #{depth} states, only have #{lexer.state_stack.size}" + # puts "Can't pop #{depth} states, only have #{lexer.state_stack.size}" else lexer.state_stack.pop(depth) end @@ -184,15 +183,6 @@ module Tartrazine end end - class Transformer - property type : String = "" - property xml : String = "" - - def transform - puts "Transforming #{type} #{xml}" - end - end - alias Token = NamedTuple(type: String, value: String) LEXERS = {} of String => Tartrazine::Lexer @@ -226,12 +216,12 @@ module Tartrazine end while pos < text.size state = states[@state_stack.last] - puts "Stack is #{@state_stack} State is #{state.name}, pos is #{pos}, text is #{text[pos..pos + 10]}" + # puts "Stack is #{@state_stack} State is #{state.name}, pos is #{pos}, text is #{text[pos..pos + 10]}" state.rules.each do |rule| matched, new_pos, new_tokens = rule.match(text, pos, self) - puts "NOT MATCHED: #{rule.xml}" + # puts "NOT MATCHED: #{rule.xml}" next unless matched - puts "MATCHED: #{rule.xml}" + # puts "MATCHED: #{rule.xml}" pos = new_pos tokens += new_tokens @@ -275,7 +265,7 @@ module Tartrazine state = State.new state.name = state_node["name"] if l.states.has_key?(state.name) - puts "Duplicate state: #{state.name}" + raise Exception.new("Duplicate state: #{state.name}") else l.states[state.name] = state end @@ -352,103 +342,30 @@ macro xml_to_a(node, name) {{node}}.children.select{|n| n.name == "{{name}}".lstrip("_")}.map {|n| n.content.to_s} end -# Let's run some tests -def chroma_tokenize(lexer, text) - output = IO::Memory.new - input = IO::Memory.new(text) - Process.run( - "chroma", - ["-f", "json", "-l", lexer], - input: input, output: output - ) - Array(Tartrazine::Token).from_json(output.to_s) -end + # # # + # next if testname == "tests/fortran/test_string_cataback.txt" -def test_file(testname, lexer) - test = File.read(testname).split("---input---\n").last.split("---tokens---").first - begin - tokens = collapse_tokens(lexer.tokenize(test)) - rescue ex : Exception - puts ">>>ERROR" - raise ex - return - end - outp = IO::Memory.new - i = IO::Memory.new(test) - lname = lexer.config[:name] - Process.run( - "chroma", - ["-f", "json", "-l", lname], input: i, output: outp - ) - chroma_tokens = collapse_tokens(Array(Tartrazine::Token).from_json(outp.to_s)) - if chroma_tokens != tokens - puts ">>>BAD - #{testname}" - else - puts ">>>GOOD" - end -end + # # Difference is different unicode representation of a string literal + # next if testname == "tests/java/test_string_literals.txt" + # next if testname == "tests/systemd/example1.txt" + # next if testname == "tests/json/test_strings.txt" -def collapse_tokens(tokens : Array(Tartrazine::Token)) - result = [] of Tartrazine::Token + # # Tartrazine agrees with pygments, disagrees with chroma + # next if testname == "tests/java/test_default.txt" + # next if testname == "tests/java/test_numeric_literals.txt" + # next if testname == "tests/java/test_multiline_string.txt" - tokens.each do |token| - if result.empty? - result << token - next - end - last = result.last - if last[:type] == token[:type] - new_token = {type: last[:type], value: last[:value] + token[:value]} - result.pop - result << new_token - else - result << token - end - end - result -end + # # Tartrazine disagrees with pygments and chroma, but it's fine + # next if testname == "tests/php/test_string_escaping_run.txt" -total = 0 -Dir.glob("tests/*/") do |lexername| - key = File.basename(lexername).downcase - # next if key == "console" - next unless lexers.has_key? key - lexer = lexers[key] + # # Chroma's output is bad, but so is Tartrazine's + # next if "tests/html/javascript_unclosed.txt" == testname - Dir.glob("#{lexername}*.txt") do |testname| - # # - next if testname == "tests/fortran/test_string_cataback.txt" + # # KNOWN BAD -- TO FIX + # next if "tests/html/css_backtracking.txt" == testname + # next if "tests/php/anonymous_class.txt" == testname + # next if "tests/c/test_string_resembling_decl_end.txt" == testname + # next if "tests/mcfunction/data.txt" == testname + # next if "tests/mcfunction/selectors.txt" == testname - # Difference is different unicode representation of a string literal - next if testname == "tests/java/test_string_literals.txt" - next if testname == "tests/systemd/example1.txt" - next if testname == "tests/json/test_strings.txt" - - # Tartrazine agrees with pygments, disagrees with chroma - next if testname == "tests/java/test_default.txt" - next if testname == "tests/java/test_numeric_literals.txt" - next if testname == "tests/java/test_multiline_string.txt" - - # Tartrazine disagrees with pygments and chroma, but it's fine - next if testname == "tests/php/test_string_escaping_run.txt" - - # Chroma's output is bad, but so is Tartrazine's - next if "tests/html/javascript_unclosed.txt" == testname - - # KNOWN BAD -- TO FIX - next if "tests/html/css_backtracking.txt" == testname - next if "tests/php/anonymous_class.txt" == testname - next if "tests/c/test_string_resembling_decl_end.txt" == testname - next if "tests/mcfunction/data.txt" == testname - next if "tests/mcfunction/selectors.txt" == testname - - # I disagree with these tests - # next if testname.starts_with? "tests/console" - - puts "Testing #{key} with #{testname}" - total += 1 - test_file(testname, lexer) - end -end -puts ">>>TOTAL #{total}"