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}"