Update to ruby/spec@517f06f
This commit is contained in:
parent
e8bd745c17
commit
3ebab4b64d
@ -1,7 +1,7 @@
|
||||
inherit_from: .rubocop_todo.yml
|
||||
|
||||
AllCops:
|
||||
TargetRubyVersion: 3.0
|
||||
TargetRubyVersion: 3.1
|
||||
DisplayCopNames: true
|
||||
Exclude:
|
||||
- command_line/fixtures/bad_syntax.rb
|
||||
|
@ -56,23 +56,20 @@ module ArraySpecs
|
||||
101.621, 102.816, 104.010, 105.202, 106.393, 107.583, 108.771, 109.958, 111.144, 112.329,
|
||||
113.512, 114.695, 115.876, 117.057, 118.236, 119.414, 120.591, 121.767, 122.942, 124.116,
|
||||
125.289, 126.462, 127.633, 128.803, 129.973, 131.141, 132.309, 133.476, 134.642, 135.807,
|
||||
]
|
||||
]
|
||||
|
||||
def self.measure_sample_fairness(size, samples, iters)
|
||||
ary = Array.new(size) { |x| x }
|
||||
expected = iters.fdiv size
|
||||
(samples).times do |i|
|
||||
chi_results = []
|
||||
3.times do
|
||||
counts = Array.new(size) { 0 }
|
||||
expected = iters / size
|
||||
counts = Array.new(size, 0)
|
||||
iters.times do
|
||||
x = ary.sample(samples)[i]
|
||||
counts[x] += 1
|
||||
end
|
||||
chi_squared = 0.0
|
||||
counts.each do |count|
|
||||
chi_squared += (((count - expected) ** 2) * 1.0 / expected)
|
||||
end
|
||||
chi_squared = counts.sum {|count| (count - expected) ** 2} / expected
|
||||
chi_results << chi_squared
|
||||
break if chi_squared <= CHI_SQUARED_CRITICAL_VALUES[size]
|
||||
end
|
||||
@ -83,17 +80,14 @@ module ArraySpecs
|
||||
|
||||
def self.measure_sample_fairness_large_sample_size(size, samples, iters)
|
||||
ary = Array.new(size) { |x| x }
|
||||
counts = Array.new(size) { 0 }
|
||||
expected = iters * samples / size
|
||||
counts = Array.new(size, 0)
|
||||
expected = (iters * samples).fdiv size
|
||||
iters.times do
|
||||
ary.sample(samples).each do |sample|
|
||||
counts[sample] += 1
|
||||
end
|
||||
end
|
||||
chi_squared = 0.0
|
||||
counts.each do |count|
|
||||
chi_squared += (((count - expected) ** 2) * 1.0 / expected)
|
||||
end
|
||||
chi_squared = counts.sum {|count| (count - expected) ** 2} / expected
|
||||
|
||||
# Chi squared critical values for tests with 4 degrees of freedom
|
||||
# Values obtained from NIST Engineering Statistic Handbook at
|
||||
@ -223,366 +217,370 @@ module ArraySpecs
|
||||
obj
|
||||
end
|
||||
|
||||
LargeArray = ["test_create_table_with_force_true_does_not_drop_nonexisting_table",
|
||||
"test_add_table",
|
||||
"assert_difference",
|
||||
"assert_operator",
|
||||
"instance_variables",
|
||||
"class",
|
||||
"instance_variable_get",
|
||||
"__class__",
|
||||
"expects",
|
||||
"assert_no_difference",
|
||||
"name",
|
||||
"assert_blank",
|
||||
"assert_not_same",
|
||||
"is_a?",
|
||||
"test_add_table_with_decimals",
|
||||
"test_create_table_with_timestamps_should_create_datetime_columns",
|
||||
"assert_present",
|
||||
"assert_no_match",
|
||||
"__instance_of__",
|
||||
"assert_deprecated",
|
||||
"assert",
|
||||
"assert_throws",
|
||||
"kind_of?",
|
||||
"try",
|
||||
"__instance_variable_get__",
|
||||
"object_id",
|
||||
"timeout",
|
||||
"instance_variable_set",
|
||||
"assert_nothing_thrown",
|
||||
"__instance_variable_set__",
|
||||
"copy_object",
|
||||
"test_create_table_with_timestamps_should_create_datetime_columns_with_options",
|
||||
"assert_not_deprecated",
|
||||
"assert_in_delta",
|
||||
"id",
|
||||
"copy_metaclass",
|
||||
"test_create_table_without_a_block",
|
||||
"dup",
|
||||
"assert_not_nil",
|
||||
"send",
|
||||
"__instance_variables__",
|
||||
"to_sql",
|
||||
"mock",
|
||||
"assert_send",
|
||||
"instance_variable_defined?",
|
||||
"clone",
|
||||
"require",
|
||||
"test_migrator",
|
||||
"__instance_variable_defined_eh__",
|
||||
"frozen?",
|
||||
"test_add_column_not_null_with_default",
|
||||
"freeze",
|
||||
"test_migrator_one_up",
|
||||
"test_migrator_one_down",
|
||||
"singleton_methods",
|
||||
"method_exists?",
|
||||
"create_fixtures",
|
||||
"test_migrator_one_up_one_down",
|
||||
"test_native_decimal_insert_manual_vs_automatic",
|
||||
"instance_exec",
|
||||
"__is_a__",
|
||||
"test_migrator_double_up",
|
||||
"stub",
|
||||
"private_methods",
|
||||
"stubs",
|
||||
"test_migrator_double_down",
|
||||
"fixture_path",
|
||||
"private_singleton_methods",
|
||||
"stub_everything",
|
||||
"test_migrator_one_up_with_exception_and_rollback",
|
||||
"sequence",
|
||||
"protected_methods",
|
||||
"enum_for",
|
||||
"test_finds_migrations",
|
||||
"run_before_mocha",
|
||||
"states",
|
||||
"protected_singleton_methods",
|
||||
"to_json",
|
||||
"instance_values",
|
||||
"==",
|
||||
"mocha_setup",
|
||||
"public_methods",
|
||||
"test_finds_pending_migrations",
|
||||
"mocha_verify",
|
||||
"assert_kind_of",
|
||||
"===",
|
||||
"=~",
|
||||
"test_relative_migrations",
|
||||
"mocha_teardown",
|
||||
"gem",
|
||||
"mocha",
|
||||
"test_only_loads_pending_migrations",
|
||||
"test_add_column_with_precision_and_scale",
|
||||
"require_or_load",
|
||||
"eql?",
|
||||
"require_dependency",
|
||||
"test_native_types",
|
||||
"test_target_version_zero_should_run_only_once",
|
||||
"extend",
|
||||
"to_matcher",
|
||||
"unloadable",
|
||||
"require_association",
|
||||
"hash",
|
||||
"__id__",
|
||||
"load_dependency",
|
||||
"equals",
|
||||
"test_migrator_db_has_no_schema_migrations_table",
|
||||
"test_migrator_verbosity",
|
||||
"kind_of",
|
||||
"to_yaml",
|
||||
"to_bool",
|
||||
"test_migrator_verbosity_off",
|
||||
"taint",
|
||||
"test_migrator_going_down_due_to_version_target",
|
||||
"tainted?",
|
||||
"mocha_inspect",
|
||||
"test_migrator_rollback",
|
||||
"vim",
|
||||
"untaint",
|
||||
"taguri=",
|
||||
"test_migrator_forward",
|
||||
"test_schema_migrations_table_name",
|
||||
"test_proper_table_name",
|
||||
"all_of",
|
||||
"test_add_drop_table_with_prefix_and_suffix",
|
||||
"_setup_callbacks",
|
||||
"setup",
|
||||
"Not",
|
||||
"test_create_table_with_binary_column",
|
||||
"assert_not_equal",
|
||||
"enable_warnings",
|
||||
"acts_like?",
|
||||
"Rational",
|
||||
"_removed_setup_callbacks",
|
||||
"Table",
|
||||
"bind",
|
||||
"any_of",
|
||||
"__method__",
|
||||
"test_migrator_with_duplicates",
|
||||
"_teardown_callbacks",
|
||||
"method",
|
||||
"test_migrator_with_duplicate_names",
|
||||
"_removed_teardown_callbacks",
|
||||
"any_parameters",
|
||||
"test_migrator_with_missing_version_numbers",
|
||||
"test_add_remove_single_field_using_string_arguments",
|
||||
"test_create_table_with_custom_sequence_name",
|
||||
"test_add_remove_single_field_using_symbol_arguments",
|
||||
"_one_time_conditions_valid_14?",
|
||||
"_one_time_conditions_valid_16?",
|
||||
"run_callbacks",
|
||||
"anything",
|
||||
"silence_warnings",
|
||||
"instance_variable_names",
|
||||
"_fixture_path",
|
||||
"copy_instance_variables_from",
|
||||
"fixture_path?",
|
||||
"has_entry",
|
||||
"__marshal__",
|
||||
"_fixture_table_names",
|
||||
"__kind_of__",
|
||||
"fixture_table_names?",
|
||||
"test_add_rename",
|
||||
"assert_equal",
|
||||
"_fixture_class_names",
|
||||
"fixture_class_names?",
|
||||
"has_entries",
|
||||
"_use_transactional_fixtures",
|
||||
"people",
|
||||
"test_rename_column_using_symbol_arguments",
|
||||
"use_transactional_fixtures?",
|
||||
"instance_eval",
|
||||
"blank?",
|
||||
"with_warnings",
|
||||
"__nil__",
|
||||
"load",
|
||||
"metaclass",
|
||||
"_use_instantiated_fixtures",
|
||||
"has_key",
|
||||
"class_eval",
|
||||
"present?",
|
||||
"test_rename_column",
|
||||
"teardown",
|
||||
"use_instantiated_fixtures?",
|
||||
"method_name",
|
||||
"silence_stderr",
|
||||
"presence",
|
||||
"test_rename_column_preserves_default_value_not_null",
|
||||
"silence_stream",
|
||||
"_pre_loaded_fixtures",
|
||||
"__metaclass__",
|
||||
"__fixnum__",
|
||||
"pre_loaded_fixtures?",
|
||||
"has_value",
|
||||
"suppress",
|
||||
"to_yaml_properties",
|
||||
"test_rename_nonexistent_column",
|
||||
"test_add_index",
|
||||
"includes",
|
||||
"find_correlate_in",
|
||||
"equality_predicate_sql",
|
||||
"assert_nothing_raised",
|
||||
"let",
|
||||
"not_predicate_sql",
|
||||
"test_rename_column_with_sql_reserved_word",
|
||||
"singleton_class",
|
||||
"test_rename_column_with_an_index",
|
||||
"display",
|
||||
"taguri",
|
||||
"to_yaml_style",
|
||||
"test_remove_column_with_index",
|
||||
"size",
|
||||
"current_adapter?",
|
||||
"test_remove_column_with_multi_column_index",
|
||||
"respond_to?",
|
||||
"test_change_type_of_not_null_column",
|
||||
"is_a",
|
||||
"to_a",
|
||||
"test_rename_table_for_sqlite_should_work_with_reserved_words",
|
||||
"require_library_or_gem",
|
||||
"setup_fixtures",
|
||||
"equal?",
|
||||
"teardown_fixtures",
|
||||
"nil?",
|
||||
"fixture_table_names",
|
||||
"fixture_class_names",
|
||||
"test_create_table_without_id",
|
||||
"use_transactional_fixtures",
|
||||
"test_add_column_with_primary_key_attribute",
|
||||
"repair_validations",
|
||||
"use_instantiated_fixtures",
|
||||
"instance_of?",
|
||||
"test_create_table_adds_id",
|
||||
"test_rename_table",
|
||||
"pre_loaded_fixtures",
|
||||
"to_enum",
|
||||
"test_create_table_with_not_null_column",
|
||||
"instance_of",
|
||||
"test_change_column_nullability",
|
||||
"optionally",
|
||||
"test_rename_table_with_an_index",
|
||||
"run",
|
||||
"test_change_column",
|
||||
"default_test",
|
||||
"assert_raise",
|
||||
"test_create_table_with_defaults",
|
||||
"assert_nil",
|
||||
"flunk",
|
||||
"regexp_matches",
|
||||
"duplicable?",
|
||||
"reset_mocha",
|
||||
"stubba_method",
|
||||
"filter_backtrace",
|
||||
"test_create_table_with_limits",
|
||||
"responds_with",
|
||||
"stubba_object",
|
||||
"test_change_column_with_nil_default",
|
||||
"assert_block",
|
||||
"__show__",
|
||||
"assert_date_from_db",
|
||||
"__respond_to_eh__",
|
||||
"run_in_transaction?",
|
||||
"inspect",
|
||||
"assert_sql",
|
||||
"test_change_column_with_new_default",
|
||||
"yaml_equivalent",
|
||||
"build_message",
|
||||
"to_s",
|
||||
"test_change_column_default",
|
||||
"assert_queries",
|
||||
"pending",
|
||||
"as_json",
|
||||
"assert_no_queries",
|
||||
"test_change_column_quotes_column_names",
|
||||
"assert_match",
|
||||
"test_keeping_default_and_notnull_constraint_on_change",
|
||||
"methods",
|
||||
"connection_allow_concurrency_setup",
|
||||
"connection_allow_concurrency_teardown",
|
||||
"test_create_table_with_primary_key_prefix_as_table_name_with_underscore",
|
||||
"__send__",
|
||||
"make_connection",
|
||||
"assert_raises",
|
||||
"tap",
|
||||
"with_kcode",
|
||||
"assert_instance_of",
|
||||
"test_create_table_with_primary_key_prefix_as_table_name",
|
||||
"assert_respond_to",
|
||||
"test_change_column_default_to_null",
|
||||
"assert_same",
|
||||
"__extend__"]
|
||||
LargeArray = [
|
||||
"test_create_table_with_force_true_does_not_drop_nonexisting_table",
|
||||
"test_add_table",
|
||||
"assert_difference",
|
||||
"assert_operator",
|
||||
"instance_variables",
|
||||
"class",
|
||||
"instance_variable_get",
|
||||
"__class__",
|
||||
"expects",
|
||||
"assert_no_difference",
|
||||
"name",
|
||||
"assert_blank",
|
||||
"assert_not_same",
|
||||
"is_a?",
|
||||
"test_add_table_with_decimals",
|
||||
"test_create_table_with_timestamps_should_create_datetime_columns",
|
||||
"assert_present",
|
||||
"assert_no_match",
|
||||
"__instance_of__",
|
||||
"assert_deprecated",
|
||||
"assert",
|
||||
"assert_throws",
|
||||
"kind_of?",
|
||||
"try",
|
||||
"__instance_variable_get__",
|
||||
"object_id",
|
||||
"timeout",
|
||||
"instance_variable_set",
|
||||
"assert_nothing_thrown",
|
||||
"__instance_variable_set__",
|
||||
"copy_object",
|
||||
"test_create_table_with_timestamps_should_create_datetime_columns_with_options",
|
||||
"assert_not_deprecated",
|
||||
"assert_in_delta",
|
||||
"id",
|
||||
"copy_metaclass",
|
||||
"test_create_table_without_a_block",
|
||||
"dup",
|
||||
"assert_not_nil",
|
||||
"send",
|
||||
"__instance_variables__",
|
||||
"to_sql",
|
||||
"mock",
|
||||
"assert_send",
|
||||
"instance_variable_defined?",
|
||||
"clone",
|
||||
"require",
|
||||
"test_migrator",
|
||||
"__instance_variable_defined_eh__",
|
||||
"frozen?",
|
||||
"test_add_column_not_null_with_default",
|
||||
"freeze",
|
||||
"test_migrator_one_up",
|
||||
"test_migrator_one_down",
|
||||
"singleton_methods",
|
||||
"method_exists?",
|
||||
"create_fixtures",
|
||||
"test_migrator_one_up_one_down",
|
||||
"test_native_decimal_insert_manual_vs_automatic",
|
||||
"instance_exec",
|
||||
"__is_a__",
|
||||
"test_migrator_double_up",
|
||||
"stub",
|
||||
"private_methods",
|
||||
"stubs",
|
||||
"test_migrator_double_down",
|
||||
"fixture_path",
|
||||
"private_singleton_methods",
|
||||
"stub_everything",
|
||||
"test_migrator_one_up_with_exception_and_rollback",
|
||||
"sequence",
|
||||
"protected_methods",
|
||||
"enum_for",
|
||||
"test_finds_migrations",
|
||||
"run_before_mocha",
|
||||
"states",
|
||||
"protected_singleton_methods",
|
||||
"to_json",
|
||||
"instance_values",
|
||||
"==",
|
||||
"mocha_setup",
|
||||
"public_methods",
|
||||
"test_finds_pending_migrations",
|
||||
"mocha_verify",
|
||||
"assert_kind_of",
|
||||
"===",
|
||||
"=~",
|
||||
"test_relative_migrations",
|
||||
"mocha_teardown",
|
||||
"gem",
|
||||
"mocha",
|
||||
"test_only_loads_pending_migrations",
|
||||
"test_add_column_with_precision_and_scale",
|
||||
"require_or_load",
|
||||
"eql?",
|
||||
"require_dependency",
|
||||
"test_native_types",
|
||||
"test_target_version_zero_should_run_only_once",
|
||||
"extend",
|
||||
"to_matcher",
|
||||
"unloadable",
|
||||
"require_association",
|
||||
"hash",
|
||||
"__id__",
|
||||
"load_dependency",
|
||||
"equals",
|
||||
"test_migrator_db_has_no_schema_migrations_table",
|
||||
"test_migrator_verbosity",
|
||||
"kind_of",
|
||||
"to_yaml",
|
||||
"to_bool",
|
||||
"test_migrator_verbosity_off",
|
||||
"taint",
|
||||
"test_migrator_going_down_due_to_version_target",
|
||||
"tainted?",
|
||||
"mocha_inspect",
|
||||
"test_migrator_rollback",
|
||||
"vim",
|
||||
"untaint",
|
||||
"taguri=",
|
||||
"test_migrator_forward",
|
||||
"test_schema_migrations_table_name",
|
||||
"test_proper_table_name",
|
||||
"all_of",
|
||||
"test_add_drop_table_with_prefix_and_suffix",
|
||||
"_setup_callbacks",
|
||||
"setup",
|
||||
"Not",
|
||||
"test_create_table_with_binary_column",
|
||||
"assert_not_equal",
|
||||
"enable_warnings",
|
||||
"acts_like?",
|
||||
"Rational",
|
||||
"_removed_setup_callbacks",
|
||||
"Table",
|
||||
"bind",
|
||||
"any_of",
|
||||
"__method__",
|
||||
"test_migrator_with_duplicates",
|
||||
"_teardown_callbacks",
|
||||
"method",
|
||||
"test_migrator_with_duplicate_names",
|
||||
"_removed_teardown_callbacks",
|
||||
"any_parameters",
|
||||
"test_migrator_with_missing_version_numbers",
|
||||
"test_add_remove_single_field_using_string_arguments",
|
||||
"test_create_table_with_custom_sequence_name",
|
||||
"test_add_remove_single_field_using_symbol_arguments",
|
||||
"_one_time_conditions_valid_14?",
|
||||
"_one_time_conditions_valid_16?",
|
||||
"run_callbacks",
|
||||
"anything",
|
||||
"silence_warnings",
|
||||
"instance_variable_names",
|
||||
"_fixture_path",
|
||||
"copy_instance_variables_from",
|
||||
"fixture_path?",
|
||||
"has_entry",
|
||||
"__marshal__",
|
||||
"_fixture_table_names",
|
||||
"__kind_of__",
|
||||
"fixture_table_names?",
|
||||
"test_add_rename",
|
||||
"assert_equal",
|
||||
"_fixture_class_names",
|
||||
"fixture_class_names?",
|
||||
"has_entries",
|
||||
"_use_transactional_fixtures",
|
||||
"people",
|
||||
"test_rename_column_using_symbol_arguments",
|
||||
"use_transactional_fixtures?",
|
||||
"instance_eval",
|
||||
"blank?",
|
||||
"with_warnings",
|
||||
"__nil__",
|
||||
"load",
|
||||
"metaclass",
|
||||
"_use_instantiated_fixtures",
|
||||
"has_key",
|
||||
"class_eval",
|
||||
"present?",
|
||||
"test_rename_column",
|
||||
"teardown",
|
||||
"use_instantiated_fixtures?",
|
||||
"method_name",
|
||||
"silence_stderr",
|
||||
"presence",
|
||||
"test_rename_column_preserves_default_value_not_null",
|
||||
"silence_stream",
|
||||
"_pre_loaded_fixtures",
|
||||
"__metaclass__",
|
||||
"__fixnum__",
|
||||
"pre_loaded_fixtures?",
|
||||
"has_value",
|
||||
"suppress",
|
||||
"to_yaml_properties",
|
||||
"test_rename_nonexistent_column",
|
||||
"test_add_index",
|
||||
"includes",
|
||||
"find_correlate_in",
|
||||
"equality_predicate_sql",
|
||||
"assert_nothing_raised",
|
||||
"let",
|
||||
"not_predicate_sql",
|
||||
"test_rename_column_with_sql_reserved_word",
|
||||
"singleton_class",
|
||||
"test_rename_column_with_an_index",
|
||||
"display",
|
||||
"taguri",
|
||||
"to_yaml_style",
|
||||
"test_remove_column_with_index",
|
||||
"size",
|
||||
"current_adapter?",
|
||||
"test_remove_column_with_multi_column_index",
|
||||
"respond_to?",
|
||||
"test_change_type_of_not_null_column",
|
||||
"is_a",
|
||||
"to_a",
|
||||
"test_rename_table_for_sqlite_should_work_with_reserved_words",
|
||||
"require_library_or_gem",
|
||||
"setup_fixtures",
|
||||
"equal?",
|
||||
"teardown_fixtures",
|
||||
"nil?",
|
||||
"fixture_table_names",
|
||||
"fixture_class_names",
|
||||
"test_create_table_without_id",
|
||||
"use_transactional_fixtures",
|
||||
"test_add_column_with_primary_key_attribute",
|
||||
"repair_validations",
|
||||
"use_instantiated_fixtures",
|
||||
"instance_of?",
|
||||
"test_create_table_adds_id",
|
||||
"test_rename_table",
|
||||
"pre_loaded_fixtures",
|
||||
"to_enum",
|
||||
"test_create_table_with_not_null_column",
|
||||
"instance_of",
|
||||
"test_change_column_nullability",
|
||||
"optionally",
|
||||
"test_rename_table_with_an_index",
|
||||
"run",
|
||||
"test_change_column",
|
||||
"default_test",
|
||||
"assert_raise",
|
||||
"test_create_table_with_defaults",
|
||||
"assert_nil",
|
||||
"flunk",
|
||||
"regexp_matches",
|
||||
"duplicable?",
|
||||
"reset_mocha",
|
||||
"stubba_method",
|
||||
"filter_backtrace",
|
||||
"test_create_table_with_limits",
|
||||
"responds_with",
|
||||
"stubba_object",
|
||||
"test_change_column_with_nil_default",
|
||||
"assert_block",
|
||||
"__show__",
|
||||
"assert_date_from_db",
|
||||
"__respond_to_eh__",
|
||||
"run_in_transaction?",
|
||||
"inspect",
|
||||
"assert_sql",
|
||||
"test_change_column_with_new_default",
|
||||
"yaml_equivalent",
|
||||
"build_message",
|
||||
"to_s",
|
||||
"test_change_column_default",
|
||||
"assert_queries",
|
||||
"pending",
|
||||
"as_json",
|
||||
"assert_no_queries",
|
||||
"test_change_column_quotes_column_names",
|
||||
"assert_match",
|
||||
"test_keeping_default_and_notnull_constraint_on_change",
|
||||
"methods",
|
||||
"connection_allow_concurrency_setup",
|
||||
"connection_allow_concurrency_teardown",
|
||||
"test_create_table_with_primary_key_prefix_as_table_name_with_underscore",
|
||||
"__send__",
|
||||
"make_connection",
|
||||
"assert_raises",
|
||||
"tap",
|
||||
"with_kcode",
|
||||
"assert_instance_of",
|
||||
"test_create_table_with_primary_key_prefix_as_table_name",
|
||||
"assert_respond_to",
|
||||
"test_change_column_default_to_null",
|
||||
"assert_same",
|
||||
"__extend__",
|
||||
]
|
||||
|
||||
LargeTestArraySorted = ["test_add_column_not_null_with_default",
|
||||
"test_add_column_with_precision_and_scale",
|
||||
"test_add_column_with_primary_key_attribute",
|
||||
"test_add_drop_table_with_prefix_and_suffix",
|
||||
"test_add_index",
|
||||
"test_add_remove_single_field_using_string_arguments",
|
||||
"test_add_remove_single_field_using_symbol_arguments",
|
||||
"test_add_rename",
|
||||
"test_add_table",
|
||||
"test_add_table_with_decimals",
|
||||
"test_change_column",
|
||||
"test_change_column_default",
|
||||
"test_change_column_default_to_null",
|
||||
"test_change_column_nullability",
|
||||
"test_change_column_quotes_column_names",
|
||||
"test_change_column_with_new_default",
|
||||
"test_change_column_with_nil_default",
|
||||
"test_change_type_of_not_null_column",
|
||||
"test_create_table_adds_id",
|
||||
"test_create_table_with_binary_column",
|
||||
"test_create_table_with_custom_sequence_name",
|
||||
"test_create_table_with_defaults",
|
||||
"test_create_table_with_force_true_does_not_drop_nonexisting_table",
|
||||
"test_create_table_with_limits",
|
||||
"test_create_table_with_not_null_column",
|
||||
"test_create_table_with_primary_key_prefix_as_table_name",
|
||||
"test_create_table_with_primary_key_prefix_as_table_name_with_underscore",
|
||||
"test_create_table_with_timestamps_should_create_datetime_columns",
|
||||
"test_create_table_with_timestamps_should_create_datetime_columns_with_options",
|
||||
"test_create_table_without_a_block",
|
||||
"test_create_table_without_id",
|
||||
"test_finds_migrations",
|
||||
"test_finds_pending_migrations",
|
||||
"test_keeping_default_and_notnull_constraint_on_change",
|
||||
"test_migrator",
|
||||
"test_migrator_db_has_no_schema_migrations_table",
|
||||
"test_migrator_double_down",
|
||||
"test_migrator_double_up",
|
||||
"test_migrator_forward",
|
||||
"test_migrator_going_down_due_to_version_target",
|
||||
"test_migrator_one_down",
|
||||
"test_migrator_one_up",
|
||||
"test_migrator_one_up_one_down",
|
||||
"test_migrator_one_up_with_exception_and_rollback",
|
||||
"test_migrator_rollback",
|
||||
"test_migrator_verbosity",
|
||||
"test_migrator_verbosity_off",
|
||||
"test_migrator_with_duplicate_names",
|
||||
"test_migrator_with_duplicates",
|
||||
"test_migrator_with_missing_version_numbers",
|
||||
"test_native_decimal_insert_manual_vs_automatic",
|
||||
"test_native_types",
|
||||
"test_only_loads_pending_migrations",
|
||||
"test_proper_table_name",
|
||||
"test_relative_migrations",
|
||||
"test_remove_column_with_index",
|
||||
"test_remove_column_with_multi_column_index",
|
||||
"test_rename_column",
|
||||
"test_rename_column_preserves_default_value_not_null",
|
||||
"test_rename_column_using_symbol_arguments",
|
||||
"test_rename_column_with_an_index",
|
||||
"test_rename_column_with_sql_reserved_word",
|
||||
"test_rename_nonexistent_column",
|
||||
"test_rename_table",
|
||||
"test_rename_table_for_sqlite_should_work_with_reserved_words",
|
||||
"test_rename_table_with_an_index",
|
||||
"test_schema_migrations_table_name",
|
||||
"test_target_version_zero_should_run_only_once"]
|
||||
LargeTestArraySorted = [
|
||||
"test_add_column_not_null_with_default",
|
||||
"test_add_column_with_precision_and_scale",
|
||||
"test_add_column_with_primary_key_attribute",
|
||||
"test_add_drop_table_with_prefix_and_suffix",
|
||||
"test_add_index",
|
||||
"test_add_remove_single_field_using_string_arguments",
|
||||
"test_add_remove_single_field_using_symbol_arguments",
|
||||
"test_add_rename",
|
||||
"test_add_table",
|
||||
"test_add_table_with_decimals",
|
||||
"test_change_column",
|
||||
"test_change_column_default",
|
||||
"test_change_column_default_to_null",
|
||||
"test_change_column_nullability",
|
||||
"test_change_column_quotes_column_names",
|
||||
"test_change_column_with_new_default",
|
||||
"test_change_column_with_nil_default",
|
||||
"test_change_type_of_not_null_column",
|
||||
"test_create_table_adds_id",
|
||||
"test_create_table_with_binary_column",
|
||||
"test_create_table_with_custom_sequence_name",
|
||||
"test_create_table_with_defaults",
|
||||
"test_create_table_with_force_true_does_not_drop_nonexisting_table",
|
||||
"test_create_table_with_limits",
|
||||
"test_create_table_with_not_null_column",
|
||||
"test_create_table_with_primary_key_prefix_as_table_name",
|
||||
"test_create_table_with_primary_key_prefix_as_table_name_with_underscore",
|
||||
"test_create_table_with_timestamps_should_create_datetime_columns",
|
||||
"test_create_table_with_timestamps_should_create_datetime_columns_with_options",
|
||||
"test_create_table_without_a_block",
|
||||
"test_create_table_without_id",
|
||||
"test_finds_migrations",
|
||||
"test_finds_pending_migrations",
|
||||
"test_keeping_default_and_notnull_constraint_on_change",
|
||||
"test_migrator",
|
||||
"test_migrator_db_has_no_schema_migrations_table",
|
||||
"test_migrator_double_down",
|
||||
"test_migrator_double_up",
|
||||
"test_migrator_forward",
|
||||
"test_migrator_going_down_due_to_version_target",
|
||||
"test_migrator_one_down",
|
||||
"test_migrator_one_up",
|
||||
"test_migrator_one_up_one_down",
|
||||
"test_migrator_one_up_with_exception_and_rollback",
|
||||
"test_migrator_rollback",
|
||||
"test_migrator_verbosity",
|
||||
"test_migrator_verbosity_off",
|
||||
"test_migrator_with_duplicate_names",
|
||||
"test_migrator_with_duplicates",
|
||||
"test_migrator_with_missing_version_numbers",
|
||||
"test_native_decimal_insert_manual_vs_automatic",
|
||||
"test_native_types",
|
||||
"test_only_loads_pending_migrations",
|
||||
"test_proper_table_name",
|
||||
"test_relative_migrations",
|
||||
"test_remove_column_with_index",
|
||||
"test_remove_column_with_multi_column_index",
|
||||
"test_rename_column",
|
||||
"test_rename_column_preserves_default_value_not_null",
|
||||
"test_rename_column_using_symbol_arguments",
|
||||
"test_rename_column_with_an_index",
|
||||
"test_rename_column_with_sql_reserved_word",
|
||||
"test_rename_nonexistent_column",
|
||||
"test_rename_table",
|
||||
"test_rename_table_for_sqlite_should_work_with_reserved_words",
|
||||
"test_rename_table_with_an_index",
|
||||
"test_schema_migrations_table_name",
|
||||
"test_target_version_zero_should_run_only_once",
|
||||
]
|
||||
|
||||
class PrivateToAry
|
||||
private
|
||||
|
@ -28,6 +28,16 @@ describe "Array#pack with :buffer option" do
|
||||
TypeError, "buffer must be String, not Array")
|
||||
end
|
||||
|
||||
it "raise FrozenError if buffer is frozen" do
|
||||
-> { [65].pack("c", buffer: "frozen-string".freeze) }.should raise_error(FrozenError)
|
||||
end
|
||||
|
||||
it "preserves the encoding of the given buffer" do
|
||||
buffer = ''.encode(Encoding::ISO_8859_1)
|
||||
[65, 66, 67].pack("ccc", buffer: buffer)
|
||||
buffer.encoding.should == Encoding::ISO_8859_1
|
||||
end
|
||||
|
||||
context "offset (@) is specified" do
|
||||
it 'keeps buffer content if it is longer than offset' do
|
||||
n = [ 65, 66, 67 ]
|
||||
|
@ -1,12 +1,12 @@
|
||||
module IOWaitSpec
|
||||
module IOSpec
|
||||
def self.exhaust_write_buffer(io)
|
||||
written = 0
|
||||
buf = " " * 4096
|
||||
|
||||
begin
|
||||
while true
|
||||
written += io.write_nonblock(buf)
|
||||
rescue Errno::EAGAIN, Errno::EWOULDBLOCK
|
||||
return written
|
||||
end while true
|
||||
end
|
||||
rescue Errno::EAGAIN, Errno::EWOULDBLOCK
|
||||
written
|
||||
end
|
||||
end
|
@ -427,7 +427,7 @@ describe "The 'case'-construct" do
|
||||
:bar
|
||||
end
|
||||
RUBY
|
||||
}.should complain(/warning: duplicated .when' clause with line \d+ is ignored/, verbose: true)
|
||||
}.should complain(/warning: (duplicated .when' clause with line \d+ is ignored|'when' clause on line \d+ duplicates 'when' clause on line \d+ and is ignored)/, verbose: true)
|
||||
end
|
||||
end
|
||||
|
||||
|
75
spec/ruby/language/pattern_matching/3.1.rb
Normal file
75
spec/ruby/language/pattern_matching/3.1.rb
Normal file
@ -0,0 +1,75 @@
|
||||
describe "Pattern matching" do
|
||||
before :each do
|
||||
ScratchPad.record []
|
||||
end
|
||||
|
||||
describe "Ruby 3.1 improvements" do
|
||||
ruby_version_is "3.1" do
|
||||
it "can omit parentheses in one line pattern matching" do
|
||||
[1, 2] => a, b
|
||||
[a, b].should == [1, 2]
|
||||
|
||||
{a: 1} => a:
|
||||
a.should == 1
|
||||
end
|
||||
|
||||
it "supports pinning instance variables" do
|
||||
@a = /a/
|
||||
case 'abc'
|
||||
in ^@a
|
||||
true
|
||||
end.should == true
|
||||
end
|
||||
|
||||
it "supports pinning class variables" do
|
||||
result = nil
|
||||
Module.new do
|
||||
result = module_eval(<<~RUBY)
|
||||
@@a = 0..10
|
||||
|
||||
case 2
|
||||
in ^@@a
|
||||
true
|
||||
end
|
||||
RUBY
|
||||
end
|
||||
|
||||
result.should == true
|
||||
end
|
||||
|
||||
it "supports pinning global variables" do
|
||||
$a = /a/
|
||||
case 'abc'
|
||||
in ^$a
|
||||
true
|
||||
end.should == true
|
||||
end
|
||||
|
||||
it "supports pinning expressions" do
|
||||
case 'abc'
|
||||
in ^(/a/)
|
||||
true
|
||||
end.should == true
|
||||
|
||||
case 0
|
||||
in ^(0 + 0)
|
||||
true
|
||||
end.should == true
|
||||
end
|
||||
|
||||
it "supports pinning expressions in array pattern" do
|
||||
case [3]
|
||||
in [^(1 + 2)]
|
||||
true
|
||||
end.should == true
|
||||
end
|
||||
|
||||
it "supports pinning expressions in hash pattern" do
|
||||
case {name: '2.6', released_at: Time.new(2018, 12, 25)}
|
||||
in {released_at: ^(Time.new(2010)..Time.new(2020))}
|
||||
true
|
||||
end.should == true
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
File diff suppressed because it is too large
Load Diff
@ -24,4 +24,23 @@ describe "IO#wait_readable" do
|
||||
it "waits for the IO to become readable with the given large timeout" do
|
||||
@io.wait_readable(365 * 24 * 60 * 60).should == @io
|
||||
end
|
||||
|
||||
it "can be interrupted" do
|
||||
rd, wr = IO.pipe
|
||||
start = Process.clock_gettime(Process::CLOCK_MONOTONIC)
|
||||
|
||||
t = Thread.new do
|
||||
rd.wait_readable(10)
|
||||
end
|
||||
|
||||
Thread.pass until t.stop?
|
||||
t.kill
|
||||
t.join
|
||||
|
||||
finish = Process.clock_gettime(Process::CLOCK_MONOTONIC)
|
||||
(finish - start).should < 9
|
||||
ensure
|
||||
rd.close
|
||||
wr.close
|
||||
end
|
||||
end
|
||||
|
@ -1,5 +1,5 @@
|
||||
require_relative '../../spec_helper'
|
||||
require_relative 'fixtures/classes'
|
||||
require_relative '../../fixtures/io'
|
||||
|
||||
ruby_version_is ''...'3.2' do
|
||||
require 'io/wait'
|
||||
@ -55,7 +55,7 @@ describe "IO#wait" do
|
||||
end
|
||||
|
||||
it "waits for the WRITABLE event to be ready" do
|
||||
written_bytes = IOWaitSpec.exhaust_write_buffer(@w)
|
||||
written_bytes = IOSpec.exhaust_write_buffer(@w)
|
||||
@w.wait(IO::WRITABLE, 0).should == nil
|
||||
|
||||
@r.read(written_bytes)
|
||||
@ -67,7 +67,7 @@ describe "IO#wait" do
|
||||
end
|
||||
|
||||
it "returns nil when the WRITABLE event is not ready during the timeout" do
|
||||
IOWaitSpec.exhaust_write_buffer(@w)
|
||||
IOSpec.exhaust_write_buffer(@w)
|
||||
@w.wait(IO::WRITABLE, 0).should == nil
|
||||
end
|
||||
|
||||
@ -92,7 +92,7 @@ describe "IO#wait" do
|
||||
end
|
||||
|
||||
it "changes thread status to 'sleep' when waits for WRITABLE event" do
|
||||
written_bytes = IOWaitSpec.exhaust_write_buffer(@w)
|
||||
IOSpec.exhaust_write_buffer(@w)
|
||||
|
||||
t = Thread.new { @w.wait(IO::WRITABLE, 10) }
|
||||
sleep 1
|
||||
@ -100,6 +100,37 @@ describe "IO#wait" do
|
||||
t.kill
|
||||
t.join # Thread#kill doesn't wait for the thread to end
|
||||
end
|
||||
|
||||
it "can be interrupted when waiting for READABLE event" do
|
||||
start = Process.clock_gettime(Process::CLOCK_MONOTONIC)
|
||||
|
||||
t = Thread.new do
|
||||
@r.wait(IO::READABLE, 10)
|
||||
end
|
||||
|
||||
Thread.pass until t.stop?
|
||||
t.kill
|
||||
t.join # Thread#kill doesn't wait for the thread to end
|
||||
|
||||
finish = Process.clock_gettime(Process::CLOCK_MONOTONIC)
|
||||
(finish - start).should < 9
|
||||
end
|
||||
|
||||
it "can be interrupted when waiting for WRITABLE event" do
|
||||
IOSpec.exhaust_write_buffer(@w)
|
||||
start = Process.clock_gettime(Process::CLOCK_MONOTONIC)
|
||||
|
||||
t = Thread.new do
|
||||
@w.wait(IO::WRITABLE, 10)
|
||||
end
|
||||
|
||||
Thread.pass until t.stop?
|
||||
t.kill
|
||||
t.join # Thread#kill doesn't wait for the thread to end
|
||||
|
||||
finish = Process.clock_gettime(Process::CLOCK_MONOTONIC)
|
||||
(finish - start).should < 9
|
||||
end
|
||||
end
|
||||
|
||||
context "[timeout, mode] passed" do
|
||||
|
@ -1,4 +1,5 @@
|
||||
require_relative '../../spec_helper'
|
||||
require_relative '../../fixtures/io'
|
||||
|
||||
ruby_version_is ''...'3.2' do
|
||||
require 'io/wait'
|
||||
@ -17,4 +18,24 @@ describe "IO#wait_writable" do
|
||||
# Represents one year and is larger than a 32-bit int
|
||||
STDOUT.wait_writable(365 * 24 * 60 * 60).should == STDOUT
|
||||
end
|
||||
|
||||
it "can be interrupted" do
|
||||
rd, wr = IO.pipe
|
||||
IOSpec.exhaust_write_buffer(wr)
|
||||
start = Process.clock_gettime(Process::CLOCK_MONOTONIC)
|
||||
|
||||
t = Thread.new do
|
||||
wr.wait_writable(10)
|
||||
end
|
||||
|
||||
Thread.pass until t.stop?
|
||||
t.kill
|
||||
t.join
|
||||
|
||||
finish = Process.clock_gettime(Process::CLOCK_MONOTONIC)
|
||||
(finish - start).should < 9
|
||||
ensure
|
||||
rd.close unless rd.closed?
|
||||
wr.close unless wr.closed?
|
||||
end
|
||||
end
|
||||
|
@ -88,6 +88,30 @@ describe 'RbConfig::CONFIG' do
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
guard -> { %w[aarch64 arm64].include? RbConfig::CONFIG['host_cpu'] } do
|
||||
it "['host_cpu'] returns CPU architecture properly for AArch64" do
|
||||
platform_is :darwin do
|
||||
RbConfig::CONFIG['host_cpu'].should == 'arm64'
|
||||
end
|
||||
|
||||
platform_is_not :darwin do
|
||||
RbConfig::CONFIG['host_cpu'].should == 'aarch64'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
guard -> { platform_is(:linux) || platform_is(:darwin) } do
|
||||
it "['host_os'] returns a proper OS name or platform" do
|
||||
platform_is :darwin do
|
||||
RbConfig::CONFIG['host_os'].should.match?(/darwin/)
|
||||
end
|
||||
|
||||
platform_is :linux do
|
||||
RbConfig::CONFIG['host_os'].should.match?(/linux/)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "RbConfig::TOPDIR" do
|
||||
@ -99,3 +123,32 @@ describe "RbConfig::TOPDIR" do
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "RUBY_PLATFORM" do
|
||||
it "RUBY_PLATFORM contains a proper CPU architecture" do
|
||||
RUBY_PLATFORM.should.include? RbConfig::CONFIG['host_cpu']
|
||||
end
|
||||
|
||||
guard -> { platform_is(:linux) || platform_is(:darwin) } do
|
||||
it "RUBY_PLATFORM contains OS name" do
|
||||
# don't use RbConfig::CONFIG['host_os'] as far as it could be slightly different, e.g. linux-gnu
|
||||
platform_is(:linux) do
|
||||
RUBY_PLATFORM.should.include? 'linux'
|
||||
end
|
||||
|
||||
platform_is(:darwin) do
|
||||
RUBY_PLATFORM.should.include? 'darwin'
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "RUBY_DESCRIPTION" do
|
||||
it "contains version" do
|
||||
RUBY_DESCRIPTION.should.include? RUBY_VERSION
|
||||
end
|
||||
|
||||
it "contains RUBY_PLATFORM" do
|
||||
RUBY_DESCRIPTION.should.include? RUBY_PLATFORM
|
||||
end
|
||||
end
|
||||
|
@ -1,4 +1,5 @@
|
||||
require_relative 'spec_helper'
|
||||
require_relative '../../fixtures/io'
|
||||
|
||||
load_extension('io')
|
||||
|
||||
@ -279,6 +280,22 @@ describe "C-API IO function" do
|
||||
it "raises an IOError if the IO is not initialized" do
|
||||
-> { @o.rb_io_maybe_wait_writable(0, IO.allocate, nil) }.should raise_error(IOError, "uninitialized stream")
|
||||
end
|
||||
|
||||
it "can be interrupted" do
|
||||
IOSpec.exhaust_write_buffer(@w_io)
|
||||
start = Process.clock_gettime(Process::CLOCK_MONOTONIC)
|
||||
|
||||
t = Thread.new do
|
||||
@o.rb_io_maybe_wait_writable(0, @w_io, 10)
|
||||
end
|
||||
|
||||
Thread.pass until t.stop?
|
||||
t.kill
|
||||
t.join
|
||||
|
||||
finish = Process.clock_gettime(Process::CLOCK_MONOTONIC)
|
||||
(finish - start).should < 9
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@ -355,6 +372,21 @@ describe "C-API IO function" do
|
||||
thr.join
|
||||
end
|
||||
|
||||
it "can be interrupted" do
|
||||
start = Process.clock_gettime(Process::CLOCK_MONOTONIC)
|
||||
|
||||
t = Thread.new do
|
||||
@o.rb_io_maybe_wait_readable(0, @r_io, 10, false)
|
||||
end
|
||||
|
||||
Thread.pass until t.stop?
|
||||
t.kill
|
||||
t.join
|
||||
|
||||
finish = Process.clock_gettime(Process::CLOCK_MONOTONIC)
|
||||
(finish - start).should < 9
|
||||
end
|
||||
|
||||
it "raises an IOError if the IO is closed" do
|
||||
@r_io.close
|
||||
-> { @o.rb_io_maybe_wait_readable(0, @r_io, nil, false) }.should raise_error(IOError, "closed stream")
|
||||
@ -438,6 +470,37 @@ describe "C-API IO function" do
|
||||
it "raises an IOError if the IO is not initialized" do
|
||||
-> { @o.rb_io_maybe_wait(0, IO.allocate, IO::WRITABLE, nil) }.should raise_error(IOError, "uninitialized stream")
|
||||
end
|
||||
|
||||
it "can be interrupted when waiting for READABLE event" do
|
||||
start = Process.clock_gettime(Process::CLOCK_MONOTONIC)
|
||||
|
||||
t = Thread.new do
|
||||
@o.rb_io_maybe_wait(0, @r_io, IO::READABLE, 10)
|
||||
end
|
||||
|
||||
Thread.pass until t.stop?
|
||||
t.kill
|
||||
t.join
|
||||
|
||||
finish = Process.clock_gettime(Process::CLOCK_MONOTONIC)
|
||||
(finish - start).should < 9
|
||||
end
|
||||
|
||||
it "can be interrupted when waiting for WRITABLE event" do
|
||||
IOSpec.exhaust_write_buffer(@w_io)
|
||||
start = Process.clock_gettime(Process::CLOCK_MONOTONIC)
|
||||
|
||||
t = Thread.new do
|
||||
@o.rb_io_maybe_wait(0, @w_io, IO::WRITABLE, 10)
|
||||
end
|
||||
|
||||
Thread.pass until t.stop?
|
||||
t.kill
|
||||
t.join
|
||||
|
||||
finish = Process.clock_gettime(Process::CLOCK_MONOTONIC)
|
||||
(finish - start).should < 9
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user