ibm_db 3.0.4-x86-mingw32 → 3.0.5-x86-mingw32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGES +4 -1
- data/LICENSE +1 -1
- data/MANIFEST +14 -14
- data/README +225 -225
- data/ext/Makefile.nt32 +181 -181
- data/ext/Makefile.nt32.191 +212 -212
- data/ext/extconf.rb +291 -291
- data/ext/ibm_db.c +11887 -11884
- data/ext/ruby_ibm_db.h +241 -241
- data/ext/ruby_ibm_db_cli.c +866 -866
- data/ext/ruby_ibm_db_cli.h +500 -500
- data/init.rb +41 -41
- data/lib/IBM_DB.rb +27 -27
- data/lib/active_record/connection_adapters/ibm_db_adapter.rb +3177 -3177
- data/lib/active_record/connection_adapters/ibmdb_adapter.rb +1 -1
- data/lib/active_record/vendor/db2-i5-zOS.yaml +328 -328
- data/lib/mswin32/ibm_db.rb +122 -122
- data/lib/mswin32/rb21x/i386/ibm_db.so +0 -0
- data/lib/mswin32/rb22x/i386/ibm_db.so +0 -0
- data/lib/mswin32/rb23x/i386/ibm_db.so +0 -0
- data/test/active_record/connection_adapters/fake_adapter.rb +46 -46
- data/test/assets/example.log +1 -1
- data/test/assets/test.txt +1 -1
- data/test/cases/adapter_test.rb +276 -261
- data/test/cases/aggregations_test.rb +158 -158
- data/test/cases/ar_schema_test.rb +161 -161
- data/test/cases/associations/association_scope_test.rb +21 -21
- data/test/cases/associations/belongs_to_associations_test.rb +1029 -1029
- data/test/cases/associations/callbacks_test.rb +192 -192
- data/test/cases/associations/cascaded_eager_loading_test.rb +188 -188
- data/test/cases/associations/deprecated_counter_cache_on_has_many_through_test.rb +26 -26
- data/test/cases/associations/eager_load_includes_full_sti_class_test.rb +36 -36
- data/test/cases/associations/eager_load_nested_include_test.rb +128 -128
- data/test/cases/associations/eager_singularization_test.rb +148 -148
- data/test/cases/associations/eager_test.rb +1429 -1411
- data/test/cases/associations/extension_test.rb +82 -82
- data/test/cases/associations/has_and_belongs_to_many_associations_test.rb +972 -932
- data/test/cases/associations/has_many_associations_test.rb +2182 -2162
- data/test/cases/associations/has_many_through_associations_test.rb +1204 -1204
- data/test/cases/associations/has_one_associations_test.rb +610 -610
- data/test/cases/associations/has_one_through_associations_test.rb +380 -380
- data/test/cases/associations/inner_join_association_test.rb +139 -139
- data/test/cases/associations/inverse_associations_test.rb +706 -693
- data/test/cases/associations/join_model_test.rb +754 -754
- data/test/cases/associations/nested_through_associations_test.rb +579 -579
- data/test/cases/associations/required_test.rb +82 -82
- data/test/cases/associations_test.rb +380 -380
- data/test/cases/attribute_decorators_test.rb +125 -125
- data/test/cases/attribute_methods/read_test.rb +60 -60
- data/test/cases/attribute_methods/serialization_test.rb +29 -29
- data/test/cases/attribute_methods_test.rb +952 -952
- data/test/cases/attribute_set_test.rb +210 -200
- data/test/cases/attribute_test.rb +180 -180
- data/test/cases/attributes_test.rb +136 -136
- data/test/cases/autosave_association_test.rb +1595 -1595
- data/test/cases/base_test.rb +1664 -1638
- data/test/cases/batches_test.rb +212 -212
- data/test/cases/binary_test.rb +52 -52
- data/test/cases/bind_parameter_test.rb +100 -100
- data/test/cases/calculations_test.rb +646 -646
- data/test/cases/callbacks_test.rb +543 -543
- data/test/cases/clone_test.rb +40 -40
- data/test/cases/coders/yaml_column_test.rb +63 -63
- data/test/cases/column_alias_test.rb +17 -17
- data/test/cases/column_definition_test.rb +123 -123
- data/test/cases/connection_adapters/adapter_leasing_test.rb +54 -54
- data/test/cases/connection_adapters/connection_handler_test.rb +53 -53
- data/test/cases/connection_adapters/connection_specification_test.rb +12 -12
- data/test/cases/connection_adapters/merge_and_resolve_default_url_config_test.rb +293 -293
- data/test/cases/connection_adapters/mysql_type_lookup_test.rb +65 -65
- data/test/cases/connection_adapters/quoting_test.rb +13 -13
- data/test/cases/connection_adapters/schema_cache_test.rb +56 -56
- data/test/cases/connection_adapters/type_lookup_test.rb +110 -110
- data/test/cases/connection_management_test.rb +122 -122
- data/test/cases/connection_pool_test.rb +346 -346
- data/test/cases/connection_specification/resolver_test.rb +116 -116
- data/test/cases/core_test.rb +112 -112
- data/test/cases/counter_cache_test.rb +209 -209
- data/test/cases/custom_locking_test.rb +17 -17
- data/test/cases/database_statements_test.rb +19 -19
- data/test/cases/date_time_test.rb +61 -61
- data/test/cases/defaults_test.rb +223 -223
- data/test/cases/dirty_test.rb +785 -775
- data/test/cases/disconnected_test.rb +28 -28
- data/test/cases/dup_test.rb +157 -157
- data/test/cases/enum_test.rb +290 -290
- data/test/cases/explain_subscriber_test.rb +64 -64
- data/test/cases/explain_test.rb +76 -76
- data/test/cases/finder_respond_to_test.rb +60 -60
- data/test/cases/finder_test.rb +1169 -1166
- data/test/cases/fixture_set/file_test.rb +138 -138
- data/test/cases/fixtures_test.rb +908 -897
- data/test/cases/forbidden_attributes_protection_test.rb +99 -99
- data/test/cases/habtm_destroy_order_test.rb +61 -61
- data/test/cases/helper.rb +210 -210
- data/test/cases/hot_compatibility_test.rb +54 -54
- data/test/cases/i18n_test.rb +45 -45
- data/test/cases/inheritance_test.rb +375 -375
- data/test/cases/integration_test.rb +139 -139
- data/test/cases/invalid_connection_test.rb +22 -22
- data/test/cases/invalid_date_test.rb +32 -32
- data/test/cases/invertible_migration_test.rb +295 -295
- data/test/cases/json_serialization_test.rb +302 -302
- data/test/cases/locking_test.rb +477 -477
- data/test/cases/log_subscriber_test.rb +136 -136
- data/test/cases/migration/change_schema_test - Copy.rb +448 -448
- data/test/cases/migration/change_schema_test.rb +512 -472
- data/test/cases/migration/change_table_test.rb +224 -224
- data/test/cases/migration/column_attributes_test.rb +192 -192
- data/test/cases/migration/column_positioning_test.rb +56 -56
- data/test/cases/migration/columns_test.rb +304 -304
- data/test/cases/migration/command_recorder_test.rb +305 -305
- data/test/cases/migration/create_join_table_test.rb +148 -148
- data/test/cases/migration/foreign_key_test - Changed.rb +325 -325
- data/test/cases/migration/foreign_key_test.rb +328 -360
- data/test/cases/migration/helper.rb +39 -39
- data/test/cases/migration/index_test.rb +216 -216
- data/test/cases/migration/logger_test.rb +36 -36
- data/test/cases/migration/pending_migrations_test.rb +53 -53
- data/test/cases/migration/references_foreign_key_test.rb +169 -214
- data/test/cases/migration/references_index_test.rb +101 -101
- data/test/cases/migration/references_statements_test.rb +116 -116
- data/test/cases/migration/rename_table_test.rb +93 -93
- data/test/cases/migration/table_and_index_test.rb +24 -24
- data/test/cases/migration_test.rb +959 -959
- data/test/cases/migrator_test.rb +388 -388
- data/test/cases/mixin_test.rb +70 -70
- data/test/cases/modules_test.rb +173 -173
- data/test/cases/multiparameter_attributes_test.rb +350 -350
- data/test/cases/multiple_db_test.rb +115 -115
- data/test/cases/nested_attributes_test.rb +1070 -1057
- data/test/cases/nested_attributes_with_callbacks_test.rb +144 -144
- data/test/cases/persistence_test.rb +909 -909
- data/test/cases/pooled_connections_test.rb +81 -81
- data/test/cases/primary_keys_test.rb +237 -237
- data/test/cases/query_cache_test.rb +326 -326
- data/test/cases/quoting_test.rb +156 -156
- data/test/cases/readonly_test.rb +118 -118
- data/test/cases/reaper_test.rb +85 -85
- data/test/cases/reflection_test.rb +463 -454
- data/test/cases/relation/delegation_test.rb +68 -68
- data/test/cases/relation/merging_test.rb +161 -161
- data/test/cases/relation/mutation_test.rb +165 -165
- data/test/cases/relation/predicate_builder_test.rb +14 -14
- data/test/cases/relation/where_chain_test.rb +181 -181
- data/test/cases/relation/where_test.rb +300 -300
- data/test/cases/relation/where_test2.rb +36 -36
- data/test/cases/relation_test.rb +319 -297
- data/test/cases/relations_test.rb +1815 -1815
- data/test/cases/reload_models_test.rb +22 -22
- data/test/cases/result_test.rb +80 -80
- data/test/cases/sanitize_test.rb +83 -83
- data/test/cases/schema_dumper_test.rb +463 -463
- data/test/cases/scoping/default_scoping_test.rb +454 -454
- data/test/cases/scoping/named_scoping_test.rb +524 -524
- data/test/cases/scoping/relation_scoping_test.rb +357 -357
- data/test/cases/serialization_test.rb +104 -104
- data/test/cases/serialized_attribute_test.rb +277 -277
- data/test/cases/statement_cache_test.rb +98 -98
- data/test/cases/store_test.rb +194 -194
- data/test/cases/tasks/database_tasks_test.rb +398 -396
- data/test/cases/tasks/mysql_rake_test.rb +324 -311
- data/test/cases/tasks/postgresql_rake_test.rb +250 -245
- data/test/cases/tasks/sqlite_rake_test.rb +193 -193
- data/test/cases/test_case.rb +123 -123
- data/test/cases/timestamp_test.rb +467 -468
- data/test/cases/transaction_callbacks_test.rb +452 -452
- data/test/cases/transaction_isolation_test.rb +106 -106
- data/test/cases/transactions_test.rb +817 -817
- data/test/cases/type/decimal_test.rb +56 -51
- data/test/cases/type/integer_test.rb +121 -121
- data/test/cases/type/string_test.rb +36 -36
- data/test/cases/type/type_map_test.rb +177 -177
- data/test/cases/type/unsigned_integer_test.rb +18 -18
- data/test/cases/types_test.rb +141 -141
- data/test/cases/unconnected_test.rb +33 -33
- data/test/cases/validations/association_validation_test.rb +86 -86
- data/test/cases/validations/i18n_generate_message_validation_test.rb +84 -84
- data/test/cases/validations/i18n_validation_test.rb +90 -90
- data/test/cases/validations/length_validation_test.rb +47 -47
- data/test/cases/validations/presence_validation_test.rb +68 -68
- data/test/cases/validations/uniqueness_validation_test.rb +457 -434
- data/test/cases/validations_repair_helper.rb +23 -23
- data/test/cases/validations_test.rb +165 -165
- data/test/cases/view_test.rb +119 -113
- data/test/cases/xml_serialization_test.rb +457 -457
- data/test/cases/yaml_serialization_test.rb +126 -86
- data/test/config.rb +5 -5
- data/test/config.yml +154 -154
- data/test/connections/native_ibm_db/connection.rb +43 -43
- data/test/fixtures/accounts.yml +29 -29
- data/test/fixtures/admin/accounts.yml +2 -2
- data/test/fixtures/admin/randomly_named_a9.yml +7 -7
- data/test/fixtures/admin/randomly_named_b0.yml +7 -7
- data/test/fixtures/admin/users.yml +10 -10
- data/test/fixtures/author_addresses.yml +17 -17
- data/test/fixtures/author_favorites.yml +3 -3
- data/test/fixtures/authors.yml +23 -23
- data/test/fixtures/binaries.yml +133 -133
- data/test/fixtures/books.yml +11 -11
- data/test/fixtures/bulbs.yml +5 -5
- data/test/fixtures/cars.yml +9 -9
- data/test/fixtures/categories.yml +19 -19
- data/test/fixtures/categories/special_categories.yml +9 -9
- data/test/fixtures/categories/subsubdir/arbitrary_filename.yml +4 -4
- data/test/fixtures/categories_ordered.yml +7 -7
- data/test/fixtures/categories_posts.yml +31 -31
- data/test/fixtures/categorizations.yml +23 -23
- data/test/fixtures/clubs.yml +8 -8
- data/test/fixtures/collections.yml +3 -3
- data/test/fixtures/colleges.yml +3 -3
- data/test/fixtures/comments.yml +65 -65
- data/test/fixtures/companies.yml +67 -67
- data/test/fixtures/computers.yml +10 -10
- data/test/fixtures/courses.yml +8 -8
- data/test/fixtures/customers.yml +25 -25
- data/test/fixtures/dashboards.yml +6 -6
- data/test/fixtures/developers.yml +21 -21
- data/test/fixtures/developers_projects.yml +16 -16
- data/test/fixtures/dog_lovers.yml +7 -7
- data/test/fixtures/dogs.yml +4 -4
- data/test/fixtures/doubloons.yml +3 -3
- data/test/fixtures/edges.yml +5 -5
- data/test/fixtures/entrants.yml +14 -14
- data/test/fixtures/essays.yml +6 -6
- data/test/fixtures/faces.yml +11 -11
- data/test/fixtures/fk_test_has_fk.yml +3 -3
- data/test/fixtures/fk_test_has_pk.yml +1 -1
- data/test/fixtures/friendships.yml +4 -4
- data/test/fixtures/funny_jokes.yml +10 -10
- data/test/fixtures/interests.yml +33 -33
- data/test/fixtures/items.yml +3 -3
- data/test/fixtures/jobs.yml +7 -7
- data/test/fixtures/legacy_things.yml +3 -3
- data/test/fixtures/mateys.yml +4 -4
- data/test/fixtures/member_details.yml +8 -8
- data/test/fixtures/member_types.yml +6 -6
- data/test/fixtures/members.yml +11 -11
- data/test/fixtures/memberships.yml +34 -34
- data/test/fixtures/men.yml +5 -5
- data/test/fixtures/minimalistics.yml +2 -2
- data/test/fixtures/minivans.yml +5 -5
- data/test/fixtures/mixed_case_monkeys.yml +6 -6
- data/test/fixtures/mixins.yml +29 -29
- data/test/fixtures/movies.yml +7 -7
- data/test/fixtures/naked/csv/accounts.csv +1 -1
- data/test/fixtures/naked/yml/accounts.yml +1 -1
- data/test/fixtures/naked/yml/companies.yml +1 -1
- data/test/fixtures/naked/yml/courses.yml +1 -1
- data/test/fixtures/organizations.yml +5 -5
- data/test/fixtures/other_topics.yml +42 -42
- data/test/fixtures/owners.yml +9 -9
- data/test/fixtures/parrots.yml +27 -27
- data/test/fixtures/parrots_pirates.yml +7 -7
- data/test/fixtures/people.yml +24 -24
- data/test/fixtures/peoples_treasures.yml +3 -3
- data/test/fixtures/pets.yml +19 -19
- data/test/fixtures/pirates.yml +12 -12
- data/test/fixtures/posts.yml +80 -80
- data/test/fixtures/price_estimates.yml +7 -7
- data/test/fixtures/products.yml +4 -4
- data/test/fixtures/projects.yml +7 -7
- data/test/fixtures/randomly_named_a9.yml +7 -7
- data/test/fixtures/ratings.yml +14 -14
- data/test/fixtures/readers.yml +11 -11
- data/test/fixtures/references.yml +17 -17
- data/test/fixtures/reserved_words/distinct.yml +5 -5
- data/test/fixtures/reserved_words/distinct_select.yml +11 -11
- data/test/fixtures/reserved_words/group.yml +14 -14
- data/test/fixtures/reserved_words/select.yml +8 -8
- data/test/fixtures/reserved_words/values.yml +7 -7
- data/test/fixtures/ships.yml +6 -6
- data/test/fixtures/speedometers.yml +8 -8
- data/test/fixtures/sponsors.yml +12 -12
- data/test/fixtures/string_key_objects.yml +7 -7
- data/test/fixtures/subscribers.yml +10 -10
- data/test/fixtures/subscriptions.yml +12 -12
- data/test/fixtures/taggings.yml +78 -78
- data/test/fixtures/tags.yml +11 -11
- data/test/fixtures/tasks.yml +7 -7
- data/test/fixtures/teapots.yml +3 -3
- data/test/fixtures/to_be_linked/accounts.yml +2 -2
- data/test/fixtures/to_be_linked/users.yml +10 -10
- data/test/fixtures/topics.yml +49 -49
- data/test/fixtures/toys.yml +14 -14
- data/test/fixtures/traffic_lights.yml +9 -9
- data/test/fixtures/treasures.yml +10 -10
- data/test/fixtures/uuid_children.yml +3 -3
- data/test/fixtures/uuid_parents.yml +2 -2
- data/test/fixtures/variants.yml +4 -4
- data/test/fixtures/vegetables.yml +19 -19
- data/test/fixtures/vertices.yml +3 -3
- data/test/fixtures/warehouse_things.yml +2 -2
- data/test/fixtures/zines.yml +5 -5
- data/test/ibm_db_test.rb +24 -24
- data/test/migrations/10_urban/9_add_expressions.rb +11 -11
- data/test/migrations/decimal/1_give_me_big_numbers.rb +15 -15
- data/test/migrations/magic/1_currencies_have_symbols.rb +12 -12
- data/test/migrations/missing/1000_people_have_middle_names.rb +8 -8
- data/test/migrations/missing/1_people_have_last_names.rb +8 -8
- data/test/migrations/missing/3_we_need_reminders.rb +11 -11
- data/test/migrations/missing/4_innocent_jointable.rb +11 -11
- data/test/migrations/rename/1_we_need_things.rb +10 -10
- data/test/migrations/rename/2_rename_things.rb +8 -8
- data/test/migrations/to_copy/1_people_have_hobbies.rb +9 -9
- data/test/migrations/to_copy/2_people_have_descriptions.rb +9 -9
- data/test/migrations/to_copy2/1_create_articles.rb +7 -7
- data/test/migrations/to_copy2/2_create_comments.rb +7 -7
- data/test/migrations/to_copy_with_name_collision/1_people_have_hobbies.rb +9 -9
- data/test/migrations/to_copy_with_timestamps/20090101010101_people_have_hobbies.rb +9 -9
- data/test/migrations/to_copy_with_timestamps/20090101010202_people_have_descriptions.rb +9 -9
- data/test/migrations/to_copy_with_timestamps2/20090101010101_create_articles.rb +7 -7
- data/test/migrations/to_copy_with_timestamps2/20090101010202_create_comments.rb +7 -7
- data/test/migrations/valid/1_valid_people_have_last_names.rb +9 -9
- data/test/migrations/valid/2_we_need_reminders.rb +11 -11
- data/test/migrations/valid/3_innocent_jointable.rb +11 -11
- data/test/migrations/valid_with_subdirectories/1_valid_people_have_last_names.rb +9 -9
- data/test/migrations/valid_with_subdirectories/sub/2_we_need_reminders.rb +11 -11
- data/test/migrations/valid_with_subdirectories/sub1/3_innocent_jointable.rb +11 -11
- data/test/migrations/valid_with_timestamps/20100101010101_valid_with_timestamps_people_have_last_names.rb +9 -9
- data/test/migrations/valid_with_timestamps/20100201010101_valid_with_timestamps_we_need_reminders.rb +12 -12
- data/test/migrations/valid_with_timestamps/20100301010101_valid_with_timestamps_innocent_jointable.rb +12 -12
- data/test/migrations/version_check/20131219224947_migration_version_check.rb +8 -8
- data/test/models/admin.rb +4 -4
- data/test/models/admin/account.rb +2 -2
- data/test/models/admin/randomly_named_c1.rb +3 -3
- data/test/models/admin/user.rb +40 -40
- data/test/models/aircraft.rb +4 -4
- data/test/models/arunit2_model.rb +3 -3
- data/test/models/author.rb +212 -212
- data/test/models/auto_id.rb +4 -4
- data/test/models/autoloadable/extra_firm.rb +2 -2
- data/test/models/binary.rb +1 -1
- data/test/models/bird.rb +12 -12
- data/test/models/book.rb +18 -18
- data/test/models/boolean.rb +2 -2
- data/test/models/bulb.rb +51 -51
- data/test/models/cake_designer.rb +3 -3
- data/test/models/car.rb +26 -26
- data/test/models/carrier.rb +2 -2
- data/test/models/categorization.rb +19 -19
- data/test/models/category.rb +35 -35
- data/test/models/chef.rb +7 -3
- data/test/models/citation.rb +3 -3
- data/test/models/club.rb +23 -23
- data/test/models/college.rb +10 -10
- data/test/models/column.rb +3 -3
- data/test/models/column_name.rb +3 -3
- data/test/models/comment.rb +64 -64
- data/test/models/company.rb +228 -225
- data/test/models/company_in_module.rb +98 -98
- data/test/models/computer.rb +3 -3
- data/test/models/contact.rb +41 -41
- data/test/models/contract.rb +20 -20
- data/test/models/country.rb +7 -7
- data/test/models/course.rb +6 -6
- data/test/models/customer.rb +77 -77
- data/test/models/customer_carrier.rb +14 -14
- data/test/models/dashboard.rb +3 -3
- data/test/models/default.rb +2 -2
- data/test/models/department.rb +4 -4
- data/test/models/developer.rb +255 -252
- data/test/models/dog.rb +5 -5
- data/test/models/dog_lover.rb +5 -5
- data/test/models/doubloon.rb +12 -12
- data/test/models/drink_designer.rb +3 -3
- data/test/models/edge.rb +5 -5
- data/test/models/electron.rb +5 -5
- data/test/models/engine.rb +4 -4
- data/test/models/entrant.rb +3 -3
- data/test/models/essay.rb +5 -5
- data/test/models/event.rb +2 -2
- data/test/models/eye.rb +37 -37
- data/test/models/face.rb +9 -9
- data/test/models/friendship.rb +6 -6
- data/test/models/guid.rb +1 -1
- data/test/models/hotel.rb +9 -6
- data/test/models/image.rb +3 -3
- data/test/models/interest.rb +5 -5
- data/test/models/invoice.rb +4 -4
- data/test/models/item.rb +7 -7
- data/test/models/job.rb +7 -7
- data/test/models/joke.rb +7 -7
- data/test/models/keyboard.rb +3 -3
- data/test/models/legacy_thing.rb +3 -3
- data/test/models/lesson.rb +11 -11
- data/test/models/line_item.rb +3 -3
- data/test/models/liquid.rb +4 -4
- data/test/models/man.rb +11 -11
- data/test/models/matey.rb +4 -4
- data/test/models/member.rb +41 -41
- data/test/models/member_detail.rb +7 -7
- data/test/models/member_type.rb +3 -3
- data/test/models/membership.rb +35 -35
- data/test/models/minimalistic.rb +2 -2
- data/test/models/minivan.rb +9 -9
- data/test/models/mixed_case_monkey.rb +3 -3
- data/test/models/molecule.rb +6 -6
- data/test/models/movie.rb +5 -5
- data/test/models/order.rb +4 -4
- data/test/models/organization.rb +14 -14
- data/test/models/owner.rb +34 -34
- data/test/models/parrot.rb +29 -29
- data/test/models/person.rb +143 -143
- data/test/models/personal_legacy_thing.rb +4 -4
- data/test/models/pet.rb +15 -15
- data/test/models/pirate.rb +92 -92
- data/test/models/possession.rb +3 -3
- data/test/models/post.rb +264 -264
- data/test/models/price_estimate.rb +4 -4
- data/test/models/professor.rb +5 -5
- data/test/models/project.rb +31 -29
- data/test/models/publisher.rb +2 -2
- data/test/models/publisher/article.rb +4 -4
- data/test/models/publisher/magazine.rb +3 -3
- data/test/models/randomly_named_c1.rb +3 -3
- data/test/models/rating.rb +4 -4
- data/test/models/reader.rb +23 -23
- data/test/models/record.rb +2 -2
- data/test/models/reference.rb +22 -22
- data/test/models/reply.rb +61 -61
- data/test/models/ship.rb +33 -33
- data/test/models/ship_part.rb +7 -7
- data/test/models/shop.rb +17 -17
- data/test/models/shop_account.rb +6 -6
- data/test/models/speedometer.rb +6 -6
- data/test/models/sponsor.rb +7 -7
- data/test/models/string_key_object.rb +3 -3
- data/test/models/student.rb +4 -4
- data/test/models/subject.rb +16 -16
- data/test/models/subscriber.rb +8 -8
- data/test/models/subscription.rb +4 -4
- data/test/models/tag.rb +7 -7
- data/test/models/tagging.rb +13 -13
- data/test/models/task.rb +5 -5
- data/test/models/topic.rb +124 -124
- data/test/models/toy.rb +6 -6
- data/test/models/traffic_light.rb +4 -4
- data/test/models/treasure.rb +14 -14
- data/test/models/treaty.rb +7 -7
- data/test/models/tyre.rb +11 -11
- data/test/models/uuid_child.rb +3 -3
- data/test/models/uuid_parent.rb +3 -3
- data/test/models/vegetables.rb +24 -24
- data/test/models/vehicle.rb +6 -6
- data/test/models/vertex.rb +9 -9
- data/test/models/warehouse_thing.rb +5 -5
- data/test/models/wheel.rb +3 -3
- data/test/models/without_table.rb +3 -3
- data/test/models/zine.rb +3 -3
- data/test/schema/mysql2_specific_schema.rb +58 -58
- data/test/schema/mysql_specific_schema.rb +70 -70
- data/test/schema/oracle_specific_schema.rb +43 -43
- data/test/schema/postgresql_specific_schema.rb +202 -202
- data/test/schema/schema.rb +952 -938
- data/test/schema/sqlite_specific_schema.rb +21 -21
- data/test/support/config.rb +43 -43
- data/test/support/connection.rb +22 -22
- data/test/support/connection_helper.rb +14 -14
- data/test/support/ddl_helper.rb +8 -8
- data/test/support/schema_dumping_helper.rb +20 -20
- metadata +2 -2
@@ -1,54 +1,54 @@
|
|
1
|
-
require "cases/helper"
|
2
|
-
|
3
|
-
module ActiveRecord
|
4
|
-
module ConnectionAdapters
|
5
|
-
class AdapterLeasingTest < ActiveRecord::TestCase
|
6
|
-
class Pool < ConnectionPool
|
7
|
-
def insert_connection_for_test!(c)
|
8
|
-
synchronize do
|
9
|
-
@connections << c
|
10
|
-
@available.add c
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
def setup
|
16
|
-
@adapter = AbstractAdapter.new nil, nil
|
17
|
-
end
|
18
|
-
|
19
|
-
def test_in_use?
|
20
|
-
assert_not @adapter.in_use?, 'adapter is not in use'
|
21
|
-
assert @adapter.lease, 'lease adapter'
|
22
|
-
assert @adapter.in_use?, 'adapter is in use'
|
23
|
-
end
|
24
|
-
|
25
|
-
def test_lease_twice
|
26
|
-
assert @adapter.lease, 'should lease adapter'
|
27
|
-
assert_not @adapter.lease, 'should not lease adapter'
|
28
|
-
end
|
29
|
-
|
30
|
-
def test_expire_mutates_in_use
|
31
|
-
assert @adapter.lease, 'lease adapter'
|
32
|
-
assert @adapter.in_use?, 'adapter is in use'
|
33
|
-
@adapter.expire
|
34
|
-
assert_not @adapter.in_use?, 'adapter is in use'
|
35
|
-
end
|
36
|
-
|
37
|
-
def test_close
|
38
|
-
pool = Pool.new(ConnectionSpecification.new({}, nil))
|
39
|
-
pool.insert_connection_for_test! @adapter
|
40
|
-
@adapter.pool = pool
|
41
|
-
|
42
|
-
# Make sure the pool marks the connection in use
|
43
|
-
assert_equal @adapter, pool.connection
|
44
|
-
assert @adapter.in_use?
|
45
|
-
|
46
|
-
# Close should put the adapter back in the pool
|
47
|
-
@adapter.close
|
48
|
-
assert_not @adapter.in_use?
|
49
|
-
|
50
|
-
assert_equal @adapter, pool.connection
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
1
|
+
require "cases/helper"
|
2
|
+
|
3
|
+
module ActiveRecord
|
4
|
+
module ConnectionAdapters
|
5
|
+
class AdapterLeasingTest < ActiveRecord::TestCase
|
6
|
+
class Pool < ConnectionPool
|
7
|
+
def insert_connection_for_test!(c)
|
8
|
+
synchronize do
|
9
|
+
@connections << c
|
10
|
+
@available.add c
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def setup
|
16
|
+
@adapter = AbstractAdapter.new nil, nil
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_in_use?
|
20
|
+
assert_not @adapter.in_use?, 'adapter is not in use'
|
21
|
+
assert @adapter.lease, 'lease adapter'
|
22
|
+
assert @adapter.in_use?, 'adapter is in use'
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_lease_twice
|
26
|
+
assert @adapter.lease, 'should lease adapter'
|
27
|
+
assert_not @adapter.lease, 'should not lease adapter'
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_expire_mutates_in_use
|
31
|
+
assert @adapter.lease, 'lease adapter'
|
32
|
+
assert @adapter.in_use?, 'adapter is in use'
|
33
|
+
@adapter.expire
|
34
|
+
assert_not @adapter.in_use?, 'adapter is in use'
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_close
|
38
|
+
pool = Pool.new(ConnectionSpecification.new({}, nil))
|
39
|
+
pool.insert_connection_for_test! @adapter
|
40
|
+
@adapter.pool = pool
|
41
|
+
|
42
|
+
# Make sure the pool marks the connection in use
|
43
|
+
assert_equal @adapter, pool.connection
|
44
|
+
assert @adapter.in_use?
|
45
|
+
|
46
|
+
# Close should put the adapter back in the pool
|
47
|
+
@adapter.close
|
48
|
+
assert_not @adapter.in_use?
|
49
|
+
|
50
|
+
assert_equal @adapter, pool.connection
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -1,53 +1,53 @@
|
|
1
|
-
require "cases/helper"
|
2
|
-
|
3
|
-
module ActiveRecord
|
4
|
-
module ConnectionAdapters
|
5
|
-
class ConnectionHandlerTest < ActiveRecord::TestCase
|
6
|
-
def setup
|
7
|
-
@klass = Class.new(Base) { def self.name; 'klass'; end }
|
8
|
-
@subklass = Class.new(@klass) { def self.name; 'subklass'; end }
|
9
|
-
|
10
|
-
@handler = ConnectionHandler.new
|
11
|
-
@pool = @handler.establish_connection(@klass, Base.connection_pool.spec)
|
12
|
-
end
|
13
|
-
|
14
|
-
def test_retrieve_connection
|
15
|
-
assert @handler.retrieve_connection(@klass)
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_active_connections?
|
19
|
-
assert !@handler.active_connections?
|
20
|
-
assert @handler.retrieve_connection(@klass)
|
21
|
-
assert @handler.active_connections?
|
22
|
-
@handler.clear_active_connections!
|
23
|
-
assert !@handler.active_connections?
|
24
|
-
end
|
25
|
-
|
26
|
-
def test_retrieve_connection_pool_with_ar_base
|
27
|
-
assert_nil @handler.retrieve_connection_pool(ActiveRecord::Base)
|
28
|
-
end
|
29
|
-
|
30
|
-
def test_retrieve_connection_pool
|
31
|
-
assert_not_nil @handler.retrieve_connection_pool(@klass)
|
32
|
-
end
|
33
|
-
|
34
|
-
def test_retrieve_connection_pool_uses_superclass_when_no_subclass_connection
|
35
|
-
assert_not_nil @handler.retrieve_connection_pool(@subklass)
|
36
|
-
end
|
37
|
-
|
38
|
-
def test_retrieve_connection_pool_uses_superclass_pool_after_subclass_establish_and_remove
|
39
|
-
sub_pool = @handler.establish_connection(@subklass, Base.connection_pool.spec)
|
40
|
-
assert_same sub_pool, @handler.retrieve_connection_pool(@subklass)
|
41
|
-
|
42
|
-
@handler.remove_connection @subklass
|
43
|
-
assert_same @pool, @handler.retrieve_connection_pool(@subklass)
|
44
|
-
end
|
45
|
-
|
46
|
-
def test_connection_pools
|
47
|
-
assert_deprecated do
|
48
|
-
assert_equal({ Base.connection_pool.spec => @pool }, @handler.connection_pools)
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
1
|
+
require "cases/helper"
|
2
|
+
|
3
|
+
module ActiveRecord
|
4
|
+
module ConnectionAdapters
|
5
|
+
class ConnectionHandlerTest < ActiveRecord::TestCase
|
6
|
+
def setup
|
7
|
+
@klass = Class.new(Base) { def self.name; 'klass'; end }
|
8
|
+
@subklass = Class.new(@klass) { def self.name; 'subklass'; end }
|
9
|
+
|
10
|
+
@handler = ConnectionHandler.new
|
11
|
+
@pool = @handler.establish_connection(@klass, Base.connection_pool.spec)
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_retrieve_connection
|
15
|
+
assert @handler.retrieve_connection(@klass)
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_active_connections?
|
19
|
+
assert !@handler.active_connections?
|
20
|
+
assert @handler.retrieve_connection(@klass)
|
21
|
+
assert @handler.active_connections?
|
22
|
+
@handler.clear_active_connections!
|
23
|
+
assert !@handler.active_connections?
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_retrieve_connection_pool_with_ar_base
|
27
|
+
assert_nil @handler.retrieve_connection_pool(ActiveRecord::Base)
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_retrieve_connection_pool
|
31
|
+
assert_not_nil @handler.retrieve_connection_pool(@klass)
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_retrieve_connection_pool_uses_superclass_when_no_subclass_connection
|
35
|
+
assert_not_nil @handler.retrieve_connection_pool(@subklass)
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_retrieve_connection_pool_uses_superclass_pool_after_subclass_establish_and_remove
|
39
|
+
sub_pool = @handler.establish_connection(@subklass, Base.connection_pool.spec)
|
40
|
+
assert_same sub_pool, @handler.retrieve_connection_pool(@subklass)
|
41
|
+
|
42
|
+
@handler.remove_connection @subklass
|
43
|
+
assert_same @pool, @handler.retrieve_connection_pool(@subklass)
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_connection_pools
|
47
|
+
assert_deprecated do
|
48
|
+
assert_equal({ Base.connection_pool.spec => @pool }, @handler.connection_pools)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -1,12 +1,12 @@
|
|
1
|
-
require "cases/helper"
|
2
|
-
|
3
|
-
module ActiveRecord
|
4
|
-
module ConnectionAdapters
|
5
|
-
class ConnectionSpecificationTest < ActiveRecord::TestCase
|
6
|
-
def test_dup_deep_copy_config
|
7
|
-
spec = ConnectionSpecification.new({ :a => :b }, "bar")
|
8
|
-
assert_not_equal(spec.config.object_id, spec.dup.config.object_id)
|
9
|
-
end
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
1
|
+
require "cases/helper"
|
2
|
+
|
3
|
+
module ActiveRecord
|
4
|
+
module ConnectionAdapters
|
5
|
+
class ConnectionSpecificationTest < ActiveRecord::TestCase
|
6
|
+
def test_dup_deep_copy_config
|
7
|
+
spec = ConnectionSpecification.new({ :a => :b }, "bar")
|
8
|
+
assert_not_equal(spec.config.object_id, spec.dup.config.object_id)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -1,293 +1,293 @@
|
|
1
|
-
require "cases/helper"
|
2
|
-
|
3
|
-
module ActiveRecord
|
4
|
-
module ConnectionAdapters
|
5
|
-
class MergeAndResolveDefaultUrlConfigTest < ActiveRecord::TestCase
|
6
|
-
def setup
|
7
|
-
@previous_database_url = ENV.delete("DATABASE_URL")
|
8
|
-
@previous_rack_env = ENV.delete("RACK_ENV")
|
9
|
-
@previous_rails_env = ENV.delete("RAILS_ENV")
|
10
|
-
end
|
11
|
-
|
12
|
-
teardown do
|
13
|
-
ENV["DATABASE_URL"] = @previous_database_url
|
14
|
-
ENV["RACK_ENV"] = @previous_rack_env
|
15
|
-
ENV["RAILS_ENV"] = @previous_rails_env
|
16
|
-
end
|
17
|
-
|
18
|
-
def resolve_config(config)
|
19
|
-
ActiveRecord::ConnectionHandling::MergeAndResolveDefaultUrlConfig.new(config).resolve
|
20
|
-
end
|
21
|
-
|
22
|
-
def resolve_spec(spec, config)
|
23
|
-
ConnectionSpecification::Resolver.new(resolve_config(config)).resolve(spec)
|
24
|
-
end
|
25
|
-
|
26
|
-
def test_resolver_with_database_uri_and_current_env_symbol_key
|
27
|
-
ENV['DATABASE_URL'] = "postgres://localhost/foo"
|
28
|
-
config = { "not_production" => { "adapter" => "not_postgres", "database" => "not_foo" } }
|
29
|
-
actual = resolve_spec(:default_env, config)
|
30
|
-
expected = { "adapter"=>"postgresql", "database"=>"foo", "host"=>"localhost" }
|
31
|
-
assert_equal expected, actual
|
32
|
-
end
|
33
|
-
|
34
|
-
def test_resolver_with_database_uri_and_current_env_symbol_key_and_rails_env
|
35
|
-
ENV['DATABASE_URL'] = "postgres://localhost/foo"
|
36
|
-
ENV['RAILS_ENV'] = "foo"
|
37
|
-
|
38
|
-
config = { "not_production" => { "adapter" => "not_postgres", "database" => "not_foo" } }
|
39
|
-
actual = resolve_spec(:foo, config)
|
40
|
-
expected = { "adapter" => "postgresql", "database" => "foo", "host" => "localhost" }
|
41
|
-
assert_equal expected, actual
|
42
|
-
end
|
43
|
-
|
44
|
-
def test_resolver_with_database_uri_and_current_env_symbol_key_and_rack_env
|
45
|
-
ENV['DATABASE_URL'] = "postgres://localhost/foo"
|
46
|
-
ENV['RACK_ENV'] = "foo"
|
47
|
-
|
48
|
-
config = { "not_production" => { "adapter" => "not_postgres", "database" => "not_foo" } }
|
49
|
-
actual = resolve_spec(:foo, config)
|
50
|
-
expected = { "adapter" => "postgresql", "database" => "foo", "host" => "localhost" }
|
51
|
-
assert_equal expected, actual
|
52
|
-
end
|
53
|
-
|
54
|
-
def test_resolver_with_database_uri_and_and_current_env_string_key
|
55
|
-
ENV['DATABASE_URL'] = "postgres://localhost/foo"
|
56
|
-
config = { "default_env" => { "adapter" => "not_postgres", "database" => "not_foo" } }
|
57
|
-
actual = assert_deprecated { resolve_spec("default_env", config) }
|
58
|
-
expected = { "adapter"=>"postgresql", "database"=>"foo", "host"=>"localhost" }
|
59
|
-
assert_equal expected, actual
|
60
|
-
end
|
61
|
-
|
62
|
-
def test_resolver_with_database_uri_and_and_current_env_string_key_and_rails_env
|
63
|
-
ENV['DATABASE_URL'] = "postgres://localhost/foo"
|
64
|
-
ENV['RAILS_ENV'] = "foo"
|
65
|
-
|
66
|
-
config = { "not_production" => {"adapter" => "not_postgres", "database" => "not_foo" } }
|
67
|
-
actual = assert_deprecated { resolve_spec("foo", config) }
|
68
|
-
expected = { "adapter" => "postgresql", "database" => "foo", "host" => "localhost" }
|
69
|
-
assert_equal expected, actual
|
70
|
-
end
|
71
|
-
|
72
|
-
def test_resolver_with_database_uri_and_and_current_env_string_key_and_rack_env
|
73
|
-
ENV['DATABASE_URL'] = "postgres://localhost/foo"
|
74
|
-
ENV['RACK_ENV'] = "foo"
|
75
|
-
|
76
|
-
config = { "not_production" => {"adapter" => "not_postgres", "database" => "not_foo" } }
|
77
|
-
actual = assert_deprecated { resolve_spec("foo", config) }
|
78
|
-
expected = { "adapter" => "postgresql", "database" => "foo", "host" => "localhost" }
|
79
|
-
assert_equal expected, actual
|
80
|
-
end
|
81
|
-
|
82
|
-
def test_resolver_with_database_uri_and_known_key
|
83
|
-
ENV['DATABASE_URL'] = "postgres://localhost/foo"
|
84
|
-
config = { "production" => { "adapter" => "not_postgres", "database" => "not_foo", "host" => "localhost" } }
|
85
|
-
actual = resolve_spec(:production, config)
|
86
|
-
expected = { "adapter"=>"not_postgres", "database"=>"not_foo", "host"=>"localhost" }
|
87
|
-
assert_equal expected, actual
|
88
|
-
end
|
89
|
-
|
90
|
-
def test_resolver_with_database_uri_and_unknown_symbol_key
|
91
|
-
ENV['DATABASE_URL'] = "postgres://localhost/foo"
|
92
|
-
config = { "not_production" => { "adapter" => "not_postgres", "database" => "not_foo" } }
|
93
|
-
assert_raises AdapterNotSpecified do
|
94
|
-
resolve_spec(:production, config)
|
95
|
-
end
|
96
|
-
end
|
97
|
-
|
98
|
-
def test_resolver_with_database_uri_and_unknown_string_key
|
99
|
-
ENV['DATABASE_URL'] = "postgres://localhost/foo"
|
100
|
-
config = { "not_production" => { "adapter" => "not_postgres", "database" => "not_foo" } }
|
101
|
-
assert_deprecated do
|
102
|
-
assert_raises AdapterNotSpecified do
|
103
|
-
resolve_spec("production", config)
|
104
|
-
end
|
105
|
-
end
|
106
|
-
end
|
107
|
-
|
108
|
-
def test_resolver_with_database_uri_and_supplied_url
|
109
|
-
ENV['DATABASE_URL'] = "not-postgres://not-localhost/not_foo"
|
110
|
-
config = { "production" => { "adapter" => "also_not_postgres", "database" => "also_not_foo" } }
|
111
|
-
actual = resolve_spec("postgres://localhost/foo", config)
|
112
|
-
expected = { "adapter"=>"postgresql", "database"=>"foo", "host"=>"localhost" }
|
113
|
-
assert_equal expected, actual
|
114
|
-
end
|
115
|
-
|
116
|
-
def test_jdbc_url
|
117
|
-
config = { "production" => { "url" => "jdbc:postgres://localhost/foo" } }
|
118
|
-
actual = resolve_config(config)
|
119
|
-
assert_equal config, actual
|
120
|
-
end
|
121
|
-
|
122
|
-
def test_environment_does_not_exist_in_config_url_does_exist
|
123
|
-
ENV['DATABASE_URL'] = "postgres://localhost/foo"
|
124
|
-
config = { "not_default_env" => { "adapter" => "not_postgres", "database" => "not_foo" } }
|
125
|
-
actual = resolve_config(config)
|
126
|
-
expect_prod = { "adapter"=>"postgresql", "database"=>"foo", "host"=>"localhost" }
|
127
|
-
assert_equal expect_prod, actual["default_env"]
|
128
|
-
end
|
129
|
-
|
130
|
-
def test_url_with_hyphenated_scheme
|
131
|
-
ENV['DATABASE_URL'] = "ibm-db://localhost/foo"
|
132
|
-
config = { "default_env" => { "adapter" => "not_postgres", "database" => "not_foo", "host" => "localhost" } }
|
133
|
-
actual = resolve_spec(:default_env, config)
|
134
|
-
expected = { "adapter"=>"ibm_db", "database"=>"foo", "host"=>"localhost" }
|
135
|
-
assert_equal expected, actual
|
136
|
-
end
|
137
|
-
|
138
|
-
def test_string_connection
|
139
|
-
config = { "default_env" => "postgres://localhost/foo" }
|
140
|
-
actual = resolve_config(config)
|
141
|
-
expected = { "default_env" =>
|
142
|
-
{ "adapter" => "postgresql",
|
143
|
-
"database" => "foo",
|
144
|
-
"host" => "localhost"
|
145
|
-
}
|
146
|
-
}
|
147
|
-
assert_equal expected, actual
|
148
|
-
end
|
149
|
-
|
150
|
-
def test_url_sub_key
|
151
|
-
config = { "default_env" => { "url" => "postgres://localhost/foo" } }
|
152
|
-
actual = resolve_config(config)
|
153
|
-
expected = { "default_env" =>
|
154
|
-
{ "adapter" => "postgresql",
|
155
|
-
"database" => "foo",
|
156
|
-
"host" => "localhost"
|
157
|
-
}
|
158
|
-
}
|
159
|
-
assert_equal expected, actual
|
160
|
-
end
|
161
|
-
|
162
|
-
def test_hash
|
163
|
-
config = { "production" => { "adapter" => "postgres", "database" => "foo" } }
|
164
|
-
actual = resolve_config(config)
|
165
|
-
assert_equal config, actual
|
166
|
-
end
|
167
|
-
|
168
|
-
def test_blank
|
169
|
-
config = {}
|
170
|
-
actual = resolve_config(config)
|
171
|
-
assert_equal config, actual
|
172
|
-
end
|
173
|
-
|
174
|
-
def test_blank_with_database_url
|
175
|
-
ENV['DATABASE_URL'] = "postgres://localhost/foo"
|
176
|
-
|
177
|
-
config = {}
|
178
|
-
actual = resolve_config(config)
|
179
|
-
expected = { "adapter" => "postgresql",
|
180
|
-
"database" => "foo",
|
181
|
-
"host" => "localhost" }
|
182
|
-
assert_equal expected, actual["default_env"]
|
183
|
-
assert_equal nil, actual["production"]
|
184
|
-
assert_equal nil, actual["development"]
|
185
|
-
assert_equal nil, actual["test"]
|
186
|
-
assert_equal nil, actual[:default_env]
|
187
|
-
assert_equal nil, actual[:production]
|
188
|
-
assert_equal nil, actual[:development]
|
189
|
-
assert_equal nil, actual[:test]
|
190
|
-
end
|
191
|
-
|
192
|
-
def test_blank_with_database_url_with_rails_env
|
193
|
-
ENV['RAILS_ENV'] = "not_production"
|
194
|
-
ENV['DATABASE_URL'] = "postgres://localhost/foo"
|
195
|
-
|
196
|
-
config = {}
|
197
|
-
actual = resolve_config(config)
|
198
|
-
expected = { "adapter" => "postgresql",
|
199
|
-
"database" => "foo",
|
200
|
-
"host" => "localhost" }
|
201
|
-
|
202
|
-
assert_equal expected, actual["not_production"]
|
203
|
-
assert_equal nil, actual["production"]
|
204
|
-
assert_equal nil, actual["default_env"]
|
205
|
-
assert_equal nil, actual["development"]
|
206
|
-
assert_equal nil, actual["test"]
|
207
|
-
assert_equal nil, actual[:default_env]
|
208
|
-
assert_equal nil, actual[:not_production]
|
209
|
-
assert_equal nil, actual[:production]
|
210
|
-
assert_equal nil, actual[:development]
|
211
|
-
assert_equal nil, actual[:test]
|
212
|
-
end
|
213
|
-
|
214
|
-
def test_blank_with_database_url_with_rack_env
|
215
|
-
ENV['RACK_ENV'] = "not_production"
|
216
|
-
ENV['DATABASE_URL'] = "postgres://localhost/foo"
|
217
|
-
|
218
|
-
config = {}
|
219
|
-
actual = resolve_config(config)
|
220
|
-
expected = { "adapter" => "postgresql",
|
221
|
-
"database" => "foo",
|
222
|
-
"host" => "localhost" }
|
223
|
-
|
224
|
-
assert_equal expected, actual["not_production"]
|
225
|
-
assert_equal nil, actual["production"]
|
226
|
-
assert_equal nil, actual["default_env"]
|
227
|
-
assert_equal nil, actual["development"]
|
228
|
-
assert_equal nil, actual["test"]
|
229
|
-
assert_equal nil, actual[:default_env]
|
230
|
-
assert_equal nil, actual[:not_production]
|
231
|
-
assert_equal nil, actual[:production]
|
232
|
-
assert_equal nil, actual[:development]
|
233
|
-
assert_equal nil, actual[:test]
|
234
|
-
end
|
235
|
-
|
236
|
-
def test_database_url_with_ipv6_host_and_port
|
237
|
-
ENV['DATABASE_URL'] = "postgres://[::1]:5454/foo"
|
238
|
-
|
239
|
-
config = {}
|
240
|
-
actual = resolve_config(config)
|
241
|
-
expected = { "adapter" => "postgresql",
|
242
|
-
"database" => "foo",
|
243
|
-
"host" => "::1",
|
244
|
-
"port" => 5454 }
|
245
|
-
assert_equal expected, actual["default_env"]
|
246
|
-
end
|
247
|
-
|
248
|
-
def test_url_sub_key_with_database_url
|
249
|
-
ENV['DATABASE_URL'] = "NOT-POSTGRES://localhost/NOT_FOO"
|
250
|
-
|
251
|
-
config = { "default_env" => { "url" => "postgres://localhost/foo" } }
|
252
|
-
actual = resolve_config(config)
|
253
|
-
expected = { "default_env" =>
|
254
|
-
{ "adapter" => "postgresql",
|
255
|
-
"database" => "foo",
|
256
|
-
"host" => "localhost"
|
257
|
-
}
|
258
|
-
}
|
259
|
-
assert_equal expected, actual
|
260
|
-
end
|
261
|
-
|
262
|
-
def test_merge_no_conflicts_with_database_url
|
263
|
-
ENV['DATABASE_URL'] = "postgres://localhost/foo"
|
264
|
-
|
265
|
-
config = {"default_env" => { "pool" => "5" } }
|
266
|
-
actual = resolve_config(config)
|
267
|
-
expected = { "default_env" =>
|
268
|
-
{ "adapter" => "postgresql",
|
269
|
-
"database" => "foo",
|
270
|
-
"host" => "localhost",
|
271
|
-
"pool" => "5"
|
272
|
-
}
|
273
|
-
}
|
274
|
-
assert_equal expected, actual
|
275
|
-
end
|
276
|
-
|
277
|
-
def test_merge_conflicts_with_database_url
|
278
|
-
ENV['DATABASE_URL'] = "postgres://localhost/foo"
|
279
|
-
|
280
|
-
config = {"default_env" => { "adapter" => "NOT-POSTGRES", "database" => "NOT-FOO", "pool" => "5" } }
|
281
|
-
actual = resolve_config(config)
|
282
|
-
expected = { "default_env" =>
|
283
|
-
{ "adapter" => "postgresql",
|
284
|
-
"database" => "foo",
|
285
|
-
"host" => "localhost",
|
286
|
-
"pool" => "5"
|
287
|
-
}
|
288
|
-
}
|
289
|
-
assert_equal expected, actual
|
290
|
-
end
|
291
|
-
end
|
292
|
-
end
|
293
|
-
end
|
1
|
+
require "cases/helper"
|
2
|
+
|
3
|
+
module ActiveRecord
|
4
|
+
module ConnectionAdapters
|
5
|
+
class MergeAndResolveDefaultUrlConfigTest < ActiveRecord::TestCase
|
6
|
+
def setup
|
7
|
+
@previous_database_url = ENV.delete("DATABASE_URL")
|
8
|
+
@previous_rack_env = ENV.delete("RACK_ENV")
|
9
|
+
@previous_rails_env = ENV.delete("RAILS_ENV")
|
10
|
+
end
|
11
|
+
|
12
|
+
teardown do
|
13
|
+
ENV["DATABASE_URL"] = @previous_database_url
|
14
|
+
ENV["RACK_ENV"] = @previous_rack_env
|
15
|
+
ENV["RAILS_ENV"] = @previous_rails_env
|
16
|
+
end
|
17
|
+
|
18
|
+
def resolve_config(config)
|
19
|
+
ActiveRecord::ConnectionHandling::MergeAndResolveDefaultUrlConfig.new(config).resolve
|
20
|
+
end
|
21
|
+
|
22
|
+
def resolve_spec(spec, config)
|
23
|
+
ConnectionSpecification::Resolver.new(resolve_config(config)).resolve(spec)
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_resolver_with_database_uri_and_current_env_symbol_key
|
27
|
+
ENV['DATABASE_URL'] = "postgres://localhost/foo"
|
28
|
+
config = { "not_production" => { "adapter" => "not_postgres", "database" => "not_foo" } }
|
29
|
+
actual = resolve_spec(:default_env, config)
|
30
|
+
expected = { "adapter"=>"postgresql", "database"=>"foo", "host"=>"localhost" }
|
31
|
+
assert_equal expected, actual
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_resolver_with_database_uri_and_current_env_symbol_key_and_rails_env
|
35
|
+
ENV['DATABASE_URL'] = "postgres://localhost/foo"
|
36
|
+
ENV['RAILS_ENV'] = "foo"
|
37
|
+
|
38
|
+
config = { "not_production" => { "adapter" => "not_postgres", "database" => "not_foo" } }
|
39
|
+
actual = resolve_spec(:foo, config)
|
40
|
+
expected = { "adapter" => "postgresql", "database" => "foo", "host" => "localhost" }
|
41
|
+
assert_equal expected, actual
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_resolver_with_database_uri_and_current_env_symbol_key_and_rack_env
|
45
|
+
ENV['DATABASE_URL'] = "postgres://localhost/foo"
|
46
|
+
ENV['RACK_ENV'] = "foo"
|
47
|
+
|
48
|
+
config = { "not_production" => { "adapter" => "not_postgres", "database" => "not_foo" } }
|
49
|
+
actual = resolve_spec(:foo, config)
|
50
|
+
expected = { "adapter" => "postgresql", "database" => "foo", "host" => "localhost" }
|
51
|
+
assert_equal expected, actual
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_resolver_with_database_uri_and_and_current_env_string_key
|
55
|
+
ENV['DATABASE_URL'] = "postgres://localhost/foo"
|
56
|
+
config = { "default_env" => { "adapter" => "not_postgres", "database" => "not_foo" } }
|
57
|
+
actual = assert_deprecated { resolve_spec("default_env", config) }
|
58
|
+
expected = { "adapter"=>"postgresql", "database"=>"foo", "host"=>"localhost" }
|
59
|
+
assert_equal expected, actual
|
60
|
+
end
|
61
|
+
|
62
|
+
def test_resolver_with_database_uri_and_and_current_env_string_key_and_rails_env
|
63
|
+
ENV['DATABASE_URL'] = "postgres://localhost/foo"
|
64
|
+
ENV['RAILS_ENV'] = "foo"
|
65
|
+
|
66
|
+
config = { "not_production" => {"adapter" => "not_postgres", "database" => "not_foo" } }
|
67
|
+
actual = assert_deprecated { resolve_spec("foo", config) }
|
68
|
+
expected = { "adapter" => "postgresql", "database" => "foo", "host" => "localhost" }
|
69
|
+
assert_equal expected, actual
|
70
|
+
end
|
71
|
+
|
72
|
+
def test_resolver_with_database_uri_and_and_current_env_string_key_and_rack_env
|
73
|
+
ENV['DATABASE_URL'] = "postgres://localhost/foo"
|
74
|
+
ENV['RACK_ENV'] = "foo"
|
75
|
+
|
76
|
+
config = { "not_production" => {"adapter" => "not_postgres", "database" => "not_foo" } }
|
77
|
+
actual = assert_deprecated { resolve_spec("foo", config) }
|
78
|
+
expected = { "adapter" => "postgresql", "database" => "foo", "host" => "localhost" }
|
79
|
+
assert_equal expected, actual
|
80
|
+
end
|
81
|
+
|
82
|
+
def test_resolver_with_database_uri_and_known_key
|
83
|
+
ENV['DATABASE_URL'] = "postgres://localhost/foo"
|
84
|
+
config = { "production" => { "adapter" => "not_postgres", "database" => "not_foo", "host" => "localhost" } }
|
85
|
+
actual = resolve_spec(:production, config)
|
86
|
+
expected = { "adapter"=>"not_postgres", "database"=>"not_foo", "host"=>"localhost" }
|
87
|
+
assert_equal expected, actual
|
88
|
+
end
|
89
|
+
|
90
|
+
def test_resolver_with_database_uri_and_unknown_symbol_key
|
91
|
+
ENV['DATABASE_URL'] = "postgres://localhost/foo"
|
92
|
+
config = { "not_production" => { "adapter" => "not_postgres", "database" => "not_foo" } }
|
93
|
+
assert_raises AdapterNotSpecified do
|
94
|
+
resolve_spec(:production, config)
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
def test_resolver_with_database_uri_and_unknown_string_key
|
99
|
+
ENV['DATABASE_URL'] = "postgres://localhost/foo"
|
100
|
+
config = { "not_production" => { "adapter" => "not_postgres", "database" => "not_foo" } }
|
101
|
+
assert_deprecated do
|
102
|
+
assert_raises AdapterNotSpecified do
|
103
|
+
resolve_spec("production", config)
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
def test_resolver_with_database_uri_and_supplied_url
|
109
|
+
ENV['DATABASE_URL'] = "not-postgres://not-localhost/not_foo"
|
110
|
+
config = { "production" => { "adapter" => "also_not_postgres", "database" => "also_not_foo" } }
|
111
|
+
actual = resolve_spec("postgres://localhost/foo", config)
|
112
|
+
expected = { "adapter"=>"postgresql", "database"=>"foo", "host"=>"localhost" }
|
113
|
+
assert_equal expected, actual
|
114
|
+
end
|
115
|
+
|
116
|
+
def test_jdbc_url
|
117
|
+
config = { "production" => { "url" => "jdbc:postgres://localhost/foo" } }
|
118
|
+
actual = resolve_config(config)
|
119
|
+
assert_equal config, actual
|
120
|
+
end
|
121
|
+
|
122
|
+
def test_environment_does_not_exist_in_config_url_does_exist
|
123
|
+
ENV['DATABASE_URL'] = "postgres://localhost/foo"
|
124
|
+
config = { "not_default_env" => { "adapter" => "not_postgres", "database" => "not_foo" } }
|
125
|
+
actual = resolve_config(config)
|
126
|
+
expect_prod = { "adapter"=>"postgresql", "database"=>"foo", "host"=>"localhost" }
|
127
|
+
assert_equal expect_prod, actual["default_env"]
|
128
|
+
end
|
129
|
+
|
130
|
+
def test_url_with_hyphenated_scheme
|
131
|
+
ENV['DATABASE_URL'] = "ibm-db://localhost/foo"
|
132
|
+
config = { "default_env" => { "adapter" => "not_postgres", "database" => "not_foo", "host" => "localhost" } }
|
133
|
+
actual = resolve_spec(:default_env, config)
|
134
|
+
expected = { "adapter"=>"ibm_db", "database"=>"foo", "host"=>"localhost" }
|
135
|
+
assert_equal expected, actual
|
136
|
+
end
|
137
|
+
|
138
|
+
def test_string_connection
|
139
|
+
config = { "default_env" => "postgres://localhost/foo" }
|
140
|
+
actual = resolve_config(config)
|
141
|
+
expected = { "default_env" =>
|
142
|
+
{ "adapter" => "postgresql",
|
143
|
+
"database" => "foo",
|
144
|
+
"host" => "localhost"
|
145
|
+
}
|
146
|
+
}
|
147
|
+
assert_equal expected, actual
|
148
|
+
end
|
149
|
+
|
150
|
+
def test_url_sub_key
|
151
|
+
config = { "default_env" => { "url" => "postgres://localhost/foo" } }
|
152
|
+
actual = resolve_config(config)
|
153
|
+
expected = { "default_env" =>
|
154
|
+
{ "adapter" => "postgresql",
|
155
|
+
"database" => "foo",
|
156
|
+
"host" => "localhost"
|
157
|
+
}
|
158
|
+
}
|
159
|
+
assert_equal expected, actual
|
160
|
+
end
|
161
|
+
|
162
|
+
def test_hash
|
163
|
+
config = { "production" => { "adapter" => "postgres", "database" => "foo" } }
|
164
|
+
actual = resolve_config(config)
|
165
|
+
assert_equal config, actual
|
166
|
+
end
|
167
|
+
|
168
|
+
def test_blank
|
169
|
+
config = {}
|
170
|
+
actual = resolve_config(config)
|
171
|
+
assert_equal config, actual
|
172
|
+
end
|
173
|
+
|
174
|
+
def test_blank_with_database_url
|
175
|
+
ENV['DATABASE_URL'] = "postgres://localhost/foo"
|
176
|
+
|
177
|
+
config = {}
|
178
|
+
actual = resolve_config(config)
|
179
|
+
expected = { "adapter" => "postgresql",
|
180
|
+
"database" => "foo",
|
181
|
+
"host" => "localhost" }
|
182
|
+
assert_equal expected, actual["default_env"]
|
183
|
+
assert_equal nil, actual["production"]
|
184
|
+
assert_equal nil, actual["development"]
|
185
|
+
assert_equal nil, actual["test"]
|
186
|
+
assert_equal nil, actual[:default_env]
|
187
|
+
assert_equal nil, actual[:production]
|
188
|
+
assert_equal nil, actual[:development]
|
189
|
+
assert_equal nil, actual[:test]
|
190
|
+
end
|
191
|
+
|
192
|
+
def test_blank_with_database_url_with_rails_env
|
193
|
+
ENV['RAILS_ENV'] = "not_production"
|
194
|
+
ENV['DATABASE_URL'] = "postgres://localhost/foo"
|
195
|
+
|
196
|
+
config = {}
|
197
|
+
actual = resolve_config(config)
|
198
|
+
expected = { "adapter" => "postgresql",
|
199
|
+
"database" => "foo",
|
200
|
+
"host" => "localhost" }
|
201
|
+
|
202
|
+
assert_equal expected, actual["not_production"]
|
203
|
+
assert_equal nil, actual["production"]
|
204
|
+
assert_equal nil, actual["default_env"]
|
205
|
+
assert_equal nil, actual["development"]
|
206
|
+
assert_equal nil, actual["test"]
|
207
|
+
assert_equal nil, actual[:default_env]
|
208
|
+
assert_equal nil, actual[:not_production]
|
209
|
+
assert_equal nil, actual[:production]
|
210
|
+
assert_equal nil, actual[:development]
|
211
|
+
assert_equal nil, actual[:test]
|
212
|
+
end
|
213
|
+
|
214
|
+
def test_blank_with_database_url_with_rack_env
|
215
|
+
ENV['RACK_ENV'] = "not_production"
|
216
|
+
ENV['DATABASE_URL'] = "postgres://localhost/foo"
|
217
|
+
|
218
|
+
config = {}
|
219
|
+
actual = resolve_config(config)
|
220
|
+
expected = { "adapter" => "postgresql",
|
221
|
+
"database" => "foo",
|
222
|
+
"host" => "localhost" }
|
223
|
+
|
224
|
+
assert_equal expected, actual["not_production"]
|
225
|
+
assert_equal nil, actual["production"]
|
226
|
+
assert_equal nil, actual["default_env"]
|
227
|
+
assert_equal nil, actual["development"]
|
228
|
+
assert_equal nil, actual["test"]
|
229
|
+
assert_equal nil, actual[:default_env]
|
230
|
+
assert_equal nil, actual[:not_production]
|
231
|
+
assert_equal nil, actual[:production]
|
232
|
+
assert_equal nil, actual[:development]
|
233
|
+
assert_equal nil, actual[:test]
|
234
|
+
end
|
235
|
+
|
236
|
+
def test_database_url_with_ipv6_host_and_port
|
237
|
+
ENV['DATABASE_URL'] = "postgres://[::1]:5454/foo"
|
238
|
+
|
239
|
+
config = {}
|
240
|
+
actual = resolve_config(config)
|
241
|
+
expected = { "adapter" => "postgresql",
|
242
|
+
"database" => "foo",
|
243
|
+
"host" => "::1",
|
244
|
+
"port" => 5454 }
|
245
|
+
assert_equal expected, actual["default_env"]
|
246
|
+
end
|
247
|
+
|
248
|
+
def test_url_sub_key_with_database_url
|
249
|
+
ENV['DATABASE_URL'] = "NOT-POSTGRES://localhost/NOT_FOO"
|
250
|
+
|
251
|
+
config = { "default_env" => { "url" => "postgres://localhost/foo" } }
|
252
|
+
actual = resolve_config(config)
|
253
|
+
expected = { "default_env" =>
|
254
|
+
{ "adapter" => "postgresql",
|
255
|
+
"database" => "foo",
|
256
|
+
"host" => "localhost"
|
257
|
+
}
|
258
|
+
}
|
259
|
+
assert_equal expected, actual
|
260
|
+
end
|
261
|
+
|
262
|
+
def test_merge_no_conflicts_with_database_url
|
263
|
+
ENV['DATABASE_URL'] = "postgres://localhost/foo"
|
264
|
+
|
265
|
+
config = {"default_env" => { "pool" => "5" } }
|
266
|
+
actual = resolve_config(config)
|
267
|
+
expected = { "default_env" =>
|
268
|
+
{ "adapter" => "postgresql",
|
269
|
+
"database" => "foo",
|
270
|
+
"host" => "localhost",
|
271
|
+
"pool" => "5"
|
272
|
+
}
|
273
|
+
}
|
274
|
+
assert_equal expected, actual
|
275
|
+
end
|
276
|
+
|
277
|
+
def test_merge_conflicts_with_database_url
|
278
|
+
ENV['DATABASE_URL'] = "postgres://localhost/foo"
|
279
|
+
|
280
|
+
config = {"default_env" => { "adapter" => "NOT-POSTGRES", "database" => "NOT-FOO", "pool" => "5" } }
|
281
|
+
actual = resolve_config(config)
|
282
|
+
expected = { "default_env" =>
|
283
|
+
{ "adapter" => "postgresql",
|
284
|
+
"database" => "foo",
|
285
|
+
"host" => "localhost",
|
286
|
+
"pool" => "5"
|
287
|
+
}
|
288
|
+
}
|
289
|
+
assert_equal expected, actual
|
290
|
+
end
|
291
|
+
end
|
292
|
+
end
|
293
|
+
end
|