From ef1ed86b0fa7ce089d1774f410410fa7f05e4af0 Mon Sep 17 00:00:00 2001 From: patrick Date: Mon, 14 Apr 2025 11:01:03 +0200 Subject: [PATCH 1/8] Renaming of whole project from Ports to RosettaTest --- .gitattributes | 2 +- .github/workflows/interpreter-tests.yml | 6 +- .github/workflows/javascript-suites.yml | 4 +- .github/workflows/python-suites.yml | 12 +- .github/workflows/ruby-suites.yml | 4 +- .gitignore | 4 +- .smalltalk.ston | 6 +- README.md | 42 +++--- .../BaselineOfPortsS.class.st | 19 --- ports-s/BaselineOfPortsS/package.st | 1 - ports-s/PortsS-Core/package.st | 1 - .../Collection.extension.st | 7 - ports-s/PortsS-Interpreter/False.extension.st | 7 - .../PortsS-Interpreter/Object.extension.st | 31 ----- .../PortsSyntaxError.class.st | 5 - .../PortsTypeError.class.st | 5 - ports-s/PortsS-Interpreter/package.st | 1 - ports-s/PortsS-Suites/PortsFSSuite.class.st | 101 -------------- .../PortsS-Suites/PortsJSONRfcSuite.class.st | 47 ------- ports-s/PortsS-Suites/package.st | 1 - ports-s/PortsS-Tests/package.st | 1 - .../interpreter-tests.js | 2 +- {ports-js => rosetta-test-js}/json-rfc.js | 4 +- {ports-js => rosetta-test-js}/package.json | 0 {ports-js => rosetta-test-js}/parser.js | 2 +- .../rosetta-test.js | 52 +++---- {ports-js => rosetta-test-js}/scheme.js | 2 +- {ports-js => rosetta-test-js}/url-parsing.js | 4 +- {ports-py => rosetta-test-py}/fs.py | 4 +- .../interpreter-tests.py | 2 +- {ports-py => rosetta-test-py}/json-rfc.py | 8 +- {ports-py => rosetta-test-py}/lispy.py | 2 +- .../ports.py => rosetta-test-py/rosetta.py | 84 +++++------ .../sendmail-python-emails.py | 6 +- .../sendmail-python-emails.requirements.txt | 0 .../sendmail-redmail.py | 6 +- .../sendmail-redmail.requirements.txt | 0 {ports-py => rosetta-test-py}/smtp.py | 12 +- {ports-py => rosetta-test-py}/syntax-tests.py | 2 +- .../url-parsing-urllib3.py | 4 +- .../url-parsing-urllib3.requirements.txt | 0 {ports-py => rosetta-test-py}/url-parsing.py | 4 +- .../interpreter-tests.rb | 2 +- {ports-rb => rosetta-test-rb}/json-rfc.rb | 8 +- {ports-rb => rosetta-test-rb}/parser.rb | 2 +- .../ports.rb => rosetta-test-rb/rosetta.rb | 60 ++++---- {ports-rb => rosetta-test-rb}/scheme.rb | 2 +- {ports-rb => rosetta-test-rb}/smtp.rb | 4 +- {ports-rb => rosetta-test-rb}/url_parsing.rb | 4 +- {ports-s => rosetta-test-s}/.filetree | 0 .../BaselineOfPortsS.class.st | 19 +++ rosetta-test-s/BaselineOfPortsS/package.st | 1 + .../PortsS-Core/PortsSuite.class.st | 126 ++++++++--------- rosetta-test-s/PortsS-Core/package.st | 1 + .../Collection.extension.st | 7 + .../PortsS-Interpreter/False.extension.st | 7 + .../PortsS-Interpreter/Object.extension.st | 31 +++++ .../PortsS-Interpreter/PortsFunction.class.st | 12 +- .../PortsPlaceholder.class.st | 26 ++-- .../PortsS-Interpreter/PortsScheme.class.st | 92 ++++++------- .../PortsSchemeEnv.class.st | 24 ++-- .../PortsSchemeLambda.class.st | 26 ++-- .../PortsSyntaxError.class.st | 5 + .../PortsTypeError.class.st | 5 + rosetta-test-s/PortsS-Interpreter/package.st | 1 + .../PortsS-Suites/PortsFSSuite.class.st | 101 ++++++++++++++ .../PortsS-Suites/PortsJSONRfcSuite.class.st | 47 +++++++ .../PortsS-Suites/PortsSMTPSuite.class.st | 130 +++++++++--------- rosetta-test-s/PortsS-Suites/package.st | 1 + .../PortsS-Tests/PortsLispyTests.class.st | 30 ++-- rosetta-test-s/PortsS-Tests/package.st | 1 + .../fs.rosetta | 0 .../n_array_1_true_without_comma.json | 0 .../n_array_a_invalid_utf8.json | 0 .../n_array_colon_instead_of_comma.json | 0 .../n_array_comma_after_close.json | 0 .../n_array_comma_and_number.json | 0 .../n_array_double_comma.json | 0 .../n_array_double_extra_comma.json | 0 .../n_array_extra_close.json | 0 .../n_array_extra_comma.json | 0 .../json-rfc-fixtures/n_array_incomplete.json | 0 .../n_array_incomplete_invalid_value.json | 0 .../n_array_inner_array_no_comma.json | 0 .../n_array_invalid_utf8.json | 0 .../n_array_items_separated_by_semicolon.json | 0 .../json-rfc-fixtures/n_array_just_comma.json | 0 .../json-rfc-fixtures/n_array_just_minus.json | 0 .../n_array_missing_value.json | 0 .../n_array_newlines_unclosed.json | 0 .../n_array_number_and_comma.json | 0 .../n_array_number_and_several_commas.json | 0 .../n_array_spaces_vertical_tab_formfeed.json | 0 .../n_array_star_inside.json | 0 .../json-rfc-fixtures/n_array_unclosed.json | 0 .../n_array_unclosed_trailing_comma.json | 0 .../n_array_unclosed_with_new_lines.json | 0 .../n_array_unclosed_with_object_inside.json | 0 .../json-rfc-fixtures/n_incomplete_false.json | 0 .../json-rfc-fixtures/n_incomplete_null.json | 0 .../json-rfc-fixtures/n_incomplete_true.json | 0 .../n_multidigit_number_then_00.json | Bin .../json-rfc-fixtures/n_number_++.json | 0 .../json-rfc-fixtures/n_number_+1.json | 0 .../json-rfc-fixtures/n_number_+Inf.json | 0 .../json-rfc-fixtures/n_number_-01.json | 0 .../json-rfc-fixtures/n_number_-1.0..json | 0 .../json-rfc-fixtures/n_number_-2..json | 0 .../json-rfc-fixtures/n_number_-NaN.json | 0 .../json-rfc-fixtures/n_number_.-1.json | 0 .../json-rfc-fixtures/n_number_.2e-3.json | 0 .../json-rfc-fixtures/n_number_0.1.2.json | 0 .../json-rfc-fixtures/n_number_0.3e+.json | 0 .../json-rfc-fixtures/n_number_0.3e.json | 0 .../json-rfc-fixtures/n_number_0.e1.json | 0 .../n_number_0_capital_E+.json | 0 .../n_number_0_capital_E.json | 0 .../json-rfc-fixtures/n_number_0e+.json | 0 .../json-rfc-fixtures/n_number_0e.json | 0 .../json-rfc-fixtures/n_number_1.0e+.json | 0 .../json-rfc-fixtures/n_number_1.0e-.json | 0 .../json-rfc-fixtures/n_number_1.0e.json | 0 .../json-rfc-fixtures/n_number_1_000.json | 0 .../json-rfc-fixtures/n_number_1eE2.json | 0 .../json-rfc-fixtures/n_number_2.e+3.json | 0 .../json-rfc-fixtures/n_number_2.e-3.json | 0 .../json-rfc-fixtures/n_number_2.e3.json | 0 .../json-rfc-fixtures/n_number_9.e+.json | 0 .../json-rfc-fixtures/n_number_Inf.json | 0 .../json-rfc-fixtures/n_number_NaN.json | 0 .../n_number_U+FF11_fullwidth_digit_one.json | 0 .../n_number_expression.json | 0 .../n_number_hex_1_digit.json | 0 .../n_number_hex_2_digits.json | 0 .../json-rfc-fixtures/n_number_infinity.json | 0 .../json-rfc-fixtures/n_number_invalid+-.json | 0 .../n_number_invalid-negative-real.json | 0 .../n_number_invalid-utf-8-in-bigger-int.json | 0 .../n_number_invalid-utf-8-in-exponent.json | 0 .../n_number_invalid-utf-8-in-int.json | 0 .../n_number_minus_infinity.json | 0 ...mber_minus_sign_with_trailing_garbage.json | 0 .../n_number_minus_space_1.json | 0 .../n_number_neg_int_starting_with_zero.json | 0 .../n_number_neg_real_without_int_part.json | 0 .../n_number_neg_with_garbage_at_end.json | 0 .../n_number_real_garbage_after_e.json | 0 ...number_real_with_invalid_utf8_after_e.json | 0 ...n_number_real_without_fractional_part.json | 0 .../n_number_starting_with_dot.json | 0 .../n_number_with_alpha.json | 0 .../n_number_with_alpha_char.json | 0 .../n_number_with_leading_zero.json | 0 .../json-rfc-fixtures/n_object_bad_value.json | 0 .../n_object_bracket_key.json | 0 .../n_object_comma_instead_of_colon.json | 0 .../n_object_double_colon.json | 0 .../json-rfc-fixtures/n_object_emoji.json | 0 .../n_object_garbage_at_end.json | 0 .../n_object_key_with_single_quotes.json | 0 ...uation_byte_in_key_and_trailing_comma.json | 0 .../n_object_missing_colon.json | 0 .../n_object_missing_key.json | 0 .../n_object_missing_semicolon.json | 0 .../n_object_missing_value.json | 0 .../json-rfc-fixtures/n_object_no-colon.json | 0 .../n_object_non_string_key.json | 0 ...on_string_key_but_huge_number_instead.json | 0 .../n_object_repeated_null_null.json | 0 .../n_object_several_trailing_commas.json | 0 .../n_object_single_quote.json | 0 .../n_object_trailing_comma.json | 0 .../n_object_trailing_comment.json | 0 .../n_object_trailing_comment_open.json | 0 .../n_object_trailing_comment_slash_open.json | 0 ...railing_comment_slash_open_incomplete.json | 0 .../n_object_two_commas_in_a_row.json | 0 .../n_object_unquoted_key.json | 0 .../n_object_unterminated-value.json | 0 .../n_object_with_single_string.json | 0 .../n_object_with_trailing_garbage.json | 0 .../json-rfc-fixtures/n_single_space.json | 0 .../n_string_1_surrogate_then_escape.json | 0 .../n_string_1_surrogate_then_escape_u.json | 0 .../n_string_1_surrogate_then_escape_u1.json | 0 .../n_string_1_surrogate_then_escape_u1x.json | 0 .../n_string_accentuated_char_no_quotes.json | 0 .../n_string_backslash_00.json | Bin .../json-rfc-fixtures/n_string_escape_x.json | 0 .../n_string_escaped_backslash_bad.json | 0 .../n_string_escaped_ctrl_char_tab.json | 0 .../n_string_escaped_emoji.json | 0 .../n_string_incomplete_escape.json | 0 ...n_string_incomplete_escaped_character.json | 0 .../n_string_incomplete_surrogate.json | 0 ...g_incomplete_surrogate_escape_invalid.json | 0 .../n_string_invalid-utf-8-in-escape.json | 0 .../n_string_invalid_backslash_esc.json | 0 .../n_string_invalid_unicode_escape.json | 0 .../n_string_invalid_utf8_after_escape.json | 0 .../n_string_leading_uescaped_thinspace.json | 0 .../n_string_no_quotes_with_bad_escape.json | 0 .../n_string_single_doublequote.json | 0 .../n_string_single_quote.json | 0 ...string_single_string_no_double_quotes.json | 0 .../n_string_start_escape_unclosed.json | 0 .../n_string_unescaped_ctrl_char.json | Bin .../n_string_unescaped_newline.json | 0 .../n_string_unescaped_tab.json | 0 .../n_string_unicode_CapitalU.json | 0 .../n_string_with_trailing_garbage.json | 0 .../n_structure_100000_opening_arrays.json | 0 .../n_structure_U+2060_word_joined.json | 0 .../n_structure_UTF8_BOM_no_data.json | 0 .../n_structure_angle_bracket_..json | 0 .../n_structure_angle_bracket_null.json | 0 .../n_structure_array_trailing_garbage.json | 0 ...tructure_array_with_extra_array_close.json | 0 ..._structure_array_with_unclosed_string.json | 0 .../n_structure_ascii-unicode-identifier.json | 0 .../n_structure_capitalized_True.json | 0 .../n_structure_close_unopened_array.json | 0 ...ucture_comma_instead_of_closing_brace.json | 0 .../n_structure_double_array.json | 0 .../n_structure_end_array.json | 0 .../n_structure_incomplete_UTF8_BOM.json | 0 .../n_structure_lone-invalid-utf-8.json | 0 .../n_structure_lone-open-bracket.json | 0 .../n_structure_no_data.json | 0 .../n_structure_null-byte-outside-string.json | Bin ...tructure_number_with_trailing_garbage.json | 0 ...ure_object_followed_by_closing_object.json | 0 .../n_structure_object_unclosed_no_value.json | 0 .../n_structure_object_with_comment.json | 0 ...tructure_object_with_trailing_garbage.json | 0 .../n_structure_open_array_apostrophe.json | 0 .../n_structure_open_array_comma.json | 0 .../n_structure_open_array_object.json | 0 .../n_structure_open_array_open_object.json | 0 .../n_structure_open_array_open_string.json | 0 .../n_structure_open_array_string.json | 0 .../n_structure_open_object.json | 0 .../n_structure_open_object_close_array.json | 0 .../n_structure_open_object_comma.json | 0 .../n_structure_open_object_open_array.json | 0 .../n_structure_open_object_open_string.json | 0 ...e_open_object_string_with_apostrophes.json | 0 .../n_structure_open_open.json | 0 .../n_structure_single_eacute.json | 0 .../n_structure_single_star.json | 0 .../n_structure_trailing_#.json | 0 ...n_structure_uescaped_LF_before_string.json | 0 .../n_structure_unclosed_array.json | 0 ...structure_unclosed_array_partial_null.json | 0 ...cture_unclosed_array_unfinished_false.json | 0 ...ucture_unclosed_array_unfinished_true.json | 0 .../n_structure_unclosed_object.json | 0 .../n_structure_unicode-identifier.json | 0 ...ructure_whitespace_U+2060_word_joiner.json | 0 .../n_structure_whitespace_formfeed.json | 0 .../y_array_arraysWithSpaces.json | 0 .../y_array_empty-string.json | 0 .../json-rfc-fixtures/y_array_empty.json | 0 .../y_array_ending_with_newline.json | 0 .../json-rfc-fixtures/y_array_false.json | 0 .../y_array_heterogeneous.json | 0 .../json-rfc-fixtures/y_array_null.json | 0 .../y_array_with_1_and_newline.json | 0 .../y_array_with_leading_space.json | 0 .../y_array_with_several_null.json | 0 .../y_array_with_trailing_space.json | 0 .../json-rfc-fixtures/y_number.json | 0 .../json-rfc-fixtures/y_number_0e+1.json | 0 .../json-rfc-fixtures/y_number_0e1.json | 0 .../y_number_after_space.json | 0 .../y_number_double_close_to_zero.json | 0 .../y_number_int_with_exp.json | 0 .../y_number_minus_zero.json | 0 .../y_number_negative_int.json | 0 .../y_number_negative_one.json | 0 .../y_number_negative_zero.json | 0 .../y_number_real_capital_e.json | 0 .../y_number_real_capital_e_neg_exp.json | 0 .../y_number_real_capital_e_pos_exp.json | 0 .../y_number_real_exponent.json | 0 .../y_number_real_fraction_exponent.json | 0 .../y_number_real_neg_exp.json | 0 .../y_number_real_pos_exponent.json | 0 .../y_number_simple_int.json | 0 .../y_number_simple_real.json | 0 .../json-rfc-fixtures/y_object.json | 0 .../json-rfc-fixtures/y_object_basic.json | 0 .../y_object_duplicated_key.json | 0 .../y_object_duplicated_key_and_value.json | 0 .../json-rfc-fixtures/y_object_empty.json | 0 .../json-rfc-fixtures/y_object_empty_key.json | 0 .../y_object_escaped_null_in_key.json | 0 .../y_object_extreme_numbers.json | 0 .../y_object_long_strings.json | 0 .../json-rfc-fixtures/y_object_simple.json | 0 .../y_object_string_unicode.json | 0 .../y_object_with_newlines.json | 0 .../y_string_1_2_3_bytes_UTF-8_sequences.json | 0 .../y_string_accepted_surrogate_pair.json | 0 .../y_string_accepted_surrogate_pairs.json | 0 .../y_string_allowed_escapes.json | 0 ...y_string_backslash_and_u_escaped_zero.json | 0 .../y_string_backslash_doublequotes.json | 0 .../json-rfc-fixtures/y_string_comments.json | 0 .../y_string_double_escape_a.json | 0 .../y_string_double_escape_n.json | 0 .../y_string_escaped_control_character.json | 0 .../y_string_escaped_noncharacter.json | 0 .../json-rfc-fixtures/y_string_in_array.json | 0 .../y_string_in_array_with_leading_space.json | 0 .../y_string_last_surrogates_1_and_2.json | 0 .../y_string_nbsp_uescaped.json | 0 ...y_string_nonCharacterInUTF-8_U+10FFFF.json | 0 .../y_string_nonCharacterInUTF-8_U+FFFF.json | 0 .../y_string_null_escape.json | 0 .../y_string_one-byte-utf-8.json | 0 .../json-rfc-fixtures/y_string_pi.json | 0 ...ring_reservedCharacterInUTF-8_U+1BFFF.json | 0 .../y_string_simple_ascii.json | 0 .../json-rfc-fixtures/y_string_space.json | 0 ...rogates_U+1D11E_MUSICAL_SYMBOL_G_CLEF.json | 0 .../y_string_three-byte-utf-8.json | 0 .../y_string_two-byte-utf-8.json | 0 .../y_string_u+2028_line_sep.json | 0 .../y_string_u+2029_par_sep.json | 0 .../json-rfc-fixtures/y_string_uEscape.json | 0 .../y_string_uescaped_newline.json | 0 .../y_string_unescaped_char_delete.json | 0 .../json-rfc-fixtures/y_string_unicode.json | 0 .../y_string_unicodeEscapedBackslash.json | 0 .../json-rfc-fixtures/y_string_unicode_2.json | 0 .../y_string_unicode_U+10FFFE_nonchar.json | 0 .../y_string_unicode_U+1FFFE_nonchar.json | 0 ...tring_unicode_U+200B_ZERO_WIDTH_SPACE.json | 0 ..._string_unicode_U+2064_invisible_plus.json | 0 .../y_string_unicode_U+FDD0_nonchar.json | 0 .../y_string_unicode_U+FFFE_nonchar.json | 0 ...y_string_unicode_escaped_double_quote.json | 0 .../json-rfc-fixtures/y_string_utf8.json | 0 .../y_string_with_del_character.json | 0 .../y_structure_lonely_false.json | 0 .../y_structure_lonely_int.json | 0 .../y_structure_lonely_negative_real.json | 0 .../y_structure_lonely_null.json | 0 .../y_structure_lonely_string.json | 0 .../y_structure_lonely_true.json | 0 .../y_structure_string_empty.json | 0 .../y_structure_trailing_newline.json | 0 .../y_structure_true_in_array.json | 0 .../y_structure_whitespace_array.json | 0 .../json-rfc.rosetta | 0 .../sendmail.rosetta | 2 +- .../smtp-fixtures/cacert.pem | 0 .../smtp-fixtures/server.crt | 0 .../smtp-fixtures/server.key | 0 .../smtp-fixtures/server.pem | 0 .../smtp-mock-server.scm | 0 .../smtp.rosetta | 10 +- .../url-parsing-rfc.rosetta | 2 +- .../interpreter-tests.json | 0 .../rosetta-test.scm | 2 +- {ports => rosetta-test}/spec.md | 26 ++-- {ports => rosetta-test}/stdlib.scm | 0 {ports => rosetta-test}/syntax-tests.json | 0 369 files changed, 662 insertions(+), 662 deletions(-) delete mode 100644 ports-s/BaselineOfPortsS/BaselineOfPortsS.class.st delete mode 100644 ports-s/BaselineOfPortsS/package.st delete mode 100644 ports-s/PortsS-Core/package.st delete mode 100644 ports-s/PortsS-Interpreter/Collection.extension.st delete mode 100644 ports-s/PortsS-Interpreter/False.extension.st delete mode 100644 ports-s/PortsS-Interpreter/Object.extension.st delete mode 100644 ports-s/PortsS-Interpreter/PortsSyntaxError.class.st delete mode 100644 ports-s/PortsS-Interpreter/PortsTypeError.class.st delete mode 100644 ports-s/PortsS-Interpreter/package.st delete mode 100644 ports-s/PortsS-Suites/PortsFSSuite.class.st delete mode 100644 ports-s/PortsS-Suites/PortsJSONRfcSuite.class.st delete mode 100644 ports-s/PortsS-Suites/package.st delete mode 100644 ports-s/PortsS-Tests/package.st rename {ports-js => rosetta-test-js}/interpreter-tests.js (97%) rename {ports-js => rosetta-test-js}/json-rfc.js (90%) rename {ports-js => rosetta-test-js}/package.json (100%) rename {ports-js => rosetta-test-js}/parser.js (98%) rename ports-js/ports.js => rosetta-test-js/rosetta-test.js (79%) rename {ports-js => rosetta-test-js}/scheme.js (99%) rename {ports-js => rosetta-test-js}/url-parsing.js (86%) rename {ports-py => rosetta-test-py}/fs.py (96%) rename {ports-py => rosetta-test-py}/interpreter-tests.py (95%) rename {ports-py => rosetta-test-py}/json-rfc.py (74%) rename {ports-py => rosetta-test-py}/lispy.py (99%) rename ports-py/ports.py => rosetta-test-py/rosetta.py (77%) rename {ports-py => rosetta-test-py}/sendmail-python-emails.py (96%) rename {ports-py => rosetta-test-py}/sendmail-python-emails.requirements.txt (100%) rename {ports-py => rosetta-test-py}/sendmail-redmail.py (96%) rename {ports-py => rosetta-test-py}/sendmail-redmail.requirements.txt (100%) rename {ports-py => rosetta-test-py}/smtp.py (96%) rename {ports-py => rosetta-test-py}/syntax-tests.py (95%) rename {ports-py => rosetta-test-py}/url-parsing-urllib3.py (87%) rename {ports-py => rosetta-test-py}/url-parsing-urllib3.requirements.txt (100%) rename {ports-py => rosetta-test-py}/url-parsing.py (88%) rename {ports-rb => rosetta-test-rb}/interpreter-tests.rb (95%) rename {ports-rb => rosetta-test-rb}/json-rfc.rb (73%) rename {ports-rb => rosetta-test-rb}/parser.rb (97%) rename ports-rb/ports.rb => rosetta-test-rb/rosetta.rb (81%) rename {ports-rb => rosetta-test-rb}/scheme.rb (99%) rename {ports-rb => rosetta-test-rb}/smtp.rb (98%) rename {ports-rb => rosetta-test-rb}/url_parsing.rb (88%) rename {ports-s => rosetta-test-s}/.filetree (100%) create mode 100644 rosetta-test-s/BaselineOfPortsS/BaselineOfPortsS.class.st create mode 100644 rosetta-test-s/BaselineOfPortsS/package.st rename {ports-s => rosetta-test-s}/PortsS-Core/PortsSuite.class.st (71%) create mode 100644 rosetta-test-s/PortsS-Core/package.st create mode 100644 rosetta-test-s/PortsS-Interpreter/Collection.extension.st create mode 100644 rosetta-test-s/PortsS-Interpreter/False.extension.st create mode 100644 rosetta-test-s/PortsS-Interpreter/Object.extension.st rename {ports-s => rosetta-test-s}/PortsS-Interpreter/PortsFunction.class.st (57%) rename {ports-s => rosetta-test-s}/PortsS-Interpreter/PortsPlaceholder.class.st (58%) rename {ports-s => rosetta-test-s}/PortsS-Interpreter/PortsScheme.class.st (84%) rename {ports-s => rosetta-test-s}/PortsS-Interpreter/PortsSchemeEnv.class.st (68%) rename {ports-s => rosetta-test-s}/PortsS-Interpreter/PortsSchemeLambda.class.st (58%) create mode 100644 rosetta-test-s/PortsS-Interpreter/PortsSyntaxError.class.st create mode 100644 rosetta-test-s/PortsS-Interpreter/PortsTypeError.class.st create mode 100644 rosetta-test-s/PortsS-Interpreter/package.st create mode 100644 rosetta-test-s/PortsS-Suites/PortsFSSuite.class.st create mode 100644 rosetta-test-s/PortsS-Suites/PortsJSONRfcSuite.class.st rename {ports-s => rosetta-test-s}/PortsS-Suites/PortsSMTPSuite.class.st (62%) create mode 100644 rosetta-test-s/PortsS-Suites/package.st rename {ports-s => rosetta-test-s}/PortsS-Tests/PortsLispyTests.class.st (59%) create mode 100644 rosetta-test-s/PortsS-Tests/package.st rename suites/fs.ports => rosetta-test-suites/fs.rosetta (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_array_1_true_without_comma.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_array_a_invalid_utf8.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_array_colon_instead_of_comma.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_array_comma_after_close.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_array_comma_and_number.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_array_double_comma.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_array_double_extra_comma.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_array_extra_close.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_array_extra_comma.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_array_incomplete.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_array_incomplete_invalid_value.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_array_inner_array_no_comma.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_array_invalid_utf8.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_array_items_separated_by_semicolon.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_array_just_comma.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_array_just_minus.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_array_missing_value.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_array_newlines_unclosed.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_array_number_and_comma.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_array_number_and_several_commas.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_array_spaces_vertical_tab_formfeed.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_array_star_inside.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_array_unclosed.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_array_unclosed_trailing_comma.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_array_unclosed_with_new_lines.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_array_unclosed_with_object_inside.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_incomplete_false.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_incomplete_null.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_incomplete_true.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_multidigit_number_then_00.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_number_++.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_number_+1.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_number_+Inf.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_number_-01.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_number_-1.0..json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_number_-2..json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_number_-NaN.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_number_.-1.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_number_.2e-3.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_number_0.1.2.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_number_0.3e+.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_number_0.3e.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_number_0.e1.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_number_0_capital_E+.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_number_0_capital_E.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_number_0e+.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_number_0e.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_number_1.0e+.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_number_1.0e-.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_number_1.0e.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_number_1_000.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_number_1eE2.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_number_2.e+3.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_number_2.e-3.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_number_2.e3.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_number_9.e+.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_number_Inf.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_number_NaN.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_number_U+FF11_fullwidth_digit_one.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_number_expression.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_number_hex_1_digit.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_number_hex_2_digits.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_number_infinity.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_number_invalid+-.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_number_invalid-negative-real.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_number_invalid-utf-8-in-bigger-int.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_number_invalid-utf-8-in-exponent.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_number_invalid-utf-8-in-int.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_number_minus_infinity.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_number_minus_sign_with_trailing_garbage.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_number_minus_space_1.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_number_neg_int_starting_with_zero.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_number_neg_real_without_int_part.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_number_neg_with_garbage_at_end.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_number_real_garbage_after_e.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_number_real_with_invalid_utf8_after_e.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_number_real_without_fractional_part.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_number_starting_with_dot.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_number_with_alpha.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_number_with_alpha_char.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_number_with_leading_zero.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_object_bad_value.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_object_bracket_key.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_object_comma_instead_of_colon.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_object_double_colon.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_object_emoji.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_object_garbage_at_end.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_object_key_with_single_quotes.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_object_lone_continuation_byte_in_key_and_trailing_comma.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_object_missing_colon.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_object_missing_key.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_object_missing_semicolon.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_object_missing_value.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_object_no-colon.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_object_non_string_key.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_object_non_string_key_but_huge_number_instead.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_object_repeated_null_null.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_object_several_trailing_commas.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_object_single_quote.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_object_trailing_comma.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_object_trailing_comment.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_object_trailing_comment_open.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_object_trailing_comment_slash_open.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_object_trailing_comment_slash_open_incomplete.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_object_two_commas_in_a_row.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_object_unquoted_key.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_object_unterminated-value.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_object_with_single_string.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_object_with_trailing_garbage.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_single_space.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_string_1_surrogate_then_escape.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_string_1_surrogate_then_escape_u.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_string_1_surrogate_then_escape_u1.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_string_1_surrogate_then_escape_u1x.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_string_accentuated_char_no_quotes.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_string_backslash_00.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_string_escape_x.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_string_escaped_backslash_bad.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_string_escaped_ctrl_char_tab.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_string_escaped_emoji.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_string_incomplete_escape.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_string_incomplete_escaped_character.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_string_incomplete_surrogate.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_string_incomplete_surrogate_escape_invalid.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_string_invalid-utf-8-in-escape.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_string_invalid_backslash_esc.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_string_invalid_unicode_escape.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_string_invalid_utf8_after_escape.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_string_leading_uescaped_thinspace.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_string_no_quotes_with_bad_escape.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_string_single_doublequote.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_string_single_quote.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_string_single_string_no_double_quotes.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_string_start_escape_unclosed.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_string_unescaped_ctrl_char.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_string_unescaped_newline.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_string_unescaped_tab.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_string_unicode_CapitalU.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_string_with_trailing_garbage.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_structure_100000_opening_arrays.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_structure_U+2060_word_joined.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_structure_UTF8_BOM_no_data.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_structure_angle_bracket_..json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_structure_angle_bracket_null.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_structure_array_trailing_garbage.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_structure_array_with_extra_array_close.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_structure_array_with_unclosed_string.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_structure_ascii-unicode-identifier.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_structure_capitalized_True.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_structure_close_unopened_array.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_structure_comma_instead_of_closing_brace.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_structure_double_array.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_structure_end_array.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_structure_incomplete_UTF8_BOM.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_structure_lone-invalid-utf-8.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_structure_lone-open-bracket.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_structure_no_data.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_structure_null-byte-outside-string.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_structure_number_with_trailing_garbage.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_structure_object_followed_by_closing_object.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_structure_object_unclosed_no_value.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_structure_object_with_comment.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_structure_object_with_trailing_garbage.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_structure_open_array_apostrophe.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_structure_open_array_comma.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_structure_open_array_object.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_structure_open_array_open_object.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_structure_open_array_open_string.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_structure_open_array_string.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_structure_open_object.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_structure_open_object_close_array.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_structure_open_object_comma.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_structure_open_object_open_array.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_structure_open_object_open_string.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_structure_open_object_string_with_apostrophes.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_structure_open_open.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_structure_single_eacute.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_structure_single_star.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_structure_trailing_#.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_structure_uescaped_LF_before_string.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_structure_unclosed_array.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_structure_unclosed_array_partial_null.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_structure_unclosed_array_unfinished_false.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_structure_unclosed_array_unfinished_true.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_structure_unclosed_object.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_structure_unicode-identifier.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_structure_whitespace_U+2060_word_joiner.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/n_structure_whitespace_formfeed.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_array_arraysWithSpaces.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_array_empty-string.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_array_empty.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_array_ending_with_newline.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_array_false.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_array_heterogeneous.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_array_null.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_array_with_1_and_newline.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_array_with_leading_space.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_array_with_several_null.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_array_with_trailing_space.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_number.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_number_0e+1.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_number_0e1.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_number_after_space.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_number_double_close_to_zero.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_number_int_with_exp.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_number_minus_zero.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_number_negative_int.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_number_negative_one.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_number_negative_zero.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_number_real_capital_e.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_number_real_capital_e_neg_exp.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_number_real_capital_e_pos_exp.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_number_real_exponent.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_number_real_fraction_exponent.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_number_real_neg_exp.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_number_real_pos_exponent.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_number_simple_int.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_number_simple_real.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_object.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_object_basic.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_object_duplicated_key.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_object_duplicated_key_and_value.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_object_empty.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_object_empty_key.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_object_escaped_null_in_key.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_object_extreme_numbers.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_object_long_strings.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_object_simple.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_object_string_unicode.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_object_with_newlines.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_string_1_2_3_bytes_UTF-8_sequences.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_string_accepted_surrogate_pair.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_string_accepted_surrogate_pairs.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_string_allowed_escapes.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_string_backslash_and_u_escaped_zero.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_string_backslash_doublequotes.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_string_comments.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_string_double_escape_a.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_string_double_escape_n.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_string_escaped_control_character.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_string_escaped_noncharacter.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_string_in_array.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_string_in_array_with_leading_space.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_string_last_surrogates_1_and_2.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_string_nbsp_uescaped.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_string_nonCharacterInUTF-8_U+10FFFF.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_string_nonCharacterInUTF-8_U+FFFF.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_string_null_escape.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_string_one-byte-utf-8.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_string_pi.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_string_reservedCharacterInUTF-8_U+1BFFF.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_string_simple_ascii.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_string_space.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_string_surrogates_U+1D11E_MUSICAL_SYMBOL_G_CLEF.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_string_three-byte-utf-8.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_string_two-byte-utf-8.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_string_u+2028_line_sep.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_string_u+2029_par_sep.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_string_uEscape.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_string_uescaped_newline.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_string_unescaped_char_delete.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_string_unicode.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_string_unicodeEscapedBackslash.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_string_unicode_2.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_string_unicode_U+10FFFE_nonchar.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_string_unicode_U+1FFFE_nonchar.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_string_unicode_U+200B_ZERO_WIDTH_SPACE.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_string_unicode_U+2064_invisible_plus.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_string_unicode_U+FDD0_nonchar.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_string_unicode_U+FFFE_nonchar.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_string_unicode_escaped_double_quote.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_string_utf8.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_string_with_del_character.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_structure_lonely_false.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_structure_lonely_int.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_structure_lonely_negative_real.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_structure_lonely_null.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_structure_lonely_string.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_structure_lonely_true.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_structure_string_empty.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_structure_trailing_newline.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_structure_true_in_array.json (100%) rename {suites => rosetta-test-suites}/json-rfc-fixtures/y_structure_whitespace_array.json (100%) rename suites/json-rfc.ports => rosetta-test-suites/json-rfc.rosetta (100%) rename suites/sendmail.ports => rosetta-test-suites/sendmail.rosetta (99%) rename {suites => rosetta-test-suites}/smtp-fixtures/cacert.pem (100%) rename {suites => rosetta-test-suites}/smtp-fixtures/server.crt (100%) rename {suites => rosetta-test-suites}/smtp-fixtures/server.key (100%) rename {suites => rosetta-test-suites}/smtp-fixtures/server.pem (100%) rename {suites => rosetta-test-suites}/smtp-mock-server.scm (100%) rename suites/smtp.ports => rosetta-test-suites/smtp.rosetta (99%) rename suites/url-parsing-rfc.ports => rosetta-test-suites/url-parsing-rfc.rosetta (99%) rename {ports => rosetta-test}/interpreter-tests.json (100%) rename ports/ports.scm => rosetta-test/rosetta-test.scm (99%) rename {ports => rosetta-test}/spec.md (69%) rename {ports => rosetta-test}/stdlib.scm (100%) rename {ports => rosetta-test}/syntax-tests.json (100%) diff --git a/.gitattributes b/.gitattributes index c619129..443d7b7 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1 +1 @@ -*.ports linguist-language=Scheme +*.rosetta linguist-language=Scheme diff --git a/.github/workflows/interpreter-tests.yml b/.github/workflows/interpreter-tests.yml index 5985a92..0873523 100644 --- a/.github/workflows/interpreter-tests.yml +++ b/.github/workflows/interpreter-tests.yml @@ -29,12 +29,12 @@ jobs: - name: Run Python Interpreter Tests run: | - python3 ports-py/interpreter-tests.py + python3 rosetta-test-py/interpreter-tests.py - name: Run JavaScript Interpreter Tests run: | - node ports-js/interpreter-tests.js + node rosetta-test-js/interpreter-tests.js - name: Run Ruby Interpreter Tests run: | - ruby ports-rb/interpreter-tests.rb + ruby rosetta-test-rb/interpreter-tests.rb \ No newline at end of file diff --git a/.github/workflows/javascript-suites.yml b/.github/workflows/javascript-suites.yml index 8bcc859..821c139 100644 --- a/.github/workflows/javascript-suites.yml +++ b/.github/workflows/javascript-suites.yml @@ -20,7 +20,7 @@ jobs: node-version: "lts/Hydrogen" - name: Run JSON RFC Tests run: | - node ports-js/json-rfc.js + node rosetta-test-js/json-rfc.js - name: Run URL Tests run: | - node ports-js/url-parsing.js \ No newline at end of file + node rosetta-test-js/url-parsing.js \ No newline at end of file diff --git a/.github/workflows/python-suites.yml b/.github/workflows/python-suites.yml index 4c29af1..9e6873d 100644 --- a/.github/workflows/python-suites.yml +++ b/.github/workflows/python-suites.yml @@ -24,15 +24,15 @@ jobs: if [ -f requirements.txt ]; then pip install -r requirements.txt; fi - name: Run SMTP Tests run: | - python3 ports-py/smtp.py + python3 rosetta-test-py/smtp.py - name: Run Sendmail Tests for RedMail run: | - pip install -r ports-py/sendmail-redmail.requirements.txt - python3 ports-py/sendmail-redmail.py + pip install -r rosetta-test-py/sendmail-redmail.requirements.txt + python3 rosetta-test-py/sendmail-redmail.py - name: Run Sendmail Tests for Python Emails run: | - pip install -r ports-py/sendmail-python-emails.requirements.txt - python3 ports-py/sendmail-python-emails.py + pip install -r rosetta-test-py/sendmail-python-emails.requirements.txt + python3 rosetta-test-py/sendmail-python-emails.py - name: Run JSON RFC Tests run: | - python3 ports-py/json-rfc.py + python3 rosetta-test-py/json-rfc.py diff --git a/.github/workflows/ruby-suites.yml b/.github/workflows/ruby-suites.yml index 32fb187..426ca81 100644 --- a/.github/workflows/ruby-suites.yml +++ b/.github/workflows/ruby-suites.yml @@ -20,7 +20,7 @@ jobs: ruby-version: "3.4" - name: Run SMTP Tests run: | - ruby ports-rb/smtp.rb + ruby rosetta-test-rb/smtp.rb - name: Run JSON RFC Tests run: | - ruby ports-rb/json-rfc.rb + ruby rosetta-test-rb/json-rfc.rb diff --git a/.gitignore b/.gitignore index 5331e0c..f237276 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,9 @@ __pycache__/ *.vscode _notes/ -ports-j/**/target/ +rosetta-test-j/**/target/ .idea/ .python-version -ports.code-workspace +rosetta-test.code-workspace .devenv .direnv diff --git a/.smalltalk.ston b/.smalltalk.ston index fb5c568..8310a97 100644 --- a/.smalltalk.ston +++ b/.smalltalk.ston @@ -1,12 +1,12 @@ SmalltalkCISpec { #loading : [ SCIMetacelloLoadSpec { - #baseline : 'PortsS', - #directory : 'ports-s', + #baseline : 'RosettaTestS', + #directory : 'rosetta-test-s', #platforms : [ #squeak ] } ], #testing : { - #categories : [ 'PortsS-Suites' ] + #categories : [ 'RosettaTestS-Suites' ] } } \ No newline at end of file diff --git a/README.md b/README.md index c489929..a527587 100644 --- a/README.md +++ b/README.md @@ -1,45 +1,45 @@ -# PorTS [![Python Suites](https://github.com/codeZeilen/ports-prototype/actions/workflows/python-suites.yml/badge.svg)](https://github.com/codeZeilen/ports-prototype/actions/workflows/python-suites.yml) +# RosettaTest [![Python Suites](https://github.com/codeZeilen/ports-prototype/actions/workflows/python-suites.yml/badge.svg)](https://github.com/codeZeilen/ports-prototype/actions/workflows/python-suites.yml) -With the PorTS project, you only have to write a test suite once for multiple implementations. +With the RosettaTest project, you only have to write a test suite once for multiple implementations. (This is still a prototype project. Expect major architectural or API changes, as well as major bugs and inconsistencies.) ## Trying it out -Currently, the best-supported language is Python. To get an idea of how to create and port PorTS test suites, try the Python version of the SMTP test suite, which runs against the SMTP implementation in the Python standard library. +Currently, the best-supported language is Python. To get an idea of how to create and port RosettaTest suites, try the Python version of the SMTP test suite, which runs against the SMTP implementation in the Python standard library. -You can run the SMTP test suite in Python by executing +You can run the SMTP test suite in Python by executing: ```Python -python3 ports-py/smtp.py +python3 rosetta-test-py/smtp.py ``` -This will run the test suite from `/suites/smtp.ports` using the mappings in `/ports-py/smtp.py`. +This will run the test suite from `/rosetta-test-suites/smtp.rosetta` using the mappings in `/rosetta-test-py/smtp.py`. ## Structure of the Repository -- The core PorTS language (`/ports`) -- PorTS interpreters for - - Python (`/ports-py`) - - Ruby (`/ports-rb`) - - JavaScript (`/ports-js`) - - Smalltalk (`/ports-s`) -- A full test suite for - - SMTP (`/suites/smtp.ports`) - - RFC JSON parsing (`suites/json-rfc.ports`) -- Prototype test suites for - - sending MIME documents (`/suites/sendmail.ports`) - - RFC URI parsing (`suites/url-parsing-rfc.ports`) +- The core RosettaTest language (`/rosetta-test`) +- RosettaTest language interpreters for + - Python (`/rosetta-test-py`) + - Ruby (`/rosetta-test-rb`) + - JavaScript (`/rosetta-test-js`) + - Smalltalk (`/rosetta-test-s`) +- A full test suite (`/rosetta-test-suites`) for + - SMTP (`smtp.rosetta`) + - RFC JSON parsing (`json-rfc.rosetta`) +- Prototype test suites (`/rosetta-test-suites`) for + - sending MIME documents (`sendmail.rosetta`) + - RFC URI parsing (`url-parsing-rfc.rosetta`) ## How it Works (Overview) -The test suites are written in the PorTS language. The parts that are implementation-specific are designated as _placeholders_. For every implementation that you want to test, you need to fill in these placeholders. +The test suites are written in the RosettaTest language. The parts that are implementation-specific are designated as _placeholders_. For every implementation that you want to test, you need to fill in these placeholders. -Thus, if you want to execute a PorTS suite for your project, you need: +Thus, if you want to execute a RosettaTest suite for your project, you need: - 1. A _PorTS interpreter_ for your language + 1. A _RosettaTest language interpreter_ for your language 2. A _mapping_ that fills each placeholder with a function from the implementation. Often the mapping will not be 1:1, so you might need to write additional code to map the behavior to the expected behavior of the placeholder. diff --git a/ports-s/BaselineOfPortsS/BaselineOfPortsS.class.st b/ports-s/BaselineOfPortsS/BaselineOfPortsS.class.st deleted file mode 100644 index 9e58cb7..0000000 --- a/ports-s/BaselineOfPortsS/BaselineOfPortsS.class.st +++ /dev/null @@ -1,19 +0,0 @@ -Class { - #name : #BaselineOfPortsS, - #superclass : #BaselineOf, - #category : #BaselineOfPortsS -} - -{ #category : #'as yet unclassified' } -BaselineOfPortsS >> baseline: spec [ - - spec - for: #common - do: [ spec blessing: #baseline. - spec - package: 'PortsS-Core'; - package: 'PortsS-Interpreter'; - package: 'PortsS-Suites' with: [spec requires: #('Core')]; - group: 'Core' with: #('PortsS-Interpreter' 'PortsS-Core'); - group: 'default' with: #('PortsS-Suites') ]. -] diff --git a/ports-s/BaselineOfPortsS/package.st b/ports-s/BaselineOfPortsS/package.st deleted file mode 100644 index a208b8a..0000000 --- a/ports-s/BaselineOfPortsS/package.st +++ /dev/null @@ -1 +0,0 @@ -Package { #name : #BaselineOfPortsS } diff --git a/ports-s/PortsS-Core/package.st b/ports-s/PortsS-Core/package.st deleted file mode 100644 index 61a82a4..0000000 --- a/ports-s/PortsS-Core/package.st +++ /dev/null @@ -1 +0,0 @@ -Package { #name : #'PortsS-Core' } diff --git a/ports-s/PortsS-Interpreter/Collection.extension.st b/ports-s/PortsS-Interpreter/Collection.extension.st deleted file mode 100644 index 4e685bd..0000000 --- a/ports-s/PortsS-Interpreter/Collection.extension.st +++ /dev/null @@ -1,7 +0,0 @@ -Extension { #name : #Collection } - -{ #category : #'*PortsS-Interpreter' } -Collection >> isPortsTrue [ - - ^ self notEmpty -] diff --git a/ports-s/PortsS-Interpreter/False.extension.st b/ports-s/PortsS-Interpreter/False.extension.st deleted file mode 100644 index 5d0311f..0000000 --- a/ports-s/PortsS-Interpreter/False.extension.st +++ /dev/null @@ -1,7 +0,0 @@ -Extension { #name : #False } - -{ #category : #'*PortsS-Interpreter' } -False >> isPortsTrue [ - - ^ false -] diff --git a/ports-s/PortsS-Interpreter/Object.extension.st b/ports-s/PortsS-Interpreter/Object.extension.st deleted file mode 100644 index afa695d..0000000 --- a/ports-s/PortsS-Interpreter/Object.extension.st +++ /dev/null @@ -1,31 +0,0 @@ -Extension { #name : #Object } - -{ #category : #'*PortsS-Interpreter' } -Object >> arrayForm [ - - ^ self -] - -{ #category : #'*PortsS-Interpreter' } -Object >> isPortsSchemePrimitive [ - - ^ false -] - -{ #category : #'*PortsS-Interpreter' } -Object >> isPortsSchemeProcedure [ - - ^ false -] - -{ #category : #'*PortsS-Interpreter' } -Object >> isPortsTrue [ - - ^ true -] - -{ #category : #'*PortsS-Interpreter' } -Object >> printAsTree [ - - ^ self printString -] diff --git a/ports-s/PortsS-Interpreter/PortsSyntaxError.class.st b/ports-s/PortsS-Interpreter/PortsSyntaxError.class.st deleted file mode 100644 index 7a271d2..0000000 --- a/ports-s/PortsS-Interpreter/PortsSyntaxError.class.st +++ /dev/null @@ -1,5 +0,0 @@ -Class { - #name : #PortsSyntaxError, - #superclass : #Error, - #category : #'PortsS-Interpreter' -} diff --git a/ports-s/PortsS-Interpreter/PortsTypeError.class.st b/ports-s/PortsS-Interpreter/PortsTypeError.class.st deleted file mode 100644 index b02c759..0000000 --- a/ports-s/PortsS-Interpreter/PortsTypeError.class.st +++ /dev/null @@ -1,5 +0,0 @@ -Class { - #name : #PortsTypeError, - #superclass : #Error, - #category : #'PortsS-Interpreter' -} diff --git a/ports-s/PortsS-Interpreter/package.st b/ports-s/PortsS-Interpreter/package.st deleted file mode 100644 index c44b0a6..0000000 --- a/ports-s/PortsS-Interpreter/package.st +++ /dev/null @@ -1 +0,0 @@ -Package { #name : #'PortsS-Interpreter' } diff --git a/ports-s/PortsS-Suites/PortsFSSuite.class.st b/ports-s/PortsS-Suites/PortsFSSuite.class.st deleted file mode 100644 index 9a75633..0000000 --- a/ports-s/PortsS-Suites/PortsFSSuite.class.st +++ /dev/null @@ -1,101 +0,0 @@ -Class { - #name : #PortsFSSuite, - #superclass : #PortsSuite, - #instVars : [ - 'streams' - ], - #category : #'PortsS-Suites' -} - -{ #category : #'spec definition' } -PortsFSSuite >> closeFile: file env: env [ - - - file close. -] - -{ #category : #'spec definition' } -PortsFSSuite >> createTestFile: fileName content: content env: env [ - - - FileStream fileNamed: fileName do: [:stream | - stream nextPutAll: content]. -] - -{ #category : #failures } -PortsFSSuite >> expectedFailures [ - - ^ #('read on a write-only file is an error') -] - -{ #category : #'spec definition' } -PortsFSSuite >> flushFile: file env: env [ - - - file flush. -] - -{ #category : #'initialize-release' } -PortsFSSuite >> initialize [ - - super initialize. - streams := Set new. -] - -{ #category : #'spec definition' } -PortsFSSuite >> isFileDescriptor: file env: env [ - - - ^ file isKindOf: FileStream -] - -{ #category : #'spec definition' } -PortsFSSuite >> isFileError: obj env: env [ - - - ^ obj isKindOf: Exception -] - -{ #category : #'spec definition' } -PortsFSSuite >> openFile: fileName mode: mode env: env [ - - - mode = 'r' ifTrue: [ - ^ streams add: (FileStream readOnlyFileNamed: fileName)]. - mode = 'w' ifTrue: [ - ^ streams add: (FileStream fileNamed: fileName)]. - ^ Error new -] - -{ #category : #'spec definition' } -PortsFSSuite >> readFile: file length: length env: env [ - - - ^ file next: length -] - -{ #category : #'spec definition' } -PortsFSSuite >> removeTestFile: fileName env: env [ - - - FileDirectory default deleteFileNamed: fileName. -] - -{ #category : #'spec definition' } -PortsFSSuite >> suiteSource [ - - ^ self readSuiteFileNamed: 'fs.ports' -] - -{ #category : #running } -PortsFSSuite >> tearDown [ - - streams do: [:s | s close]. -] - -{ #category : #'spec definition' } -PortsFSSuite >> writeFile: file content: content env: env [ - - - file nextPutAll: content. -] diff --git a/ports-s/PortsS-Suites/PortsJSONRfcSuite.class.st b/ports-s/PortsS-Suites/PortsJSONRfcSuite.class.st deleted file mode 100644 index 572b76d..0000000 --- a/ports-s/PortsS-Suites/PortsJSONRfcSuite.class.st +++ /dev/null @@ -1,47 +0,0 @@ -Class { - #name : #PortsJSONRfcSuite, - #superclass : #PortsSuite, - #category : #'PortsS-Suites' -} - -{ #category : #placeholders } -PortsJSONRfcSuite >> fileContents: fileName env: env [ - - - - ^ (FileDirectory default / '..' / '..' / #ports / 'suites' / 'json-rfc-fixtures') readOnlyFileNamed: fileName do: [:stream | - stream binary. - stream contents asString] -] - -{ #category : #placeholders } -PortsJSONRfcSuite >> listJsonTestFiles: env [ - - - - ^ (FileDirectory default / '..' / '..' / #ports / 'suites' / 'json-rfc-fixtures') fileEntries collect: [:entry | entry name] -] - -{ #category : #placeholders } -PortsJSONRfcSuite >> parse: jsonString env: env [ - - - - ^ [Json readFrom: jsonString readStream] - on: Exception - do: [:e | e] -] - -{ #category : #placeholders } -PortsJSONRfcSuite >> parseSuccess: parseResult env: env [ - - - - ^ (parseResult isKindOf: Exception) not -] - -{ #category : #'suite definition' } -PortsJSONRfcSuite >> suiteSource [ - - ^ self readSuiteFileNamed: 'json-rfc.ports' -] diff --git a/ports-s/PortsS-Suites/package.st b/ports-s/PortsS-Suites/package.st deleted file mode 100644 index b18eefd..0000000 --- a/ports-s/PortsS-Suites/package.st +++ /dev/null @@ -1 +0,0 @@ -Package { #name : #'PortsS-Suites' } diff --git a/ports-s/PortsS-Tests/package.st b/ports-s/PortsS-Tests/package.st deleted file mode 100644 index fcac58e..0000000 --- a/ports-s/PortsS-Tests/package.st +++ /dev/null @@ -1 +0,0 @@ -Package { #name : #'PortsS-Tests' } diff --git a/ports-js/interpreter-tests.js b/rosetta-test-js/interpreter-tests.js similarity index 97% rename from ports-js/interpreter-tests.js rename to rosetta-test-js/interpreter-tests.js index 4f02421..4be8ff3 100644 --- a/ports-js/interpreter-tests.js +++ b/rosetta-test-js/interpreter-tests.js @@ -59,7 +59,7 @@ function valueToString(value) { // Load test cases let testTable = []; try { - const testsPath = join(__dirname, '../ports/interpreter-tests.json'); + const testsPath = join(__dirname, '../rosetta-test/interpreter-tests.json'); testTable = JSON.parse(readFileSync(testsPath, 'utf8')); } catch (error) { diff --git a/ports-js/json-rfc.js b/rosetta-test-js/json-rfc.js similarity index 90% rename from ports-js/json-rfc.js rename to rosetta-test-js/json-rfc.js index df7bc8b..2bd3e71 100644 --- a/ports-js/json-rfc.js +++ b/rosetta-test-js/json-rfc.js @@ -1,8 +1,8 @@ -import { suite } from "./ports.js"; +import { suite } from "./rosetta-test.js"; import { readdirSync, readFileSync } from "fs"; import path from "path"; -const jsonSuite = suite("suites/json-rfc.ports"); +const jsonSuite = suite("rosetta-test-suites/json-rfc.rosetta"); jsonSuite.placeholder("list-json-test-files", (env) => { // List the files in the suites/json-rfc-fixtures directory ending with .json diff --git a/ports-js/package.json b/rosetta-test-js/package.json similarity index 100% rename from ports-js/package.json rename to rosetta-test-js/package.json diff --git a/ports-js/parser.js b/rosetta-test-js/parser.js similarity index 98% rename from ports-js/parser.js rename to rosetta-test-js/parser.js index ce1c5b1..7a65a62 100644 --- a/ports-js/parser.js +++ b/rosetta-test-js/parser.js @@ -84,7 +84,7 @@ export function parseWithoutExpand(inputString) { }; function main() { - const testTable = JSON.parse(readFileSync('ports/syntax-tests.json')); + const testTable = JSON.parse(readFileSync('rosetta/syntax-tests.json')); function matches(structure, target) { if (Array.isArray(target)) { diff --git a/ports-js/ports.js b/rosetta-test-js/rosetta-test.js similarity index 79% rename from ports-js/ports.js rename to rosetta-test-js/rosetta-test.js index 2cd0fb1..a302f05 100644 --- a/ports-js/ports.js +++ b/rosetta-test-js/rosetta-test.js @@ -2,7 +2,7 @@ import { readFileSync } from 'fs'; import { Sym, Env, globalEnv, Procedure, evalSchemeString, asString } from './scheme.js'; import path from 'path'; -class PortsFunction { +class RosettaFunction { constructor(func, env) { this.function = func; this.env = env; @@ -18,7 +18,7 @@ class PortsFunction { get(key) { if (key === 0) { - return Sym(this.portsRole()); + return Sym(this.rosettaRole()); } else if (key === 1) { return this; } else { @@ -27,19 +27,19 @@ class PortsFunction { } } -class PortsSetup extends PortsFunction { - portsRole() { +class RosettaSetup extends RosettaFunction { + rosettaRole() { return "setup"; } } -class PortsTearDown extends PortsFunction { - portsRole() { +class RosettaTearDown extends RosettaFunction { + rosettaRole() { return "tearDown"; } } -class Placeholder extends PortsFunction { +class Placeholder extends RosettaFunction { constructor(name, parameters, docString) { super(null, null); this.name = name; @@ -56,26 +56,26 @@ class Placeholder extends PortsFunction { } } -class PortsAssertionError extends Error { +class RosettaAssertionError extends Error { constructor(message) { super(message); - this.name = "PortsAssertionError"; + this.name = "RosettaAssertionError"; } } -function portsAssert(value, msg = "") { - if (!value) throw new PortsAssertionError(msg || "Assertion failed"); +function rosettaAssert(value, msg = "") { + if (!value) throw new RosettaAssertionError(msg || "Assertion failed"); } -function portsAssertEq(expected, actual) { - if (expected !== actual) throw new PortsAssertionError(`${expected} != ${actual}`); +function rosettaAssertEq(expected, actual) { + if (expected !== actual) throw new RosettaAssertionError(`${expected} != ${actual}`); } -class PortsSuite { +class RosettaTestSuite { constructor(fileName) { this.schemeEnv = new Env([],[], globalEnv); - this.initializePortsPrimitives(); - this.initializePorts(); + this.initializeRosettaPrimitives(); + this.initializeRosetta(); this.suiteSource = readFileSync(fileName, 'utf8'); this.suiteName = null; @@ -121,13 +121,13 @@ class PortsSuite { return newPlaceholder; } - initializePortsPrimitives() { + initializeRosettaPrimitives() { const primitives = { "create-placeholder": (...args) => this.createPlaceholder(...args), "is-placeholder?": x => x instanceof Placeholder, - "assert": portsAssert, - "assert-equal": portsAssertEq, - "is-assertion-error?": e => {return e instanceof PortsAssertionError}, + "assert": rosettaAssert, + "assert-equal": rosettaAssertEq, + "is-assertion-error?": e => {return e instanceof RosettaAssertionError}, }; Object.keys(primitives).forEach((key) => { @@ -135,9 +135,9 @@ class PortsSuite { }); } - initializePorts() { - const portsContent = readFileSync("ports/ports.scm", "utf8"); - this.evalScheme(portsContent); + initializeRosetta() { + const rosettaContent = readFileSync("rosetta-test/rosetta-test.scm", "utf8"); + this.evalScheme(rosettaContent); } placeholder(name, func) { @@ -169,10 +169,10 @@ class PortsSuite { inval installSetUpTearDownFunctions() { this.setUpFunctions.forEach(func => { - this.rootCapability[2].unshift(new PortsSetup(func, this.schemeEnv)); + this.rootCapability[2].unshift(new RosettaSetup(func, this.schemeEnv)); }); this.tearDownFunctions.forEach(func => { - this.rootCapability[3].unshift(new PortsTearDown(func, this.schemeEnv)); + this.rootCapability[3].unshift(new RosettaTearDown(func, this.schemeEnv)); }); } @@ -197,6 +197,6 @@ inval } export function suite(fileName) { - return new PortsSuite(fileName); + return new RosettaTestSuite(fileName); } diff --git a/ports-js/scheme.js b/rosetta-test-js/scheme.js similarity index 99% rename from ports-js/scheme.js rename to rosetta-test-js/scheme.js index e17d044..e6d5055 100644 --- a/ports-js/scheme.js +++ b/rosetta-test-js/scheme.js @@ -378,7 +378,7 @@ export function evalSchemeString(str, env = globalEnv) { addGlobals(globalEnv); -evalSchemeString(readFileSync('ports/stdlib.scm', 'utf8')); +evalSchemeString(readFileSync('rosetta-test/stdlib.scm', 'utf8')); function main() { console.log(evalSchemeString("(+ (* 2 3) 2)")); // Should output 3 diff --git a/ports-js/url-parsing.js b/rosetta-test-js/url-parsing.js similarity index 86% rename from ports-js/url-parsing.js rename to rosetta-test-js/url-parsing.js index d1049ad..3fe5431 100644 --- a/ports-js/url-parsing.js +++ b/rosetta-test-js/url-parsing.js @@ -1,7 +1,7 @@ -import { suite } from './ports.js'; +import { suite } from './rosetta.js'; import { URL } from 'url'; -const urlParsingSuite = suite("suites/url-parsing-rfc.ports"); +const urlParsingSuite = suite("rosetta-test-suites/url-parsing-rfc.rosetta"); urlParsingSuite.placeholder("url-parse", (env, urlString) => { try { diff --git a/ports-py/fs.py b/rosetta-test-py/fs.py similarity index 96% rename from ports-py/fs.py rename to rosetta-test-py/fs.py index 4a1b66a..e767e10 100644 --- a/ports-py/fs.py +++ b/rosetta-test-py/fs.py @@ -1,11 +1,11 @@ """This is sketched code and is not intended to be run.""" -import ports +import rosetta import io import os import tempfile -fs_suite = ports.suite("suites/fs.ports") +fs_suite = rosetta.suite("rosetta-test-suites/fs.rosetta") @fs_suite.setUp() def set_up(env): diff --git a/ports-py/interpreter-tests.py b/rosetta-test-py/interpreter-tests.py similarity index 95% rename from ports-py/interpreter-tests.py rename to rosetta-test-py/interpreter-tests.py index fcf9195..6e70414 100644 --- a/ports-py/interpreter-tests.py +++ b/rosetta-test-py/interpreter-tests.py @@ -3,7 +3,7 @@ import numbers testTable = [] -with open("ports/interpreter-tests.json") as file: +with open("rosetta-test/interpreter-tests.json") as file: testTable = json.load(file) def matches(structure, target): diff --git a/ports-py/json-rfc.py b/rosetta-test-py/json-rfc.py similarity index 74% rename from ports-py/json-rfc.py rename to rosetta-test-py/json-rfc.py index 9afd629..099894d 100644 --- a/ports-py/json-rfc.py +++ b/rosetta-test-py/json-rfc.py @@ -1,12 +1,12 @@ -import ports +import rosetta from pathlib import Path import json -suite = ports.suite("suites/json-rfc.ports") +suite = rosetta.suite("rosetta-test-suites/json-rfc.rosetta") @suite.placeholder("list-json-test-files") def listTestFiles(env): - return list(map(lambda p: p.name, Path("suites/json-rfc-fixtures").glob("*.json"))) + return list(map(lambda p: p.name, Path("rosetta-test-suites/json-rfc-fixtures").glob("*.json"))) @suite.placeholder("parse") def parse(env,json_string): @@ -22,7 +22,7 @@ def parse_success(env,parse_result): @suite.placeholder("file-contents") def file_contents(env,file_name): # We need to read in binary, as the data includes invalid characters by design - with open(f"suites/json-rfc-fixtures/{file_name}", "rb") as f: + with open(f"rosetta-test-suites/json-rfc-fixtures/{file_name}", "rb") as f: return f.read() # diff --git a/ports-py/lispy.py b/rosetta-test-py/lispy.py similarity index 99% rename from ports-py/lispy.py rename to rosetta-test-py/lispy.py index e4b2240..9a2c07a 100644 --- a/ports-py/lispy.py +++ b/rosetta-test-py/lispy.py @@ -455,7 +455,7 @@ def let(*args): # # Loading the basic definitions # -with open("ports/stdlib.scm", "r") as f: +with open("rosetta-test/stdlib.scm", "r") as f: eval(parse(f.read()), env=global_env) # diff --git a/ports-py/ports.py b/rosetta-test-py/rosetta.py similarity index 77% rename from ports-py/ports.py rename to rosetta-test-py/rosetta.py index 3e56428..5e52b7e 100644 --- a/ports-py/ports.py +++ b/rosetta-test-py/rosetta.py @@ -4,11 +4,11 @@ import time from pathlib import Path -class TestPortsUnittestContainer(unittest.TestCase): +class TestRosettaUnittestContainer(unittest.TestCase): pass -class PortsFunction(object): +class RosettaFunction(object): def __init__(self, function, env) -> None: self.function = function @@ -22,29 +22,29 @@ def __call__(self, *args): def __getitem__(self, key): if key == 0: - return lispy.Sym(self.ports_role()) + return lispy.Sym(self.rosetta_role()) elif key == 1: return self else: return None - def ports_role(self): - raise NotImplementedError("PortsFunction is an abstract class") + def rosetta_role(self): + raise NotImplementedError("RosettaFunction is an abstract class") -class PortsSetup(PortsFunction): +class RosettaSetup(RosettaFunction): - def ports_role(self): + def rosetta_role(self): return "setup" -class PortsTearDown(PortsFunction): +class RosettaTearDown(RosettaFunction): - def ports_role(self): + def rosetta_role(self): return "tearDown" -class Placeholder(PortsFunction): +class Placeholder(RosettaFunction): def __init__(self, name, parameters, doc_string) -> None: self.name = name @@ -52,38 +52,38 @@ def __init__(self, name, parameters, doc_string) -> None: self.doc_string = doc_string super().__init__(None, None) - def ports_role(self): + def rosetta_role(self): return "placeholder" -def ports_assert(value, msg=""): +def rosetta_assert(value, msg=""): assert value, msg -def ports_assert_eq(expected, actual): +def rosetta_assert_eq(expected, actual): assert expected == actual, f"{expected} != {actual}" -def ports_thread(proc): +def rosetta_thread(proc): thread = threading.Thread(target=proc) thread.daemon = True thread.start() return thread -def ports_thread_kill(thread: threading.Thread): +def rosetta_thread_kill(thread: threading.Thread): pass -def ports_thread_join(thread: threading.Thread): +def rosetta_thread_join(thread: threading.Thread): thread.join() -def ports_thread_yield(): +def rosetta_thread_yield(): time.sleep(0) -class PortsSuite(object): +class RosettaTestSuite(object): - # TODO: Consider simplyfing the macros to just add to a single list of annotations and extract the relevant parts afterwards (using functions written in ports) + # TODO: Consider simplyfing the macros to just add to a single list of annotations and extract the relevant parts afterwards (using functions written in rosetta) def __init__(self, file_name) -> None: self.lispy_env = lispy.Env(outer=lispy.global_env) - self.initialize_ports_primitives() - self.initialize_ports() + self.initialize_rosetta_primitives() + self.initialize_rosetta() with open(file_name, "r", encoding="utf-8") as file: self.suite_source = file.read() @@ -122,21 +122,21 @@ def create_placeholder(self, name, parameters, doc_string=""): return newPlaceholder - def initialize_ports_primitives(self): + def initialize_rosetta_primitives(self): self.lispy_env.update({ lispy.Sym("create-placeholder"): lambda *args: self.create_placeholder(*args), lispy.Sym("is-placeholder?"): lambda x: isinstance(x, Placeholder), - lispy.Sym("assert"): ports_assert, - lispy.Sym("assert-equal"): ports_assert_eq, + lispy.Sym("assert"): rosetta_assert, + lispy.Sym("assert-equal"): rosetta_assert_eq, lispy.Sym("is-assertion-error?"): lambda e: isinstance(e, AssertionError), - lispy.Sym("thread"): ports_thread, - lispy.Sym("thread-wait-for-completion"): ports_thread_join, + lispy.Sym("thread"): rosetta_thread, + lispy.Sym("thread-wait-for-completion"): rosetta_thread_join, lispy.Sym("thread-sleep!"): lambda x: time.sleep(float(x)), - lispy.Sym("thread-yield"): ports_thread_yield, + lispy.Sym("thread-yield"): rosetta_thread_yield, }) - def initialize_ports(self): - with open("ports/ports.scm", "r") as file: + def initialize_rosetta(self): + with open("rosetta-test/rosetta-test.scm", "r") as file: self.eval(file.read()) def placeholder(self, name): @@ -166,19 +166,19 @@ def ensure_placeholders_are_valid(self): def install_setUp_tearDown_functions(self): for func in self.setUp_functions: - self.root_capability[2].insert(0, PortsSetup(func, self.lispy_env)) + self.root_capability[2].insert(0, RosettaSetup(func, self.lispy_env)) for func in self.tearDown_functions: - self.root_capability[3].insert(0, PortsTearDown(func, self.lispy_env)) + self.root_capability[3].insert(0, RosettaTearDown(func, self.lispy_env)) - def generate_test_name(self, ports_test): - return self.eval_with_args("(test-full-name current_test)", current_test=ports_test) + def generate_test_name(self, rosetta_test): + return self.eval_with_args("(test-full-name current_test)", current_test=rosetta_test) - def generate_unittest_test_method(self, ports_test): - return lambda testcase: self.run_test(ports_test) + def generate_unittest_test_method(self, rosetta_test): + return lambda testcase: self.run_test(rosetta_test) - def run_test(self, ports_test): - print(self.eval_with_args("(test-name current_test)", current_test=ports_test)) - return self.eval_with_args("(test-run current_test)", current_test=ports_test) + def run_test(self, rosetta_test): + print(self.eval_with_args("(test-name current_test)", current_test=rosetta_test)) + return self.eval_with_args("(test-run current_test)", current_test=rosetta_test) def run_unittest(self, only=None, only_capabilities=None, exclude=None, exclude_capabilities=None, expected_failures=[]): self.initialize_suite() @@ -197,10 +197,10 @@ def run_unittest(self, only=None, only_capabilities=None, exclude=None, exclude_ for test in selected_tests: test_name = self.generate_test_name(test) - setattr(TestPortsUnittestContainer, + setattr(TestRosettaUnittestContainer, test_name, self.generate_unittest_test_method(test)) - test_case = TestPortsUnittestContainer(test_name) + test_case = TestRosettaUnittestContainer(test_name) if test_name in expected_failures: unittest.expectedFailure(test_case) test_suite.addTest(test_case) @@ -222,7 +222,7 @@ def run(self, only=None, only_capabilities=None, exclude=None, exclude_capabilit def suite(file_name): - return PortsSuite(file_name) + return RosettaTestSuite(file_name) def fixture_path(file_name: str): - return (Path('./suites') / Path(file_name)).absolute().as_posix() \ No newline at end of file + return (Path('./rosetta-test-suites') / Path(file_name)).absolute().as_posix() \ No newline at end of file diff --git a/ports-py/sendmail-python-emails.py b/rosetta-test-py/sendmail-python-emails.py similarity index 96% rename from ports-py/sendmail-python-emails.py rename to rosetta-test-py/sendmail-python-emails.py index 6589086..5c165ac 100644 --- a/ports-py/sendmail-python-emails.py +++ b/rosetta-test-py/sendmail-python-emails.py @@ -1,11 +1,11 @@ -import ports +import rosetta import socket as socketlib import ssl import emails from emails.backend.smtp import SMTPBackend from emails.backend.response import SMTPResponse -sendmail_suite = ports.suite("suites/sendmail.ports") +sendmail_suite = rosetta.suite("rosetta-test-suites/sendmail.rosetta") # @@ -59,7 +59,7 @@ def secure_server_socket_wrap(env, connection, ca_file, cert_file, key_file, clo context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER) context.check_hostname = False context.verify_mode = ssl.CERT_NONE - context.load_cert_chain(ports.fixture_path(ca_file), ports.fixture_path(key_file)) + context.load_cert_chain(rosetta.fixture_path(ca_file), rosetta.fixture_path(key_file)) try: ssock = context.wrap_socket(connection, server_side=True) sockets.append(ssock) diff --git a/ports-py/sendmail-python-emails.requirements.txt b/rosetta-test-py/sendmail-python-emails.requirements.txt similarity index 100% rename from ports-py/sendmail-python-emails.requirements.txt rename to rosetta-test-py/sendmail-python-emails.requirements.txt diff --git a/ports-py/sendmail-redmail.py b/rosetta-test-py/sendmail-redmail.py similarity index 96% rename from ports-py/sendmail-redmail.py rename to rosetta-test-py/sendmail-redmail.py index 5a2a0f9..3ce0c39 100644 --- a/ports-py/sendmail-redmail.py +++ b/rosetta-test-py/sendmail-redmail.py @@ -1,10 +1,10 @@ -import ports +import rosetta import socket as socketlib import ssl from redmail import EmailSender import smtplib -sendmail_suite = ports.suite("suites/sendmail.ports") +sendmail_suite = rosetta.suite("rosetta-test-suites/sendmail.rosetta") # @@ -56,7 +56,7 @@ def secure_server_socket_wrap(env, connection, ca_file, cert_file, key_file, clo context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER) context.check_hostname = False context.verify_mode = ssl.CERT_NONE - context.load_cert_chain(ports.fixture_path(ca_file), ports.fixture_path(key_file)) + context.load_cert_chain(rosetta.fixture_path(ca_file), rosetta.fixture_path(key_file)) try: ssock = context.wrap_socket(connection, server_side=True) sockets.append(ssock) diff --git a/ports-py/sendmail-redmail.requirements.txt b/rosetta-test-py/sendmail-redmail.requirements.txt similarity index 100% rename from ports-py/sendmail-redmail.requirements.txt rename to rosetta-test-py/sendmail-redmail.requirements.txt diff --git a/ports-py/smtp.py b/rosetta-test-py/smtp.py similarity index 96% rename from ports-py/smtp.py rename to rosetta-test-py/smtp.py index 8550ab2..fd8ab18 100644 --- a/ports-py/smtp.py +++ b/rosetta-test-py/smtp.py @@ -1,9 +1,9 @@ -import ports +import rosetta import socket as socketlib import ssl import smtplib -smtp_suite = ports.suite("suites/smtp.ports") +smtp_suite = rosetta.suite("rosetta-test-suites/smtp.rosetta") # @@ -57,7 +57,7 @@ def secure_server_socket_wrap(env, connection, ca_file, cert_file, key_file, clo context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER) context.check_hostname = False context.verify_mode = ssl.CERT_NONE - context.load_cert_chain(ports.fixture_path(ca_file), ports.fixture_path(key_file)) + context.load_cert_chain(rosetta.fixture_path(ca_file), rosetta.fixture_path(key_file)) try: ssock = context.wrap_socket(connection, server_side=True) sockets.append(ssock) @@ -112,7 +112,7 @@ def smtp_secure_connect_with_timeout(env, host, port, cafile, timeout=None): context = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT) context.check_hostname = False context.verify_mode = ssl.CERT_NONE - context.load_verify_locations(ports.fixture_path(cafile)) + context.load_verify_locations(rosetta.fixture_path(cafile)) if timeout: try: result = smtplib.SMTP_SSL(host, port, context=context, timeout=float(timeout)) @@ -218,7 +218,7 @@ def smtp_quit(env, smtp: smtplib.SMTP): @smtp_suite.placeholder("smtp-starttls") def smtp_starttls(env, smtp, certfile=None, keyfile=None): if certfile and keyfile: - return smtp.starttls(keyfile=ports.fixture_path(keyfile), certfile=ports.fixture_path(certfile)) + return smtp.starttls(keyfile=rosetta.fixture_path(keyfile), certfile=rosetta.fixture_path(certfile)) else: try: return smtp.starttls() @@ -340,6 +340,6 @@ def smtp_auth_not_supported_error(env, result): "test_CRLF_detection_in_VRFY_command", "test_CRLF_mitigation_in_HELP_command", "test_CRLF_detection_in_EXPN_command", - # There is no check whether the server supports 8BITMIME + # There is no check whether the server suprosetta 8BITMIME "test_non-ascii_content_in_send-message_without_8BITMIME_support"), expected_failures=("test_Handle_421_during_data_command","test_Handle_421_at_start_of_data_command",)) diff --git a/ports-py/syntax-tests.py b/rosetta-test-py/syntax-tests.py similarity index 95% rename from ports-py/syntax-tests.py rename to rosetta-test-py/syntax-tests.py index 106a0dc..0c82bb0 100644 --- a/ports-py/syntax-tests.py +++ b/rosetta-test-py/syntax-tests.py @@ -2,7 +2,7 @@ import lispy import numbers -with open("ports/parsing-tests.json") as file: +with open("rosetta-test/parsing-tests.json") as file: testTable = json.load(file) def matches(structure, target): diff --git a/ports-py/url-parsing-urllib3.py b/rosetta-test-py/url-parsing-urllib3.py similarity index 87% rename from ports-py/url-parsing-urllib3.py rename to rosetta-test-py/url-parsing-urllib3.py index 34428ea..c7ee391 100644 --- a/ports-py/url-parsing-urllib3.py +++ b/rosetta-test-py/url-parsing-urllib3.py @@ -1,7 +1,7 @@ -import ports +import rosetta import urllib3 -suite = ports.suite("suites/url-parsing-rfc.ports") +suite = rosetta.suite("rosetta-test-suites/url-parsing-rfc.rosetta") @suite.placeholder("url-parse") def url_parse(env, url_string): diff --git a/ports-py/url-parsing-urllib3.requirements.txt b/rosetta-test-py/url-parsing-urllib3.requirements.txt similarity index 100% rename from ports-py/url-parsing-urllib3.requirements.txt rename to rosetta-test-py/url-parsing-urllib3.requirements.txt diff --git a/ports-py/url-parsing.py b/rosetta-test-py/url-parsing.py similarity index 88% rename from ports-py/url-parsing.py rename to rosetta-test-py/url-parsing.py index 8a9c973..733e10e 100644 --- a/ports-py/url-parsing.py +++ b/rosetta-test-py/url-parsing.py @@ -1,8 +1,8 @@ import urllib.parse -import ports +import rosetta import urllib -suite = ports.suite("suites/url-parsing-rfc.ports") +suite = rosetta.suite("rosetta-test-suites/url-parsing-rfc.rosetta") @suite.placeholder("url-parse") def url_parse(env, url_string): diff --git a/ports-rb/interpreter-tests.rb b/rosetta-test-rb/interpreter-tests.rb similarity index 95% rename from ports-rb/interpreter-tests.rb rename to rosetta-test-rb/interpreter-tests.rb index 5896f32..55cd422 100644 --- a/ports-rb/interpreter-tests.rb +++ b/rosetta-test-rb/interpreter-tests.rb @@ -31,7 +31,7 @@ def matches(result, target) # Load test cases test_table = [] begin - tests_path = File.join(dirname, "../ports/interpreter-tests.json") + tests_path = File.join(dirname, "../rosetta-test/interpreter-tests.json") test_table = JSON.parse(File.read(tests_path)) rescue => error puts "Error loading test files: #{error.message}" diff --git a/ports-rb/json-rfc.rb b/rosetta-test-rb/json-rfc.rb similarity index 73% rename from ports-rb/json-rfc.rb rename to rosetta-test-rb/json-rfc.rb index d822bc6..90869ee 100644 --- a/ports-rb/json-rfc.rb +++ b/rosetta-test-rb/json-rfc.rb @@ -1,7 +1,7 @@ require "json" -require_relative "ports" +require_relative "rosetta" -suite "suites/json-rfc.ports" do +suite "rosetta-test-suites/json-rfc.rosetta" do expected_failures :test_n_string_escape_x, :test_n_string_escaped_emoji, :test_n_string_incomplete_surrogate_escape_invalid, @@ -18,7 +18,7 @@ end placeholder "list-json-test-files" do |_env| - Dir.glob("suites/json-rfc-fixtures/*.json").map { |path| File.basename(path) } + Dir.glob("rosetta-test-suites/json-rfc-fixtures/*.json").map { |path| File.basename(path) } end placeholder "parse-success?" do |_env, parse_result| @@ -26,6 +26,6 @@ end placeholder "file-contents" do |_env, filename| - File.read(File.join("suites", "json-rfc-fixtures", filename)) + File.read(File.join("rosetta-test-suites", "json-rfc-fixtures", filename)) end end diff --git a/ports-rb/parser.rb b/rosetta-test-rb/parser.rb similarity index 97% rename from ports-rb/parser.rb rename to rosetta-test-rb/parser.rb index 5ceb5af..ef51cb2 100644 --- a/ports-rb/parser.rb +++ b/rosetta-test-rb/parser.rb @@ -115,7 +115,7 @@ def matches(structure, target) end if __FILE__ == $PROGRAM_NAME - test_table = JSON.parse(File.read("ports/syntax-tests.json")) + test_table = JSON.parse(File.read("rosetta-test/syntax-tests.json")) test_table.each do |entry| if entry.is_a?(String) diff --git a/ports-rb/ports.rb b/rosetta-test-rb/rosetta.rb similarity index 81% rename from ports-rb/ports.rb rename to rosetta-test-rb/rosetta.rb index 6d29a71..092fc51 100644 --- a/ports-rb/ports.rb +++ b/rosetta-test-rb/rosetta.rb @@ -2,7 +2,7 @@ require "test/unit" require_relative "scheme" -class PortsFunction +class RosettaFunction attr_accessor :function, :env def initialize(func, env) @@ -20,26 +20,26 @@ def call(*args) def [](key) if key == 0 - ports_role + rosetta_role elsif key == 1 self end end end -class PortsSetup < PortsFunction - def ports_role +class RosettaSetup < RosettaFunction + def rosetta_role :setup end end -class PortsTearDown < PortsFunction - def ports_role +class RosettaTearDown < RosettaFunction + def rosetta_role :tearDown end end -class Placeholder < PortsFunction +class Placeholder < RosettaFunction attr_accessor :name, :parameters, :doc_string def initialize(name, parameters, doc_string) @@ -65,44 +65,44 @@ def template_string end end -def ports_assert(value, msg = "") +def rosetta_assert(value, msg = "") raise Test::Unit::AssertionFailedError, msg || "Expected #{value} to be truthy" unless value end -def ports_assert_eq(expected, actual) +def rosetta_assert_eq(expected, actual) raise Test::Unit::AssertionFailedError, "Expected #{actual} to be #{expected}" unless expected == actual end -def ports_thread(proc) +def rosetta_thread(proc) Thread.new { proc.call } end -def ports_thread_kill(thread) +def rosetta_thread_kill(thread) Thread.kill(thread) end -def ports_thread_join(thread) +def rosetta_thread_join(thread) # thread.join Thread.kill(thread) end -def ports_thread_sleep(time) +def rosetta_thread_sleep(time) sleep(time) end -def ports_thread_yield +def rosetta_thread_yield # Thread.pass sleep(0) end -class PortsSuite +class RosettaTestSuite attr_reader :scheme_env, :suite_name, :suite_version, :sources, :placeholders, :root_capability def initialize(file_name) @scheme_env = Scheme::Environment.new([], [], Scheme::GLOBAL_ENV) - initialize_ports_primitives - initialize_ports + initialize_rosetta_primitives + initialize_rosetta @suite_source = File.read(file_name) @suite_name = nil @@ -148,17 +148,17 @@ def create_placeholder(name, parameters, doc_string = "") new_placeholder end - def initialize_ports_primitives + def initialize_rosetta_primitives primitives = { "create-placeholder" => lambda { |*args| create_placeholder(*args) }, "is-placeholder?" => lambda { |x| x.is_a?(Placeholder) }, - "assert" => method(:ports_assert), - "assert-equal" => method(:ports_assert_eq), + "assert" => method(:rosetta_assert), + "assert-equal" => method(:rosetta_assert_eq), "is-assertion-error?" => lambda { |e| e.is_a?(Test::Unit::AssertionFailedError) }, - "thread" => method(:ports_thread), - "thread-wait-for-completion" => method(:ports_thread_join), - "thread-sleep!" => method(:ports_thread_sleep), - "thread-yield" => method(:ports_thread_yield) + "thread" => method(:rosetta_thread), + "thread-wait-for-completion" => method(:rosetta_thread_join), + "thread-sleep!" => method(:rosetta_thread_sleep), + "thread-yield" => method(:rosetta_thread_yield) } primitives.each do |key, value| @@ -166,9 +166,9 @@ def initialize_ports_primitives end end - def initialize_ports - ports_content = File.read("ports/ports.scm") - eval_scheme(ports_content) + def initialize_rosetta + rosetta_content = File.read("rosetta-test/rosetta-test.scm") + eval_scheme(rosetta_content) end def placeholder(name, &func) @@ -201,10 +201,10 @@ def ensure_placeholders_are_valid def install_set_up_tear_down_functions @set_up_functions.each do |func| - @root_capability[2].unshift(PortsSetup.new(func, @scheme_env)) + @root_capability[2].unshift(RosettaSetup.new(func, @scheme_env)) end @tear_down_functions.each do |func| - @root_capability[3].unshift(PortsTearDown.new(func, @scheme_env)) + @root_capability[3].unshift(RosettaTearDown.new(func, @scheme_env)) end end @@ -251,7 +251,7 @@ def to_h end def suite(file_name, &block) - obj = PortsSuite.new(file_name) + obj = RosettaTestSuite.new(file_name) obj.instance_eval(&block) obj.run end diff --git a/ports-rb/scheme.rb b/rosetta-test-rb/scheme.rb similarity index 99% rename from ports-rb/scheme.rb rename to rosetta-test-rb/scheme.rb index 1e57ae4..77d7a2c 100644 --- a/ports-rb/scheme.rb +++ b/rosetta-test-rb/scheme.rb @@ -374,7 +374,7 @@ def evaluate_string(source, env = GLOBAL_ENV) dirname = File.dirname(__FILE__) begin - stdlib = File.join(dirname, "../ports/stdlib.scm") + stdlib = File.join(dirname, "../rosetta-test/stdlib.scm") evaluate_string(File.read(stdlib)) rescue => e puts e.backtrace diff --git a/ports-rb/smtp.rb b/rosetta-test-rb/smtp.rb similarity index 98% rename from ports-rb/smtp.rb rename to rosetta-test-rb/smtp.rb index 57e42fb..4bbe340 100644 --- a/ports-rb/smtp.rb +++ b/rosetta-test-rb/smtp.rb @@ -1,9 +1,9 @@ -require_relative "ports" +require_relative "rosetta" require "socket" require "net/smtp" require "openssl" -suite "suites/smtp.ports" do +suite "rosetta-test-suites/smtp.rosetta" do only_capabilities "root.connection", "root.commands" exclude_capabilities "root.commands.expn", diff --git a/ports-rb/url_parsing.rb b/rosetta-test-rb/url_parsing.rb similarity index 88% rename from ports-rb/url_parsing.rb rename to rosetta-test-rb/url_parsing.rb index 3bb8b92..5533d44 100644 --- a/ports-rb/url_parsing.rb +++ b/rosetta-test-rb/url_parsing.rb @@ -1,7 +1,7 @@ require "uri" -require_relative "ports" +require_relative "rosetta" -suite "suites/url-parsing-rfc.ports" do +suite "rosetta-test-suites/url-parsing-rfc.rosetta" do expected_failures :test_scheme_with_invalid_characters, :"test_non-terminated_scheme", :test_invalid_ipv4_host diff --git a/ports-s/.filetree b/rosetta-test-s/.filetree similarity index 100% rename from ports-s/.filetree rename to rosetta-test-s/.filetree diff --git a/rosetta-test-s/BaselineOfPortsS/BaselineOfPortsS.class.st b/rosetta-test-s/BaselineOfPortsS/BaselineOfPortsS.class.st new file mode 100644 index 0000000..cb5e9dd --- /dev/null +++ b/rosetta-test-s/BaselineOfPortsS/BaselineOfPortsS.class.st @@ -0,0 +1,19 @@ +Class { + #name : #BaselineOfRosettaS, + #superclass : #BaselineOf, + #category : #BaselineOfRosettaS +} + +{ #category : #'as yet unclassified' } +BaselineOfRosettaS >> baseline: spec [ + + spec + for: #common + do: [ spec blessing: #baseline. + spec + package: 'RosettaS-Core'; + package: 'RosettaS-Interpreter'; + package: 'RosettaS-Suites' with: [spec requires: #('Core')]; + group: 'Core' with: #('RosettaS-Interpreter' 'RosettaS-Core'); + group: 'default' with: #('RosettaS-Suites') ]. +] diff --git a/rosetta-test-s/BaselineOfPortsS/package.st b/rosetta-test-s/BaselineOfPortsS/package.st new file mode 100644 index 0000000..324ef4d --- /dev/null +++ b/rosetta-test-s/BaselineOfPortsS/package.st @@ -0,0 +1 @@ +Package { #name : #BaselineOfRosettaS } diff --git a/ports-s/PortsS-Core/PortsSuite.class.st b/rosetta-test-s/PortsS-Core/PortsSuite.class.st similarity index 71% rename from ports-s/PortsS-Core/PortsSuite.class.st rename to rosetta-test-s/PortsS-Core/PortsSuite.class.st index 19a2c02..1427239 100644 --- a/ports-s/PortsS-Core/PortsSuite.class.st +++ b/rosetta-test-s/PortsS-Core/PortsSuite.class.st @@ -1,9 +1,9 @@ Class { - #name : #PortsSuite, + #name : #RosettaSuite, #superclass : #TestCase, #instVars : [ 'scheme', - 'portsEnvironment', + 'rosettaEnvironment', 'rootCapability', 'version', 'specName', @@ -21,29 +21,29 @@ Class { 'CachedTestNames', 'CacheTimestamp' ], - #category : #'PortsS-Core' + #category : #'RosettaS-Core' } { #category : #accessing } -PortsSuite class >> allTestSelectors [ +RosettaSuite class >> allTestSelectors [ ^ [self testSelectors] on: Error do: [#()] ] { #category : #testing } -PortsSuite class >> isAbstract [ +RosettaSuite class >> isAbstract [ - ^self name = #PortsSuite + ^self name = #RosettaSuite ] { #category : #testing } -PortsSuite class >> isTestClass [ +RosettaSuite class >> isTestClass [ ^ true ] { #category : #accessing } -PortsSuite class >> testSelectors [ +RosettaSuite class >> testSelectors [ | tempInstance | tempInstance := self new. @@ -56,7 +56,7 @@ PortsSuite class >> testSelectors [ ] { #category : #running } -PortsSuite >> allTests [ +RosettaSuite >> allTests [ self assert: self suite notNil. allTests ifNil: [ @@ -72,25 +72,25 @@ PortsSuite >> allTests [ ] { #category : #accessing } -PortsSuite >> capabilityIdentifierOf: aPortsTestObject [ +RosettaSuite >> capabilityIdentifierOf: aRosettaTestObject [ ^ (self schemeEval: '(capability-full-name (test-capability the-test))' with: (Dictionary newFrom: { - #'the-test' -> aPortsTestObject})) asSymbol. + #'the-test' -> aRosettaTestObject})) asSymbol. ] -{ #category : #'private-ports' } -PortsSuite >> createPlaceholder: aConsCell [ +{ #category : #'private-rosetta' } +RosettaSuite >> createPlaceholder: aConsCell [ | newPlaceholder | - newPlaceholder := PortsPlaceholder new + newPlaceholder := RosettaPlaceholder new placeholderName: aConsCell first; parameters: aConsCell second; docString: aConsCell third; - env: self portsEnvironment. + env: self rosettaEnvironment. - self portsEnvironment + self rosettaEnvironment at: newPlaceholder placeholderName asSymbol put: newPlaceholder. @@ -102,28 +102,28 @@ PortsSuite >> createPlaceholder: aConsCell [ ] { #category : #'test selection' } -PortsSuite >> excludeCapabilities [ +RosettaSuite >> excludeCapabilities [ "Use this method to specify that the tests from the listed capabilities should not be executed." ^ #() ] { #category : #'test selection' } -PortsSuite >> excludeTests [ +RosettaSuite >> excludeTests [ "Use this method to specify that the listed tests should not be executed. Has precedence over the capability exclusion mechanism." ^ #() ] { #category : #running } -PortsSuite >> fillPlaceholders [ +RosettaSuite >> fillPlaceholders [ | placeholderMethods placeholderSelectorMap | placeholderMethods := self class localMethods select: [:m | - m pragmas anySatisfy: [:p | p keyword = #portsPlaceholderName:]]. + m pragmas anySatisfy: [:p | p keyword = #rosettaPlaceholderName:]]. placeholderMethods := placeholderMethods groupBy: [:m | m pragmas - detect: [:p | p keyword = #portsPlaceholderName:] + detect: [:p | p keyword = #rosettaPlaceholderName:] ifFound: [:p | p argumentAt: 1] ifNone: [self error]]. (placeholderMethods select: [:group | group size > 1]) keysAndValuesDo: [:placeholderName :methods | @@ -142,14 +142,14 @@ PortsSuite >> fillPlaceholders [ ] { #category : #running } -PortsSuite >> gatherBridgeFunctions [ +RosettaSuite >> gatherBridgeFunctions [ | placeholderMethods | placeholderMethods := self class localMethods select: [:m | - m pragmas anySatisfy: [:p | p keyword = #portsPlaceholderName:]]. + m pragmas anySatisfy: [:p | p keyword = #rosettaPlaceholderName:]]. placeholderMethods := placeholderMethods groupBy: [:m | m pragmas - detect: [:p | p keyword = #portsPlaceholderName:] + detect: [:p | p keyword = #rosettaPlaceholderName:] ifFound: [:p | p argumentAt: 1] ifNone: [self error]]. (placeholderMethods select: [:group | group size > 1]) keysAndValuesDo: [:placeholderName :methods | @@ -162,21 +162,21 @@ PortsSuite >> gatherBridgeFunctions [ ] -{ #category : #'private-ports' } -PortsSuite >> isPlaceholderP: args [ +{ #category : #'private-rosetta' } +RosettaSuite >> isPlaceholderP: args [ - ^ args first isKindOf: PortsPlaceholder + ^ args first isKindOf: RosettaPlaceholder ] -{ #category : #'private-ports' } -PortsSuite >> newPortsEnvironment [ +{ #category : #'private-rosetta' } +RosettaSuite >> newRosettaEnvironment [ | newEnvironment | - newEnvironment := PortsSchemeEnv new + newEnvironment := RosettaSchemeEnv new parent: self scheme topEnvironment; yourself. - self scheme evalString: self portsLibrarySource in: newEnvironment. + self scheme evalString: self rosettaLibrarySource in: newEnvironment. newEnvironment at: #assert put: [:args | @@ -200,64 +200,64 @@ PortsSuite >> newPortsEnvironment [ ] { #category : #'test selection' } -PortsSuite >> onlyCapabilities [ +RosettaSuite >> onlyCapabilities [ "Use this method to specify that only tests form the listed capabilities and NO other should be executed. Has precedence over all exclude mechanisms." ^ #() ] { #category : #'test selection' } -PortsSuite >> onlyTests [ +RosettaSuite >> onlyTests [ "Use this method to specify that only the listed tests and NO other should be executed. Has precedence over all other selection mechanisms." ^ #() ] { #category : #running } -PortsSuite >> performTest [ +RosettaSuite >> performTest [ ^ self allTests detect: [:test | (self testNameOf: test) = testSelector] - ifFound: [:test | self portsRunTest: test] + ifFound: [:test | self rosettaRunTest: test] ] -{ #category : #'private-ports' } -PortsSuite >> portsEnvironment [ +{ #category : #'private-rosetta' } +RosettaSuite >> rosettaEnvironment [ - ^ portsEnvironment ifNil: [portsEnvironment := self newPortsEnvironment] + ^ rosettaEnvironment ifNil: [rosettaEnvironment := self newRosettaEnvironment] ] -{ #category : #'private-ports' } -PortsSuite >> portsLibrarySource [ +{ #category : #'private-rosetta' } +RosettaSuite >> rosettaLibrarySource [ - ^ (FileDirectory default / '..' / '..' / #ports / #ports) readOnlyFileNamed: 'ports.scm' do: [:portsFile | - portsFile contents] + ^ (FileDirectory default / '..' / '..' / #rosetta / #rosetta) readOnlyFileNamed: 'rosetta.scm' do: [:rosettaFile | + rosettaFile contents] ] { #category : #running } -PortsSuite >> portsRun [ +RosettaSuite >> rosettaRun [ "self assert: self suite notNil. self fillPlaceholders; installPlaceholders. - self allTests do: [:portsTest | - self portsRunTest: portsTest]." + self allTests do: [:rosettaTest | + self rosettaRunTest: rosettaTest]." ] { #category : #running } -PortsSuite >> portsRunTest: aPortsTest [ +RosettaSuite >> rosettaRunTest: aRosettaTest [ self assert: self suite notNil. self schemeEval: '(test-run current-test)' with: (Dictionary newFrom: { - #'current-test' -> aPortsTest}). + #'current-test' -> aRosettaTest}). ] { #category : #'suite definition' } -PortsSuite >> readSuiteFileNamed: suiteFileName [ +RosettaSuite >> readSuiteFileNamed: suiteFileName [ ^ ((FileDirectory on: ThisOSProcess thisOSProcess getCwd) / 'suites') readOnlyFileNamed: suiteFileName @@ -265,19 +265,19 @@ PortsSuite >> readSuiteFileNamed: suiteFileName [ ] { #category : #'private-scheme-evaluation' } -PortsSuite >> scheme [ +RosettaSuite >> scheme [ - ^ scheme ifNil: [scheme := PortsScheme new] + ^ scheme ifNil: [scheme := RosettaScheme new] ] { #category : #'private-scheme-evaluation' } -PortsSuite >> schemeEval: schemeSource [ +RosettaSuite >> schemeEval: schemeSource [ - ^ self schemeEval: schemeSource in: self portsEnvironment + ^ self schemeEval: schemeSource in: self rosettaEnvironment ] { #category : #'private-scheme-evaluation' } -PortsSuite >> schemeEval: schemeSource in: anEnvironment [ +RosettaSuite >> schemeEval: schemeSource in: anEnvironment [ ^ self scheme evalString: schemeSource @@ -285,11 +285,11 @@ PortsSuite >> schemeEval: schemeSource in: anEnvironment [ ] { #category : #'private-scheme-evaluation' } -PortsSuite >> schemeEval: schemeSource with: argumentDict [ +RosettaSuite >> schemeEval: schemeSource with: argumentDict [ | newEnv | - newEnv := PortsSchemeEnv new - parent: self portsEnvironment; + newEnv := RosettaSchemeEnv new + parent: self rosettaEnvironment; yourself. argumentDict keysAndValuesDo: [:key :value | @@ -301,7 +301,7 @@ PortsSuite >> schemeEval: schemeSource with: argumentDict [ ] { #category : #accessing } -PortsSuite >> suite [ +RosettaSuite >> suite [ ^ rootCapability ifNil: [ | specData | self gatherBridgeFunctions. @@ -315,35 +315,35 @@ PortsSuite >> suite [ ] { #category : #'suite definition' } -PortsSuite >> suiteSource [ +RosettaSuite >> suiteSource [ "Should read the suite source code from somewhere, can contain the suite verbatim" self subclassResponsibility ] { #category : #accessing } -PortsSuite >> testNameOf: aPortsTestObject [ +RosettaSuite >> testNameOf: aRosettaTestObject [ ^ self schemeEval: '(test-full-name the-test)' with: (Dictionary newFrom: { - #'the-test' -> aPortsTestObject}) + #'the-test' -> aRosettaTestObject}) ] { #category : #'running - timeout' } -PortsSuite >> timeoutForSetUp [ +RosettaSuite >> timeoutForSetUp [ ^ 10 ] { #category : #'running - timeout' } -PortsSuite >> timeoutForTest [ +RosettaSuite >> timeoutForTest [ ^ 5 ] { #category : #'suite validation' } -PortsSuite >> validate [ +RosettaSuite >> validate [ self assert: self suite notNil. self fillPlaceholders. diff --git a/rosetta-test-s/PortsS-Core/package.st b/rosetta-test-s/PortsS-Core/package.st new file mode 100644 index 0000000..2748e54 --- /dev/null +++ b/rosetta-test-s/PortsS-Core/package.st @@ -0,0 +1 @@ +Package { #name : #'RosettaS-Core' } diff --git a/rosetta-test-s/PortsS-Interpreter/Collection.extension.st b/rosetta-test-s/PortsS-Interpreter/Collection.extension.st new file mode 100644 index 0000000..eba4fb3 --- /dev/null +++ b/rosetta-test-s/PortsS-Interpreter/Collection.extension.st @@ -0,0 +1,7 @@ +Extension { #name : #Collection } + +{ #category : #'*RosettaS-Interpreter' } +Collection >> isRosettaTrue [ + + ^ self notEmpty +] diff --git a/rosetta-test-s/PortsS-Interpreter/False.extension.st b/rosetta-test-s/PortsS-Interpreter/False.extension.st new file mode 100644 index 0000000..f738905 --- /dev/null +++ b/rosetta-test-s/PortsS-Interpreter/False.extension.st @@ -0,0 +1,7 @@ +Extension { #name : #False } + +{ #category : #'*RosettaS-Interpreter' } +False >> isRosettaTrue [ + + ^ false +] diff --git a/rosetta-test-s/PortsS-Interpreter/Object.extension.st b/rosetta-test-s/PortsS-Interpreter/Object.extension.st new file mode 100644 index 0000000..4226020 --- /dev/null +++ b/rosetta-test-s/PortsS-Interpreter/Object.extension.st @@ -0,0 +1,31 @@ +Extension { #name : #Object } + +{ #category : #'*RosettaS-Interpreter' } +Object >> arrayForm [ + + ^ self +] + +{ #category : #'*RosettaS-Interpreter' } +Object >> isRosettaSchemePrimitive [ + + ^ false +] + +{ #category : #'*RosettaS-Interpreter' } +Object >> isRosettaSchemeProcedure [ + + ^ false +] + +{ #category : #'*RosettaS-Interpreter' } +Object >> isRosettaTrue [ + + ^ true +] + +{ #category : #'*RosettaS-Interpreter' } +Object >> printAsTree [ + + ^ self printString +] diff --git a/ports-s/PortsS-Interpreter/PortsFunction.class.st b/rosetta-test-s/PortsS-Interpreter/PortsFunction.class.st similarity index 57% rename from ports-s/PortsS-Interpreter/PortsFunction.class.st rename to rosetta-test-s/PortsS-Interpreter/PortsFunction.class.st index 67e4f66..d2aa032 100644 --- a/ports-s/PortsS-Interpreter/PortsFunction.class.st +++ b/rosetta-test-s/PortsS-Interpreter/PortsFunction.class.st @@ -1,33 +1,33 @@ Class { - #name : #PortsFunction, + #name : #RosettaFunction, #superclass : #Object, #instVars : [ 'function', 'env' ], - #category : #'PortsS-Interpreter' + #category : #'RosettaS-Interpreter' } { #category : #accessing } -PortsFunction >> env [ +RosettaFunction >> env [ ^ env ] { #category : #accessing } -PortsFunction >> env: anObject [ +RosettaFunction >> env: anObject [ env := anObject. ] { #category : #accessing } -PortsFunction >> function [ +RosettaFunction >> function [ ^ function ] { #category : #accessing } -PortsFunction >> function: anObject [ +RosettaFunction >> function: anObject [ function := anObject. ] diff --git a/ports-s/PortsS-Interpreter/PortsPlaceholder.class.st b/rosetta-test-s/PortsS-Interpreter/PortsPlaceholder.class.st similarity index 58% rename from ports-s/PortsS-Interpreter/PortsPlaceholder.class.st rename to rosetta-test-s/PortsS-Interpreter/PortsPlaceholder.class.st index 0936191..1a3d667 100644 --- a/ports-s/PortsS-Interpreter/PortsPlaceholder.class.st +++ b/rosetta-test-s/PortsS-Interpreter/PortsPlaceholder.class.st @@ -1,64 +1,64 @@ Class { - #name : #PortsPlaceholder, - #superclass : #PortsFunction, + #name : #RosettaPlaceholder, + #superclass : #RosettaFunction, #instVars : [ 'placeholderName', 'parameters', 'docString' ], - #category : #'PortsS-Interpreter' + #category : #'RosettaS-Interpreter' } { #category : #accessing } -PortsPlaceholder >> car [ +RosettaPlaceholder >> car [ ^ #placeholder ] { #category : #accessing } -PortsPlaceholder >> docString [ +RosettaPlaceholder >> docString [ ^ docString ] { #category : #accessing } -PortsPlaceholder >> docString: anObject [ +RosettaPlaceholder >> docString: anObject [ docString := anObject. ] { #category : #testing } -PortsPlaceholder >> isValid [ +RosettaPlaceholder >> isValid [ ^ self function notNil ] { #category : #accessing } -PortsPlaceholder >> parameters [ +RosettaPlaceholder >> parameters [ ^ parameters ] { #category : #accessing } -PortsPlaceholder >> parameters: anObject [ +RosettaPlaceholder >> parameters: anObject [ parameters := anObject. ] { #category : #accessing } -PortsPlaceholder >> placeholderName [ +RosettaPlaceholder >> placeholderName [ ^ placeholderName ] { #category : #accessing } -PortsPlaceholder >> placeholderName: anObject [ +RosettaPlaceholder >> placeholderName: anObject [ placeholderName := anObject. ] { #category : #printing } -PortsPlaceholder >> printOn: aStream [ +RosettaPlaceholder >> printOn: aStream [ super printOn: aStream. aStream @@ -67,7 +67,7 @@ PortsPlaceholder >> printOn: aStream [ ] { #category : #evaluating } -PortsPlaceholder >> value: values [ +RosettaPlaceholder >> value: values [ ^ self function valueWithArguments: values , {self env} ] diff --git a/ports-s/PortsS-Interpreter/PortsScheme.class.st b/rosetta-test-s/PortsS-Interpreter/PortsScheme.class.st similarity index 84% rename from ports-s/PortsS-Interpreter/PortsScheme.class.st rename to rosetta-test-s/PortsS-Interpreter/PortsScheme.class.st index ac386f6..e1e685f 100644 --- a/ports-s/PortsS-Interpreter/PortsScheme.class.st +++ b/rosetta-test-s/PortsS-Interpreter/PortsScheme.class.st @@ -2,24 +2,24 @@ This is a minimal Scheme implementation based on Peter Norvig's lispy.py " Class { - #name : #PortsScheme, + #name : #RosettaScheme, #superclass : #Object, #instVars : [ 'topEnvironment', 'macroTable', 'logging' ], - #category : #'PortsS-Interpreter' + #category : #'RosettaS-Interpreter' } -{ #category : #'LISP-functions-ports' } -PortsScheme >> = aConsCell [ +{ #category : #'LISP-functions-rosetta' } +RosettaScheme >> = aConsCell [ ^ aConsCell first = aConsCell second ] { #category : #'macro expansion' } -PortsScheme >> applyMacroOn: exprs topLevel: isTopLevel [ +RosettaScheme >> applyMacroOn: exprs topLevel: isTopLevel [ | macroResult | macroResult := (macroTable at: exprs first) value: exprs allButFirst. @@ -27,7 +27,7 @@ PortsScheme >> applyMacroOn: exprs topLevel: isTopLevel [ ] { #category : #'LISP-special forms' } -PortsScheme >> begin: aConsCell [ +RosettaScheme >> begin: aConsCell [ "(begin BODY) Eval BODY sequentially; return the value from last evaluation" @@ -41,13 +41,13 @@ Eval BODY sequentially; return the value from last evaluation" ] { #category : #'private-debugging' } -PortsScheme >> enableLogging [ +RosettaScheme >> enableLogging [ logging := true. ] { #category : #evaluating } -PortsScheme >> evalExprs: element in: env [ +RosettaScheme >> evalExprs: element in: env [ | x localEnv | x := element. @@ -64,7 +64,7 @@ PortsScheme >> evalExprs: element in: env [ [#quote = x first] -> [ ^ x second]. [#if = x first] -> [ - x := (self evalExprs: x second in: localEnv) isPortsTrue "Scheme treats all values as #t except for #f and '()" + x := (self evalExprs: x second in: localEnv) isRosettaTrue "Scheme treats all values as #t except for #f and '()" ifTrue: [x third] ifFalse: [x fourth]]. [#cond = x first] -> [ @@ -88,7 +88,7 @@ PortsScheme >> evalExprs: element in: env [ self evalExprs: beginElement in: localEnv]. x := x last]. [#lambda = x first] -> [ - ^ PortsSchemeLambda new + ^ RosettaSchemeLambda new params: x second; body: x third; env: localEnv; @@ -99,13 +99,13 @@ PortsScheme >> evalExprs: element in: env [ evaluatedElements := x collect: [:exp | self evalExprs: exp in: localEnv]. executableElement := evaluatedElements first. true caseOf: { - [executableElement isPortsSchemeProcedure] -> [ + [executableElement isRosettaSchemeProcedure] -> [ x := executableElement body. - localEnv := PortsSchemeEnv new + localEnv := RosettaSchemeEnv new setBindingsFor: executableElement params to: evaluatedElements allButFirst; parent: executableElement env; yourself]. - [executableElement isPortsSchemePrimitive] -> [ + [executableElement isRosettaSchemePrimitive] -> [ ^ executableElement value: evaluatedElements allButFirst]} otherwise: [ self error: 'Invalid expression: ' , x printString]]. @@ -113,13 +113,13 @@ PortsScheme >> evalExprs: element in: env [ ] { #category : #evaluating } -PortsScheme >> evalString: aString [ +RosettaScheme >> evalString: aString [ ^ self evalString: aString in: self topEnvironment ] { #category : #evaluating } -PortsScheme >> evalString: aString in: anEnvironment [ +RosettaScheme >> evalString: aString in: anEnvironment [ | exprs | exprs := self parseAndExpand: aString. @@ -127,13 +127,13 @@ PortsScheme >> evalString: aString in: anEnvironment [ ] { #category : #'macro expansion' } -PortsScheme >> expand: exprs [ +RosettaScheme >> expand: exprs [ ^ self expand: exprs topLevel: false ] { #category : #'macro expansion' } -PortsScheme >> expand: exprs topLevel: isTopLevel [ +RosettaScheme >> expand: exprs topLevel: isTopLevel [ self expr: exprs shouldFulfill: (exprs isCollection not or: [exprs isString or: [exprs size > 0]]). "Either a non-empty list, or something else" true @@ -170,7 +170,7 @@ PortsScheme >> expand: exprs topLevel: isTopLevel [ ] { #category : #'macro expansion' } -PortsScheme >> expandDefineAndMacro: exprs topLevel: isTopLevel [ +RosettaScheme >> expandDefineAndMacro: exprs topLevel: isTopLevel [ "Covers define and define-macro" | body define variable | @@ -191,7 +191,7 @@ PortsScheme >> expandDefineAndMacro: exprs topLevel: isTopLevel [ #'define-macro' = define ifTrue: [ | macroProcedure | self expr: exprs shouldFulfill: isTopLevel message: 'macros can only be defined at top-level'. macroProcedure := self evalExprs: body in: topEnvironment. - self expr: exprs shouldFulfill: macroProcedure isPortsSchemeProcedure message: 'macros needs to be a procedure'. + self expr: exprs shouldFulfill: macroProcedure isRosettaSchemeProcedure message: 'macros needs to be a procedure'. macroTable at: variable put: macroProcedure. ^ nil]. ^ {define . variable . body}] @@ -200,7 +200,7 @@ PortsScheme >> expandDefineAndMacro: exprs topLevel: isTopLevel [ ] { #category : #'macro expansion' } -PortsScheme >> expandIf: exprs [ +RosettaScheme >> expandIf: exprs [ | resultExprs | resultExprs := exprs. @@ -212,7 +212,7 @@ PortsScheme >> expandIf: exprs [ ] { #category : #'macro expansion' } -PortsScheme >> expandInclude: exprs [ +RosettaScheme >> expandInclude: exprs [ | result | result := #(begin) asOrderedCollection. @@ -226,7 +226,7 @@ PortsScheme >> expandInclude: exprs [ ] { #category : #'macro expansion' } -PortsScheme >> expandLambda: exprs [ +RosettaScheme >> expandLambda: exprs [ | parameters body finalBody | self expr: exprs shouldFulfill: exprs size >= 3. @@ -243,7 +243,7 @@ PortsScheme >> expandLambda: exprs [ ] { #category : #'macro expansion' } -PortsScheme >> expandQuasiquoteContent: exprs [ +RosettaScheme >> expandQuasiquoteContent: exprs [ (self isPair: exprs) not ifTrue: [ "optimize/simplify quasiquote of literal" @@ -274,7 +274,7 @@ PortsScheme >> expandQuasiquoteContent: exprs [ ] { #category : #'macro expansion' } -PortsScheme >> expandSet: exprs [ +RosettaScheme >> expandSet: exprs [ self expr: exprs shouldFulfill: exprs size = 3. self expr: exprs shouldFulfill: exprs second isSymbol message: 'set! should receive a symbol as the variable name'. @@ -282,7 +282,7 @@ PortsScheme >> expandSet: exprs [ ] { #category : #'macro expansion' } -PortsScheme >> expr: exprs shouldFulfill: aBoolean [ +RosettaScheme >> expr: exprs shouldFulfill: aBoolean [ self expr: exprs @@ -291,21 +291,21 @@ PortsScheme >> expr: exprs shouldFulfill: aBoolean [ ] { #category : #'macro expansion' } -PortsScheme >> expr: exprs shouldFulfill: aBoolean message: aMessage [ +RosettaScheme >> expr: exprs shouldFulfill: aBoolean message: aMessage [ aBoolean ifFalse: [ - PortsSyntaxError signal: aMessage , ' in ', exprs printString]. + RosettaSyntaxError signal: aMessage , ' in ', exprs printString]. ] { #category : #'initialize-release' } -PortsScheme >> initialMacroTable [ +RosettaScheme >> initialMacroTable [ ^ IdentityDictionary newFrom: { #let -> [:args | self macroLet: args]}. ] { #category : #'initialize-release' } -PortsScheme >> initialize [ +RosettaScheme >> initialize [ super initialize. macroTable := self initialMacroTable. @@ -313,19 +313,19 @@ PortsScheme >> initialize [ ] { #category : #'private-testing' } -PortsScheme >> isList: anObject [ +RosettaScheme >> isList: anObject [ ^ anObject isCollection and: [anObject isString not] ] { #category : #'private-testing' } -PortsScheme >> isPair: anObject [ +RosettaScheme >> isPair: anObject [ ^ anObject isCollection and: [anObject isString not] and: [anObject notEmpty] ] -{ #category : #'LISP-functions-ports' } -PortsScheme >> listSetD: aConsCell [ +{ #category : #'LISP-functions-rosetta' } +RosettaScheme >> listSetD: aConsCell [ | list | list := aConsCell first cells. @@ -334,7 +334,7 @@ PortsScheme >> listSetD: aConsCell [ ] { #category : #macros } -PortsScheme >> macroLet: args [ +RosettaScheme >> macroLet: args [ "args = list(args) x = cons(_let, args) @@ -361,14 +361,14 @@ PortsScheme >> macroLet: args [ ^ {({#lambda . vars} , body)} , vals ] -{ #category : #'LISP-functions-ports' } -PortsScheme >> nullP: args [ +{ #category : #'LISP-functions-rosetta' } +RosettaScheme >> nullP: args [ ^ args first isNil or: [args isCollection and: [args isEmpty]] ] { #category : #evaluating } -PortsScheme >> parseAndExpand: aString [ +RosettaScheme >> parseAndExpand: aString [ | exprs | exprs := ((ULispReader for: ULisp new) readString: aString) arrayForm. @@ -376,26 +376,26 @@ PortsScheme >> parseAndExpand: aString [ ] { #category : #evaluating } -PortsScheme >> portsLibrarySource [ +RosettaScheme >> rosettaLibrarySource [ - ^ ((FileDirectory on: ThisOSProcess thisOSProcess getCwd) / #ports) - readOnlyFileNamed: 'ports.scm' - do: [:portsFile | portsFile contents] + ^ ((FileDirectory on: ThisOSProcess thisOSProcess getCwd) / #rosetta) + readOnlyFileNamed: 'rosetta.scm' + do: [:rosettaFile | rosettaFile contents] ] { #category : #evaluating } -PortsScheme >> standardLibrarySource [ +RosettaScheme >> standardLibrarySource [ - ^ ((FileDirectory on: ThisOSProcess thisOSProcess getCwd) / #ports) + ^ ((FileDirectory on: ThisOSProcess thisOSProcess getCwd) / #rosetta) readOnlyFileNamed: 'stdlib.scm' - do: [:portsFile | portsFile contents] + do: [:rosettaFile | rosettaFile contents] ] { #category : #evaluating } -PortsScheme >> topEnvironment [ +RosettaScheme >> topEnvironment [ ^ topEnvironment ifNil: [ - topEnvironment := PortsSchemeEnv new + topEnvironment := RosettaSchemeEnv new bindings: { #+ -> [:args | args first + args second]. #- -> [:args | args first - args second]. diff --git a/ports-s/PortsS-Interpreter/PortsSchemeEnv.class.st b/rosetta-test-s/PortsS-Interpreter/PortsSchemeEnv.class.st similarity index 68% rename from ports-s/PortsS-Interpreter/PortsSchemeEnv.class.st rename to rosetta-test-s/PortsS-Interpreter/PortsSchemeEnv.class.st index eba4cb6..bcd1faa 100644 --- a/ports-s/PortsS-Interpreter/PortsSchemeEnv.class.st +++ b/rosetta-test-s/PortsS-Interpreter/PortsSchemeEnv.class.st @@ -1,15 +1,15 @@ Class { - #name : #PortsSchemeEnv, + #name : #RosettaSchemeEnv, #superclass : #Object, #instVars : [ 'bindings', 'parent' ], - #category : #'PortsS-Interpreter' + #category : #'RosettaS-Interpreter' } { #category : #accessing } -PortsSchemeEnv >> at: aSymbol [ +RosettaSchemeEnv >> at: aSymbol [ ^ bindings at: aSymbol @@ -21,19 +21,19 @@ PortsSchemeEnv >> at: aSymbol [ ] { #category : #accessing } -PortsSchemeEnv >> at: aSymbol put: aValue [ +RosettaSchemeEnv >> at: aSymbol put: aValue [ ^ bindings at: aSymbol put: aValue ] { #category : #private } -PortsSchemeEnv >> bindings: dictLike [ +RosettaSchemeEnv >> bindings: dictLike [ bindings := IdentityDictionary newFrom: dictLike. ] { #category : #private } -PortsSchemeEnv >> findEnvFor: aSymbol [ +RosettaSchemeEnv >> findEnvFor: aSymbol [ ^ (bindings includesKey: aSymbol) ifTrue: [self] @@ -44,35 +44,35 @@ PortsSchemeEnv >> findEnvFor: aSymbol [ ] { #category : #'initialize-release' } -PortsSchemeEnv >> initialize [ +RosettaSchemeEnv >> initialize [ super initialize. bindings := Dictionary new. ] { #category : #accessing } -PortsSchemeEnv >> keyError: aSymbol [ +RosettaSchemeEnv >> keyError: aSymbol [ (KeyNotFound key: aSymbol) signal ] { #category : #accessing } -PortsSchemeEnv >> parent [ +RosettaSchemeEnv >> parent [ ^ parent ] { #category : #accessing } -PortsSchemeEnv >> parent: anObject [ +RosettaSchemeEnv >> parent: anObject [ parent := anObject. ] { #category : #accessing } -PortsSchemeEnv >> setBindingsFor: paramOrParams to: arguments [ +RosettaSchemeEnv >> setBindingsFor: paramOrParams to: arguments [ paramOrParams isSymbol ifFalse: [ - paramOrParams size = arguments size ifFalse: [PortsTypeError signal]]. + paramOrParams size = arguments size ifFalse: [RosettaTypeError signal]]. self bindings: (paramOrParams isSymbol ifTrue: [{paramOrParams -> arguments}] ifFalse: [ diff --git a/ports-s/PortsS-Interpreter/PortsSchemeLambda.class.st b/rosetta-test-s/PortsS-Interpreter/PortsSchemeLambda.class.st similarity index 58% rename from ports-s/PortsS-Interpreter/PortsSchemeLambda.class.st rename to rosetta-test-s/PortsS-Interpreter/PortsSchemeLambda.class.st index e4ec0c3..e7588ba 100644 --- a/ports-s/PortsS-Interpreter/PortsSchemeLambda.class.st +++ b/rosetta-test-s/PortsS-Interpreter/PortsSchemeLambda.class.st @@ -1,5 +1,5 @@ Class { - #name : #PortsSchemeLambda, + #name : #RosettaSchemeLambda, #superclass : #Object, #instVars : [ 'params', @@ -7,69 +7,69 @@ Class { 'env', 'interpreter' ], - #category : #'PortsS-Interpreter' + #category : #'RosettaS-Interpreter' } { #category : #accessing } -PortsSchemeLambda >> body [ +RosettaSchemeLambda >> body [ ^ body ] { #category : #accessing } -PortsSchemeLambda >> body: anObject [ +RosettaSchemeLambda >> body: anObject [ body := anObject. ] { #category : #accessing } -PortsSchemeLambda >> env [ +RosettaSchemeLambda >> env [ ^ env ] { #category : #accessing } -PortsSchemeLambda >> env: anObject [ +RosettaSchemeLambda >> env: anObject [ env := anObject. ] { #category : #accessing } -PortsSchemeLambda >> interpreter [ +RosettaSchemeLambda >> interpreter [ ^ interpreter ] { #category : #accessing } -PortsSchemeLambda >> interpreter: anObject [ +RosettaSchemeLambda >> interpreter: anObject [ interpreter := anObject. ] { #category : #testing } -PortsSchemeLambda >> isPortsSchemeProcedure [ +RosettaSchemeLambda >> isRosettaSchemeProcedure [ ^ true ] { #category : #accessing } -PortsSchemeLambda >> params [ +RosettaSchemeLambda >> params [ ^ params ] { #category : #accessing } -PortsSchemeLambda >> params: anObject [ +RosettaSchemeLambda >> params: anObject [ params := anObject. ] { #category : #'as yet unclassified' } -PortsSchemeLambda >> value: values [ +RosettaSchemeLambda >> value: values [ ^ self interpreter evalExprs: self body - in: (PortsSchemeEnv new + in: (RosettaSchemeEnv new setBindingsFor: self params to: values; parent: self env; yourself) diff --git a/rosetta-test-s/PortsS-Interpreter/PortsSyntaxError.class.st b/rosetta-test-s/PortsS-Interpreter/PortsSyntaxError.class.st new file mode 100644 index 0000000..07401ee --- /dev/null +++ b/rosetta-test-s/PortsS-Interpreter/PortsSyntaxError.class.st @@ -0,0 +1,5 @@ +Class { + #name : #RosettaSyntaxError, + #superclass : #Error, + #category : #'RosettaS-Interpreter' +} diff --git a/rosetta-test-s/PortsS-Interpreter/PortsTypeError.class.st b/rosetta-test-s/PortsS-Interpreter/PortsTypeError.class.st new file mode 100644 index 0000000..0ea74d5 --- /dev/null +++ b/rosetta-test-s/PortsS-Interpreter/PortsTypeError.class.st @@ -0,0 +1,5 @@ +Class { + #name : #RosettaTypeError, + #superclass : #Error, + #category : #'RosettaS-Interpreter' +} diff --git a/rosetta-test-s/PortsS-Interpreter/package.st b/rosetta-test-s/PortsS-Interpreter/package.st new file mode 100644 index 0000000..9bb7028 --- /dev/null +++ b/rosetta-test-s/PortsS-Interpreter/package.st @@ -0,0 +1 @@ +Package { #name : #'RosettaS-Interpreter' } diff --git a/rosetta-test-s/PortsS-Suites/PortsFSSuite.class.st b/rosetta-test-s/PortsS-Suites/PortsFSSuite.class.st new file mode 100644 index 0000000..0ec2e33 --- /dev/null +++ b/rosetta-test-s/PortsS-Suites/PortsFSSuite.class.st @@ -0,0 +1,101 @@ +Class { + #name : #RosettaFSSuite, + #superclass : #RosettaSuite, + #instVars : [ + 'streams' + ], + #category : #'RosettaS-Suites' +} + +{ #category : #'spec definition' } +RosettaFSSuite >> closeFile: file env: env [ + + + file close. +] + +{ #category : #'spec definition' } +RosettaFSSuite >> createTestFile: fileName content: content env: env [ + + + FileStream fileNamed: fileName do: [:stream | + stream nextPutAll: content]. +] + +{ #category : #failures } +RosettaFSSuite >> expectedFailures [ + + ^ #('read on a write-only file is an error') +] + +{ #category : #'spec definition' } +RosettaFSSuite >> flushFile: file env: env [ + + + file flush. +] + +{ #category : #'initialize-release' } +RosettaFSSuite >> initialize [ + + super initialize. + streams := Set new. +] + +{ #category : #'spec definition' } +RosettaFSSuite >> isFileDescriptor: file env: env [ + + + ^ file isKindOf: FileStream +] + +{ #category : #'spec definition' } +RosettaFSSuite >> isFileError: obj env: env [ + + + ^ obj isKindOf: Exception +] + +{ #category : #'spec definition' } +RosettaFSSuite >> openFile: fileName mode: mode env: env [ + + + mode = 'r' ifTrue: [ + ^ streams add: (FileStream readOnlyFileNamed: fileName)]. + mode = 'w' ifTrue: [ + ^ streams add: (FileStream fileNamed: fileName)]. + ^ Error new +] + +{ #category : #'spec definition' } +RosettaFSSuite >> readFile: file length: length env: env [ + + + ^ file next: length +] + +{ #category : #'spec definition' } +RosettaFSSuite >> removeTestFile: fileName env: env [ + + + FileDirectory default deleteFileNamed: fileName. +] + +{ #category : #'spec definition' } +RosettaFSSuite >> suiteSource [ + + ^ self readSuiteFileNamed: 'fs.rosetta' +] + +{ #category : #running } +RosettaFSSuite >> tearDown [ + + streams do: [:s | s close]. +] + +{ #category : #'spec definition' } +RosettaFSSuite >> writeFile: file content: content env: env [ + + + file nextPutAll: content. +] diff --git a/rosetta-test-s/PortsS-Suites/PortsJSONRfcSuite.class.st b/rosetta-test-s/PortsS-Suites/PortsJSONRfcSuite.class.st new file mode 100644 index 0000000..3d700dc --- /dev/null +++ b/rosetta-test-s/PortsS-Suites/PortsJSONRfcSuite.class.st @@ -0,0 +1,47 @@ +Class { + #name : #RosettaJSONRfcSuite, + #superclass : #RosettaSuite, + #category : #'RosettaS-Suites' +} + +{ #category : #placeholders } +RosettaJSONRfcSuite >> fileContents: fileName env: env [ + + + + ^ (FileDirectory default / '..' / '..' / #rosetta / 'suites' / 'json-rfc-fixtures') readOnlyFileNamed: fileName do: [:stream | + stream binary. + stream contents asString] +] + +{ #category : #placeholders } +RosettaJSONRfcSuite >> listJsonTestFiles: env [ + + + + ^ (FileDirectory default / '..' / '..' / #rosetta / 'suites' / 'json-rfc-fixtures') fileEntries collect: [:entry | entry name] +] + +{ #category : #placeholders } +RosettaJSONRfcSuite >> parse: jsonString env: env [ + + + + ^ [Json readFrom: jsonString readStream] + on: Exception + do: [:e | e] +] + +{ #category : #placeholders } +RosettaJSONRfcSuite >> parseSuccess: parseResult env: env [ + + + + ^ (parseResult isKindOf: Exception) not +] + +{ #category : #'suite definition' } +RosettaJSONRfcSuite >> suiteSource [ + + ^ self readSuiteFileNamed: 'json-rfc.rosetta' +] diff --git a/ports-s/PortsS-Suites/PortsSMTPSuite.class.st b/rosetta-test-s/PortsS-Suites/PortsSMTPSuite.class.st similarity index 62% rename from ports-s/PortsS-Suites/PortsSMTPSuite.class.st rename to rosetta-test-s/PortsS-Suites/PortsSMTPSuite.class.st index 957caa0..c324aaf 100644 --- a/ports-s/PortsS-Suites/PortsSMTPSuite.class.st +++ b/rosetta-test-s/PortsS-Suites/PortsSMTPSuite.class.st @@ -1,16 +1,16 @@ Class { - #name : #PortsSMTPSuite, - #superclass : #PortsSuite, + #name : #RosettaSMTPSuite, + #superclass : #RosettaSuite, #instVars : [ 'sockets' ], - #category : #'PortsS-Suites' + #category : #'RosettaS-Suites' } { #category : #'suite definition' } -PortsSMTPSuite >> createSocket: env [ +RosettaSMTPSuite >> createSocket: env [ - + | serverSocket | serverSocket := Socket newTCP. @@ -20,7 +20,7 @@ PortsSMTPSuite >> createSocket: env [ ] { #category : #'test selection' } -PortsSMTPSuite >> excludeCapabilities [ +RosettaSMTPSuite >> excludeCapabilities [ ^ #( "not implemented" @@ -45,7 +45,7 @@ PortsSMTPSuite >> excludeCapabilities [ ] { #category : #'test selection' } -PortsSMTPSuite >> excludeTests [ +RosettaSMTPSuite >> excludeTests [ ^ #('test_other_auth_failures' 'test_buggy_auth_with_too_many_challenges' "AUTH method not supported" @@ -53,13 +53,13 @@ PortsSMTPSuite >> excludeTests [ ] { #category : #private } -PortsSMTPSuite >> getResponse: smtp [ +RosettaSMTPSuite >> getResponse: smtp [ ^ {smtp responseCode . smtp responseMessage} ] { #category : #'suite definition' } -PortsSMTPSuite >> parseOptions: optionLists for: addresses [ +RosettaSMTPSuite >> parseOptions: optionLists for: addresses [ ^ optionLists ifNotEmpty: [optionLists collect: [:optionList | @@ -75,9 +75,9 @@ PortsSMTPSuite >> parseOptions: optionLists for: addresses [ ] { #category : #'suite definition' } -PortsSMTPSuite >> secureServerSocketWrap: socketStream ca: caFIlePath cert: certFilePath key: keyFilePath control: controlUnderlyingSocket env: env [ +RosettaSMTPSuite >> secureServerSocketWrap: socketStream ca: caFIlePath cert: certFilePath key: keyFilePath control: controlUnderlyingSocket env: env [ - + | stream | stream := SqueakSSL secureSocketStream on: socketStream socket. @@ -86,37 +86,37 @@ PortsSMTPSuite >> secureServerSocketWrap: socketStream ca: caFIlePath cert: cert ] { #category : #running } -PortsSMTPSuite >> setUp [ +RosettaSMTPSuite >> setUp [ sockets := OrderedCollection new. ] { #category : #'suite definition' } -PortsSMTPSuite >> smtpAuthCredentialsError: authenticationResult env: env [ +RosettaSMTPSuite >> smtpAuthCredentialsError: authenticationResult env: env [ - + ^ (authenticationResult isKindOf: TelnetProtocolError) and: [authenticationResult code = 535] ] { #category : #'suite definition' } -PortsSMTPSuite >> smtpAuthNotSupportedError: authenticationResult env: env [ +RosettaSMTPSuite >> smtpAuthNotSupportedError: authenticationResult env: env [ - + ^ (authenticationResult isKindOf: TelnetProtocolError) and: [authenticationResult code = 504] ] { #category : #'suite definition' } -PortsSMTPSuite >> smtpAuthSuccessful: authenticationResult env: env [ +RosettaSMTPSuite >> smtpAuthSuccessful: authenticationResult env: env [ - + ^ authenticationResult isArray and: [authenticationResult first = 235] ] { #category : #'suite definition' } -PortsSMTPSuite >> smtpAuthenticate: smtp method: authMethod credentials: credentials useInitialResponse: aBoolean env: env [ +RosettaSMTPSuite >> smtpAuthenticate: smtp method: authMethod credentials: credentials useInitialResponse: aBoolean env: env [ - + authMethod = 'LOGIN' ifFalse: [self error]. "Only login method will be tried by #login" smtp user: credentials first. @@ -128,9 +128,9 @@ PortsSMTPSuite >> smtpAuthenticate: smtp method: authMethod credentials: credent ] { #category : #'suite definition' } -PortsSMTPSuite >> smtpConnect: host port: port env: env [ +RosettaSMTPSuite >> smtpConnect: host port: port env: env [ - + [^ (SMTPClient openOnHost: (NetNameResolver addressForName: host) port: port) useTLSIfAvailable: false; @@ -140,17 +140,17 @@ PortsSMTPSuite >> smtpConnect: host port: port env: env [ ] { #category : #'suite definition' } -PortsSMTPSuite >> smtpConnected: smtpClient env: env [ +RosettaSMTPSuite >> smtpConnected: smtpClient env: env [ - + ^ smtpClient isConnected ] { #category : #'suite definition' } -PortsSMTPSuite >> smtpData: smtp content: content env: env [ +RosettaSMTPSuite >> smtpData: smtp content: content env: env [ - + [smtp data: content] on: SMTPValueError @@ -161,17 +161,17 @@ PortsSMTPSuite >> smtpData: smtp content: content env: env [ ] { #category : #'suite definition' } -PortsSMTPSuite >> smtpDisconnect: smtp env: env [ +RosettaSMTPSuite >> smtpDisconnect: smtp env: env [ - + ^ smtp = #() ifFalse: [smtp close] ] { #category : #'suite definition' } -PortsSMTPSuite >> smtpEhlo: smtp content: content env: env [ +RosettaSMTPSuite >> smtpEhlo: smtp content: content env: env [ - + smtp localHostName: content. [smtp initiateSession] @@ -183,25 +183,25 @@ PortsSMTPSuite >> smtpEhlo: smtp content: content env: env [ ] { #category : #'suite definition' } -PortsSMTPSuite >> smtpExtensionNotSupportedError: smtpResponse env: env [ +RosettaSMTPSuite >> smtpExtensionNotSupportedError: smtpResponse env: env [ - + ^ smtpResponse isKindOf: ProtocolClientError ] { #category : #'suite definition' } -PortsSMTPSuite >> smtpExtensions: smtp ehloResponse: response env: env [ +RosettaSMTPSuite >> smtpExtensions: smtp ehloResponse: response env: env [ - + ^ smtp serverCapabilities ] { #category : #'suite definition' } -PortsSMTPSuite >> smtpIsError: anObject env: env [ +RosettaSMTPSuite >> smtpIsError: anObject env: env [ - + ^ (anObject isKindOf: TelnetProtocolError) or: [anObject isKindOf: SMTPValueError] @@ -209,9 +209,9 @@ PortsSMTPSuite >> smtpIsError: anObject env: env [ ] { #category : #'suite definition' } -PortsSMTPSuite >> smtpMail: smtp from: fromAddress mailOptions: options env: env [ +RosettaSMTPSuite >> smtpMail: smtp from: fromAddress mailOptions: options env: env [ - + | optionsDict | optionsDict := (self parseOptions: {options} for: {fromAddress}) first. @@ -225,9 +225,9 @@ PortsSMTPSuite >> smtpMail: smtp from: fromAddress mailOptions: options env: env ] { #category : #'suite definition' } -PortsSMTPSuite >> smtpRcpt: smtp to: recipientAddresses options: optionLists env: env [ +RosettaSMTPSuite >> smtpRcpt: smtp to: recipientAddresses options: optionLists env: env [ - + | options | options := self parseOptions: optionLists for: recipientAddresses. @@ -245,9 +245,9 @@ PortsSMTPSuite >> smtpRcpt: smtp to: recipientAddresses options: optionLists env ] { #category : #'suite definition' } -PortsSMTPSuite >> smtpResponseCode: smtpResponse env: env [ +RosettaSMTPSuite >> smtpResponseCode: smtpResponse env: env [ - + smtpResponse isArray ifTrue: [^ smtpResponse first]. ((smtpResponse isKindOf: TelnetProtocolError) or: [smtpResponse isKindOf: SMTPValueError]) ifTrue: [ ^ smtpResponse code]. @@ -255,25 +255,25 @@ PortsSMTPSuite >> smtpResponseCode: smtpResponse env: env [ ] { #category : #'suite definition' } -PortsSMTPSuite >> smtpResponseMessage: smtpResponse env: env [ +RosettaSMTPSuite >> smtpResponseMessage: smtpResponse env: env [ - + smtpResponse isArray ifTrue: [^ smtpResponse second withUnixLineEndings]. (smtpResponse isKindOf: TelnetProtocolError) ifTrue: [^ smtpResponse protocolInstance responseMessage withUnixLineEndings]. ] { #category : #'suite definition' } -PortsSMTPSuite >> smtpRset: smtp env: env [ +RosettaSMTPSuite >> smtpRset: smtp env: env [ - + self shouldBeImplemented. ] { #category : #'suite definition' } -PortsSMTPSuite >> smtpSendMessage: smtp content: content from: fromAddress to: recipientAddresses mailOptions: mailOptions recipientOptions: recipientOptions env: env [ +RosettaSMTPSuite >> smtpSendMessage: smtp content: content from: fromAddress to: recipientAddresses mailOptions: mailOptions recipientOptions: recipientOptions env: env [ - + [smtp mailFrom: fromAddress to: recipientAddresses text: content] on: TelnetProtocolError do: [:e | ^ {e}] @@ -283,9 +283,9 @@ PortsSMTPSuite >> smtpSendMessage: smtp content: content from: fromAddress to: r ] { #category : #'suite definition' } -PortsSMTPSuite >> smtpStarttls: smtpClient env: env [ +RosettaSMTPSuite >> smtpStarttls: smtpClient env: env [ - + [smtpClient starttls] on: TelnetProtocolError @@ -296,9 +296,9 @@ PortsSMTPSuite >> smtpStarttls: smtpClient env: env [ ] { #category : #'suite definition' } -PortsSMTPSuite >> smtpVrfy: smtp address: address env: env [ +RosettaSMTPSuite >> smtpVrfy: smtp address: address env: env [ - + [smtp verify: address] on: SMTPValueError @@ -309,9 +309,9 @@ PortsSMTPSuite >> smtpVrfy: smtp address: address env: env [ ] { #category : #'suite definition' } -PortsSMTPSuite >> socketAccept: socket env: env [ +RosettaSMTPSuite >> socketAccept: socket env: env [ - + | connectionSocket | self flag: #todo. "Consider porting to socket stream" @@ -321,46 +321,46 @@ PortsSMTPSuite >> socketAccept: socket env: env [ ] { #category : #'suite definition' } -PortsSMTPSuite >> socketClose: socket env: env [ +RosettaSMTPSuite >> socketClose: socket env: env [ - + ^ socket close ] { #category : #'suite definition' } -PortsSMTPSuite >> socketPort: socket env: env [ +RosettaSMTPSuite >> socketPort: socket env: env [ - + ^ socket port ] { #category : #'suite definition' } -PortsSMTPSuite >> socketReceive: socketStream env: env [ +RosettaSMTPSuite >> socketReceive: socketStream env: env [ - + [socketStream isDataAvailable] whileFalse: [Processor yield]. "Give the mock server or client a chance to do something" ^ socketStream nextAvailable ] { #category : #'suite definition' } -PortsSMTPSuite >> socketWrite: socketStream content: content env: env [ +RosettaSMTPSuite >> socketWrite: socketStream content: content env: env [ - + socketStream nextPutAll: content; flush. Processor yield. ] { #category : #'suite definition' } -PortsSMTPSuite >> suiteSource [ +RosettaSMTPSuite >> suiteSource [ - ^ self readSuiteFileNamed: 'smtp.ports' + ^ self readSuiteFileNamed: 'smtp.rosetta' ] { #category : #running } -PortsSMTPSuite >> tearDown [ +RosettaSMTPSuite >> tearDown [ sockets do: [:s | s close]. sockets removeAll. diff --git a/rosetta-test-s/PortsS-Suites/package.st b/rosetta-test-s/PortsS-Suites/package.st new file mode 100644 index 0000000..d1403ec --- /dev/null +++ b/rosetta-test-s/PortsS-Suites/package.st @@ -0,0 +1 @@ +Package { #name : #'RosettaS-Suites' } diff --git a/ports-s/PortsS-Tests/PortsLispyTests.class.st b/rosetta-test-s/PortsS-Tests/PortsLispyTests.class.st similarity index 59% rename from ports-s/PortsS-Tests/PortsLispyTests.class.st rename to rosetta-test-s/PortsS-Tests/PortsLispyTests.class.st index 52d95a5..9211925 100644 --- a/ports-s/PortsS-Tests/PortsLispyTests.class.st +++ b/rosetta-test-s/PortsS-Tests/PortsLispyTests.class.st @@ -1,33 +1,33 @@ Class { - #name : #PortsLispyTests, + #name : #RosettaLispyTests, #superclass : #Object, #instVars : [ 'testsObject' ], #classInstVars : [ - 'portsScheme' + 'rosettaScheme' ], - #category : #'PortsS-Tests' + #category : #'RosettaS-Tests' } { #category : #'as yet unclassified' } -PortsLispyTests class >> complexTestsObject [ +RosettaLispyTests class >> complexTestsObject [ - ^ (FileDirectory default / '..' / '..' / #ports) readOnlyFileNamed: 'lispy-tests2.json' do: [:testsFile | + ^ (FileDirectory default / '..' / '..' / #rosetta) readOnlyFileNamed: 'lispy-tests2.json' do: [:testsFile | Json readFrom: testsFile] ] { #category : #'as yet unclassified' } -PortsLispyTests class >> runComplexTests [ - "[PortsLispyTests runComplexTests]" +RosettaLispyTests class >> runComplexTests [ + "[RosettaLispyTests runComplexTests]" | scheme | - scheme := PortsScheme new. + scheme := RosettaScheme new. self complexTestsObject do: [:testData | | result expectedResult | expectedResult := testData at: 'expected'. [result := scheme evalString: (testData at: 'input')] - on: PortsSyntaxError + on: RosettaSyntaxError do: [result := {#type -> 'SyntaxError'} asDictionary] - on: PortsTypeError + on: RosettaTypeError do: [result := {#type -> 'TypeError'} asDictionary]. (expectedResult isDictionary and: [expectedResult includesKey: #type]) ifTrue: [self assert: (expectedResult at: #type) = (result at: #type)] @@ -35,18 +35,18 @@ PortsLispyTests class >> runComplexTests [ ] { #category : #'as yet unclassified' } -PortsLispyTests class >> runSimpleTests [ - "[PortsLispyTests runSimpleTests]" +RosettaLispyTests class >> runSimpleTests [ + "[RosettaLispyTests runSimpleTests]" | scheme | - scheme := PortsScheme new. + scheme := RosettaScheme new. self simpleTestsObject do: [:testData | | result | result := scheme evalString: (testData at: 'input'). self assert: (result = (testData at: 'expected'))] ] { #category : #'as yet unclassified' } -PortsLispyTests class >> simpleTestsObject [ +RosettaLispyTests class >> simpleTestsObject [ - ^ (FileDirectory default / '..' / '..' / #ports) readOnlyFileNamed: 'lispy-tests.json' do: [:testsFile | + ^ (FileDirectory default / '..' / '..' / #rosetta) readOnlyFileNamed: 'lispy-tests.json' do: [:testsFile | Json readFrom: testsFile] ] diff --git a/rosetta-test-s/PortsS-Tests/package.st b/rosetta-test-s/PortsS-Tests/package.st new file mode 100644 index 0000000..50d7848 --- /dev/null +++ b/rosetta-test-s/PortsS-Tests/package.st @@ -0,0 +1 @@ +Package { #name : #'RosettaS-Tests' } diff --git a/suites/fs.ports b/rosetta-test-suites/fs.rosetta similarity index 100% rename from suites/fs.ports rename to rosetta-test-suites/fs.rosetta diff --git a/suites/json-rfc-fixtures/n_array_1_true_without_comma.json b/rosetta-test-suites/json-rfc-fixtures/n_array_1_true_without_comma.json similarity index 100% rename from suites/json-rfc-fixtures/n_array_1_true_without_comma.json rename to rosetta-test-suites/json-rfc-fixtures/n_array_1_true_without_comma.json diff --git a/suites/json-rfc-fixtures/n_array_a_invalid_utf8.json b/rosetta-test-suites/json-rfc-fixtures/n_array_a_invalid_utf8.json similarity index 100% rename from suites/json-rfc-fixtures/n_array_a_invalid_utf8.json rename to rosetta-test-suites/json-rfc-fixtures/n_array_a_invalid_utf8.json diff --git a/suites/json-rfc-fixtures/n_array_colon_instead_of_comma.json b/rosetta-test-suites/json-rfc-fixtures/n_array_colon_instead_of_comma.json similarity index 100% rename from suites/json-rfc-fixtures/n_array_colon_instead_of_comma.json rename to rosetta-test-suites/json-rfc-fixtures/n_array_colon_instead_of_comma.json diff --git a/suites/json-rfc-fixtures/n_array_comma_after_close.json b/rosetta-test-suites/json-rfc-fixtures/n_array_comma_after_close.json similarity index 100% rename from suites/json-rfc-fixtures/n_array_comma_after_close.json rename to rosetta-test-suites/json-rfc-fixtures/n_array_comma_after_close.json diff --git a/suites/json-rfc-fixtures/n_array_comma_and_number.json b/rosetta-test-suites/json-rfc-fixtures/n_array_comma_and_number.json similarity index 100% rename from suites/json-rfc-fixtures/n_array_comma_and_number.json rename to rosetta-test-suites/json-rfc-fixtures/n_array_comma_and_number.json diff --git a/suites/json-rfc-fixtures/n_array_double_comma.json b/rosetta-test-suites/json-rfc-fixtures/n_array_double_comma.json similarity index 100% rename from suites/json-rfc-fixtures/n_array_double_comma.json rename to rosetta-test-suites/json-rfc-fixtures/n_array_double_comma.json diff --git a/suites/json-rfc-fixtures/n_array_double_extra_comma.json b/rosetta-test-suites/json-rfc-fixtures/n_array_double_extra_comma.json similarity index 100% rename from suites/json-rfc-fixtures/n_array_double_extra_comma.json rename to rosetta-test-suites/json-rfc-fixtures/n_array_double_extra_comma.json diff --git a/suites/json-rfc-fixtures/n_array_extra_close.json b/rosetta-test-suites/json-rfc-fixtures/n_array_extra_close.json similarity index 100% rename from suites/json-rfc-fixtures/n_array_extra_close.json rename to rosetta-test-suites/json-rfc-fixtures/n_array_extra_close.json diff --git a/suites/json-rfc-fixtures/n_array_extra_comma.json b/rosetta-test-suites/json-rfc-fixtures/n_array_extra_comma.json similarity index 100% rename from suites/json-rfc-fixtures/n_array_extra_comma.json rename to rosetta-test-suites/json-rfc-fixtures/n_array_extra_comma.json diff --git a/suites/json-rfc-fixtures/n_array_incomplete.json b/rosetta-test-suites/json-rfc-fixtures/n_array_incomplete.json similarity index 100% rename from suites/json-rfc-fixtures/n_array_incomplete.json rename to rosetta-test-suites/json-rfc-fixtures/n_array_incomplete.json diff --git a/suites/json-rfc-fixtures/n_array_incomplete_invalid_value.json b/rosetta-test-suites/json-rfc-fixtures/n_array_incomplete_invalid_value.json similarity index 100% rename from suites/json-rfc-fixtures/n_array_incomplete_invalid_value.json rename to rosetta-test-suites/json-rfc-fixtures/n_array_incomplete_invalid_value.json diff --git a/suites/json-rfc-fixtures/n_array_inner_array_no_comma.json b/rosetta-test-suites/json-rfc-fixtures/n_array_inner_array_no_comma.json similarity index 100% rename from suites/json-rfc-fixtures/n_array_inner_array_no_comma.json rename to rosetta-test-suites/json-rfc-fixtures/n_array_inner_array_no_comma.json diff --git a/suites/json-rfc-fixtures/n_array_invalid_utf8.json b/rosetta-test-suites/json-rfc-fixtures/n_array_invalid_utf8.json similarity index 100% rename from suites/json-rfc-fixtures/n_array_invalid_utf8.json rename to rosetta-test-suites/json-rfc-fixtures/n_array_invalid_utf8.json diff --git a/suites/json-rfc-fixtures/n_array_items_separated_by_semicolon.json b/rosetta-test-suites/json-rfc-fixtures/n_array_items_separated_by_semicolon.json similarity index 100% rename from suites/json-rfc-fixtures/n_array_items_separated_by_semicolon.json rename to rosetta-test-suites/json-rfc-fixtures/n_array_items_separated_by_semicolon.json diff --git a/suites/json-rfc-fixtures/n_array_just_comma.json b/rosetta-test-suites/json-rfc-fixtures/n_array_just_comma.json similarity index 100% rename from suites/json-rfc-fixtures/n_array_just_comma.json rename to rosetta-test-suites/json-rfc-fixtures/n_array_just_comma.json diff --git a/suites/json-rfc-fixtures/n_array_just_minus.json b/rosetta-test-suites/json-rfc-fixtures/n_array_just_minus.json similarity index 100% rename from suites/json-rfc-fixtures/n_array_just_minus.json rename to rosetta-test-suites/json-rfc-fixtures/n_array_just_minus.json diff --git a/suites/json-rfc-fixtures/n_array_missing_value.json b/rosetta-test-suites/json-rfc-fixtures/n_array_missing_value.json similarity index 100% rename from suites/json-rfc-fixtures/n_array_missing_value.json rename to rosetta-test-suites/json-rfc-fixtures/n_array_missing_value.json diff --git a/suites/json-rfc-fixtures/n_array_newlines_unclosed.json b/rosetta-test-suites/json-rfc-fixtures/n_array_newlines_unclosed.json similarity index 100% rename from suites/json-rfc-fixtures/n_array_newlines_unclosed.json rename to rosetta-test-suites/json-rfc-fixtures/n_array_newlines_unclosed.json diff --git a/suites/json-rfc-fixtures/n_array_number_and_comma.json b/rosetta-test-suites/json-rfc-fixtures/n_array_number_and_comma.json similarity index 100% rename from suites/json-rfc-fixtures/n_array_number_and_comma.json rename to rosetta-test-suites/json-rfc-fixtures/n_array_number_and_comma.json diff --git a/suites/json-rfc-fixtures/n_array_number_and_several_commas.json b/rosetta-test-suites/json-rfc-fixtures/n_array_number_and_several_commas.json similarity index 100% rename from suites/json-rfc-fixtures/n_array_number_and_several_commas.json rename to rosetta-test-suites/json-rfc-fixtures/n_array_number_and_several_commas.json diff --git a/suites/json-rfc-fixtures/n_array_spaces_vertical_tab_formfeed.json b/rosetta-test-suites/json-rfc-fixtures/n_array_spaces_vertical_tab_formfeed.json similarity index 100% rename from suites/json-rfc-fixtures/n_array_spaces_vertical_tab_formfeed.json rename to rosetta-test-suites/json-rfc-fixtures/n_array_spaces_vertical_tab_formfeed.json diff --git a/suites/json-rfc-fixtures/n_array_star_inside.json b/rosetta-test-suites/json-rfc-fixtures/n_array_star_inside.json similarity index 100% rename from suites/json-rfc-fixtures/n_array_star_inside.json rename to rosetta-test-suites/json-rfc-fixtures/n_array_star_inside.json diff --git a/suites/json-rfc-fixtures/n_array_unclosed.json b/rosetta-test-suites/json-rfc-fixtures/n_array_unclosed.json similarity index 100% rename from suites/json-rfc-fixtures/n_array_unclosed.json rename to rosetta-test-suites/json-rfc-fixtures/n_array_unclosed.json diff --git a/suites/json-rfc-fixtures/n_array_unclosed_trailing_comma.json b/rosetta-test-suites/json-rfc-fixtures/n_array_unclosed_trailing_comma.json similarity index 100% rename from suites/json-rfc-fixtures/n_array_unclosed_trailing_comma.json rename to rosetta-test-suites/json-rfc-fixtures/n_array_unclosed_trailing_comma.json diff --git a/suites/json-rfc-fixtures/n_array_unclosed_with_new_lines.json b/rosetta-test-suites/json-rfc-fixtures/n_array_unclosed_with_new_lines.json similarity index 100% rename from suites/json-rfc-fixtures/n_array_unclosed_with_new_lines.json rename to rosetta-test-suites/json-rfc-fixtures/n_array_unclosed_with_new_lines.json diff --git a/suites/json-rfc-fixtures/n_array_unclosed_with_object_inside.json b/rosetta-test-suites/json-rfc-fixtures/n_array_unclosed_with_object_inside.json similarity index 100% rename from suites/json-rfc-fixtures/n_array_unclosed_with_object_inside.json rename to rosetta-test-suites/json-rfc-fixtures/n_array_unclosed_with_object_inside.json diff --git a/suites/json-rfc-fixtures/n_incomplete_false.json b/rosetta-test-suites/json-rfc-fixtures/n_incomplete_false.json similarity index 100% rename from suites/json-rfc-fixtures/n_incomplete_false.json rename to rosetta-test-suites/json-rfc-fixtures/n_incomplete_false.json diff --git a/suites/json-rfc-fixtures/n_incomplete_null.json b/rosetta-test-suites/json-rfc-fixtures/n_incomplete_null.json similarity index 100% rename from suites/json-rfc-fixtures/n_incomplete_null.json rename to rosetta-test-suites/json-rfc-fixtures/n_incomplete_null.json diff --git a/suites/json-rfc-fixtures/n_incomplete_true.json b/rosetta-test-suites/json-rfc-fixtures/n_incomplete_true.json similarity index 100% rename from suites/json-rfc-fixtures/n_incomplete_true.json rename to rosetta-test-suites/json-rfc-fixtures/n_incomplete_true.json diff --git a/suites/json-rfc-fixtures/n_multidigit_number_then_00.json b/rosetta-test-suites/json-rfc-fixtures/n_multidigit_number_then_00.json similarity index 100% rename from suites/json-rfc-fixtures/n_multidigit_number_then_00.json rename to rosetta-test-suites/json-rfc-fixtures/n_multidigit_number_then_00.json diff --git a/suites/json-rfc-fixtures/n_number_++.json b/rosetta-test-suites/json-rfc-fixtures/n_number_++.json similarity index 100% rename from suites/json-rfc-fixtures/n_number_++.json rename to rosetta-test-suites/json-rfc-fixtures/n_number_++.json diff --git a/suites/json-rfc-fixtures/n_number_+1.json b/rosetta-test-suites/json-rfc-fixtures/n_number_+1.json similarity index 100% rename from suites/json-rfc-fixtures/n_number_+1.json rename to rosetta-test-suites/json-rfc-fixtures/n_number_+1.json diff --git a/suites/json-rfc-fixtures/n_number_+Inf.json b/rosetta-test-suites/json-rfc-fixtures/n_number_+Inf.json similarity index 100% rename from suites/json-rfc-fixtures/n_number_+Inf.json rename to rosetta-test-suites/json-rfc-fixtures/n_number_+Inf.json diff --git a/suites/json-rfc-fixtures/n_number_-01.json b/rosetta-test-suites/json-rfc-fixtures/n_number_-01.json similarity index 100% rename from suites/json-rfc-fixtures/n_number_-01.json rename to rosetta-test-suites/json-rfc-fixtures/n_number_-01.json diff --git a/suites/json-rfc-fixtures/n_number_-1.0..json b/rosetta-test-suites/json-rfc-fixtures/n_number_-1.0..json similarity index 100% rename from suites/json-rfc-fixtures/n_number_-1.0..json rename to rosetta-test-suites/json-rfc-fixtures/n_number_-1.0..json diff --git a/suites/json-rfc-fixtures/n_number_-2..json b/rosetta-test-suites/json-rfc-fixtures/n_number_-2..json similarity index 100% rename from suites/json-rfc-fixtures/n_number_-2..json rename to rosetta-test-suites/json-rfc-fixtures/n_number_-2..json diff --git a/suites/json-rfc-fixtures/n_number_-NaN.json b/rosetta-test-suites/json-rfc-fixtures/n_number_-NaN.json similarity index 100% rename from suites/json-rfc-fixtures/n_number_-NaN.json rename to rosetta-test-suites/json-rfc-fixtures/n_number_-NaN.json diff --git a/suites/json-rfc-fixtures/n_number_.-1.json b/rosetta-test-suites/json-rfc-fixtures/n_number_.-1.json similarity index 100% rename from suites/json-rfc-fixtures/n_number_.-1.json rename to rosetta-test-suites/json-rfc-fixtures/n_number_.-1.json diff --git a/suites/json-rfc-fixtures/n_number_.2e-3.json b/rosetta-test-suites/json-rfc-fixtures/n_number_.2e-3.json similarity index 100% rename from suites/json-rfc-fixtures/n_number_.2e-3.json rename to rosetta-test-suites/json-rfc-fixtures/n_number_.2e-3.json diff --git a/suites/json-rfc-fixtures/n_number_0.1.2.json b/rosetta-test-suites/json-rfc-fixtures/n_number_0.1.2.json similarity index 100% rename from suites/json-rfc-fixtures/n_number_0.1.2.json rename to rosetta-test-suites/json-rfc-fixtures/n_number_0.1.2.json diff --git a/suites/json-rfc-fixtures/n_number_0.3e+.json b/rosetta-test-suites/json-rfc-fixtures/n_number_0.3e+.json similarity index 100% rename from suites/json-rfc-fixtures/n_number_0.3e+.json rename to rosetta-test-suites/json-rfc-fixtures/n_number_0.3e+.json diff --git a/suites/json-rfc-fixtures/n_number_0.3e.json b/rosetta-test-suites/json-rfc-fixtures/n_number_0.3e.json similarity index 100% rename from suites/json-rfc-fixtures/n_number_0.3e.json rename to rosetta-test-suites/json-rfc-fixtures/n_number_0.3e.json diff --git a/suites/json-rfc-fixtures/n_number_0.e1.json b/rosetta-test-suites/json-rfc-fixtures/n_number_0.e1.json similarity index 100% rename from suites/json-rfc-fixtures/n_number_0.e1.json rename to rosetta-test-suites/json-rfc-fixtures/n_number_0.e1.json diff --git a/suites/json-rfc-fixtures/n_number_0_capital_E+.json b/rosetta-test-suites/json-rfc-fixtures/n_number_0_capital_E+.json similarity index 100% rename from suites/json-rfc-fixtures/n_number_0_capital_E+.json rename to rosetta-test-suites/json-rfc-fixtures/n_number_0_capital_E+.json diff --git a/suites/json-rfc-fixtures/n_number_0_capital_E.json b/rosetta-test-suites/json-rfc-fixtures/n_number_0_capital_E.json similarity index 100% rename from suites/json-rfc-fixtures/n_number_0_capital_E.json rename to rosetta-test-suites/json-rfc-fixtures/n_number_0_capital_E.json diff --git a/suites/json-rfc-fixtures/n_number_0e+.json b/rosetta-test-suites/json-rfc-fixtures/n_number_0e+.json similarity index 100% rename from suites/json-rfc-fixtures/n_number_0e+.json rename to rosetta-test-suites/json-rfc-fixtures/n_number_0e+.json diff --git a/suites/json-rfc-fixtures/n_number_0e.json b/rosetta-test-suites/json-rfc-fixtures/n_number_0e.json similarity index 100% rename from suites/json-rfc-fixtures/n_number_0e.json rename to rosetta-test-suites/json-rfc-fixtures/n_number_0e.json diff --git a/suites/json-rfc-fixtures/n_number_1.0e+.json b/rosetta-test-suites/json-rfc-fixtures/n_number_1.0e+.json similarity index 100% rename from suites/json-rfc-fixtures/n_number_1.0e+.json rename to rosetta-test-suites/json-rfc-fixtures/n_number_1.0e+.json diff --git a/suites/json-rfc-fixtures/n_number_1.0e-.json b/rosetta-test-suites/json-rfc-fixtures/n_number_1.0e-.json similarity index 100% rename from suites/json-rfc-fixtures/n_number_1.0e-.json rename to rosetta-test-suites/json-rfc-fixtures/n_number_1.0e-.json diff --git a/suites/json-rfc-fixtures/n_number_1.0e.json b/rosetta-test-suites/json-rfc-fixtures/n_number_1.0e.json similarity index 100% rename from suites/json-rfc-fixtures/n_number_1.0e.json rename to rosetta-test-suites/json-rfc-fixtures/n_number_1.0e.json diff --git a/suites/json-rfc-fixtures/n_number_1_000.json b/rosetta-test-suites/json-rfc-fixtures/n_number_1_000.json similarity index 100% rename from suites/json-rfc-fixtures/n_number_1_000.json rename to rosetta-test-suites/json-rfc-fixtures/n_number_1_000.json diff --git a/suites/json-rfc-fixtures/n_number_1eE2.json b/rosetta-test-suites/json-rfc-fixtures/n_number_1eE2.json similarity index 100% rename from suites/json-rfc-fixtures/n_number_1eE2.json rename to rosetta-test-suites/json-rfc-fixtures/n_number_1eE2.json diff --git a/suites/json-rfc-fixtures/n_number_2.e+3.json b/rosetta-test-suites/json-rfc-fixtures/n_number_2.e+3.json similarity index 100% rename from suites/json-rfc-fixtures/n_number_2.e+3.json rename to rosetta-test-suites/json-rfc-fixtures/n_number_2.e+3.json diff --git a/suites/json-rfc-fixtures/n_number_2.e-3.json b/rosetta-test-suites/json-rfc-fixtures/n_number_2.e-3.json similarity index 100% rename from suites/json-rfc-fixtures/n_number_2.e-3.json rename to rosetta-test-suites/json-rfc-fixtures/n_number_2.e-3.json diff --git a/suites/json-rfc-fixtures/n_number_2.e3.json b/rosetta-test-suites/json-rfc-fixtures/n_number_2.e3.json similarity index 100% rename from suites/json-rfc-fixtures/n_number_2.e3.json rename to rosetta-test-suites/json-rfc-fixtures/n_number_2.e3.json diff --git a/suites/json-rfc-fixtures/n_number_9.e+.json b/rosetta-test-suites/json-rfc-fixtures/n_number_9.e+.json similarity index 100% rename from suites/json-rfc-fixtures/n_number_9.e+.json rename to rosetta-test-suites/json-rfc-fixtures/n_number_9.e+.json diff --git a/suites/json-rfc-fixtures/n_number_Inf.json b/rosetta-test-suites/json-rfc-fixtures/n_number_Inf.json similarity index 100% rename from suites/json-rfc-fixtures/n_number_Inf.json rename to rosetta-test-suites/json-rfc-fixtures/n_number_Inf.json diff --git a/suites/json-rfc-fixtures/n_number_NaN.json b/rosetta-test-suites/json-rfc-fixtures/n_number_NaN.json similarity index 100% rename from suites/json-rfc-fixtures/n_number_NaN.json rename to rosetta-test-suites/json-rfc-fixtures/n_number_NaN.json diff --git a/suites/json-rfc-fixtures/n_number_U+FF11_fullwidth_digit_one.json b/rosetta-test-suites/json-rfc-fixtures/n_number_U+FF11_fullwidth_digit_one.json similarity index 100% rename from suites/json-rfc-fixtures/n_number_U+FF11_fullwidth_digit_one.json rename to rosetta-test-suites/json-rfc-fixtures/n_number_U+FF11_fullwidth_digit_one.json diff --git a/suites/json-rfc-fixtures/n_number_expression.json b/rosetta-test-suites/json-rfc-fixtures/n_number_expression.json similarity index 100% rename from suites/json-rfc-fixtures/n_number_expression.json rename to rosetta-test-suites/json-rfc-fixtures/n_number_expression.json diff --git a/suites/json-rfc-fixtures/n_number_hex_1_digit.json b/rosetta-test-suites/json-rfc-fixtures/n_number_hex_1_digit.json similarity index 100% rename from suites/json-rfc-fixtures/n_number_hex_1_digit.json rename to rosetta-test-suites/json-rfc-fixtures/n_number_hex_1_digit.json diff --git a/suites/json-rfc-fixtures/n_number_hex_2_digits.json b/rosetta-test-suites/json-rfc-fixtures/n_number_hex_2_digits.json similarity index 100% rename from suites/json-rfc-fixtures/n_number_hex_2_digits.json rename to rosetta-test-suites/json-rfc-fixtures/n_number_hex_2_digits.json diff --git a/suites/json-rfc-fixtures/n_number_infinity.json b/rosetta-test-suites/json-rfc-fixtures/n_number_infinity.json similarity index 100% rename from suites/json-rfc-fixtures/n_number_infinity.json rename to rosetta-test-suites/json-rfc-fixtures/n_number_infinity.json diff --git a/suites/json-rfc-fixtures/n_number_invalid+-.json b/rosetta-test-suites/json-rfc-fixtures/n_number_invalid+-.json similarity index 100% rename from suites/json-rfc-fixtures/n_number_invalid+-.json rename to rosetta-test-suites/json-rfc-fixtures/n_number_invalid+-.json diff --git a/suites/json-rfc-fixtures/n_number_invalid-negative-real.json b/rosetta-test-suites/json-rfc-fixtures/n_number_invalid-negative-real.json similarity index 100% rename from suites/json-rfc-fixtures/n_number_invalid-negative-real.json rename to rosetta-test-suites/json-rfc-fixtures/n_number_invalid-negative-real.json diff --git a/suites/json-rfc-fixtures/n_number_invalid-utf-8-in-bigger-int.json b/rosetta-test-suites/json-rfc-fixtures/n_number_invalid-utf-8-in-bigger-int.json similarity index 100% rename from suites/json-rfc-fixtures/n_number_invalid-utf-8-in-bigger-int.json rename to rosetta-test-suites/json-rfc-fixtures/n_number_invalid-utf-8-in-bigger-int.json diff --git a/suites/json-rfc-fixtures/n_number_invalid-utf-8-in-exponent.json b/rosetta-test-suites/json-rfc-fixtures/n_number_invalid-utf-8-in-exponent.json similarity index 100% rename from suites/json-rfc-fixtures/n_number_invalid-utf-8-in-exponent.json rename to rosetta-test-suites/json-rfc-fixtures/n_number_invalid-utf-8-in-exponent.json diff --git a/suites/json-rfc-fixtures/n_number_invalid-utf-8-in-int.json b/rosetta-test-suites/json-rfc-fixtures/n_number_invalid-utf-8-in-int.json similarity index 100% rename from suites/json-rfc-fixtures/n_number_invalid-utf-8-in-int.json rename to rosetta-test-suites/json-rfc-fixtures/n_number_invalid-utf-8-in-int.json diff --git a/suites/json-rfc-fixtures/n_number_minus_infinity.json b/rosetta-test-suites/json-rfc-fixtures/n_number_minus_infinity.json similarity index 100% rename from suites/json-rfc-fixtures/n_number_minus_infinity.json rename to rosetta-test-suites/json-rfc-fixtures/n_number_minus_infinity.json diff --git a/suites/json-rfc-fixtures/n_number_minus_sign_with_trailing_garbage.json b/rosetta-test-suites/json-rfc-fixtures/n_number_minus_sign_with_trailing_garbage.json similarity index 100% rename from suites/json-rfc-fixtures/n_number_minus_sign_with_trailing_garbage.json rename to rosetta-test-suites/json-rfc-fixtures/n_number_minus_sign_with_trailing_garbage.json diff --git a/suites/json-rfc-fixtures/n_number_minus_space_1.json b/rosetta-test-suites/json-rfc-fixtures/n_number_minus_space_1.json similarity index 100% rename from suites/json-rfc-fixtures/n_number_minus_space_1.json rename to rosetta-test-suites/json-rfc-fixtures/n_number_minus_space_1.json diff --git a/suites/json-rfc-fixtures/n_number_neg_int_starting_with_zero.json b/rosetta-test-suites/json-rfc-fixtures/n_number_neg_int_starting_with_zero.json similarity index 100% rename from suites/json-rfc-fixtures/n_number_neg_int_starting_with_zero.json rename to rosetta-test-suites/json-rfc-fixtures/n_number_neg_int_starting_with_zero.json diff --git a/suites/json-rfc-fixtures/n_number_neg_real_without_int_part.json b/rosetta-test-suites/json-rfc-fixtures/n_number_neg_real_without_int_part.json similarity index 100% rename from suites/json-rfc-fixtures/n_number_neg_real_without_int_part.json rename to rosetta-test-suites/json-rfc-fixtures/n_number_neg_real_without_int_part.json diff --git a/suites/json-rfc-fixtures/n_number_neg_with_garbage_at_end.json b/rosetta-test-suites/json-rfc-fixtures/n_number_neg_with_garbage_at_end.json similarity index 100% rename from suites/json-rfc-fixtures/n_number_neg_with_garbage_at_end.json rename to rosetta-test-suites/json-rfc-fixtures/n_number_neg_with_garbage_at_end.json diff --git a/suites/json-rfc-fixtures/n_number_real_garbage_after_e.json b/rosetta-test-suites/json-rfc-fixtures/n_number_real_garbage_after_e.json similarity index 100% rename from suites/json-rfc-fixtures/n_number_real_garbage_after_e.json rename to rosetta-test-suites/json-rfc-fixtures/n_number_real_garbage_after_e.json diff --git a/suites/json-rfc-fixtures/n_number_real_with_invalid_utf8_after_e.json b/rosetta-test-suites/json-rfc-fixtures/n_number_real_with_invalid_utf8_after_e.json similarity index 100% rename from suites/json-rfc-fixtures/n_number_real_with_invalid_utf8_after_e.json rename to rosetta-test-suites/json-rfc-fixtures/n_number_real_with_invalid_utf8_after_e.json diff --git a/suites/json-rfc-fixtures/n_number_real_without_fractional_part.json b/rosetta-test-suites/json-rfc-fixtures/n_number_real_without_fractional_part.json similarity index 100% rename from suites/json-rfc-fixtures/n_number_real_without_fractional_part.json rename to rosetta-test-suites/json-rfc-fixtures/n_number_real_without_fractional_part.json diff --git a/suites/json-rfc-fixtures/n_number_starting_with_dot.json b/rosetta-test-suites/json-rfc-fixtures/n_number_starting_with_dot.json similarity index 100% rename from suites/json-rfc-fixtures/n_number_starting_with_dot.json rename to rosetta-test-suites/json-rfc-fixtures/n_number_starting_with_dot.json diff --git a/suites/json-rfc-fixtures/n_number_with_alpha.json b/rosetta-test-suites/json-rfc-fixtures/n_number_with_alpha.json similarity index 100% rename from suites/json-rfc-fixtures/n_number_with_alpha.json rename to rosetta-test-suites/json-rfc-fixtures/n_number_with_alpha.json diff --git a/suites/json-rfc-fixtures/n_number_with_alpha_char.json b/rosetta-test-suites/json-rfc-fixtures/n_number_with_alpha_char.json similarity index 100% rename from suites/json-rfc-fixtures/n_number_with_alpha_char.json rename to rosetta-test-suites/json-rfc-fixtures/n_number_with_alpha_char.json diff --git a/suites/json-rfc-fixtures/n_number_with_leading_zero.json b/rosetta-test-suites/json-rfc-fixtures/n_number_with_leading_zero.json similarity index 100% rename from suites/json-rfc-fixtures/n_number_with_leading_zero.json rename to rosetta-test-suites/json-rfc-fixtures/n_number_with_leading_zero.json diff --git a/suites/json-rfc-fixtures/n_object_bad_value.json b/rosetta-test-suites/json-rfc-fixtures/n_object_bad_value.json similarity index 100% rename from suites/json-rfc-fixtures/n_object_bad_value.json rename to rosetta-test-suites/json-rfc-fixtures/n_object_bad_value.json diff --git a/suites/json-rfc-fixtures/n_object_bracket_key.json b/rosetta-test-suites/json-rfc-fixtures/n_object_bracket_key.json similarity index 100% rename from suites/json-rfc-fixtures/n_object_bracket_key.json rename to rosetta-test-suites/json-rfc-fixtures/n_object_bracket_key.json diff --git a/suites/json-rfc-fixtures/n_object_comma_instead_of_colon.json b/rosetta-test-suites/json-rfc-fixtures/n_object_comma_instead_of_colon.json similarity index 100% rename from suites/json-rfc-fixtures/n_object_comma_instead_of_colon.json rename to rosetta-test-suites/json-rfc-fixtures/n_object_comma_instead_of_colon.json diff --git a/suites/json-rfc-fixtures/n_object_double_colon.json b/rosetta-test-suites/json-rfc-fixtures/n_object_double_colon.json similarity index 100% rename from suites/json-rfc-fixtures/n_object_double_colon.json rename to rosetta-test-suites/json-rfc-fixtures/n_object_double_colon.json diff --git a/suites/json-rfc-fixtures/n_object_emoji.json b/rosetta-test-suites/json-rfc-fixtures/n_object_emoji.json similarity index 100% rename from suites/json-rfc-fixtures/n_object_emoji.json rename to rosetta-test-suites/json-rfc-fixtures/n_object_emoji.json diff --git a/suites/json-rfc-fixtures/n_object_garbage_at_end.json b/rosetta-test-suites/json-rfc-fixtures/n_object_garbage_at_end.json similarity index 100% rename from suites/json-rfc-fixtures/n_object_garbage_at_end.json rename to rosetta-test-suites/json-rfc-fixtures/n_object_garbage_at_end.json diff --git a/suites/json-rfc-fixtures/n_object_key_with_single_quotes.json b/rosetta-test-suites/json-rfc-fixtures/n_object_key_with_single_quotes.json similarity index 100% rename from suites/json-rfc-fixtures/n_object_key_with_single_quotes.json rename to rosetta-test-suites/json-rfc-fixtures/n_object_key_with_single_quotes.json diff --git a/suites/json-rfc-fixtures/n_object_lone_continuation_byte_in_key_and_trailing_comma.json b/rosetta-test-suites/json-rfc-fixtures/n_object_lone_continuation_byte_in_key_and_trailing_comma.json similarity index 100% rename from suites/json-rfc-fixtures/n_object_lone_continuation_byte_in_key_and_trailing_comma.json rename to rosetta-test-suites/json-rfc-fixtures/n_object_lone_continuation_byte_in_key_and_trailing_comma.json diff --git a/suites/json-rfc-fixtures/n_object_missing_colon.json b/rosetta-test-suites/json-rfc-fixtures/n_object_missing_colon.json similarity index 100% rename from suites/json-rfc-fixtures/n_object_missing_colon.json rename to rosetta-test-suites/json-rfc-fixtures/n_object_missing_colon.json diff --git a/suites/json-rfc-fixtures/n_object_missing_key.json b/rosetta-test-suites/json-rfc-fixtures/n_object_missing_key.json similarity index 100% rename from suites/json-rfc-fixtures/n_object_missing_key.json rename to rosetta-test-suites/json-rfc-fixtures/n_object_missing_key.json diff --git a/suites/json-rfc-fixtures/n_object_missing_semicolon.json b/rosetta-test-suites/json-rfc-fixtures/n_object_missing_semicolon.json similarity index 100% rename from suites/json-rfc-fixtures/n_object_missing_semicolon.json rename to rosetta-test-suites/json-rfc-fixtures/n_object_missing_semicolon.json diff --git a/suites/json-rfc-fixtures/n_object_missing_value.json b/rosetta-test-suites/json-rfc-fixtures/n_object_missing_value.json similarity index 100% rename from suites/json-rfc-fixtures/n_object_missing_value.json rename to rosetta-test-suites/json-rfc-fixtures/n_object_missing_value.json diff --git a/suites/json-rfc-fixtures/n_object_no-colon.json b/rosetta-test-suites/json-rfc-fixtures/n_object_no-colon.json similarity index 100% rename from suites/json-rfc-fixtures/n_object_no-colon.json rename to rosetta-test-suites/json-rfc-fixtures/n_object_no-colon.json diff --git a/suites/json-rfc-fixtures/n_object_non_string_key.json b/rosetta-test-suites/json-rfc-fixtures/n_object_non_string_key.json similarity index 100% rename from suites/json-rfc-fixtures/n_object_non_string_key.json rename to rosetta-test-suites/json-rfc-fixtures/n_object_non_string_key.json diff --git a/suites/json-rfc-fixtures/n_object_non_string_key_but_huge_number_instead.json b/rosetta-test-suites/json-rfc-fixtures/n_object_non_string_key_but_huge_number_instead.json similarity index 100% rename from suites/json-rfc-fixtures/n_object_non_string_key_but_huge_number_instead.json rename to rosetta-test-suites/json-rfc-fixtures/n_object_non_string_key_but_huge_number_instead.json diff --git a/suites/json-rfc-fixtures/n_object_repeated_null_null.json b/rosetta-test-suites/json-rfc-fixtures/n_object_repeated_null_null.json similarity index 100% rename from suites/json-rfc-fixtures/n_object_repeated_null_null.json rename to rosetta-test-suites/json-rfc-fixtures/n_object_repeated_null_null.json diff --git a/suites/json-rfc-fixtures/n_object_several_trailing_commas.json b/rosetta-test-suites/json-rfc-fixtures/n_object_several_trailing_commas.json similarity index 100% rename from suites/json-rfc-fixtures/n_object_several_trailing_commas.json rename to rosetta-test-suites/json-rfc-fixtures/n_object_several_trailing_commas.json diff --git a/suites/json-rfc-fixtures/n_object_single_quote.json b/rosetta-test-suites/json-rfc-fixtures/n_object_single_quote.json similarity index 100% rename from suites/json-rfc-fixtures/n_object_single_quote.json rename to rosetta-test-suites/json-rfc-fixtures/n_object_single_quote.json diff --git a/suites/json-rfc-fixtures/n_object_trailing_comma.json b/rosetta-test-suites/json-rfc-fixtures/n_object_trailing_comma.json similarity index 100% rename from suites/json-rfc-fixtures/n_object_trailing_comma.json rename to rosetta-test-suites/json-rfc-fixtures/n_object_trailing_comma.json diff --git a/suites/json-rfc-fixtures/n_object_trailing_comment.json b/rosetta-test-suites/json-rfc-fixtures/n_object_trailing_comment.json similarity index 100% rename from suites/json-rfc-fixtures/n_object_trailing_comment.json rename to rosetta-test-suites/json-rfc-fixtures/n_object_trailing_comment.json diff --git a/suites/json-rfc-fixtures/n_object_trailing_comment_open.json b/rosetta-test-suites/json-rfc-fixtures/n_object_trailing_comment_open.json similarity index 100% rename from suites/json-rfc-fixtures/n_object_trailing_comment_open.json rename to rosetta-test-suites/json-rfc-fixtures/n_object_trailing_comment_open.json diff --git a/suites/json-rfc-fixtures/n_object_trailing_comment_slash_open.json b/rosetta-test-suites/json-rfc-fixtures/n_object_trailing_comment_slash_open.json similarity index 100% rename from suites/json-rfc-fixtures/n_object_trailing_comment_slash_open.json rename to rosetta-test-suites/json-rfc-fixtures/n_object_trailing_comment_slash_open.json diff --git a/suites/json-rfc-fixtures/n_object_trailing_comment_slash_open_incomplete.json b/rosetta-test-suites/json-rfc-fixtures/n_object_trailing_comment_slash_open_incomplete.json similarity index 100% rename from suites/json-rfc-fixtures/n_object_trailing_comment_slash_open_incomplete.json rename to rosetta-test-suites/json-rfc-fixtures/n_object_trailing_comment_slash_open_incomplete.json diff --git a/suites/json-rfc-fixtures/n_object_two_commas_in_a_row.json b/rosetta-test-suites/json-rfc-fixtures/n_object_two_commas_in_a_row.json similarity index 100% rename from suites/json-rfc-fixtures/n_object_two_commas_in_a_row.json rename to rosetta-test-suites/json-rfc-fixtures/n_object_two_commas_in_a_row.json diff --git a/suites/json-rfc-fixtures/n_object_unquoted_key.json b/rosetta-test-suites/json-rfc-fixtures/n_object_unquoted_key.json similarity index 100% rename from suites/json-rfc-fixtures/n_object_unquoted_key.json rename to rosetta-test-suites/json-rfc-fixtures/n_object_unquoted_key.json diff --git a/suites/json-rfc-fixtures/n_object_unterminated-value.json b/rosetta-test-suites/json-rfc-fixtures/n_object_unterminated-value.json similarity index 100% rename from suites/json-rfc-fixtures/n_object_unterminated-value.json rename to rosetta-test-suites/json-rfc-fixtures/n_object_unterminated-value.json diff --git a/suites/json-rfc-fixtures/n_object_with_single_string.json b/rosetta-test-suites/json-rfc-fixtures/n_object_with_single_string.json similarity index 100% rename from suites/json-rfc-fixtures/n_object_with_single_string.json rename to rosetta-test-suites/json-rfc-fixtures/n_object_with_single_string.json diff --git a/suites/json-rfc-fixtures/n_object_with_trailing_garbage.json b/rosetta-test-suites/json-rfc-fixtures/n_object_with_trailing_garbage.json similarity index 100% rename from suites/json-rfc-fixtures/n_object_with_trailing_garbage.json rename to rosetta-test-suites/json-rfc-fixtures/n_object_with_trailing_garbage.json diff --git a/suites/json-rfc-fixtures/n_single_space.json b/rosetta-test-suites/json-rfc-fixtures/n_single_space.json similarity index 100% rename from suites/json-rfc-fixtures/n_single_space.json rename to rosetta-test-suites/json-rfc-fixtures/n_single_space.json diff --git a/suites/json-rfc-fixtures/n_string_1_surrogate_then_escape.json b/rosetta-test-suites/json-rfc-fixtures/n_string_1_surrogate_then_escape.json similarity index 100% rename from suites/json-rfc-fixtures/n_string_1_surrogate_then_escape.json rename to rosetta-test-suites/json-rfc-fixtures/n_string_1_surrogate_then_escape.json diff --git a/suites/json-rfc-fixtures/n_string_1_surrogate_then_escape_u.json b/rosetta-test-suites/json-rfc-fixtures/n_string_1_surrogate_then_escape_u.json similarity index 100% rename from suites/json-rfc-fixtures/n_string_1_surrogate_then_escape_u.json rename to rosetta-test-suites/json-rfc-fixtures/n_string_1_surrogate_then_escape_u.json diff --git a/suites/json-rfc-fixtures/n_string_1_surrogate_then_escape_u1.json b/rosetta-test-suites/json-rfc-fixtures/n_string_1_surrogate_then_escape_u1.json similarity index 100% rename from suites/json-rfc-fixtures/n_string_1_surrogate_then_escape_u1.json rename to rosetta-test-suites/json-rfc-fixtures/n_string_1_surrogate_then_escape_u1.json diff --git a/suites/json-rfc-fixtures/n_string_1_surrogate_then_escape_u1x.json b/rosetta-test-suites/json-rfc-fixtures/n_string_1_surrogate_then_escape_u1x.json similarity index 100% rename from suites/json-rfc-fixtures/n_string_1_surrogate_then_escape_u1x.json rename to rosetta-test-suites/json-rfc-fixtures/n_string_1_surrogate_then_escape_u1x.json diff --git a/suites/json-rfc-fixtures/n_string_accentuated_char_no_quotes.json b/rosetta-test-suites/json-rfc-fixtures/n_string_accentuated_char_no_quotes.json similarity index 100% rename from suites/json-rfc-fixtures/n_string_accentuated_char_no_quotes.json rename to rosetta-test-suites/json-rfc-fixtures/n_string_accentuated_char_no_quotes.json diff --git a/suites/json-rfc-fixtures/n_string_backslash_00.json b/rosetta-test-suites/json-rfc-fixtures/n_string_backslash_00.json similarity index 100% rename from suites/json-rfc-fixtures/n_string_backslash_00.json rename to rosetta-test-suites/json-rfc-fixtures/n_string_backslash_00.json diff --git a/suites/json-rfc-fixtures/n_string_escape_x.json b/rosetta-test-suites/json-rfc-fixtures/n_string_escape_x.json similarity index 100% rename from suites/json-rfc-fixtures/n_string_escape_x.json rename to rosetta-test-suites/json-rfc-fixtures/n_string_escape_x.json diff --git a/suites/json-rfc-fixtures/n_string_escaped_backslash_bad.json b/rosetta-test-suites/json-rfc-fixtures/n_string_escaped_backslash_bad.json similarity index 100% rename from suites/json-rfc-fixtures/n_string_escaped_backslash_bad.json rename to rosetta-test-suites/json-rfc-fixtures/n_string_escaped_backslash_bad.json diff --git a/suites/json-rfc-fixtures/n_string_escaped_ctrl_char_tab.json b/rosetta-test-suites/json-rfc-fixtures/n_string_escaped_ctrl_char_tab.json similarity index 100% rename from suites/json-rfc-fixtures/n_string_escaped_ctrl_char_tab.json rename to rosetta-test-suites/json-rfc-fixtures/n_string_escaped_ctrl_char_tab.json diff --git a/suites/json-rfc-fixtures/n_string_escaped_emoji.json b/rosetta-test-suites/json-rfc-fixtures/n_string_escaped_emoji.json similarity index 100% rename from suites/json-rfc-fixtures/n_string_escaped_emoji.json rename to rosetta-test-suites/json-rfc-fixtures/n_string_escaped_emoji.json diff --git a/suites/json-rfc-fixtures/n_string_incomplete_escape.json b/rosetta-test-suites/json-rfc-fixtures/n_string_incomplete_escape.json similarity index 100% rename from suites/json-rfc-fixtures/n_string_incomplete_escape.json rename to rosetta-test-suites/json-rfc-fixtures/n_string_incomplete_escape.json diff --git a/suites/json-rfc-fixtures/n_string_incomplete_escaped_character.json b/rosetta-test-suites/json-rfc-fixtures/n_string_incomplete_escaped_character.json similarity index 100% rename from suites/json-rfc-fixtures/n_string_incomplete_escaped_character.json rename to rosetta-test-suites/json-rfc-fixtures/n_string_incomplete_escaped_character.json diff --git a/suites/json-rfc-fixtures/n_string_incomplete_surrogate.json b/rosetta-test-suites/json-rfc-fixtures/n_string_incomplete_surrogate.json similarity index 100% rename from suites/json-rfc-fixtures/n_string_incomplete_surrogate.json rename to rosetta-test-suites/json-rfc-fixtures/n_string_incomplete_surrogate.json diff --git a/suites/json-rfc-fixtures/n_string_incomplete_surrogate_escape_invalid.json b/rosetta-test-suites/json-rfc-fixtures/n_string_incomplete_surrogate_escape_invalid.json similarity index 100% rename from suites/json-rfc-fixtures/n_string_incomplete_surrogate_escape_invalid.json rename to rosetta-test-suites/json-rfc-fixtures/n_string_incomplete_surrogate_escape_invalid.json diff --git a/suites/json-rfc-fixtures/n_string_invalid-utf-8-in-escape.json b/rosetta-test-suites/json-rfc-fixtures/n_string_invalid-utf-8-in-escape.json similarity index 100% rename from suites/json-rfc-fixtures/n_string_invalid-utf-8-in-escape.json rename to rosetta-test-suites/json-rfc-fixtures/n_string_invalid-utf-8-in-escape.json diff --git a/suites/json-rfc-fixtures/n_string_invalid_backslash_esc.json b/rosetta-test-suites/json-rfc-fixtures/n_string_invalid_backslash_esc.json similarity index 100% rename from suites/json-rfc-fixtures/n_string_invalid_backslash_esc.json rename to rosetta-test-suites/json-rfc-fixtures/n_string_invalid_backslash_esc.json diff --git a/suites/json-rfc-fixtures/n_string_invalid_unicode_escape.json b/rosetta-test-suites/json-rfc-fixtures/n_string_invalid_unicode_escape.json similarity index 100% rename from suites/json-rfc-fixtures/n_string_invalid_unicode_escape.json rename to rosetta-test-suites/json-rfc-fixtures/n_string_invalid_unicode_escape.json diff --git a/suites/json-rfc-fixtures/n_string_invalid_utf8_after_escape.json b/rosetta-test-suites/json-rfc-fixtures/n_string_invalid_utf8_after_escape.json similarity index 100% rename from suites/json-rfc-fixtures/n_string_invalid_utf8_after_escape.json rename to rosetta-test-suites/json-rfc-fixtures/n_string_invalid_utf8_after_escape.json diff --git a/suites/json-rfc-fixtures/n_string_leading_uescaped_thinspace.json b/rosetta-test-suites/json-rfc-fixtures/n_string_leading_uescaped_thinspace.json similarity index 100% rename from suites/json-rfc-fixtures/n_string_leading_uescaped_thinspace.json rename to rosetta-test-suites/json-rfc-fixtures/n_string_leading_uescaped_thinspace.json diff --git a/suites/json-rfc-fixtures/n_string_no_quotes_with_bad_escape.json b/rosetta-test-suites/json-rfc-fixtures/n_string_no_quotes_with_bad_escape.json similarity index 100% rename from suites/json-rfc-fixtures/n_string_no_quotes_with_bad_escape.json rename to rosetta-test-suites/json-rfc-fixtures/n_string_no_quotes_with_bad_escape.json diff --git a/suites/json-rfc-fixtures/n_string_single_doublequote.json b/rosetta-test-suites/json-rfc-fixtures/n_string_single_doublequote.json similarity index 100% rename from suites/json-rfc-fixtures/n_string_single_doublequote.json rename to rosetta-test-suites/json-rfc-fixtures/n_string_single_doublequote.json diff --git a/suites/json-rfc-fixtures/n_string_single_quote.json b/rosetta-test-suites/json-rfc-fixtures/n_string_single_quote.json similarity index 100% rename from suites/json-rfc-fixtures/n_string_single_quote.json rename to rosetta-test-suites/json-rfc-fixtures/n_string_single_quote.json diff --git a/suites/json-rfc-fixtures/n_string_single_string_no_double_quotes.json b/rosetta-test-suites/json-rfc-fixtures/n_string_single_string_no_double_quotes.json similarity index 100% rename from suites/json-rfc-fixtures/n_string_single_string_no_double_quotes.json rename to rosetta-test-suites/json-rfc-fixtures/n_string_single_string_no_double_quotes.json diff --git a/suites/json-rfc-fixtures/n_string_start_escape_unclosed.json b/rosetta-test-suites/json-rfc-fixtures/n_string_start_escape_unclosed.json similarity index 100% rename from suites/json-rfc-fixtures/n_string_start_escape_unclosed.json rename to rosetta-test-suites/json-rfc-fixtures/n_string_start_escape_unclosed.json diff --git a/suites/json-rfc-fixtures/n_string_unescaped_ctrl_char.json b/rosetta-test-suites/json-rfc-fixtures/n_string_unescaped_ctrl_char.json similarity index 100% rename from suites/json-rfc-fixtures/n_string_unescaped_ctrl_char.json rename to rosetta-test-suites/json-rfc-fixtures/n_string_unescaped_ctrl_char.json diff --git a/suites/json-rfc-fixtures/n_string_unescaped_newline.json b/rosetta-test-suites/json-rfc-fixtures/n_string_unescaped_newline.json similarity index 100% rename from suites/json-rfc-fixtures/n_string_unescaped_newline.json rename to rosetta-test-suites/json-rfc-fixtures/n_string_unescaped_newline.json diff --git a/suites/json-rfc-fixtures/n_string_unescaped_tab.json b/rosetta-test-suites/json-rfc-fixtures/n_string_unescaped_tab.json similarity index 100% rename from suites/json-rfc-fixtures/n_string_unescaped_tab.json rename to rosetta-test-suites/json-rfc-fixtures/n_string_unescaped_tab.json diff --git a/suites/json-rfc-fixtures/n_string_unicode_CapitalU.json b/rosetta-test-suites/json-rfc-fixtures/n_string_unicode_CapitalU.json similarity index 100% rename from suites/json-rfc-fixtures/n_string_unicode_CapitalU.json rename to rosetta-test-suites/json-rfc-fixtures/n_string_unicode_CapitalU.json diff --git a/suites/json-rfc-fixtures/n_string_with_trailing_garbage.json b/rosetta-test-suites/json-rfc-fixtures/n_string_with_trailing_garbage.json similarity index 100% rename from suites/json-rfc-fixtures/n_string_with_trailing_garbage.json rename to rosetta-test-suites/json-rfc-fixtures/n_string_with_trailing_garbage.json diff --git a/suites/json-rfc-fixtures/n_structure_100000_opening_arrays.json b/rosetta-test-suites/json-rfc-fixtures/n_structure_100000_opening_arrays.json similarity index 100% rename from suites/json-rfc-fixtures/n_structure_100000_opening_arrays.json rename to rosetta-test-suites/json-rfc-fixtures/n_structure_100000_opening_arrays.json diff --git a/suites/json-rfc-fixtures/n_structure_U+2060_word_joined.json b/rosetta-test-suites/json-rfc-fixtures/n_structure_U+2060_word_joined.json similarity index 100% rename from suites/json-rfc-fixtures/n_structure_U+2060_word_joined.json rename to rosetta-test-suites/json-rfc-fixtures/n_structure_U+2060_word_joined.json diff --git a/suites/json-rfc-fixtures/n_structure_UTF8_BOM_no_data.json b/rosetta-test-suites/json-rfc-fixtures/n_structure_UTF8_BOM_no_data.json similarity index 100% rename from suites/json-rfc-fixtures/n_structure_UTF8_BOM_no_data.json rename to rosetta-test-suites/json-rfc-fixtures/n_structure_UTF8_BOM_no_data.json diff --git a/suites/json-rfc-fixtures/n_structure_angle_bracket_..json b/rosetta-test-suites/json-rfc-fixtures/n_structure_angle_bracket_..json similarity index 100% rename from suites/json-rfc-fixtures/n_structure_angle_bracket_..json rename to rosetta-test-suites/json-rfc-fixtures/n_structure_angle_bracket_..json diff --git a/suites/json-rfc-fixtures/n_structure_angle_bracket_null.json b/rosetta-test-suites/json-rfc-fixtures/n_structure_angle_bracket_null.json similarity index 100% rename from suites/json-rfc-fixtures/n_structure_angle_bracket_null.json rename to rosetta-test-suites/json-rfc-fixtures/n_structure_angle_bracket_null.json diff --git a/suites/json-rfc-fixtures/n_structure_array_trailing_garbage.json b/rosetta-test-suites/json-rfc-fixtures/n_structure_array_trailing_garbage.json similarity index 100% rename from suites/json-rfc-fixtures/n_structure_array_trailing_garbage.json rename to rosetta-test-suites/json-rfc-fixtures/n_structure_array_trailing_garbage.json diff --git a/suites/json-rfc-fixtures/n_structure_array_with_extra_array_close.json b/rosetta-test-suites/json-rfc-fixtures/n_structure_array_with_extra_array_close.json similarity index 100% rename from suites/json-rfc-fixtures/n_structure_array_with_extra_array_close.json rename to rosetta-test-suites/json-rfc-fixtures/n_structure_array_with_extra_array_close.json diff --git a/suites/json-rfc-fixtures/n_structure_array_with_unclosed_string.json b/rosetta-test-suites/json-rfc-fixtures/n_structure_array_with_unclosed_string.json similarity index 100% rename from suites/json-rfc-fixtures/n_structure_array_with_unclosed_string.json rename to rosetta-test-suites/json-rfc-fixtures/n_structure_array_with_unclosed_string.json diff --git a/suites/json-rfc-fixtures/n_structure_ascii-unicode-identifier.json b/rosetta-test-suites/json-rfc-fixtures/n_structure_ascii-unicode-identifier.json similarity index 100% rename from suites/json-rfc-fixtures/n_structure_ascii-unicode-identifier.json rename to rosetta-test-suites/json-rfc-fixtures/n_structure_ascii-unicode-identifier.json diff --git a/suites/json-rfc-fixtures/n_structure_capitalized_True.json b/rosetta-test-suites/json-rfc-fixtures/n_structure_capitalized_True.json similarity index 100% rename from suites/json-rfc-fixtures/n_structure_capitalized_True.json rename to rosetta-test-suites/json-rfc-fixtures/n_structure_capitalized_True.json diff --git a/suites/json-rfc-fixtures/n_structure_close_unopened_array.json b/rosetta-test-suites/json-rfc-fixtures/n_structure_close_unopened_array.json similarity index 100% rename from suites/json-rfc-fixtures/n_structure_close_unopened_array.json rename to rosetta-test-suites/json-rfc-fixtures/n_structure_close_unopened_array.json diff --git a/suites/json-rfc-fixtures/n_structure_comma_instead_of_closing_brace.json b/rosetta-test-suites/json-rfc-fixtures/n_structure_comma_instead_of_closing_brace.json similarity index 100% rename from suites/json-rfc-fixtures/n_structure_comma_instead_of_closing_brace.json rename to rosetta-test-suites/json-rfc-fixtures/n_structure_comma_instead_of_closing_brace.json diff --git a/suites/json-rfc-fixtures/n_structure_double_array.json b/rosetta-test-suites/json-rfc-fixtures/n_structure_double_array.json similarity index 100% rename from suites/json-rfc-fixtures/n_structure_double_array.json rename to rosetta-test-suites/json-rfc-fixtures/n_structure_double_array.json diff --git a/suites/json-rfc-fixtures/n_structure_end_array.json b/rosetta-test-suites/json-rfc-fixtures/n_structure_end_array.json similarity index 100% rename from suites/json-rfc-fixtures/n_structure_end_array.json rename to rosetta-test-suites/json-rfc-fixtures/n_structure_end_array.json diff --git a/suites/json-rfc-fixtures/n_structure_incomplete_UTF8_BOM.json b/rosetta-test-suites/json-rfc-fixtures/n_structure_incomplete_UTF8_BOM.json similarity index 100% rename from suites/json-rfc-fixtures/n_structure_incomplete_UTF8_BOM.json rename to rosetta-test-suites/json-rfc-fixtures/n_structure_incomplete_UTF8_BOM.json diff --git a/suites/json-rfc-fixtures/n_structure_lone-invalid-utf-8.json b/rosetta-test-suites/json-rfc-fixtures/n_structure_lone-invalid-utf-8.json similarity index 100% rename from suites/json-rfc-fixtures/n_structure_lone-invalid-utf-8.json rename to rosetta-test-suites/json-rfc-fixtures/n_structure_lone-invalid-utf-8.json diff --git a/suites/json-rfc-fixtures/n_structure_lone-open-bracket.json b/rosetta-test-suites/json-rfc-fixtures/n_structure_lone-open-bracket.json similarity index 100% rename from suites/json-rfc-fixtures/n_structure_lone-open-bracket.json rename to rosetta-test-suites/json-rfc-fixtures/n_structure_lone-open-bracket.json diff --git a/suites/json-rfc-fixtures/n_structure_no_data.json b/rosetta-test-suites/json-rfc-fixtures/n_structure_no_data.json similarity index 100% rename from suites/json-rfc-fixtures/n_structure_no_data.json rename to rosetta-test-suites/json-rfc-fixtures/n_structure_no_data.json diff --git a/suites/json-rfc-fixtures/n_structure_null-byte-outside-string.json b/rosetta-test-suites/json-rfc-fixtures/n_structure_null-byte-outside-string.json similarity index 100% rename from suites/json-rfc-fixtures/n_structure_null-byte-outside-string.json rename to rosetta-test-suites/json-rfc-fixtures/n_structure_null-byte-outside-string.json diff --git a/suites/json-rfc-fixtures/n_structure_number_with_trailing_garbage.json b/rosetta-test-suites/json-rfc-fixtures/n_structure_number_with_trailing_garbage.json similarity index 100% rename from suites/json-rfc-fixtures/n_structure_number_with_trailing_garbage.json rename to rosetta-test-suites/json-rfc-fixtures/n_structure_number_with_trailing_garbage.json diff --git a/suites/json-rfc-fixtures/n_structure_object_followed_by_closing_object.json b/rosetta-test-suites/json-rfc-fixtures/n_structure_object_followed_by_closing_object.json similarity index 100% rename from suites/json-rfc-fixtures/n_structure_object_followed_by_closing_object.json rename to rosetta-test-suites/json-rfc-fixtures/n_structure_object_followed_by_closing_object.json diff --git a/suites/json-rfc-fixtures/n_structure_object_unclosed_no_value.json b/rosetta-test-suites/json-rfc-fixtures/n_structure_object_unclosed_no_value.json similarity index 100% rename from suites/json-rfc-fixtures/n_structure_object_unclosed_no_value.json rename to rosetta-test-suites/json-rfc-fixtures/n_structure_object_unclosed_no_value.json diff --git a/suites/json-rfc-fixtures/n_structure_object_with_comment.json b/rosetta-test-suites/json-rfc-fixtures/n_structure_object_with_comment.json similarity index 100% rename from suites/json-rfc-fixtures/n_structure_object_with_comment.json rename to rosetta-test-suites/json-rfc-fixtures/n_structure_object_with_comment.json diff --git a/suites/json-rfc-fixtures/n_structure_object_with_trailing_garbage.json b/rosetta-test-suites/json-rfc-fixtures/n_structure_object_with_trailing_garbage.json similarity index 100% rename from suites/json-rfc-fixtures/n_structure_object_with_trailing_garbage.json rename to rosetta-test-suites/json-rfc-fixtures/n_structure_object_with_trailing_garbage.json diff --git a/suites/json-rfc-fixtures/n_structure_open_array_apostrophe.json b/rosetta-test-suites/json-rfc-fixtures/n_structure_open_array_apostrophe.json similarity index 100% rename from suites/json-rfc-fixtures/n_structure_open_array_apostrophe.json rename to rosetta-test-suites/json-rfc-fixtures/n_structure_open_array_apostrophe.json diff --git a/suites/json-rfc-fixtures/n_structure_open_array_comma.json b/rosetta-test-suites/json-rfc-fixtures/n_structure_open_array_comma.json similarity index 100% rename from suites/json-rfc-fixtures/n_structure_open_array_comma.json rename to rosetta-test-suites/json-rfc-fixtures/n_structure_open_array_comma.json diff --git a/suites/json-rfc-fixtures/n_structure_open_array_object.json b/rosetta-test-suites/json-rfc-fixtures/n_structure_open_array_object.json similarity index 100% rename from suites/json-rfc-fixtures/n_structure_open_array_object.json rename to rosetta-test-suites/json-rfc-fixtures/n_structure_open_array_object.json diff --git a/suites/json-rfc-fixtures/n_structure_open_array_open_object.json b/rosetta-test-suites/json-rfc-fixtures/n_structure_open_array_open_object.json similarity index 100% rename from suites/json-rfc-fixtures/n_structure_open_array_open_object.json rename to rosetta-test-suites/json-rfc-fixtures/n_structure_open_array_open_object.json diff --git a/suites/json-rfc-fixtures/n_structure_open_array_open_string.json b/rosetta-test-suites/json-rfc-fixtures/n_structure_open_array_open_string.json similarity index 100% rename from suites/json-rfc-fixtures/n_structure_open_array_open_string.json rename to rosetta-test-suites/json-rfc-fixtures/n_structure_open_array_open_string.json diff --git a/suites/json-rfc-fixtures/n_structure_open_array_string.json b/rosetta-test-suites/json-rfc-fixtures/n_structure_open_array_string.json similarity index 100% rename from suites/json-rfc-fixtures/n_structure_open_array_string.json rename to rosetta-test-suites/json-rfc-fixtures/n_structure_open_array_string.json diff --git a/suites/json-rfc-fixtures/n_structure_open_object.json b/rosetta-test-suites/json-rfc-fixtures/n_structure_open_object.json similarity index 100% rename from suites/json-rfc-fixtures/n_structure_open_object.json rename to rosetta-test-suites/json-rfc-fixtures/n_structure_open_object.json diff --git a/suites/json-rfc-fixtures/n_structure_open_object_close_array.json b/rosetta-test-suites/json-rfc-fixtures/n_structure_open_object_close_array.json similarity index 100% rename from suites/json-rfc-fixtures/n_structure_open_object_close_array.json rename to rosetta-test-suites/json-rfc-fixtures/n_structure_open_object_close_array.json diff --git a/suites/json-rfc-fixtures/n_structure_open_object_comma.json b/rosetta-test-suites/json-rfc-fixtures/n_structure_open_object_comma.json similarity index 100% rename from suites/json-rfc-fixtures/n_structure_open_object_comma.json rename to rosetta-test-suites/json-rfc-fixtures/n_structure_open_object_comma.json diff --git a/suites/json-rfc-fixtures/n_structure_open_object_open_array.json b/rosetta-test-suites/json-rfc-fixtures/n_structure_open_object_open_array.json similarity index 100% rename from suites/json-rfc-fixtures/n_structure_open_object_open_array.json rename to rosetta-test-suites/json-rfc-fixtures/n_structure_open_object_open_array.json diff --git a/suites/json-rfc-fixtures/n_structure_open_object_open_string.json b/rosetta-test-suites/json-rfc-fixtures/n_structure_open_object_open_string.json similarity index 100% rename from suites/json-rfc-fixtures/n_structure_open_object_open_string.json rename to rosetta-test-suites/json-rfc-fixtures/n_structure_open_object_open_string.json diff --git a/suites/json-rfc-fixtures/n_structure_open_object_string_with_apostrophes.json b/rosetta-test-suites/json-rfc-fixtures/n_structure_open_object_string_with_apostrophes.json similarity index 100% rename from suites/json-rfc-fixtures/n_structure_open_object_string_with_apostrophes.json rename to rosetta-test-suites/json-rfc-fixtures/n_structure_open_object_string_with_apostrophes.json diff --git a/suites/json-rfc-fixtures/n_structure_open_open.json b/rosetta-test-suites/json-rfc-fixtures/n_structure_open_open.json similarity index 100% rename from suites/json-rfc-fixtures/n_structure_open_open.json rename to rosetta-test-suites/json-rfc-fixtures/n_structure_open_open.json diff --git a/suites/json-rfc-fixtures/n_structure_single_eacute.json b/rosetta-test-suites/json-rfc-fixtures/n_structure_single_eacute.json similarity index 100% rename from suites/json-rfc-fixtures/n_structure_single_eacute.json rename to rosetta-test-suites/json-rfc-fixtures/n_structure_single_eacute.json diff --git a/suites/json-rfc-fixtures/n_structure_single_star.json b/rosetta-test-suites/json-rfc-fixtures/n_structure_single_star.json similarity index 100% rename from suites/json-rfc-fixtures/n_structure_single_star.json rename to rosetta-test-suites/json-rfc-fixtures/n_structure_single_star.json diff --git a/suites/json-rfc-fixtures/n_structure_trailing_#.json b/rosetta-test-suites/json-rfc-fixtures/n_structure_trailing_#.json similarity index 100% rename from suites/json-rfc-fixtures/n_structure_trailing_#.json rename to rosetta-test-suites/json-rfc-fixtures/n_structure_trailing_#.json diff --git a/suites/json-rfc-fixtures/n_structure_uescaped_LF_before_string.json b/rosetta-test-suites/json-rfc-fixtures/n_structure_uescaped_LF_before_string.json similarity index 100% rename from suites/json-rfc-fixtures/n_structure_uescaped_LF_before_string.json rename to rosetta-test-suites/json-rfc-fixtures/n_structure_uescaped_LF_before_string.json diff --git a/suites/json-rfc-fixtures/n_structure_unclosed_array.json b/rosetta-test-suites/json-rfc-fixtures/n_structure_unclosed_array.json similarity index 100% rename from suites/json-rfc-fixtures/n_structure_unclosed_array.json rename to rosetta-test-suites/json-rfc-fixtures/n_structure_unclosed_array.json diff --git a/suites/json-rfc-fixtures/n_structure_unclosed_array_partial_null.json b/rosetta-test-suites/json-rfc-fixtures/n_structure_unclosed_array_partial_null.json similarity index 100% rename from suites/json-rfc-fixtures/n_structure_unclosed_array_partial_null.json rename to rosetta-test-suites/json-rfc-fixtures/n_structure_unclosed_array_partial_null.json diff --git a/suites/json-rfc-fixtures/n_structure_unclosed_array_unfinished_false.json b/rosetta-test-suites/json-rfc-fixtures/n_structure_unclosed_array_unfinished_false.json similarity index 100% rename from suites/json-rfc-fixtures/n_structure_unclosed_array_unfinished_false.json rename to rosetta-test-suites/json-rfc-fixtures/n_structure_unclosed_array_unfinished_false.json diff --git a/suites/json-rfc-fixtures/n_structure_unclosed_array_unfinished_true.json b/rosetta-test-suites/json-rfc-fixtures/n_structure_unclosed_array_unfinished_true.json similarity index 100% rename from suites/json-rfc-fixtures/n_structure_unclosed_array_unfinished_true.json rename to rosetta-test-suites/json-rfc-fixtures/n_structure_unclosed_array_unfinished_true.json diff --git a/suites/json-rfc-fixtures/n_structure_unclosed_object.json b/rosetta-test-suites/json-rfc-fixtures/n_structure_unclosed_object.json similarity index 100% rename from suites/json-rfc-fixtures/n_structure_unclosed_object.json rename to rosetta-test-suites/json-rfc-fixtures/n_structure_unclosed_object.json diff --git a/suites/json-rfc-fixtures/n_structure_unicode-identifier.json b/rosetta-test-suites/json-rfc-fixtures/n_structure_unicode-identifier.json similarity index 100% rename from suites/json-rfc-fixtures/n_structure_unicode-identifier.json rename to rosetta-test-suites/json-rfc-fixtures/n_structure_unicode-identifier.json diff --git a/suites/json-rfc-fixtures/n_structure_whitespace_U+2060_word_joiner.json b/rosetta-test-suites/json-rfc-fixtures/n_structure_whitespace_U+2060_word_joiner.json similarity index 100% rename from suites/json-rfc-fixtures/n_structure_whitespace_U+2060_word_joiner.json rename to rosetta-test-suites/json-rfc-fixtures/n_structure_whitespace_U+2060_word_joiner.json diff --git a/suites/json-rfc-fixtures/n_structure_whitespace_formfeed.json b/rosetta-test-suites/json-rfc-fixtures/n_structure_whitespace_formfeed.json similarity index 100% rename from suites/json-rfc-fixtures/n_structure_whitespace_formfeed.json rename to rosetta-test-suites/json-rfc-fixtures/n_structure_whitespace_formfeed.json diff --git a/suites/json-rfc-fixtures/y_array_arraysWithSpaces.json b/rosetta-test-suites/json-rfc-fixtures/y_array_arraysWithSpaces.json similarity index 100% rename from suites/json-rfc-fixtures/y_array_arraysWithSpaces.json rename to rosetta-test-suites/json-rfc-fixtures/y_array_arraysWithSpaces.json diff --git a/suites/json-rfc-fixtures/y_array_empty-string.json b/rosetta-test-suites/json-rfc-fixtures/y_array_empty-string.json similarity index 100% rename from suites/json-rfc-fixtures/y_array_empty-string.json rename to rosetta-test-suites/json-rfc-fixtures/y_array_empty-string.json diff --git a/suites/json-rfc-fixtures/y_array_empty.json b/rosetta-test-suites/json-rfc-fixtures/y_array_empty.json similarity index 100% rename from suites/json-rfc-fixtures/y_array_empty.json rename to rosetta-test-suites/json-rfc-fixtures/y_array_empty.json diff --git a/suites/json-rfc-fixtures/y_array_ending_with_newline.json b/rosetta-test-suites/json-rfc-fixtures/y_array_ending_with_newline.json similarity index 100% rename from suites/json-rfc-fixtures/y_array_ending_with_newline.json rename to rosetta-test-suites/json-rfc-fixtures/y_array_ending_with_newline.json diff --git a/suites/json-rfc-fixtures/y_array_false.json b/rosetta-test-suites/json-rfc-fixtures/y_array_false.json similarity index 100% rename from suites/json-rfc-fixtures/y_array_false.json rename to rosetta-test-suites/json-rfc-fixtures/y_array_false.json diff --git a/suites/json-rfc-fixtures/y_array_heterogeneous.json b/rosetta-test-suites/json-rfc-fixtures/y_array_heterogeneous.json similarity index 100% rename from suites/json-rfc-fixtures/y_array_heterogeneous.json rename to rosetta-test-suites/json-rfc-fixtures/y_array_heterogeneous.json diff --git a/suites/json-rfc-fixtures/y_array_null.json b/rosetta-test-suites/json-rfc-fixtures/y_array_null.json similarity index 100% rename from suites/json-rfc-fixtures/y_array_null.json rename to rosetta-test-suites/json-rfc-fixtures/y_array_null.json diff --git a/suites/json-rfc-fixtures/y_array_with_1_and_newline.json b/rosetta-test-suites/json-rfc-fixtures/y_array_with_1_and_newline.json similarity index 100% rename from suites/json-rfc-fixtures/y_array_with_1_and_newline.json rename to rosetta-test-suites/json-rfc-fixtures/y_array_with_1_and_newline.json diff --git a/suites/json-rfc-fixtures/y_array_with_leading_space.json b/rosetta-test-suites/json-rfc-fixtures/y_array_with_leading_space.json similarity index 100% rename from suites/json-rfc-fixtures/y_array_with_leading_space.json rename to rosetta-test-suites/json-rfc-fixtures/y_array_with_leading_space.json diff --git a/suites/json-rfc-fixtures/y_array_with_several_null.json b/rosetta-test-suites/json-rfc-fixtures/y_array_with_several_null.json similarity index 100% rename from suites/json-rfc-fixtures/y_array_with_several_null.json rename to rosetta-test-suites/json-rfc-fixtures/y_array_with_several_null.json diff --git a/suites/json-rfc-fixtures/y_array_with_trailing_space.json b/rosetta-test-suites/json-rfc-fixtures/y_array_with_trailing_space.json similarity index 100% rename from suites/json-rfc-fixtures/y_array_with_trailing_space.json rename to rosetta-test-suites/json-rfc-fixtures/y_array_with_trailing_space.json diff --git a/suites/json-rfc-fixtures/y_number.json b/rosetta-test-suites/json-rfc-fixtures/y_number.json similarity index 100% rename from suites/json-rfc-fixtures/y_number.json rename to rosetta-test-suites/json-rfc-fixtures/y_number.json diff --git a/suites/json-rfc-fixtures/y_number_0e+1.json b/rosetta-test-suites/json-rfc-fixtures/y_number_0e+1.json similarity index 100% rename from suites/json-rfc-fixtures/y_number_0e+1.json rename to rosetta-test-suites/json-rfc-fixtures/y_number_0e+1.json diff --git a/suites/json-rfc-fixtures/y_number_0e1.json b/rosetta-test-suites/json-rfc-fixtures/y_number_0e1.json similarity index 100% rename from suites/json-rfc-fixtures/y_number_0e1.json rename to rosetta-test-suites/json-rfc-fixtures/y_number_0e1.json diff --git a/suites/json-rfc-fixtures/y_number_after_space.json b/rosetta-test-suites/json-rfc-fixtures/y_number_after_space.json similarity index 100% rename from suites/json-rfc-fixtures/y_number_after_space.json rename to rosetta-test-suites/json-rfc-fixtures/y_number_after_space.json diff --git a/suites/json-rfc-fixtures/y_number_double_close_to_zero.json b/rosetta-test-suites/json-rfc-fixtures/y_number_double_close_to_zero.json similarity index 100% rename from suites/json-rfc-fixtures/y_number_double_close_to_zero.json rename to rosetta-test-suites/json-rfc-fixtures/y_number_double_close_to_zero.json diff --git a/suites/json-rfc-fixtures/y_number_int_with_exp.json b/rosetta-test-suites/json-rfc-fixtures/y_number_int_with_exp.json similarity index 100% rename from suites/json-rfc-fixtures/y_number_int_with_exp.json rename to rosetta-test-suites/json-rfc-fixtures/y_number_int_with_exp.json diff --git a/suites/json-rfc-fixtures/y_number_minus_zero.json b/rosetta-test-suites/json-rfc-fixtures/y_number_minus_zero.json similarity index 100% rename from suites/json-rfc-fixtures/y_number_minus_zero.json rename to rosetta-test-suites/json-rfc-fixtures/y_number_minus_zero.json diff --git a/suites/json-rfc-fixtures/y_number_negative_int.json b/rosetta-test-suites/json-rfc-fixtures/y_number_negative_int.json similarity index 100% rename from suites/json-rfc-fixtures/y_number_negative_int.json rename to rosetta-test-suites/json-rfc-fixtures/y_number_negative_int.json diff --git a/suites/json-rfc-fixtures/y_number_negative_one.json b/rosetta-test-suites/json-rfc-fixtures/y_number_negative_one.json similarity index 100% rename from suites/json-rfc-fixtures/y_number_negative_one.json rename to rosetta-test-suites/json-rfc-fixtures/y_number_negative_one.json diff --git a/suites/json-rfc-fixtures/y_number_negative_zero.json b/rosetta-test-suites/json-rfc-fixtures/y_number_negative_zero.json similarity index 100% rename from suites/json-rfc-fixtures/y_number_negative_zero.json rename to rosetta-test-suites/json-rfc-fixtures/y_number_negative_zero.json diff --git a/suites/json-rfc-fixtures/y_number_real_capital_e.json b/rosetta-test-suites/json-rfc-fixtures/y_number_real_capital_e.json similarity index 100% rename from suites/json-rfc-fixtures/y_number_real_capital_e.json rename to rosetta-test-suites/json-rfc-fixtures/y_number_real_capital_e.json diff --git a/suites/json-rfc-fixtures/y_number_real_capital_e_neg_exp.json b/rosetta-test-suites/json-rfc-fixtures/y_number_real_capital_e_neg_exp.json similarity index 100% rename from suites/json-rfc-fixtures/y_number_real_capital_e_neg_exp.json rename to rosetta-test-suites/json-rfc-fixtures/y_number_real_capital_e_neg_exp.json diff --git a/suites/json-rfc-fixtures/y_number_real_capital_e_pos_exp.json b/rosetta-test-suites/json-rfc-fixtures/y_number_real_capital_e_pos_exp.json similarity index 100% rename from suites/json-rfc-fixtures/y_number_real_capital_e_pos_exp.json rename to rosetta-test-suites/json-rfc-fixtures/y_number_real_capital_e_pos_exp.json diff --git a/suites/json-rfc-fixtures/y_number_real_exponent.json b/rosetta-test-suites/json-rfc-fixtures/y_number_real_exponent.json similarity index 100% rename from suites/json-rfc-fixtures/y_number_real_exponent.json rename to rosetta-test-suites/json-rfc-fixtures/y_number_real_exponent.json diff --git a/suites/json-rfc-fixtures/y_number_real_fraction_exponent.json b/rosetta-test-suites/json-rfc-fixtures/y_number_real_fraction_exponent.json similarity index 100% rename from suites/json-rfc-fixtures/y_number_real_fraction_exponent.json rename to rosetta-test-suites/json-rfc-fixtures/y_number_real_fraction_exponent.json diff --git a/suites/json-rfc-fixtures/y_number_real_neg_exp.json b/rosetta-test-suites/json-rfc-fixtures/y_number_real_neg_exp.json similarity index 100% rename from suites/json-rfc-fixtures/y_number_real_neg_exp.json rename to rosetta-test-suites/json-rfc-fixtures/y_number_real_neg_exp.json diff --git a/suites/json-rfc-fixtures/y_number_real_pos_exponent.json b/rosetta-test-suites/json-rfc-fixtures/y_number_real_pos_exponent.json similarity index 100% rename from suites/json-rfc-fixtures/y_number_real_pos_exponent.json rename to rosetta-test-suites/json-rfc-fixtures/y_number_real_pos_exponent.json diff --git a/suites/json-rfc-fixtures/y_number_simple_int.json b/rosetta-test-suites/json-rfc-fixtures/y_number_simple_int.json similarity index 100% rename from suites/json-rfc-fixtures/y_number_simple_int.json rename to rosetta-test-suites/json-rfc-fixtures/y_number_simple_int.json diff --git a/suites/json-rfc-fixtures/y_number_simple_real.json b/rosetta-test-suites/json-rfc-fixtures/y_number_simple_real.json similarity index 100% rename from suites/json-rfc-fixtures/y_number_simple_real.json rename to rosetta-test-suites/json-rfc-fixtures/y_number_simple_real.json diff --git a/suites/json-rfc-fixtures/y_object.json b/rosetta-test-suites/json-rfc-fixtures/y_object.json similarity index 100% rename from suites/json-rfc-fixtures/y_object.json rename to rosetta-test-suites/json-rfc-fixtures/y_object.json diff --git a/suites/json-rfc-fixtures/y_object_basic.json b/rosetta-test-suites/json-rfc-fixtures/y_object_basic.json similarity index 100% rename from suites/json-rfc-fixtures/y_object_basic.json rename to rosetta-test-suites/json-rfc-fixtures/y_object_basic.json diff --git a/suites/json-rfc-fixtures/y_object_duplicated_key.json b/rosetta-test-suites/json-rfc-fixtures/y_object_duplicated_key.json similarity index 100% rename from suites/json-rfc-fixtures/y_object_duplicated_key.json rename to rosetta-test-suites/json-rfc-fixtures/y_object_duplicated_key.json diff --git a/suites/json-rfc-fixtures/y_object_duplicated_key_and_value.json b/rosetta-test-suites/json-rfc-fixtures/y_object_duplicated_key_and_value.json similarity index 100% rename from suites/json-rfc-fixtures/y_object_duplicated_key_and_value.json rename to rosetta-test-suites/json-rfc-fixtures/y_object_duplicated_key_and_value.json diff --git a/suites/json-rfc-fixtures/y_object_empty.json b/rosetta-test-suites/json-rfc-fixtures/y_object_empty.json similarity index 100% rename from suites/json-rfc-fixtures/y_object_empty.json rename to rosetta-test-suites/json-rfc-fixtures/y_object_empty.json diff --git a/suites/json-rfc-fixtures/y_object_empty_key.json b/rosetta-test-suites/json-rfc-fixtures/y_object_empty_key.json similarity index 100% rename from suites/json-rfc-fixtures/y_object_empty_key.json rename to rosetta-test-suites/json-rfc-fixtures/y_object_empty_key.json diff --git a/suites/json-rfc-fixtures/y_object_escaped_null_in_key.json b/rosetta-test-suites/json-rfc-fixtures/y_object_escaped_null_in_key.json similarity index 100% rename from suites/json-rfc-fixtures/y_object_escaped_null_in_key.json rename to rosetta-test-suites/json-rfc-fixtures/y_object_escaped_null_in_key.json diff --git a/suites/json-rfc-fixtures/y_object_extreme_numbers.json b/rosetta-test-suites/json-rfc-fixtures/y_object_extreme_numbers.json similarity index 100% rename from suites/json-rfc-fixtures/y_object_extreme_numbers.json rename to rosetta-test-suites/json-rfc-fixtures/y_object_extreme_numbers.json diff --git a/suites/json-rfc-fixtures/y_object_long_strings.json b/rosetta-test-suites/json-rfc-fixtures/y_object_long_strings.json similarity index 100% rename from suites/json-rfc-fixtures/y_object_long_strings.json rename to rosetta-test-suites/json-rfc-fixtures/y_object_long_strings.json diff --git a/suites/json-rfc-fixtures/y_object_simple.json b/rosetta-test-suites/json-rfc-fixtures/y_object_simple.json similarity index 100% rename from suites/json-rfc-fixtures/y_object_simple.json rename to rosetta-test-suites/json-rfc-fixtures/y_object_simple.json diff --git a/suites/json-rfc-fixtures/y_object_string_unicode.json b/rosetta-test-suites/json-rfc-fixtures/y_object_string_unicode.json similarity index 100% rename from suites/json-rfc-fixtures/y_object_string_unicode.json rename to rosetta-test-suites/json-rfc-fixtures/y_object_string_unicode.json diff --git a/suites/json-rfc-fixtures/y_object_with_newlines.json b/rosetta-test-suites/json-rfc-fixtures/y_object_with_newlines.json similarity index 100% rename from suites/json-rfc-fixtures/y_object_with_newlines.json rename to rosetta-test-suites/json-rfc-fixtures/y_object_with_newlines.json diff --git a/suites/json-rfc-fixtures/y_string_1_2_3_bytes_UTF-8_sequences.json b/rosetta-test-suites/json-rfc-fixtures/y_string_1_2_3_bytes_UTF-8_sequences.json similarity index 100% rename from suites/json-rfc-fixtures/y_string_1_2_3_bytes_UTF-8_sequences.json rename to rosetta-test-suites/json-rfc-fixtures/y_string_1_2_3_bytes_UTF-8_sequences.json diff --git a/suites/json-rfc-fixtures/y_string_accepted_surrogate_pair.json b/rosetta-test-suites/json-rfc-fixtures/y_string_accepted_surrogate_pair.json similarity index 100% rename from suites/json-rfc-fixtures/y_string_accepted_surrogate_pair.json rename to rosetta-test-suites/json-rfc-fixtures/y_string_accepted_surrogate_pair.json diff --git a/suites/json-rfc-fixtures/y_string_accepted_surrogate_pairs.json b/rosetta-test-suites/json-rfc-fixtures/y_string_accepted_surrogate_pairs.json similarity index 100% rename from suites/json-rfc-fixtures/y_string_accepted_surrogate_pairs.json rename to rosetta-test-suites/json-rfc-fixtures/y_string_accepted_surrogate_pairs.json diff --git a/suites/json-rfc-fixtures/y_string_allowed_escapes.json b/rosetta-test-suites/json-rfc-fixtures/y_string_allowed_escapes.json similarity index 100% rename from suites/json-rfc-fixtures/y_string_allowed_escapes.json rename to rosetta-test-suites/json-rfc-fixtures/y_string_allowed_escapes.json diff --git a/suites/json-rfc-fixtures/y_string_backslash_and_u_escaped_zero.json b/rosetta-test-suites/json-rfc-fixtures/y_string_backslash_and_u_escaped_zero.json similarity index 100% rename from suites/json-rfc-fixtures/y_string_backslash_and_u_escaped_zero.json rename to rosetta-test-suites/json-rfc-fixtures/y_string_backslash_and_u_escaped_zero.json diff --git a/suites/json-rfc-fixtures/y_string_backslash_doublequotes.json b/rosetta-test-suites/json-rfc-fixtures/y_string_backslash_doublequotes.json similarity index 100% rename from suites/json-rfc-fixtures/y_string_backslash_doublequotes.json rename to rosetta-test-suites/json-rfc-fixtures/y_string_backslash_doublequotes.json diff --git a/suites/json-rfc-fixtures/y_string_comments.json b/rosetta-test-suites/json-rfc-fixtures/y_string_comments.json similarity index 100% rename from suites/json-rfc-fixtures/y_string_comments.json rename to rosetta-test-suites/json-rfc-fixtures/y_string_comments.json diff --git a/suites/json-rfc-fixtures/y_string_double_escape_a.json b/rosetta-test-suites/json-rfc-fixtures/y_string_double_escape_a.json similarity index 100% rename from suites/json-rfc-fixtures/y_string_double_escape_a.json rename to rosetta-test-suites/json-rfc-fixtures/y_string_double_escape_a.json diff --git a/suites/json-rfc-fixtures/y_string_double_escape_n.json b/rosetta-test-suites/json-rfc-fixtures/y_string_double_escape_n.json similarity index 100% rename from suites/json-rfc-fixtures/y_string_double_escape_n.json rename to rosetta-test-suites/json-rfc-fixtures/y_string_double_escape_n.json diff --git a/suites/json-rfc-fixtures/y_string_escaped_control_character.json b/rosetta-test-suites/json-rfc-fixtures/y_string_escaped_control_character.json similarity index 100% rename from suites/json-rfc-fixtures/y_string_escaped_control_character.json rename to rosetta-test-suites/json-rfc-fixtures/y_string_escaped_control_character.json diff --git a/suites/json-rfc-fixtures/y_string_escaped_noncharacter.json b/rosetta-test-suites/json-rfc-fixtures/y_string_escaped_noncharacter.json similarity index 100% rename from suites/json-rfc-fixtures/y_string_escaped_noncharacter.json rename to rosetta-test-suites/json-rfc-fixtures/y_string_escaped_noncharacter.json diff --git a/suites/json-rfc-fixtures/y_string_in_array.json b/rosetta-test-suites/json-rfc-fixtures/y_string_in_array.json similarity index 100% rename from suites/json-rfc-fixtures/y_string_in_array.json rename to rosetta-test-suites/json-rfc-fixtures/y_string_in_array.json diff --git a/suites/json-rfc-fixtures/y_string_in_array_with_leading_space.json b/rosetta-test-suites/json-rfc-fixtures/y_string_in_array_with_leading_space.json similarity index 100% rename from suites/json-rfc-fixtures/y_string_in_array_with_leading_space.json rename to rosetta-test-suites/json-rfc-fixtures/y_string_in_array_with_leading_space.json diff --git a/suites/json-rfc-fixtures/y_string_last_surrogates_1_and_2.json b/rosetta-test-suites/json-rfc-fixtures/y_string_last_surrogates_1_and_2.json similarity index 100% rename from suites/json-rfc-fixtures/y_string_last_surrogates_1_and_2.json rename to rosetta-test-suites/json-rfc-fixtures/y_string_last_surrogates_1_and_2.json diff --git a/suites/json-rfc-fixtures/y_string_nbsp_uescaped.json b/rosetta-test-suites/json-rfc-fixtures/y_string_nbsp_uescaped.json similarity index 100% rename from suites/json-rfc-fixtures/y_string_nbsp_uescaped.json rename to rosetta-test-suites/json-rfc-fixtures/y_string_nbsp_uescaped.json diff --git a/suites/json-rfc-fixtures/y_string_nonCharacterInUTF-8_U+10FFFF.json b/rosetta-test-suites/json-rfc-fixtures/y_string_nonCharacterInUTF-8_U+10FFFF.json similarity index 100% rename from suites/json-rfc-fixtures/y_string_nonCharacterInUTF-8_U+10FFFF.json rename to rosetta-test-suites/json-rfc-fixtures/y_string_nonCharacterInUTF-8_U+10FFFF.json diff --git a/suites/json-rfc-fixtures/y_string_nonCharacterInUTF-8_U+FFFF.json b/rosetta-test-suites/json-rfc-fixtures/y_string_nonCharacterInUTF-8_U+FFFF.json similarity index 100% rename from suites/json-rfc-fixtures/y_string_nonCharacterInUTF-8_U+FFFF.json rename to rosetta-test-suites/json-rfc-fixtures/y_string_nonCharacterInUTF-8_U+FFFF.json diff --git a/suites/json-rfc-fixtures/y_string_null_escape.json b/rosetta-test-suites/json-rfc-fixtures/y_string_null_escape.json similarity index 100% rename from suites/json-rfc-fixtures/y_string_null_escape.json rename to rosetta-test-suites/json-rfc-fixtures/y_string_null_escape.json diff --git a/suites/json-rfc-fixtures/y_string_one-byte-utf-8.json b/rosetta-test-suites/json-rfc-fixtures/y_string_one-byte-utf-8.json similarity index 100% rename from suites/json-rfc-fixtures/y_string_one-byte-utf-8.json rename to rosetta-test-suites/json-rfc-fixtures/y_string_one-byte-utf-8.json diff --git a/suites/json-rfc-fixtures/y_string_pi.json b/rosetta-test-suites/json-rfc-fixtures/y_string_pi.json similarity index 100% rename from suites/json-rfc-fixtures/y_string_pi.json rename to rosetta-test-suites/json-rfc-fixtures/y_string_pi.json diff --git a/suites/json-rfc-fixtures/y_string_reservedCharacterInUTF-8_U+1BFFF.json b/rosetta-test-suites/json-rfc-fixtures/y_string_reservedCharacterInUTF-8_U+1BFFF.json similarity index 100% rename from suites/json-rfc-fixtures/y_string_reservedCharacterInUTF-8_U+1BFFF.json rename to rosetta-test-suites/json-rfc-fixtures/y_string_reservedCharacterInUTF-8_U+1BFFF.json diff --git a/suites/json-rfc-fixtures/y_string_simple_ascii.json b/rosetta-test-suites/json-rfc-fixtures/y_string_simple_ascii.json similarity index 100% rename from suites/json-rfc-fixtures/y_string_simple_ascii.json rename to rosetta-test-suites/json-rfc-fixtures/y_string_simple_ascii.json diff --git a/suites/json-rfc-fixtures/y_string_space.json b/rosetta-test-suites/json-rfc-fixtures/y_string_space.json similarity index 100% rename from suites/json-rfc-fixtures/y_string_space.json rename to rosetta-test-suites/json-rfc-fixtures/y_string_space.json diff --git a/suites/json-rfc-fixtures/y_string_surrogates_U+1D11E_MUSICAL_SYMBOL_G_CLEF.json b/rosetta-test-suites/json-rfc-fixtures/y_string_surrogates_U+1D11E_MUSICAL_SYMBOL_G_CLEF.json similarity index 100% rename from suites/json-rfc-fixtures/y_string_surrogates_U+1D11E_MUSICAL_SYMBOL_G_CLEF.json rename to rosetta-test-suites/json-rfc-fixtures/y_string_surrogates_U+1D11E_MUSICAL_SYMBOL_G_CLEF.json diff --git a/suites/json-rfc-fixtures/y_string_three-byte-utf-8.json b/rosetta-test-suites/json-rfc-fixtures/y_string_three-byte-utf-8.json similarity index 100% rename from suites/json-rfc-fixtures/y_string_three-byte-utf-8.json rename to rosetta-test-suites/json-rfc-fixtures/y_string_three-byte-utf-8.json diff --git a/suites/json-rfc-fixtures/y_string_two-byte-utf-8.json b/rosetta-test-suites/json-rfc-fixtures/y_string_two-byte-utf-8.json similarity index 100% rename from suites/json-rfc-fixtures/y_string_two-byte-utf-8.json rename to rosetta-test-suites/json-rfc-fixtures/y_string_two-byte-utf-8.json diff --git a/suites/json-rfc-fixtures/y_string_u+2028_line_sep.json b/rosetta-test-suites/json-rfc-fixtures/y_string_u+2028_line_sep.json similarity index 100% rename from suites/json-rfc-fixtures/y_string_u+2028_line_sep.json rename to rosetta-test-suites/json-rfc-fixtures/y_string_u+2028_line_sep.json diff --git a/suites/json-rfc-fixtures/y_string_u+2029_par_sep.json b/rosetta-test-suites/json-rfc-fixtures/y_string_u+2029_par_sep.json similarity index 100% rename from suites/json-rfc-fixtures/y_string_u+2029_par_sep.json rename to rosetta-test-suites/json-rfc-fixtures/y_string_u+2029_par_sep.json diff --git a/suites/json-rfc-fixtures/y_string_uEscape.json b/rosetta-test-suites/json-rfc-fixtures/y_string_uEscape.json similarity index 100% rename from suites/json-rfc-fixtures/y_string_uEscape.json rename to rosetta-test-suites/json-rfc-fixtures/y_string_uEscape.json diff --git a/suites/json-rfc-fixtures/y_string_uescaped_newline.json b/rosetta-test-suites/json-rfc-fixtures/y_string_uescaped_newline.json similarity index 100% rename from suites/json-rfc-fixtures/y_string_uescaped_newline.json rename to rosetta-test-suites/json-rfc-fixtures/y_string_uescaped_newline.json diff --git a/suites/json-rfc-fixtures/y_string_unescaped_char_delete.json b/rosetta-test-suites/json-rfc-fixtures/y_string_unescaped_char_delete.json similarity index 100% rename from suites/json-rfc-fixtures/y_string_unescaped_char_delete.json rename to rosetta-test-suites/json-rfc-fixtures/y_string_unescaped_char_delete.json diff --git a/suites/json-rfc-fixtures/y_string_unicode.json b/rosetta-test-suites/json-rfc-fixtures/y_string_unicode.json similarity index 100% rename from suites/json-rfc-fixtures/y_string_unicode.json rename to rosetta-test-suites/json-rfc-fixtures/y_string_unicode.json diff --git a/suites/json-rfc-fixtures/y_string_unicodeEscapedBackslash.json b/rosetta-test-suites/json-rfc-fixtures/y_string_unicodeEscapedBackslash.json similarity index 100% rename from suites/json-rfc-fixtures/y_string_unicodeEscapedBackslash.json rename to rosetta-test-suites/json-rfc-fixtures/y_string_unicodeEscapedBackslash.json diff --git a/suites/json-rfc-fixtures/y_string_unicode_2.json b/rosetta-test-suites/json-rfc-fixtures/y_string_unicode_2.json similarity index 100% rename from suites/json-rfc-fixtures/y_string_unicode_2.json rename to rosetta-test-suites/json-rfc-fixtures/y_string_unicode_2.json diff --git a/suites/json-rfc-fixtures/y_string_unicode_U+10FFFE_nonchar.json b/rosetta-test-suites/json-rfc-fixtures/y_string_unicode_U+10FFFE_nonchar.json similarity index 100% rename from suites/json-rfc-fixtures/y_string_unicode_U+10FFFE_nonchar.json rename to rosetta-test-suites/json-rfc-fixtures/y_string_unicode_U+10FFFE_nonchar.json diff --git a/suites/json-rfc-fixtures/y_string_unicode_U+1FFFE_nonchar.json b/rosetta-test-suites/json-rfc-fixtures/y_string_unicode_U+1FFFE_nonchar.json similarity index 100% rename from suites/json-rfc-fixtures/y_string_unicode_U+1FFFE_nonchar.json rename to rosetta-test-suites/json-rfc-fixtures/y_string_unicode_U+1FFFE_nonchar.json diff --git a/suites/json-rfc-fixtures/y_string_unicode_U+200B_ZERO_WIDTH_SPACE.json b/rosetta-test-suites/json-rfc-fixtures/y_string_unicode_U+200B_ZERO_WIDTH_SPACE.json similarity index 100% rename from suites/json-rfc-fixtures/y_string_unicode_U+200B_ZERO_WIDTH_SPACE.json rename to rosetta-test-suites/json-rfc-fixtures/y_string_unicode_U+200B_ZERO_WIDTH_SPACE.json diff --git a/suites/json-rfc-fixtures/y_string_unicode_U+2064_invisible_plus.json b/rosetta-test-suites/json-rfc-fixtures/y_string_unicode_U+2064_invisible_plus.json similarity index 100% rename from suites/json-rfc-fixtures/y_string_unicode_U+2064_invisible_plus.json rename to rosetta-test-suites/json-rfc-fixtures/y_string_unicode_U+2064_invisible_plus.json diff --git a/suites/json-rfc-fixtures/y_string_unicode_U+FDD0_nonchar.json b/rosetta-test-suites/json-rfc-fixtures/y_string_unicode_U+FDD0_nonchar.json similarity index 100% rename from suites/json-rfc-fixtures/y_string_unicode_U+FDD0_nonchar.json rename to rosetta-test-suites/json-rfc-fixtures/y_string_unicode_U+FDD0_nonchar.json diff --git a/suites/json-rfc-fixtures/y_string_unicode_U+FFFE_nonchar.json b/rosetta-test-suites/json-rfc-fixtures/y_string_unicode_U+FFFE_nonchar.json similarity index 100% rename from suites/json-rfc-fixtures/y_string_unicode_U+FFFE_nonchar.json rename to rosetta-test-suites/json-rfc-fixtures/y_string_unicode_U+FFFE_nonchar.json diff --git a/suites/json-rfc-fixtures/y_string_unicode_escaped_double_quote.json b/rosetta-test-suites/json-rfc-fixtures/y_string_unicode_escaped_double_quote.json similarity index 100% rename from suites/json-rfc-fixtures/y_string_unicode_escaped_double_quote.json rename to rosetta-test-suites/json-rfc-fixtures/y_string_unicode_escaped_double_quote.json diff --git a/suites/json-rfc-fixtures/y_string_utf8.json b/rosetta-test-suites/json-rfc-fixtures/y_string_utf8.json similarity index 100% rename from suites/json-rfc-fixtures/y_string_utf8.json rename to rosetta-test-suites/json-rfc-fixtures/y_string_utf8.json diff --git a/suites/json-rfc-fixtures/y_string_with_del_character.json b/rosetta-test-suites/json-rfc-fixtures/y_string_with_del_character.json similarity index 100% rename from suites/json-rfc-fixtures/y_string_with_del_character.json rename to rosetta-test-suites/json-rfc-fixtures/y_string_with_del_character.json diff --git a/suites/json-rfc-fixtures/y_structure_lonely_false.json b/rosetta-test-suites/json-rfc-fixtures/y_structure_lonely_false.json similarity index 100% rename from suites/json-rfc-fixtures/y_structure_lonely_false.json rename to rosetta-test-suites/json-rfc-fixtures/y_structure_lonely_false.json diff --git a/suites/json-rfc-fixtures/y_structure_lonely_int.json b/rosetta-test-suites/json-rfc-fixtures/y_structure_lonely_int.json similarity index 100% rename from suites/json-rfc-fixtures/y_structure_lonely_int.json rename to rosetta-test-suites/json-rfc-fixtures/y_structure_lonely_int.json diff --git a/suites/json-rfc-fixtures/y_structure_lonely_negative_real.json b/rosetta-test-suites/json-rfc-fixtures/y_structure_lonely_negative_real.json similarity index 100% rename from suites/json-rfc-fixtures/y_structure_lonely_negative_real.json rename to rosetta-test-suites/json-rfc-fixtures/y_structure_lonely_negative_real.json diff --git a/suites/json-rfc-fixtures/y_structure_lonely_null.json b/rosetta-test-suites/json-rfc-fixtures/y_structure_lonely_null.json similarity index 100% rename from suites/json-rfc-fixtures/y_structure_lonely_null.json rename to rosetta-test-suites/json-rfc-fixtures/y_structure_lonely_null.json diff --git a/suites/json-rfc-fixtures/y_structure_lonely_string.json b/rosetta-test-suites/json-rfc-fixtures/y_structure_lonely_string.json similarity index 100% rename from suites/json-rfc-fixtures/y_structure_lonely_string.json rename to rosetta-test-suites/json-rfc-fixtures/y_structure_lonely_string.json diff --git a/suites/json-rfc-fixtures/y_structure_lonely_true.json b/rosetta-test-suites/json-rfc-fixtures/y_structure_lonely_true.json similarity index 100% rename from suites/json-rfc-fixtures/y_structure_lonely_true.json rename to rosetta-test-suites/json-rfc-fixtures/y_structure_lonely_true.json diff --git a/suites/json-rfc-fixtures/y_structure_string_empty.json b/rosetta-test-suites/json-rfc-fixtures/y_structure_string_empty.json similarity index 100% rename from suites/json-rfc-fixtures/y_structure_string_empty.json rename to rosetta-test-suites/json-rfc-fixtures/y_structure_string_empty.json diff --git a/suites/json-rfc-fixtures/y_structure_trailing_newline.json b/rosetta-test-suites/json-rfc-fixtures/y_structure_trailing_newline.json similarity index 100% rename from suites/json-rfc-fixtures/y_structure_trailing_newline.json rename to rosetta-test-suites/json-rfc-fixtures/y_structure_trailing_newline.json diff --git a/suites/json-rfc-fixtures/y_structure_true_in_array.json b/rosetta-test-suites/json-rfc-fixtures/y_structure_true_in_array.json similarity index 100% rename from suites/json-rfc-fixtures/y_structure_true_in_array.json rename to rosetta-test-suites/json-rfc-fixtures/y_structure_true_in_array.json diff --git a/suites/json-rfc-fixtures/y_structure_whitespace_array.json b/rosetta-test-suites/json-rfc-fixtures/y_structure_whitespace_array.json similarity index 100% rename from suites/json-rfc-fixtures/y_structure_whitespace_array.json rename to rosetta-test-suites/json-rfc-fixtures/y_structure_whitespace_array.json diff --git a/suites/json-rfc.ports b/rosetta-test-suites/json-rfc.rosetta similarity index 100% rename from suites/json-rfc.ports rename to rosetta-test-suites/json-rfc.rosetta diff --git a/suites/sendmail.ports b/rosetta-test-suites/sendmail.rosetta similarity index 99% rename from suites/sendmail.ports rename to rosetta-test-suites/sendmail.rosetta index dadbfac..fb1b368 100644 --- a/suites/sendmail.ports +++ b/rosetta-test-suites/sendmail.rosetta @@ -36,7 +36,7 @@ (placeholder '(send-success? response) "Return whether the sending was successful.") (placeholder '(send-error? response) "Returns true if the sending resulted in an error of some kind. This includes error responses from the server as well as errors in the client-server communication.") - (include "suites/smtp-mock-server.scm") + (include "rosetta-test-suites/smtp-mock-server.scm") ; Compile one option to a string, either from a tuple (KEY VALUE|VALUES) to "KEY=VALUE,VALUE" ; or if already a string, simply return it. diff --git a/suites/smtp-fixtures/cacert.pem b/rosetta-test-suites/smtp-fixtures/cacert.pem similarity index 100% rename from suites/smtp-fixtures/cacert.pem rename to rosetta-test-suites/smtp-fixtures/cacert.pem diff --git a/suites/smtp-fixtures/server.crt b/rosetta-test-suites/smtp-fixtures/server.crt similarity index 100% rename from suites/smtp-fixtures/server.crt rename to rosetta-test-suites/smtp-fixtures/server.crt diff --git a/suites/smtp-fixtures/server.key b/rosetta-test-suites/smtp-fixtures/server.key similarity index 100% rename from suites/smtp-fixtures/server.key rename to rosetta-test-suites/smtp-fixtures/server.key diff --git a/suites/smtp-fixtures/server.pem b/rosetta-test-suites/smtp-fixtures/server.pem similarity index 100% rename from suites/smtp-fixtures/server.pem rename to rosetta-test-suites/smtp-fixtures/server.pem diff --git a/suites/smtp-mock-server.scm b/rosetta-test-suites/smtp-mock-server.scm similarity index 100% rename from suites/smtp-mock-server.scm rename to rosetta-test-suites/smtp-mock-server.scm diff --git a/suites/smtp.ports b/rosetta-test-suites/smtp.rosetta similarity index 99% rename from suites/smtp.ports rename to rosetta-test-suites/smtp.rosetta index 644b4ca..d1403e4 100644 --- a/suites/smtp.ports +++ b/rosetta-test-suites/smtp.rosetta @@ -61,7 +61,7 @@ (placeholder '(smtp-auth-credentials-error? response) "Did the authentication fail due to wrong credentials?") (placeholder '(smtp-auth-not-supported-error? response) "Did the authentication fail due to no compatible authentication method?") - (include "suites/smtp-mock-server.scm") + (include "rosetta-test-suites/smtp-mock-server.scm") ; Compile one option to a string, either from a tuple (KEY VALUE|VALUES) to "KEY=VALUE,VALUE" ; or if already a string, simply return it. @@ -1141,11 +1141,11 @@ )) - ; 'automatic-starttls applies when the library supports automatically upgrading - ; a connection to TLS when the server supports it + ; 'automatic-starttls applies when the library suprosetta automatically upgrading + ; a connection to TLS when the server suprosetta it (capability 'automatic-starttls (list - (test "automatic starttls active and server supports starttls" (lambda () + (test "automatic starttls active and server suprosetta starttls" (lambda () (server-set-extensions! server '("STARTTLS")) (let ((connection (smtp-connect-with-auto-starttls "localhost" (server-port server) 'automatic))) @@ -1185,7 +1185,7 @@ ; should be terminated in case the server does not support it (capability 'required-starttls (list - (test "required starttls active and server supports starttls" (lambda () + (test "required starttls active and server suprosetta starttls" (lambda () (server-set-extensions! server '("STARTTLS")) (let ((connection (smtp-connect-with-auto-starttls "localhost" (server-port server) 'required))) diff --git a/suites/url-parsing-rfc.ports b/rosetta-test-suites/url-parsing-rfc.rosetta similarity index 99% rename from suites/url-parsing-rfc.ports rename to rosetta-test-suites/url-parsing-rfc.rosetta index 610ae38..d22cc25 100644 --- a/suites/url-parsing-rfc.ports +++ b/rosetta-test-suites/url-parsing-rfc.rosetta @@ -225,7 +225,7 @@ ; TODO: Invalid userinfo - (test "invalid port - too many ports" (lambda () + (test "invalid port - too many rosetta" (lambda () (assert-parse-error "schema://domain.tld:80:80") (assert-parse-error "schema://domain.tld:80:80:80"))) diff --git a/ports/interpreter-tests.json b/rosetta-test/interpreter-tests.json similarity index 100% rename from ports/interpreter-tests.json rename to rosetta-test/interpreter-tests.json diff --git a/ports/ports.scm b/rosetta-test/rosetta-test.scm similarity index 99% rename from ports/ports.scm rename to rosetta-test/rosetta-test.scm index b726d9c..da091ff 100644 --- a/ports/ports.scm +++ b/rosetta-test/rosetta-test.scm @@ -1,7 +1,7 @@ (begin ; - ; PORTS objects + ; RosettaTest objects ; ; Suite diff --git a/ports/spec.md b/rosetta-test/spec.md similarity index 69% rename from ports/spec.md rename to rosetta-test/spec.md index 039babf..0a9cd97 100644 --- a/ports/spec.md +++ b/rosetta-test/spec.md @@ -1,14 +1,14 @@ -# PorTS Spec +# RosettaTest Spec ## Lang -PorTS is a Scheme implementation that is compatible with R7RS-small, but does not, by design, implement all of R7RS-small. +RosettaTestLang is a Scheme implementation that is compatible with R7RS-small, but does not, by design, implement all of R7RS-small. ### (TODO) Syntax ### Special Forms / Primitive Forms -A PorTS language implementation should implement the following special forms: +A RosettaTestLang implementation should implement the following special forms: - if - quote - cond @@ -20,7 +20,7 @@ A PorTS language implementation should implement the following special forms: - include (loads file relative to CWD) ### Macro Features -PorTS does not support hygenic macros, as we expect macros to be almost exclusively used in standard library definitions. +RosettaTestLang does not support hygenic macros, as we expect macros to be almost exclusively used in standard library definitions. - unquote - unquote splicing @@ -56,7 +56,7 @@ PorTS does not support hygenic macros, as we expect macros to be almost exclusiv ### Core Procedures -PorTS aims to implement as many core procedures in PorTS. Language implementors may choose to override the PorTS version with a primitive version for performance or compatibility reasons. +RosettaTestLang aims to implement as many core procedures in RosettaTestLang. Language implementors may choose to override the RosettaTestLang version with a primitive version for performance or compatibility reasons. -A PorTS interpreter implementation should load the core procedures in the following order: +A RosettaTestLang interpreter implementation should load the core procedures in the following order into the global environment: 1. required primitive procedures - 2. PorTS versions of core procedures - 3. primitive versions of core procedures + 2. RosettaTestLang versions of core procedures + 3. (optional) primitive versions of core procedures ### Data Types - Numeric: Integer, Fraction @@ -86,7 +86,7 @@ A PorTS interpreter implementation should load the core procedures in the follow - Boolean -## Ports Testing Library +## RosettaTest Library ### Required mechanisms - Declaring which suite is to be used @@ -102,9 +102,9 @@ A PorTS interpreter implementation should load the core procedures in the follow - Integration with host test runner -### Required interface from the Ports Testing Library -- Loading the ports.scm definitions -- Defining ports primitives +### Required interface from the RosettaTest Library +- Loading the rosetta-test.scm definitions +- Defining primitives - assert - is-assertion-error? - create-placeholder diff --git a/ports/stdlib.scm b/rosetta-test/stdlib.scm similarity index 100% rename from ports/stdlib.scm rename to rosetta-test/stdlib.scm diff --git a/ports/syntax-tests.json b/rosetta-test/syntax-tests.json similarity index 100% rename from ports/syntax-tests.json rename to rosetta-test/syntax-tests.json From 2e8992b17fdcd8ddcccc842b9e68ab20731486aa Mon Sep 17 00:00:00 2001 From: patrick Date: Mon, 14 Apr 2025 11:07:54 +0200 Subject: [PATCH 2/8] [JS] Fixes path to parser test cases --- rosetta-test-js/parser.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rosetta-test-js/parser.js b/rosetta-test-js/parser.js index 7a65a62..bd59f2b 100644 --- a/rosetta-test-js/parser.js +++ b/rosetta-test-js/parser.js @@ -84,7 +84,7 @@ export function parseWithoutExpand(inputString) { }; function main() { - const testTable = JSON.parse(readFileSync('rosetta/syntax-tests.json')); + const testTable = JSON.parse(readFileSync('rosetta-test/syntax-tests.json')); function matches(structure, target) { if (Array.isArray(target)) { From 4a0e52f26ec785480c9d1d2c6a509c844d73a078 Mon Sep 17 00:00:00 2001 From: patrick Date: Mon, 14 Apr 2025 11:09:35 +0200 Subject: [PATCH 3/8] [JS] Fixes a wrongly renamed import in url-parsing.js --- rosetta-test-js/url-parsing.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rosetta-test-js/url-parsing.js b/rosetta-test-js/url-parsing.js index 3fe5431..6eb2e24 100644 --- a/rosetta-test-js/url-parsing.js +++ b/rosetta-test-js/url-parsing.js @@ -1,4 +1,4 @@ -import { suite } from './rosetta.js'; +import { suite } from './rosetta-test.js'; import { URL } from 'url'; const urlParsingSuite = suite("rosetta-test-suites/url-parsing-rfc.rosetta"); From baf0f8cc2b105452921b37393c0887410acdd9ce Mon Sep 17 00:00:00 2001 From: patrick Date: Tue, 15 Apr 2025 11:05:54 +0200 Subject: [PATCH 4/8] Changes file-ending from .rosetta to .ros --- rosetta-test-js/json-rfc.js | 2 +- rosetta-test-js/url-parsing.js | 2 +- rosetta-test-py/fs.py | 2 +- rosetta-test-py/json-rfc.py | 2 +- rosetta-test-py/sendmail-python-emails.py | 2 +- rosetta-test-py/sendmail-redmail.py | 2 +- rosetta-test-py/smtp.py | 2 +- rosetta-test-py/url-parsing-urllib3.py | 2 +- rosetta-test-py/url-parsing.py | 2 +- rosetta-test-rb/json-rfc.rb | 4 ++-- rosetta-test-rb/smtp.rb | 4 ++-- rosetta-test-rb/url_parsing.rb | 4 ++-- rosetta-test-suites/{fs.rosetta => fs.ros} | 0 rosetta-test-suites/{json-rfc.rosetta => json-rfc.ros} | 0 rosetta-test-suites/{sendmail.rosetta => sendmail.ros} | 0 rosetta-test-suites/{smtp.rosetta => smtp.ros} | 0 .../{url-parsing-rfc.rosetta => url-parsing-rfc.ros} | 2 +- 17 files changed, 16 insertions(+), 16 deletions(-) rename rosetta-test-suites/{fs.rosetta => fs.ros} (100%) rename rosetta-test-suites/{json-rfc.rosetta => json-rfc.ros} (100%) rename rosetta-test-suites/{sendmail.rosetta => sendmail.ros} (100%) rename rosetta-test-suites/{smtp.rosetta => smtp.ros} (100%) rename rosetta-test-suites/{url-parsing-rfc.rosetta => url-parsing-rfc.ros} (99%) diff --git a/rosetta-test-js/json-rfc.js b/rosetta-test-js/json-rfc.js index 2bd3e71..c724864 100644 --- a/rosetta-test-js/json-rfc.js +++ b/rosetta-test-js/json-rfc.js @@ -2,7 +2,7 @@ import { suite } from "./rosetta-test.js"; import { readdirSync, readFileSync } from "fs"; import path from "path"; -const jsonSuite = suite("rosetta-test-suites/json-rfc.rosetta"); +const jsonSuite = suite("rosetta-test-suites/json-rfc.ros"); jsonSuite.placeholder("list-json-test-files", (env) => { // List the files in the suites/json-rfc-fixtures directory ending with .json diff --git a/rosetta-test-js/url-parsing.js b/rosetta-test-js/url-parsing.js index 6eb2e24..5f947af 100644 --- a/rosetta-test-js/url-parsing.js +++ b/rosetta-test-js/url-parsing.js @@ -1,7 +1,7 @@ import { suite } from './rosetta-test.js'; import { URL } from 'url'; -const urlParsingSuite = suite("rosetta-test-suites/url-parsing-rfc.rosetta"); +const urlParsingSuite = suite("rosetta-test-suites/url-parsing-rfc.ros"); urlParsingSuite.placeholder("url-parse", (env, urlString) => { try { diff --git a/rosetta-test-py/fs.py b/rosetta-test-py/fs.py index e767e10..329b12d 100644 --- a/rosetta-test-py/fs.py +++ b/rosetta-test-py/fs.py @@ -5,7 +5,7 @@ import os import tempfile -fs_suite = rosetta.suite("rosetta-test-suites/fs.rosetta") +fs_suite = rosetta.suite("rosetta-test-suites/fs.ros") @fs_suite.setUp() def set_up(env): diff --git a/rosetta-test-py/json-rfc.py b/rosetta-test-py/json-rfc.py index 099894d..9a520a5 100644 --- a/rosetta-test-py/json-rfc.py +++ b/rosetta-test-py/json-rfc.py @@ -2,7 +2,7 @@ from pathlib import Path import json -suite = rosetta.suite("rosetta-test-suites/json-rfc.rosetta") +suite = rosetta.suite("rosetta-test-suites/json-rfc.ros") @suite.placeholder("list-json-test-files") def listTestFiles(env): diff --git a/rosetta-test-py/sendmail-python-emails.py b/rosetta-test-py/sendmail-python-emails.py index 5c165ac..0f7ab75 100644 --- a/rosetta-test-py/sendmail-python-emails.py +++ b/rosetta-test-py/sendmail-python-emails.py @@ -5,7 +5,7 @@ from emails.backend.smtp import SMTPBackend from emails.backend.response import SMTPResponse -sendmail_suite = rosetta.suite("rosetta-test-suites/sendmail.rosetta") +sendmail_suite = rosetta.suite("rosetta-test-suites/sendmail.ros") # diff --git a/rosetta-test-py/sendmail-redmail.py b/rosetta-test-py/sendmail-redmail.py index 3ce0c39..f95dc63 100644 --- a/rosetta-test-py/sendmail-redmail.py +++ b/rosetta-test-py/sendmail-redmail.py @@ -4,7 +4,7 @@ from redmail import EmailSender import smtplib -sendmail_suite = rosetta.suite("rosetta-test-suites/sendmail.rosetta") +sendmail_suite = rosetta.suite("rosetta-test-suites/sendmail.ros") # diff --git a/rosetta-test-py/smtp.py b/rosetta-test-py/smtp.py index fd8ab18..eeb5bd7 100644 --- a/rosetta-test-py/smtp.py +++ b/rosetta-test-py/smtp.py @@ -3,7 +3,7 @@ import ssl import smtplib -smtp_suite = rosetta.suite("rosetta-test-suites/smtp.rosetta") +smtp_suite = rosetta.suite("rosetta-test-suites/smtp.ros") # diff --git a/rosetta-test-py/url-parsing-urllib3.py b/rosetta-test-py/url-parsing-urllib3.py index c7ee391..da164ac 100644 --- a/rosetta-test-py/url-parsing-urllib3.py +++ b/rosetta-test-py/url-parsing-urllib3.py @@ -1,7 +1,7 @@ import rosetta import urllib3 -suite = rosetta.suite("rosetta-test-suites/url-parsing-rfc.rosetta") +suite = rosetta.suite("rosetta-test-suites/url-parsing-rfc.ros") @suite.placeholder("url-parse") def url_parse(env, url_string): diff --git a/rosetta-test-py/url-parsing.py b/rosetta-test-py/url-parsing.py index 733e10e..d7f554b 100644 --- a/rosetta-test-py/url-parsing.py +++ b/rosetta-test-py/url-parsing.py @@ -2,7 +2,7 @@ import rosetta import urllib -suite = rosetta.suite("rosetta-test-suites/url-parsing-rfc.rosetta") +suite = rosetta.suite("rosetta-test-suites/url-parsing-rfc.ros") @suite.placeholder("url-parse") def url_parse(env, url_string): diff --git a/rosetta-test-rb/json-rfc.rb b/rosetta-test-rb/json-rfc.rb index 90869ee..ecff77b 100644 --- a/rosetta-test-rb/json-rfc.rb +++ b/rosetta-test-rb/json-rfc.rb @@ -1,7 +1,7 @@ require "json" -require_relative "rosetta" +require_relative "ros" -suite "rosetta-test-suites/json-rfc.rosetta" do +suite "rosetta-test-suites/json-rfc.ros" do expected_failures :test_n_string_escape_x, :test_n_string_escaped_emoji, :test_n_string_incomplete_surrogate_escape_invalid, diff --git a/rosetta-test-rb/smtp.rb b/rosetta-test-rb/smtp.rb index 4bbe340..dcd9be3 100644 --- a/rosetta-test-rb/smtp.rb +++ b/rosetta-test-rb/smtp.rb @@ -1,9 +1,9 @@ -require_relative "rosetta" +require_relative "ros" require "socket" require "net/smtp" require "openssl" -suite "rosetta-test-suites/smtp.rosetta" do +suite "rosetta-test-suites/smtp.ros" do only_capabilities "root.connection", "root.commands" exclude_capabilities "root.commands.expn", diff --git a/rosetta-test-rb/url_parsing.rb b/rosetta-test-rb/url_parsing.rb index 5533d44..abb97bc 100644 --- a/rosetta-test-rb/url_parsing.rb +++ b/rosetta-test-rb/url_parsing.rb @@ -1,7 +1,7 @@ require "uri" -require_relative "rosetta" +require_relative "ros" -suite "rosetta-test-suites/url-parsing-rfc.rosetta" do +suite "rosetta-test-suites/url-parsing-rfc.ros" do expected_failures :test_scheme_with_invalid_characters, :"test_non-terminated_scheme", :test_invalid_ipv4_host diff --git a/rosetta-test-suites/fs.rosetta b/rosetta-test-suites/fs.ros similarity index 100% rename from rosetta-test-suites/fs.rosetta rename to rosetta-test-suites/fs.ros diff --git a/rosetta-test-suites/json-rfc.rosetta b/rosetta-test-suites/json-rfc.ros similarity index 100% rename from rosetta-test-suites/json-rfc.rosetta rename to rosetta-test-suites/json-rfc.ros diff --git a/rosetta-test-suites/sendmail.rosetta b/rosetta-test-suites/sendmail.ros similarity index 100% rename from rosetta-test-suites/sendmail.rosetta rename to rosetta-test-suites/sendmail.ros diff --git a/rosetta-test-suites/smtp.rosetta b/rosetta-test-suites/smtp.ros similarity index 100% rename from rosetta-test-suites/smtp.rosetta rename to rosetta-test-suites/smtp.ros diff --git a/rosetta-test-suites/url-parsing-rfc.rosetta b/rosetta-test-suites/url-parsing-rfc.ros similarity index 99% rename from rosetta-test-suites/url-parsing-rfc.rosetta rename to rosetta-test-suites/url-parsing-rfc.ros index d22cc25..2f15c7c 100644 --- a/rosetta-test-suites/url-parsing-rfc.rosetta +++ b/rosetta-test-suites/url-parsing-rfc.ros @@ -225,7 +225,7 @@ ; TODO: Invalid userinfo - (test "invalid port - too many rosetta" (lambda () + (test "invalid port - too many ros" (lambda () (assert-parse-error "schema://domain.tld:80:80") (assert-parse-error "schema://domain.tld:80:80:80"))) From 3e8f55a1de5e96f7f9384ce29803bda146a0635f Mon Sep 17 00:00:00 2001 From: patrick Date: Tue, 15 Apr 2025 11:08:29 +0200 Subject: [PATCH 5/8] Fixes wrong rename in ruby files --- rosetta-test-rb/smtp.rb | 2 +- rosetta-test-rb/url_parsing.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/rosetta-test-rb/smtp.rb b/rosetta-test-rb/smtp.rb index dcd9be3..6b79735 100644 --- a/rosetta-test-rb/smtp.rb +++ b/rosetta-test-rb/smtp.rb @@ -1,4 +1,4 @@ -require_relative "ros" +require_relative "rosetta" require "socket" require "net/smtp" require "openssl" diff --git a/rosetta-test-rb/url_parsing.rb b/rosetta-test-rb/url_parsing.rb index abb97bc..ddc2166 100644 --- a/rosetta-test-rb/url_parsing.rb +++ b/rosetta-test-rb/url_parsing.rb @@ -1,5 +1,5 @@ require "uri" -require_relative "ros" +require_relative "rosetta" suite "rosetta-test-suites/url-parsing-rfc.ros" do expected_failures :test_scheme_with_invalid_characters, From d84911dc7728af8be23fb6d84c41f8d719073028 Mon Sep 17 00:00:00 2001 From: patrick Date: Tue, 15 Apr 2025 11:10:19 +0200 Subject: [PATCH 6/8] Fixes another wrong rename --- rosetta-test-rb/json-rfc.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rosetta-test-rb/json-rfc.rb b/rosetta-test-rb/json-rfc.rb index ecff77b..622bbca 100644 --- a/rosetta-test-rb/json-rfc.rb +++ b/rosetta-test-rb/json-rfc.rb @@ -1,5 +1,5 @@ require "json" -require_relative "ros" +require_relative "rosetta" suite "rosetta-test-suites/json-rfc.ros" do expected_failures :test_n_string_escape_x, From 92b2c7ef509dbd63d01c4175ac86750fb7fea464 Mon Sep 17 00:00:00 2001 From: Peter Retzlaff Date: Thu, 17 Apr 2025 09:44:54 +0200 Subject: [PATCH 7/8] Fixes incorrect renaming of test case --- rosetta-test-suites/url-parsing-rfc.ros | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rosetta-test-suites/url-parsing-rfc.ros b/rosetta-test-suites/url-parsing-rfc.ros index 2f15c7c..610ae38 100644 --- a/rosetta-test-suites/url-parsing-rfc.ros +++ b/rosetta-test-suites/url-parsing-rfc.ros @@ -225,7 +225,7 @@ ; TODO: Invalid userinfo - (test "invalid port - too many ros" (lambda () + (test "invalid port - too many ports" (lambda () (assert-parse-error "schema://domain.tld:80:80") (assert-parse-error "schema://domain.tld:80:80:80"))) From be908328d68292fa0c9634630a8bd09ed61890f8 Mon Sep 17 00:00:00 2001 From: Patrick R Date: Thu, 17 Apr 2025 10:53:29 +0200 Subject: [PATCH 8/8] Updates badge url in readme --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a527587..818f20f 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# RosettaTest [![Python Suites](https://github.com/codeZeilen/ports-prototype/actions/workflows/python-suites.yml/badge.svg)](https://github.com/codeZeilen/ports-prototype/actions/workflows/python-suites.yml) +# RosettaTest [![Python Suites](https://github.com/codeZeilen/rosetta-test/actions/workflows/python-suites.yml/badge.svg)](https://github.com/codeZeilen/rosetta-test/actions/workflows/python-suites.yml) With the RosettaTest project, you only have to write a test suite once for multiple implementations. @@ -45,4 +45,4 @@ Thus, if you want to execute a RosettaTest suite for your project, you need: ## Acknowledgements - Syntax tests based on the corpus from [tree-sitter-scheme](https://github.com/6cdh/tree-sitter-scheme) -- JSON-RFC Suite tests are based on the [JSONTestSuite](https://github.com/nst/JSONTestSuite) \ No newline at end of file +- JSON-RFC Suite tests are based on the [JSONTestSuite](https://github.com/nst/JSONTestSuite)