mongoid 7.1.5 → 7.2.1
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
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/README.md +9 -2
- data/Rakefile +33 -7
- data/lib/config/locales/en.yml +37 -1
- data/lib/mongoid.rb +23 -0
- data/lib/mongoid/association/depending.rb +1 -6
- data/lib/mongoid/association/many.rb +3 -3
- data/lib/mongoid/association/referenced/belongs_to/buildable.rb +1 -1
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb +1 -1
- data/lib/mongoid/association/referenced/has_many/enumerable.rb +36 -1
- data/lib/mongoid/association/referenced/has_many/proxy.rb +8 -1
- data/lib/mongoid/association/referenced/has_one/buildable.rb +9 -1
- data/lib/mongoid/association/referenced/has_one/proxy.rb +6 -1
- data/lib/mongoid/atomic/modifiers.rb +1 -1
- data/lib/mongoid/attributes/dynamic.rb +1 -1
- data/lib/mongoid/clients/factory.rb +17 -0
- data/lib/mongoid/composable.rb +1 -0
- data/lib/mongoid/config.rb +3 -0
- data/lib/mongoid/contextual/mongo.rb +23 -4
- data/lib/mongoid/copyable.rb +7 -3
- data/lib/mongoid/criteria.rb +57 -7
- data/lib/mongoid/criteria/queryable/key.rb +1 -1
- data/lib/mongoid/criteria/queryable/mergeable.rb +2 -2
- data/lib/mongoid/criteria/queryable/selectable.rb +21 -6
- data/lib/mongoid/criteria/queryable/selector.rb +3 -7
- data/lib/mongoid/criteria/queryable/storable.rb +3 -3
- data/lib/mongoid/document.rb +18 -5
- data/lib/mongoid/errors.rb +7 -0
- data/lib/mongoid/errors/invalid_discriminator_key_target.rb +25 -0
- data/lib/mongoid/errors/invalid_elem_match_operator.rb +33 -0
- data/lib/mongoid/errors/invalid_estimated_count_criteria.rb +26 -0
- data/lib/mongoid/errors/invalid_expression_operator.rb +28 -0
- data/lib/mongoid/errors/invalid_field_operator.rb +33 -0
- data/lib/mongoid/errors/invalid_query.rb +41 -0
- data/lib/mongoid/extensions.rb +1 -0
- data/lib/mongoid/factory.rb +27 -10
- data/lib/mongoid/fields.rb +3 -0
- data/lib/mongoid/fields/validators/macro.rb +22 -9
- data/lib/mongoid/findable.rb +50 -14
- data/lib/mongoid/indexable.rb +2 -2
- data/lib/mongoid/interceptable.rb +3 -1
- data/lib/mongoid/matchable.rb +1 -149
- data/lib/mongoid/matcher.rb +127 -0
- data/lib/mongoid/matcher/all.rb +22 -0
- data/lib/mongoid/matcher/and.rb +21 -0
- data/lib/mongoid/matcher/elem_match.rb +35 -0
- data/lib/mongoid/matcher/elem_match_expression.rb +20 -0
- data/lib/mongoid/matcher/eq.rb +11 -0
- data/lib/mongoid/matcher/eq_impl.rb +32 -0
- data/lib/mongoid/matcher/eq_impl_with_regexp.rb +21 -0
- data/lib/mongoid/matcher/exists.rb +15 -0
- data/lib/mongoid/matcher/expression.rb +40 -0
- data/lib/mongoid/matcher/expression_operator.rb +19 -0
- data/lib/mongoid/matcher/field_expression.rb +63 -0
- data/lib/mongoid/matcher/field_operator.rb +48 -0
- data/lib/mongoid/matcher/gt.rb +17 -0
- data/lib/mongoid/matcher/gte.rb +17 -0
- data/lib/mongoid/matcher/in.rb +25 -0
- data/lib/mongoid/matcher/lt.rb +17 -0
- data/lib/mongoid/matcher/lte.rb +17 -0
- data/lib/mongoid/matcher/ne.rb +16 -0
- data/lib/mongoid/matcher/nin.rb +11 -0
- data/lib/mongoid/matcher/nor.rb +25 -0
- data/lib/mongoid/matcher/not.rb +29 -0
- data/lib/mongoid/matcher/or.rb +21 -0
- data/lib/mongoid/matcher/regex.rb +41 -0
- data/lib/mongoid/matcher/size.rb +26 -0
- data/lib/mongoid/persistable/deletable.rb +1 -1
- data/lib/mongoid/query_cache.rb +64 -62
- data/lib/mongoid/reloadable.rb +2 -2
- data/lib/mongoid/serializable.rb +1 -1
- data/lib/mongoid/stringified_symbol.rb +53 -0
- data/lib/mongoid/traversable.rb +111 -4
- data/lib/mongoid/version.rb +1 -1
- data/spec/README.md +19 -4
- data/spec/integration/app_spec.rb +46 -13
- data/spec/integration/associations/embedded_spec.rb +94 -0
- data/spec/integration/associations/embeds_many_spec.rb +24 -0
- data/spec/integration/associations/embeds_one_spec.rb +24 -0
- data/spec/integration/associations/has_many_spec.rb +108 -13
- data/spec/integration/associations/has_one_spec.rb +108 -13
- data/spec/integration/associations/nested_attributes_assignment_spec.rb +116 -0
- data/spec/integration/atomic/modifiers_spec.rb +117 -0
- data/spec/integration/callbacks_models.rb +49 -0
- data/spec/integration/callbacks_spec.rb +216 -0
- data/spec/integration/discriminator_key_spec.rb +354 -0
- data/spec/integration/discriminator_value_spec.rb +207 -0
- data/spec/integration/{matchable_spec.rb → matcher_examples_spec.rb} +120 -41
- data/spec/integration/matcher_operator_data/all.yml +140 -0
- data/spec/integration/matcher_operator_data/and.yml +93 -0
- data/spec/integration/matcher_operator_data/elem_match.yml +363 -0
- data/spec/integration/matcher_operator_data/elem_match_expr.yml +213 -0
- data/spec/integration/matcher_operator_data/eq.yml +191 -0
- data/spec/integration/matcher_operator_data/exists.yml +213 -0
- data/spec/integration/matcher_operator_data/generic_op.yml +17 -0
- data/spec/integration/matcher_operator_data/gt.yml +132 -0
- data/spec/integration/matcher_operator_data/gt_types.yml +63 -0
- data/spec/integration/matcher_operator_data/gte.yml +132 -0
- data/spec/integration/matcher_operator_data/gte_types.yml +15 -0
- data/spec/integration/matcher_operator_data/implicit.yml +331 -0
- data/spec/integration/matcher_operator_data/implicit_traversal.yml +16 -0
- data/spec/integration/matcher_operator_data/in.yml +194 -0
- data/spec/integration/matcher_operator_data/invalid_op.yml +59 -0
- data/spec/integration/matcher_operator_data/invalid_syntax.yml +39 -0
- data/spec/integration/matcher_operator_data/lt.yml +132 -0
- data/spec/integration/matcher_operator_data/lt_types.yml +15 -0
- data/spec/integration/matcher_operator_data/lte.yml +132 -0
- data/spec/integration/matcher_operator_data/lte_types.yml +15 -0
- data/spec/integration/matcher_operator_data/multiple.yml +29 -0
- data/spec/integration/matcher_operator_data/ne.yml +150 -0
- data/spec/integration/matcher_operator_data/ne_types.yml +15 -0
- data/spec/integration/matcher_operator_data/nin.yml +114 -0
- data/spec/integration/matcher_operator_data/nor.yml +126 -0
- data/spec/integration/matcher_operator_data/not.yml +196 -0
- data/spec/integration/matcher_operator_data/or.yml +137 -0
- data/spec/integration/matcher_operator_data/regex.yml +174 -0
- data/spec/integration/matcher_operator_data/regex_options.yml +72 -0
- data/spec/integration/matcher_operator_data/size.yml +174 -0
- data/spec/integration/matcher_operator_spec.rb +100 -0
- data/spec/integration/matcher_spec.rb +189 -0
- data/spec/integration/server_query_spec.rb +142 -0
- data/spec/integration/stringified_symbol_field_spec.rb +190 -0
- data/spec/lite_spec_helper.rb +4 -3
- data/spec/mongoid/association/depending_spec.rb +78 -26
- data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +50 -0
- data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +33 -0
- data/spec/mongoid/association/embedded/embeds_many_models.rb +1 -0
- data/spec/mongoid/association/embedded/embeds_one_models.rb +1 -0
- data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +460 -186
- data/spec/mongoid/association/referenced/has_many_models.rb +21 -0
- data/spec/mongoid/association/referenced/has_one_models.rb +21 -0
- data/spec/mongoid/association/referenced/has_one_spec.rb +1 -1
- data/spec/mongoid/atomic/modifiers_spec.rb +47 -0
- data/spec/mongoid/atomic/paths_spec.rb +41 -0
- data/spec/mongoid/atomic_spec.rb +23 -0
- data/spec/mongoid/attributes/nested_spec.rb +1 -1
- data/spec/mongoid/clients/factory_spec.rb +37 -0
- data/spec/mongoid/clients/sessions_spec.rb +1 -6
- data/spec/mongoid/config_spec.rb +28 -0
- data/spec/mongoid/contextual/mongo_spec.rb +70 -16
- data/spec/mongoid/copyable_spec.rb +197 -18
- data/spec/mongoid/copyable_spec_models.rb +28 -0
- data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +36 -0
- data/spec/mongoid/criteria/queryable/selectable_spec.rb +84 -82
- data/spec/mongoid/criteria_spec.rb +204 -39
- data/spec/mongoid/document_spec.rb +89 -15
- data/spec/mongoid/equality_spec.rb +0 -1
- data/spec/mongoid/errors/delete_restriction_spec.rb +1 -1
- data/spec/mongoid/extensions/stringified_symbol_spec.rb +85 -0
- data/spec/mongoid/factory_spec.rb +261 -28
- data/spec/mongoid/fields_spec.rb +48 -2
- data/spec/mongoid/findable_spec.rb +32 -0
- data/spec/mongoid/indexable_spec.rb +28 -2
- data/spec/mongoid/inspectable_spec.rb +29 -2
- data/spec/mongoid/interceptable_spec.rb +2 -2
- data/spec/mongoid/matcher/extract_attribute_data/traversal.yml +259 -0
- data/spec/mongoid/matcher/extract_attribute_spec.rb +47 -0
- data/spec/mongoid/persistable/creatable_spec.rb +108 -25
- data/spec/mongoid/persistable/deletable_spec.rb +86 -0
- data/spec/mongoid/persistable/savable_spec.rb +174 -16
- data/spec/mongoid/query_cache_middleware_spec.rb +16 -3
- data/spec/mongoid/query_cache_spec.rb +442 -41
- data/spec/mongoid/reloadable_spec.rb +72 -0
- data/spec/mongoid/serializable_spec.rb +21 -3
- data/spec/mongoid/traversable_spec.rb +1100 -0
- data/spec/shared/LICENSE +20 -0
- data/spec/shared/lib/mrss/child_process_helper.rb +80 -0
- data/spec/shared/lib/mrss/cluster_config.rb +211 -0
- data/spec/shared/lib/mrss/constraints.rb +330 -0
- data/spec/shared/lib/mrss/docker_runner.rb +262 -0
- data/spec/shared/lib/mrss/lite_constraints.rb +175 -0
- data/spec/shared/lib/mrss/server_version_registry.rb +69 -0
- data/spec/shared/lib/mrss/spec_organizer.rb +149 -0
- data/spec/shared/share/Dockerfile.erb +229 -0
- data/spec/shared/shlib/distro.sh +73 -0
- data/spec/shared/shlib/server.sh +270 -0
- data/spec/shared/shlib/set_env.sh +128 -0
- data/spec/spec_helper.rb +4 -2
- data/spec/support/constraints.rb +20 -222
- data/spec/support/helpers.rb +1 -1
- data/spec/{app → support}/models/account.rb +0 -0
- data/spec/{app → support}/models/acolyte.rb +0 -0
- data/spec/{app → support}/models/actor.rb +1 -1
- data/spec/{app → support}/models/actress.rb +0 -0
- data/spec/{app → support}/models/address.rb +0 -0
- data/spec/{app → support}/models/address_component.rb +0 -0
- data/spec/{app → support}/models/address_number.rb +0 -0
- data/spec/{app → support}/models/agency.rb +0 -0
- data/spec/{app → support}/models/agent.rb +0 -0
- data/spec/{app → support}/models/album.rb +0 -0
- data/spec/{app → support}/models/alert.rb +0 -0
- data/spec/{app → support}/models/animal.rb +0 -0
- data/spec/{app → support}/models/answer.rb +0 -0
- data/spec/{app → support}/models/appointment.rb +0 -0
- data/spec/support/models/armrest.rb +10 -0
- data/spec/{app → support}/models/array_field.rb +0 -0
- data/spec/{app → support}/models/article.rb +0 -0
- data/spec/{app → support}/models/artist.rb +0 -0
- data/spec/{app → support}/models/artwork.rb +0 -0
- data/spec/{app → support}/models/audio.rb +0 -0
- data/spec/{app → support}/models/augmentation.rb +0 -0
- data/spec/{app → support}/models/author.rb +0 -0
- data/spec/{app → support}/models/baby.rb +0 -0
- data/spec/{app → support}/models/band.rb +0 -0
- data/spec/{app → support}/models/bar.rb +0 -0
- data/spec/{app → support}/models/basic.rb +0 -0
- data/spec/{app → support}/models/bed.rb +0 -0
- data/spec/{app → support}/models/big_palette.rb +0 -0
- data/spec/{app → support}/models/birthday.rb +0 -0
- data/spec/{app → support}/models/bomb.rb +0 -0
- data/spec/{app → support}/models/book.rb +0 -0
- data/spec/{app → support}/models/breed.rb +0 -0
- data/spec/{app → support}/models/browser.rb +1 -1
- data/spec/{app → support}/models/building.rb +0 -0
- data/spec/{app → support}/models/building_address.rb +0 -0
- data/spec/{app → support}/models/bus.rb +0 -0
- data/spec/{app → support}/models/business.rb +0 -0
- data/spec/{app → support}/models/callback_test.rb +0 -0
- data/spec/{app → support}/models/canvas.rb +1 -1
- data/spec/{app → support}/models/car.rb +0 -0
- data/spec/{app → support}/models/cat.rb +0 -0
- data/spec/{app → support}/models/category.rb +0 -0
- data/spec/{app → support}/models/child.rb +0 -0
- data/spec/{app → support}/models/child_doc.rb +0 -0
- data/spec/{app → support}/models/church.rb +0 -0
- data/spec/{app → support}/models/circle.rb +0 -0
- data/spec/{app → support}/models/circuit.rb +0 -0
- data/spec/{app → support}/models/circus.rb +0 -0
- data/spec/{app → support}/models/code.rb +0 -0
- data/spec/{app → support}/models/coding.rb +1 -1
- data/spec/{app → support}/models/coding/pull_request.rb +0 -0
- data/spec/{app → support}/models/comment.rb +0 -0
- data/spec/{app → support}/models/company.rb +0 -0
- data/spec/{app → support}/models/consumption_period.rb +0 -0
- data/spec/{app → support}/models/contextable_item.rb +0 -0
- data/spec/{app → support}/models/contractor.rb +0 -0
- data/spec/{app → support}/models/cookie.rb +0 -0
- data/spec/{app → support}/models/country_code.rb +0 -0
- data/spec/{app → support}/models/courier_job.rb +0 -0
- data/spec/support/models/crate.rb +13 -0
- data/spec/support/models/customer.rb +11 -0
- data/spec/support/models/customer_address.rb +12 -0
- data/spec/support/models/deed.rb +8 -0
- data/spec/{app → support}/models/definition.rb +0 -0
- data/spec/{app → support}/models/delegating_patient.rb +0 -0
- data/spec/{app → support}/models/description.rb +0 -0
- data/spec/{app → support}/models/dictionary.rb +6 -0
- data/spec/{app → support}/models/division.rb +0 -0
- data/spec/{app → support}/models/doctor.rb +0 -0
- data/spec/{app → support}/models/dog.rb +0 -0
- data/spec/{app → support}/models/dokument.rb +0 -0
- data/spec/{app → support}/models/draft.rb +0 -0
- data/spec/{app → support}/models/dragon.rb +0 -0
- data/spec/{app → support}/models/driver.rb +1 -1
- data/spec/{app → support}/models/drug.rb +0 -0
- data/spec/{app → support}/models/dungeon.rb +0 -0
- data/spec/{app → support}/models/edit.rb +0 -0
- data/spec/{app → support}/models/email.rb +0 -0
- data/spec/{app → support}/models/employer.rb +0 -0
- data/spec/{app → support}/models/entry.rb +0 -0
- data/spec/{app → support}/models/eraser.rb +0 -0
- data/spec/{app → support}/models/even.rb +0 -0
- data/spec/{app → support}/models/event.rb +0 -0
- data/spec/{app → support}/models/exhibition.rb +0 -0
- data/spec/{app → support}/models/exhibitor.rb +0 -0
- data/spec/{app → support}/models/explosion.rb +0 -0
- data/spec/{app → support}/models/eye.rb +0 -0
- data/spec/{app → support}/models/eye_bowl.rb +0 -0
- data/spec/{app → support}/models/face.rb +0 -0
- data/spec/{app → support}/models/favorite.rb +0 -0
- data/spec/{app → support}/models/filesystem.rb +0 -0
- data/spec/{app → support}/models/fire_hydrant.rb +0 -0
- data/spec/{app → support}/models/firefox.rb +0 -0
- data/spec/{app → support}/models/fish.rb +0 -0
- data/spec/{app → support}/models/folder.rb +0 -0
- data/spec/{app → support}/models/folder_item.rb +0 -0
- data/spec/{app → support}/models/fruits.rb +0 -0
- data/spec/{app → support}/models/game.rb +0 -0
- data/spec/{app → support}/models/ghost.rb +0 -0
- data/spec/support/models/guitar.rb +5 -0
- data/spec/{app → support}/models/home.rb +0 -0
- data/spec/{app → support}/models/house.rb +0 -0
- data/spec/{app → support}/models/html_writer.rb +0 -0
- data/spec/{app → support}/models/id_key.rb +0 -0
- data/spec/support/models/idnodef.rb +8 -0
- data/spec/{app → support}/models/image.rb +0 -0
- data/spec/{app → support}/models/implant.rb +0 -0
- data/spec/support/models/instrument.rb +9 -0
- data/spec/{app → support}/models/item.rb +1 -1
- data/spec/{app → support}/models/jar.rb +0 -0
- data/spec/{app → support}/models/kaleidoscope.rb +0 -0
- data/spec/{app → support}/models/kangaroo.rb +0 -0
- data/spec/{app → support}/models/label.rb +0 -0
- data/spec/{app → support}/models/language.rb +0 -0
- data/spec/{app → support}/models/lat_lng.rb +0 -0
- data/spec/{app → support}/models/league.rb +0 -0
- data/spec/{app → support}/models/learner.rb +0 -0
- data/spec/{app → support}/models/line_item.rb +0 -0
- data/spec/{app → support}/models/location.rb +0 -0
- data/spec/{app → support}/models/login.rb +0 -0
- data/spec/{app → support}/models/manufacturer.rb +0 -0
- data/spec/{app → support}/models/meat.rb +0 -0
- data/spec/{app → support}/models/membership.rb +0 -0
- data/spec/{app → support}/models/message.rb +0 -0
- data/spec/{app → support}/models/minim.rb +0 -0
- data/spec/{app → support}/models/mixed_drink.rb +0 -0
- data/spec/support/models/mop.rb +16 -0
- data/spec/{app → support}/models/movie.rb +0 -0
- data/spec/{app → support}/models/my_hash.rb +0 -0
- data/spec/{app → support}/models/name.rb +0 -0
- data/spec/{app → support}/models/name_only.rb +0 -0
- data/spec/{app → support}/models/node.rb +0 -0
- data/spec/{app → support}/models/note.rb +0 -0
- data/spec/{app → support}/models/odd.rb +0 -0
- data/spec/support/models/order.rb +11 -0
- data/spec/{app → support}/models/ordered_post.rb +0 -0
- data/spec/{app → support}/models/ordered_preference.rb +0 -0
- data/spec/{app → support}/models/oscar.rb +0 -0
- data/spec/{app → support}/models/other_owner_object.rb +0 -0
- data/spec/{app → support}/models/override.rb +0 -0
- data/spec/{app → support}/models/ownable.rb +0 -0
- data/spec/{app → support}/models/owner.rb +2 -0
- data/spec/{app → support}/models/pack.rb +0 -0
- data/spec/{app → support}/models/page.rb +0 -0
- data/spec/{app → support}/models/page_question.rb +0 -0
- data/spec/{app → support}/models/palette.rb +1 -1
- data/spec/{app → support}/models/parent.rb +0 -0
- data/spec/{app → support}/models/parent_doc.rb +0 -0
- data/spec/{app → support}/models/passport.rb +0 -0
- data/spec/{app → support}/models/patient.rb +0 -0
- data/spec/{app → support}/models/pdf_writer.rb +0 -0
- data/spec/{app → support}/models/pencil.rb +0 -0
- data/spec/{app → support}/models/person.rb +3 -1
- data/spec/{app → support}/models/pet.rb +0 -0
- data/spec/{app → support}/models/pet_owner.rb +0 -0
- data/spec/{app → support}/models/phone.rb +0 -0
- data/spec/support/models/piano.rb +5 -0
- data/spec/{app → support}/models/pizza.rb +0 -0
- data/spec/{app → support}/models/player.rb +0 -0
- data/spec/{app → support}/models/post.rb +0 -0
- data/spec/{app → support}/models/post_genre.rb +0 -0
- data/spec/{app → support}/models/powerup.rb +0 -0
- data/spec/{app → support}/models/preference.rb +0 -0
- data/spec/{app → support}/models/princess.rb +0 -0
- data/spec/{app → support}/models/product.rb +0 -0
- data/spec/support/models/profile.rb +18 -0
- data/spec/{app → support}/models/pronunciation.rb +0 -0
- data/spec/{app → support}/models/pub.rb +0 -0
- data/spec/support/models/publication.rb +5 -0
- data/spec/{app → support}/models/publication/encyclopedia.rb +0 -0
- data/spec/{app → support}/models/publication/review.rb +0 -0
- data/spec/{app → support}/models/purchase.rb +0 -0
- data/spec/{app → support}/models/question.rb +0 -0
- data/spec/{app → support}/models/quiz.rb +0 -0
- data/spec/{app → support}/models/rating.rb +0 -0
- data/spec/{app → support}/models/record.rb +0 -0
- data/spec/{app → support}/models/registry.rb +0 -0
- data/spec/{app → support}/models/role.rb +0 -0
- data/spec/{app → support}/models/root_category.rb +0 -0
- data/spec/{app → support}/models/sandwich.rb +0 -0
- data/spec/{app → support}/models/scheduler.rb +0 -0
- data/spec/{app/models/profile.rb → support/models/scribe.rb} +2 -2
- data/spec/support/models/seat.rb +25 -0
- data/spec/{app → support}/models/seo.rb +0 -0
- data/spec/{app → support}/models/series.rb +1 -0
- data/spec/{app → support}/models/server.rb +0 -0
- data/spec/{app → support}/models/service.rb +0 -0
- data/spec/{app → support}/models/shape.rb +2 -2
- data/spec/{app → support}/models/shelf.rb +0 -0
- data/spec/{app → support}/models/shipment_address.rb +0 -0
- data/spec/{app → support}/models/shipping_container.rb +0 -0
- data/spec/{app → support}/models/shipping_pack.rb +0 -0
- data/spec/{app → support}/models/shop.rb +0 -0
- data/spec/{app → support}/models/short_agent.rb +0 -0
- data/spec/{app → support}/models/short_quiz.rb +0 -0
- data/spec/{app → support}/models/simple.rb +0 -0
- data/spec/{app → support}/models/slave.rb +0 -0
- data/spec/{app → support}/models/song.rb +0 -0
- data/spec/{app → support}/models/sound.rb +0 -0
- data/spec/{app → support}/models/square.rb +0 -0
- data/spec/{app → support}/models/staff.rb +0 -0
- data/spec/{app → support}/models/store_as_dup_test1.rb +0 -0
- data/spec/{app → support}/models/store_as_dup_test2.rb +0 -0
- data/spec/{app → support}/models/store_as_dup_test3.rb +0 -0
- data/spec/{app → support}/models/store_as_dup_test4.rb +0 -0
- data/spec/{app → support}/models/strategy.rb +0 -0
- data/spec/{app → support}/models/sub_item.rb +0 -0
- data/spec/{app → support}/models/subscription.rb +0 -0
- data/spec/{app → support}/models/survey.rb +0 -0
- data/spec/{app → support}/models/symptom.rb +0 -0
- data/spec/support/models/system_role.rb +7 -0
- data/spec/{app → support}/models/tag.rb +0 -0
- data/spec/{app → support}/models/target.rb +0 -0
- data/spec/{app → support}/models/template.rb +0 -0
- data/spec/{app → support}/models/thing.rb +0 -0
- data/spec/{app → support}/models/title.rb +0 -0
- data/spec/{app → support}/models/tool.rb +2 -2
- data/spec/{app → support}/models/topping.rb +0 -0
- data/spec/support/models/toy.rb +10 -0
- data/spec/{app → support}/models/track.rb +0 -0
- data/spec/{app → support}/models/translation.rb +0 -0
- data/spec/{app → support}/models/tree.rb +0 -0
- data/spec/{app → support}/models/truck.rb +2 -0
- data/spec/{app → support}/models/updatable.rb +0 -0
- data/spec/{app → support}/models/user.rb +0 -0
- data/spec/{app → support}/models/user_account.rb +0 -0
- data/spec/{app → support}/models/validation_callback.rb +0 -0
- data/spec/{app → support}/models/vehicle.rb +7 -2
- data/spec/{app → support}/models/version.rb +0 -0
- data/spec/{app → support}/models/vertex.rb +0 -0
- data/spec/{app → support}/models/vet_visit.rb +0 -0
- data/spec/{app → support}/models/video.rb +0 -0
- data/spec/{app → support}/models/video_game.rb +0 -0
- data/spec/{app → support}/models/weapon.rb +0 -0
- data/spec/{app → support}/models/wiki_page.rb +1 -0
- data/spec/{app → support}/models/word.rb +0 -0
- data/spec/{app → support}/models/word_origin.rb +0 -0
- data/spec/{app → support}/models/writer.rb +2 -2
- data/spec/support/spec_config.rb +1 -1
- metadata +895 -755
- metadata.gz.sig +0 -0
- data/lib/mongoid/matchable/all.rb +0 -30
- data/lib/mongoid/matchable/and.rb +0 -32
- data/lib/mongoid/matchable/default.rb +0 -121
- data/lib/mongoid/matchable/elem_match.rb +0 -36
- data/lib/mongoid/matchable/eq.rb +0 -23
- data/lib/mongoid/matchable/exists.rb +0 -25
- data/lib/mongoid/matchable/gt.rb +0 -25
- data/lib/mongoid/matchable/gte.rb +0 -25
- data/lib/mongoid/matchable/in.rb +0 -26
- data/lib/mongoid/matchable/lt.rb +0 -25
- data/lib/mongoid/matchable/lte.rb +0 -25
- data/lib/mongoid/matchable/ne.rb +0 -23
- data/lib/mongoid/matchable/nin.rb +0 -24
- data/lib/mongoid/matchable/nor.rb +0 -38
- data/lib/mongoid/matchable/or.rb +0 -35
- data/lib/mongoid/matchable/regexp.rb +0 -30
- data/lib/mongoid/matchable/size.rb +0 -23
- data/spec/app/models/publication.rb +0 -5
- data/spec/mongoid/matchable/all_spec.rb +0 -34
- data/spec/mongoid/matchable/and_spec.rb +0 -190
- data/spec/mongoid/matchable/default_spec.rb +0 -140
- data/spec/mongoid/matchable/elem_match_spec.rb +0 -109
- data/spec/mongoid/matchable/eq_spec.rb +0 -49
- data/spec/mongoid/matchable/exists_spec.rb +0 -60
- data/spec/mongoid/matchable/gt_spec.rb +0 -89
- data/spec/mongoid/matchable/gte_spec.rb +0 -87
- data/spec/mongoid/matchable/in_spec.rb +0 -52
- data/spec/mongoid/matchable/lt_spec.rb +0 -88
- data/spec/mongoid/matchable/lte_spec.rb +0 -88
- data/spec/mongoid/matchable/ne_spec.rb +0 -49
- data/spec/mongoid/matchable/nin_spec.rb +0 -51
- data/spec/mongoid/matchable/nor_spec.rb +0 -210
- data/spec/mongoid/matchable/or_spec.rb +0 -134
- data/spec/mongoid/matchable/regexp_spec.rb +0 -62
- data/spec/mongoid/matchable/size_spec.rb +0 -28
- data/spec/mongoid/matchable_spec.rb +0 -856
- data/spec/support/child_process_helper.rb +0 -76
- data/spec/support/lite_constraints.rb +0 -22
@@ -0,0 +1,270 @@
|
|
1
|
+
# This file contains functions pertaining to downloading, starting and
|
2
|
+
# configuring a MongoDB server.
|
3
|
+
|
4
|
+
set_fcv() {
|
5
|
+
if test -n "$FCV"; then
|
6
|
+
mongo --eval 'assert.commandWorked(db.adminCommand( { setFeatureCompatibilityVersion: "'"$FCV"'" } ));' "$MONGODB_URI"
|
7
|
+
mongo --quiet --eval 'db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )' |grep "version.*$FCV"
|
8
|
+
fi
|
9
|
+
}
|
10
|
+
|
11
|
+
add_uri_option() {
|
12
|
+
opt=$1
|
13
|
+
|
14
|
+
if ! echo $MONGODB_URI |sed -e s,//,, |grep -q /; then
|
15
|
+
MONGODB_URI="$MONGODB_URI/"
|
16
|
+
fi
|
17
|
+
|
18
|
+
if ! echo $MONGODB_URI |grep -q '?'; then
|
19
|
+
MONGODB_URI="$MONGODB_URI?"
|
20
|
+
fi
|
21
|
+
|
22
|
+
MONGODB_URI="$MONGODB_URI&$opt"
|
23
|
+
}
|
24
|
+
|
25
|
+
prepare_server() {
|
26
|
+
arch=$1
|
27
|
+
|
28
|
+
if test -n "$USE_OPT_MONGODB"; then
|
29
|
+
export BINDIR=/opt/mongodb/bin
|
30
|
+
export PATH=$BINDIR:$PATH
|
31
|
+
return
|
32
|
+
fi
|
33
|
+
|
34
|
+
if test "$MONGODB_VERSION" = latest; then
|
35
|
+
# Test on the most recent published 4.3 release.
|
36
|
+
# https://jira.mongodb.org/browse/RUBY-1724
|
37
|
+
echo 'Using "latest" server is not currently implemented' 1>&2
|
38
|
+
exit 1
|
39
|
+
else
|
40
|
+
download_version="$MONGODB_VERSION"
|
41
|
+
fi
|
42
|
+
|
43
|
+
url=`$(dirname $0)/get-mongodb-download-url $download_version $arch`
|
44
|
+
|
45
|
+
prepare_server_from_url $url
|
46
|
+
}
|
47
|
+
|
48
|
+
prepare_server_from_url() {
|
49
|
+
url=$1
|
50
|
+
|
51
|
+
mongodb_dir="$MONGO_ORCHESTRATION_HOME"/mdb
|
52
|
+
mkdir -p "$mongodb_dir"
|
53
|
+
curl --retry 3 $url |tar xz -C "$mongodb_dir" -f -
|
54
|
+
BINDIR="$mongodb_dir"/`basename $url |sed -e s/.tgz//`/bin
|
55
|
+
export PATH="$BINDIR":$PATH
|
56
|
+
}
|
57
|
+
|
58
|
+
install_mlaunch_virtualenv() {
|
59
|
+
python2 -V || true
|
60
|
+
# Current virtualenv fails with
|
61
|
+
# https://github.com/pypa/virtualenv/issues/1630
|
62
|
+
python -m pip install 'virtualenv<20' --user
|
63
|
+
venvpath="$MONGO_ORCHESTRATION_HOME"/venv
|
64
|
+
python2 -m virtualenv -p python2 $venvpath
|
65
|
+
. $venvpath/bin/activate
|
66
|
+
pip install 'mtools-legacy[mlaunch]'
|
67
|
+
}
|
68
|
+
|
69
|
+
install_mlaunch_pip() {
|
70
|
+
if test -n "$USE_OPT_MONGODB" && which mlaunch >/dev/null 2>&1; then
|
71
|
+
# mlaunch is preinstalled in the docker image, do not install it here
|
72
|
+
return
|
73
|
+
fi
|
74
|
+
|
75
|
+
python -V || true
|
76
|
+
python3 -V || true
|
77
|
+
pythonpath="$MONGO_ORCHESTRATION_HOME"/python
|
78
|
+
pip install -t "$pythonpath" 'mtools-legacy[mlaunch]'
|
79
|
+
export PATH="$pythonpath/bin":$PATH
|
80
|
+
export PYTHONPATH="$pythonpath"
|
81
|
+
}
|
82
|
+
|
83
|
+
install_mlaunch_git() {
|
84
|
+
repo=$1
|
85
|
+
branch=$2
|
86
|
+
python -V || true
|
87
|
+
python3 -V || true
|
88
|
+
which pip || true
|
89
|
+
which pip3 || true
|
90
|
+
|
91
|
+
if false; then
|
92
|
+
if ! virtualenv --version; then
|
93
|
+
python3 `which pip3` install --user virtualenv
|
94
|
+
export PATH=$HOME/.local/bin:$PATH
|
95
|
+
virtualenv --version
|
96
|
+
fi
|
97
|
+
|
98
|
+
venvpath="$MONGO_ORCHESTRATION_HOME"/venv
|
99
|
+
virtualenv -p python3 $venvpath
|
100
|
+
. $venvpath/bin/activate
|
101
|
+
|
102
|
+
pip3 install psutil pymongo
|
103
|
+
|
104
|
+
git clone $repo mlaunch
|
105
|
+
cd mlaunch
|
106
|
+
git checkout origin/$branch
|
107
|
+
python3 setup.py install
|
108
|
+
cd ..
|
109
|
+
else
|
110
|
+
pip install --user 'virtualenv==13'
|
111
|
+
export PATH=$HOME/.local/bin:$PATH
|
112
|
+
|
113
|
+
venvpath="$MONGO_ORCHESTRATION_HOME"/venv
|
114
|
+
virtualenv $venvpath
|
115
|
+
. $venvpath/bin/activate
|
116
|
+
|
117
|
+
pip install psutil pymongo
|
118
|
+
|
119
|
+
git clone $repo mlaunch
|
120
|
+
(cd mlaunch &&
|
121
|
+
git checkout origin/$branch &&
|
122
|
+
python setup.py install
|
123
|
+
)
|
124
|
+
fi
|
125
|
+
}
|
126
|
+
|
127
|
+
calculate_server_args() {
|
128
|
+
local mongo_version=`echo $MONGODB_VERSION |tr -d .`
|
129
|
+
if test $mongo_version = latest; then
|
130
|
+
mongo_version=44
|
131
|
+
fi
|
132
|
+
|
133
|
+
local args="--setParameter enableTestCommands=1"
|
134
|
+
# diagnosticDataCollectionEnabled is a mongod-only parameter on server 3.2,
|
135
|
+
# and mlaunch does not support specifying mongod-only parameters:
|
136
|
+
# https://github.com/rueckstiess/mtools/issues/696
|
137
|
+
# Pass it to 3.4 and newer servers where it is accepted by all daemons.
|
138
|
+
if test $mongo_version -ge 34; then
|
139
|
+
args="$args --setParameter diagnosticDataCollectionEnabled=false"
|
140
|
+
fi
|
141
|
+
local uri_options=
|
142
|
+
if test "$TOPOLOGY" = replica-set; then
|
143
|
+
args="$args --replicaset --name ruby-driver-rs --nodes 2 --arbiter"
|
144
|
+
export HAVE_ARBITER=1
|
145
|
+
elif test "$TOPOLOGY" = sharded-cluster; then
|
146
|
+
args="$args --replicaset --nodes 1 --sharded 1 --name ruby-driver-rs"
|
147
|
+
if test -z "$SINGLE_MONGOS"; then
|
148
|
+
args="$args --mongos 2"
|
149
|
+
fi
|
150
|
+
else
|
151
|
+
args="$args --single"
|
152
|
+
fi
|
153
|
+
if test -n "$MMAPV1"; then
|
154
|
+
args="$args --storageEngine mmapv1 --smallfiles --noprealloc"
|
155
|
+
uri_options="$uri_options&retryReads=false&retryWrites=false"
|
156
|
+
fi
|
157
|
+
if test "$AUTH" = auth; then
|
158
|
+
args="$args --auth --username bob --password pwd123"
|
159
|
+
elif test "$AUTH" = x509; then
|
160
|
+
args="$args --auth --username bootstrap --password bootstrap"
|
161
|
+
elif echo "$AUTH" |grep -q ^aws; then
|
162
|
+
args="$args --auth --username bootstrap --password bootstrap"
|
163
|
+
args="$args --setParameter authenticationMechanisms=MONGODB-AWS,SCRAM-SHA-1,SCRAM-SHA-256"
|
164
|
+
uri_options="$uri_options&authMechanism=MONGODB-AWS&authSource=\$external"
|
165
|
+
fi
|
166
|
+
|
167
|
+
if test -n "$OCSP"; then
|
168
|
+
if test -z "$OCSP_ALGORITHM"; then
|
169
|
+
echo "OCSP_ALGORITHM must be set if OCSP is set" 1>&2
|
170
|
+
exit 1
|
171
|
+
fi
|
172
|
+
fi
|
173
|
+
|
174
|
+
local server_cert_path server_ca_path server_client_cert_path
|
175
|
+
if test "$SSL" = ssl || test -n "$OCSP_ALGORITHM"; then
|
176
|
+
if test -n "$OCSP_ALGORITHM"; then
|
177
|
+
if test "$OCSP_MUST_STAPLE" = 1; then
|
178
|
+
server_cert_path=spec/support/ocsp/$OCSP_ALGORITHM/server-mustStaple.pem
|
179
|
+
else
|
180
|
+
server_cert_path=spec/support/ocsp/$OCSP_ALGORITHM/server.pem
|
181
|
+
fi
|
182
|
+
server_ca_path=spec/support/ocsp/$OCSP_ALGORITHM/ca.crt
|
183
|
+
server_client_cert_path=spec/support/ocsp/$OCSP_ALGORITHM/server.pem
|
184
|
+
else
|
185
|
+
server_cert_path=spec/support/certificates/server-second-level-bundle.pem
|
186
|
+
server_ca_path=spec/support/certificates/ca.crt
|
187
|
+
server_client_cert_path=spec/support/certificates/client.pem
|
188
|
+
fi
|
189
|
+
|
190
|
+
if test -n "$OCSP_ALGORITHM"; then
|
191
|
+
client_cert_path=spec/support/ocsp/$OCSP_ALGORITHM/server.pem
|
192
|
+
elif test "$AUTH" = x509; then
|
193
|
+
client_cert_path=spec/support/certificates/client-x509.pem
|
194
|
+
|
195
|
+
uri_options="$uri_options&authMechanism=MONGODB-X509"
|
196
|
+
elif echo $RVM_RUBY |grep -q jruby; then
|
197
|
+
# JRuby does not grok chained certificate bundles -
|
198
|
+
# https://github.com/jruby/jruby-openssl/issues/181
|
199
|
+
client_cert_path=spec/support/certificates/client.pem
|
200
|
+
else
|
201
|
+
client_cert_path=spec/support/certificates/client-second-level-bundle.pem
|
202
|
+
fi
|
203
|
+
|
204
|
+
uri_options="$uri_options&tls=true&"\
|
205
|
+
"tlsCAFile=$server_ca_path&"\
|
206
|
+
"tlsCertificateKeyFile=$client_cert_path"
|
207
|
+
|
208
|
+
args="$args --sslMode requireSSL"\
|
209
|
+
" --sslPEMKeyFile $server_cert_path"\
|
210
|
+
" --sslCAFile $server_ca_path"\
|
211
|
+
" --sslClientCertificate $server_client_cert_path"
|
212
|
+
fi
|
213
|
+
|
214
|
+
# Docker forwards ports to the external interface, not to the loopback.
|
215
|
+
# Hence we must bind to all interfaces here.
|
216
|
+
if test -n "$BIND_ALL"; then
|
217
|
+
args="$args --bind_ip_all"
|
218
|
+
fi
|
219
|
+
|
220
|
+
# MongoDB servers pre-4.2 do not enable zlib compression by default
|
221
|
+
if test "$COMPRESSOR" = snappy; then
|
222
|
+
args="$args --networkMessageCompressors snappy"
|
223
|
+
elif test "$COMPRESSOR" = zlib; then
|
224
|
+
args="$args --networkMessageCompressors zlib"
|
225
|
+
fi
|
226
|
+
|
227
|
+
if test -n "$OCSP_ALGORITHM" || test -n "$OCSP_VERIFIER"; then
|
228
|
+
python3 -m pip install asn1crypto oscrypto flask
|
229
|
+
fi
|
230
|
+
|
231
|
+
local ocsp_args=
|
232
|
+
if test -n "$OCSP_ALGORITHM"; then
|
233
|
+
if test -z "$server_ca_path"; then
|
234
|
+
echo "server_ca_path must have been set" 1>&2
|
235
|
+
exit 1
|
236
|
+
fi
|
237
|
+
ocsp_args="--ca_file $server_ca_path"
|
238
|
+
if test "$OCSP_DELEGATE" = 1; then
|
239
|
+
ocsp_args="$ocsp_args \
|
240
|
+
--ocsp_responder_cert spec/support/ocsp/$OCSP_ALGORITHM/ocsp-responder.crt \
|
241
|
+
--ocsp_responder_key spec/support/ocsp/$OCSP_ALGORITHM/ocsp-responder.key \
|
242
|
+
"
|
243
|
+
else
|
244
|
+
ocsp_args="$ocsp_args \
|
245
|
+
--ocsp_responder_cert spec/support/ocsp/$OCSP_ALGORITHM/ca.crt \
|
246
|
+
--ocsp_responder_key spec/support/ocsp/$OCSP_ALGORITHM/ca.key \
|
247
|
+
"
|
248
|
+
fi
|
249
|
+
if test -n "$OCSP_STATUS"; then
|
250
|
+
ocsp_args="$ocsp_args --fault $OCSP_STATUS"
|
251
|
+
fi
|
252
|
+
fi
|
253
|
+
|
254
|
+
OCSP_ARGS="$ocsp_args"
|
255
|
+
SERVER_ARGS="$args"
|
256
|
+
URI_OPTIONS="$uri_options"
|
257
|
+
}
|
258
|
+
|
259
|
+
launch_ocsp_mock() {
|
260
|
+
if test -n "$OCSP_ARGS"; then
|
261
|
+
# Bind to 0.0.0.0 for Docker
|
262
|
+
python3 spec/support/ocsp/ocsp_mock.py $OCSP_ARGS -b 0.0.0.0 -p 8100 &
|
263
|
+
OCSP_MOCK_PID=$!
|
264
|
+
fi
|
265
|
+
}
|
266
|
+
|
267
|
+
launch_server() {
|
268
|
+
local dbdir="$1"
|
269
|
+
python -m mtools.mlaunch.mlaunch --dir "$dbdir" --binarypath "$BINDIR" $SERVER_ARGS
|
270
|
+
}
|
@@ -0,0 +1,128 @@
|
|
1
|
+
TOOLCHAIN_VERSION=289d4bec7c61e88000cea582c05fd8073b932122
|
2
|
+
|
3
|
+
set_env_java() {
|
4
|
+
ls -l /opt || true
|
5
|
+
ls -l /usr/lib/jvm || true
|
6
|
+
|
7
|
+
# Use toolchain java if it exists
|
8
|
+
if [ -f /opt/java/jdk8/bin/java ]; then
|
9
|
+
export JAVACMD=/opt/java/jdk8/bin/java
|
10
|
+
#export PATH=$PATH:/opt/java/jdk8/bin
|
11
|
+
fi
|
12
|
+
|
13
|
+
# ppc64le has it in a different place
|
14
|
+
if test -z "$JAVACMD" && [ -f /usr/lib/jvm/java-1.8.0/bin/java ]; then
|
15
|
+
export JAVACMD=/usr/lib/jvm/java-1.8.0/bin/java
|
16
|
+
#export PATH=$PATH:/usr/lib/jvm/java-1.8.0/bin
|
17
|
+
fi
|
18
|
+
|
19
|
+
if true; then
|
20
|
+
# newer
|
21
|
+
# rhel71-ppc, https://jira.mongodb.org/browse/BUILD-9231
|
22
|
+
if test -z "$JAVACMD" &&
|
23
|
+
(ls /opt/java || true) |grep -q java-1.8.0-openjdk-1.8.0 &&
|
24
|
+
test -f /opt/java/java-1.8.0-openjdk-1.8.0*/bin/java;
|
25
|
+
then
|
26
|
+
path=$(cd /opt/java && ls -d java-1.8.0-openjdk-1.8.0* |head -n 1)
|
27
|
+
export JAVACMD=/opt/java/"$path"/bin/java
|
28
|
+
fi
|
29
|
+
else
|
30
|
+
# older
|
31
|
+
# rhel71-ppc seems to have an /opt/java/jdk8/bin/java but it doesn't work
|
32
|
+
if test -n "$JAVACMD" && ! exec $JAVACMD -version; then
|
33
|
+
JAVACMD=
|
34
|
+
# we will try the /usr/lib/jvm then
|
35
|
+
fi
|
36
|
+
fi
|
37
|
+
|
38
|
+
if test -n "$JAVACMD"; then
|
39
|
+
eval $JAVACMD -version
|
40
|
+
elif which java 2>/dev/null; then
|
41
|
+
java -version
|
42
|
+
else
|
43
|
+
echo No java runtime found
|
44
|
+
fi
|
45
|
+
}
|
46
|
+
|
47
|
+
set_env_ruby() {
|
48
|
+
if test -z "$RVM_RUBY"; then
|
49
|
+
echo "Empty RVM_RUBY, aborting"
|
50
|
+
exit 2
|
51
|
+
fi
|
52
|
+
|
53
|
+
#ls -l /opt
|
54
|
+
|
55
|
+
# Necessary for jruby
|
56
|
+
set_env_java
|
57
|
+
|
58
|
+
if [ "$RVM_RUBY" == "ruby-head" ]; then
|
59
|
+
# When we use ruby-head, we do not install the Ruby toolchain.
|
60
|
+
# But we still need Python 3.6+ to run mlaunch.
|
61
|
+
# Since the ruby-head tests are run on ubuntu1604, we can use the
|
62
|
+
# globally installed Python toolchain.
|
63
|
+
#export PATH=/opt/python/3.7/bin:$PATH
|
64
|
+
|
65
|
+
# 12.04, 14.04 and 16.04 are good
|
66
|
+
curl --retry 3 -fL http://rubies.travis-ci.org/ubuntu/`lsb_release -rs`/x86_64/ruby-head.tar.bz2 |tar xfj -
|
67
|
+
# TODO adjust gem path?
|
68
|
+
export PATH=`pwd`/ruby-head/bin:`pwd`/ruby-head/lib/ruby/gems/2.6.0/bin:$PATH
|
69
|
+
ruby --version
|
70
|
+
ruby --version |grep dev
|
71
|
+
else
|
72
|
+
if test "$USE_OPT_TOOLCHAIN" = 1; then
|
73
|
+
# nothing, also PATH is already set
|
74
|
+
:
|
75
|
+
elif true; then
|
76
|
+
|
77
|
+
# For testing toolchains:
|
78
|
+
#toolchain_url=https://s3.amazonaws.com//mciuploads/mongo-ruby-toolchain/`host_distro`/f11598d091441ffc8d746aacfdc6c26741a3e629/mongo_ruby_driver_toolchain_`host_distro |tr - _`_patch_f11598d091441ffc8d746aacfdc6c26741a3e629_5e46f2793e8e866f36eda2c5_20_02_14_19_18_18.tar.gz
|
79
|
+
toolchain_url=http://boxes.10gen.com/build/toolchain-drivers/mongo-ruby-driver/ruby-toolchain-`host_distro`-$TOOLCHAIN_VERSION.tar.xz
|
80
|
+
curl --retry 3 -fL $toolchain_url |tar Jxf -
|
81
|
+
export PATH=`pwd`/rubies/$RVM_RUBY/bin:$PATH
|
82
|
+
#export PATH=`pwd`/rubies/python/3/bin:$PATH
|
83
|
+
|
84
|
+
# Attempt to get bundler to report all errors - so far unsuccessful
|
85
|
+
#curl --retry 3 -o bundler-openssl.diff https://github.com/bundler/bundler/compare/v2.0.1...p-mongo:report-errors.diff
|
86
|
+
#find . -path \*/lib/bundler/fetcher.rb -exec patch {} bundler-openssl.diff \;
|
87
|
+
|
88
|
+
else
|
89
|
+
|
90
|
+
# Normal operation
|
91
|
+
if ! test -d $HOME/.rubies/$RVM_RUBY/bin; then
|
92
|
+
echo "Ruby directory does not exist: $HOME/.rubies/$RVM_RUBY/bin" 1>&2
|
93
|
+
echo "Contents of /opt:" 1>&2
|
94
|
+
ls -l /opt 1>&2 || true
|
95
|
+
echo ".rubies symlink:" 1>&2
|
96
|
+
ls -ld $HOME/.rubies 1>&2 || true
|
97
|
+
echo "Our rubies:" 1>&2
|
98
|
+
ls -l $HOME/.rubies 1>&2 || true
|
99
|
+
exit 2
|
100
|
+
fi
|
101
|
+
export PATH=$HOME/.rubies/$RVM_RUBY/bin:$PATH
|
102
|
+
|
103
|
+
fi
|
104
|
+
|
105
|
+
ruby --version
|
106
|
+
|
107
|
+
# Ensure we're using the right ruby
|
108
|
+
ruby_name=`echo $RVM_RUBY |awk -F- '{print $1}'`
|
109
|
+
ruby_version=`echo $RVM_RUBY |awk -F- '{print $2}' |cut -c 1-3`
|
110
|
+
|
111
|
+
ruby -v |fgrep $ruby_name
|
112
|
+
ruby -v |fgrep $ruby_version
|
113
|
+
|
114
|
+
# We shouldn't need to update rubygems, and there is value in
|
115
|
+
# testing on whatever rubygems came with each supported ruby version
|
116
|
+
#echo 'updating rubygems'
|
117
|
+
#gem update --system
|
118
|
+
|
119
|
+
# Only install bundler when not using ruby-head.
|
120
|
+
# ruby-head comes with bundler and gem complains
|
121
|
+
# because installing bundler would overwrite the bundler binary.
|
122
|
+
# We now install bundler in the toolchain, hence nothing needs to be done
|
123
|
+
# in the tests.
|
124
|
+
if false && echo "$RVM_RUBY" |grep -q jruby; then
|
125
|
+
gem install bundler -v '<2'
|
126
|
+
fi
|
127
|
+
fi
|
128
|
+
}
|
data/spec/spec_helper.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
|
4
4
|
require 'lite_spec_helper'
|
5
5
|
|
6
|
-
MODELS = File.join(File.dirname(__FILE__), "
|
6
|
+
MODELS = File.join(File.dirname(__FILE__), "support/models")
|
7
7
|
$LOAD_PATH.unshift(MODELS)
|
8
8
|
|
9
9
|
require "action_controller"
|
@@ -35,6 +35,7 @@ require 'support/helpers'
|
|
35
35
|
require 'support/macros'
|
36
36
|
require 'support/cluster_config'
|
37
37
|
require 'support/constraints'
|
38
|
+
require 'mrss/constraints'
|
38
39
|
|
39
40
|
# Give MongoDB servers time to start up in CI environments
|
40
41
|
if SpecConfig.instance.ci?
|
@@ -82,7 +83,7 @@ Mongoid.configure do |config|
|
|
82
83
|
config.load_configuration(CONFIG)
|
83
84
|
end
|
84
85
|
|
85
|
-
# Autoload every model for the test suite that sits in spec/
|
86
|
+
# Autoload every model for the test suite that sits in spec/support/models.
|
86
87
|
Dir[ File.join(MODELS, "*.rb") ].sort.each do |file|
|
87
88
|
name = File.basename(file, ".rb")
|
88
89
|
autoload name.camelize.to_sym, name
|
@@ -128,6 +129,7 @@ RSpec.configure do |config|
|
|
128
129
|
config.raise_errors_for_deprecations!
|
129
130
|
config.include(Helpers)
|
130
131
|
config.include(Mongoid::Expectations)
|
132
|
+
config.extend(Mrss::Constraints)
|
131
133
|
config.extend(Constraints)
|
132
134
|
config.extend(Mongoid::Macros)
|
133
135
|
|
data/spec/support/constraints.rb
CHANGED
@@ -4,252 +4,50 @@
|
|
4
4
|
module Constraints
|
5
5
|
RAILS_VERSION = ActiveSupport.version.to_s.split('.')[0..1].join('.').freeze
|
6
6
|
|
7
|
-
def
|
8
|
-
|
9
|
-
|
10
|
-
end
|
11
|
-
|
7
|
+
def min_driver_version(version)
|
8
|
+
required_version = version.split('.').map(&:to_i)
|
9
|
+
actual_version = driver_version(required_version.length)
|
12
10
|
before(:all) do
|
13
|
-
if
|
14
|
-
skip "
|
11
|
+
if (actual_version <=> required_version) < 0
|
12
|
+
skip "Driver version #{version} or higher is required"
|
15
13
|
end
|
16
14
|
end
|
17
15
|
end
|
18
16
|
|
19
|
-
def
|
20
|
-
|
21
|
-
|
22
|
-
end
|
23
|
-
|
17
|
+
def max_driver_version(version)
|
18
|
+
required_version = version.split('.').map(&:to_i)
|
19
|
+
actual_version = driver_version(required_version.length)
|
24
20
|
before(:all) do
|
25
|
-
if
|
26
|
-
skip "
|
21
|
+
if (actual_version <=> required_version) > 0
|
22
|
+
skip "Driver version #{version} or lower is required"
|
27
23
|
end
|
28
24
|
end
|
29
25
|
end
|
30
26
|
|
31
|
-
def
|
32
|
-
|
33
|
-
raise ArgumentError, "Version can only be major.minor: #{version}"
|
34
|
-
end
|
35
|
-
|
36
|
-
before(:all) do
|
37
|
-
if version > ClusterConfig.instance.server_version
|
38
|
-
skip "Server version #{version} or higher required, we have #{ClusterConfig.instance.server_version}"
|
39
|
-
end
|
40
|
-
end
|
27
|
+
def driver_version(precision)
|
28
|
+
Mongo::VERSION.split('.')[0...precision].map(&:to_i)
|
41
29
|
end
|
42
30
|
|
43
|
-
def
|
31
|
+
def min_rails_version(version)
|
44
32
|
unless version =~ /\A\d+\.\d+\z/
|
45
33
|
raise ArgumentError, "Version can only be major.minor: #{version}"
|
46
34
|
end
|
47
35
|
|
48
36
|
before(:all) do
|
49
|
-
if version
|
50
|
-
skip "
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
def require_topology(*topologies)
|
56
|
-
invalid_topologies = topologies - [:single, :replica_set, :sharded]
|
57
|
-
|
58
|
-
unless invalid_topologies.empty?
|
59
|
-
raise ArgumentError, "Invalid topologies requested: #{invalid_topologies.join(', ')}"
|
60
|
-
end
|
61
|
-
|
62
|
-
before(:all) do
|
63
|
-
unless topologies.include?(topology = ClusterConfig.instance.topology)
|
64
|
-
skip "Topology #{topologies.join(' or ')} required, we have #{topology}"
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
def max_example_run_time(timeout)
|
70
|
-
around do |example|
|
71
|
-
TimeoutInterrupt.timeout(timeout, TimeoutInterrupt::Error.new("Test execution terminated after #{timeout} seconds")) do
|
72
|
-
example.run
|
73
|
-
end
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
def require_transaction_support
|
78
|
-
before(:all) do
|
79
|
-
case ClusterConfig.instance.topology
|
80
|
-
when :single
|
81
|
-
skip 'Transactions tests require a replica set (4.0+) or a sharded cluster (4.2+)'
|
82
|
-
when :replica_set
|
83
|
-
unless ClusterConfig.instance.server_version >= '4.0'
|
84
|
-
skip 'Transactions tests in a replica set topology require server 4.0+'
|
85
|
-
end
|
86
|
-
when :sharded
|
87
|
-
unless ClusterConfig.instance.server_version >= '4.2'
|
88
|
-
skip 'Transactions tests in a sharded cluster topology require server 4.2+'
|
89
|
-
end
|
90
|
-
else
|
91
|
-
raise NotImplementedError
|
92
|
-
end
|
93
|
-
end
|
94
|
-
end
|
95
|
-
|
96
|
-
def require_tls
|
97
|
-
before(:all) do
|
98
|
-
unless SpecConfig.instance.ssl?
|
99
|
-
skip "SSL not enabled"
|
100
|
-
end
|
101
|
-
end
|
102
|
-
end
|
103
|
-
|
104
|
-
def require_no_tls
|
105
|
-
before(:all) do
|
106
|
-
if SpecConfig.instance.ssl?
|
107
|
-
skip "SSL enabled"
|
108
|
-
end
|
109
|
-
end
|
110
|
-
end
|
111
|
-
|
112
|
-
def require_local_tls
|
113
|
-
require_tls
|
114
|
-
end
|
115
|
-
|
116
|
-
def require_no_retry_writes
|
117
|
-
before(:all) do
|
118
|
-
if SpecConfig.instance.retry_writes?
|
119
|
-
skip "Retry writes is enabled"
|
120
|
-
end
|
121
|
-
end
|
122
|
-
end
|
123
|
-
|
124
|
-
def require_compression
|
125
|
-
before(:all) do
|
126
|
-
if SpecConfig.instance.compressors.nil?
|
127
|
-
skip "Compression is not enabled"
|
128
|
-
end
|
129
|
-
end
|
130
|
-
end
|
131
|
-
|
132
|
-
def require_no_compression
|
133
|
-
before(:all) do
|
134
|
-
if SpecConfig.instance.compressors
|
135
|
-
skip "Compression is enabled"
|
136
|
-
end
|
137
|
-
end
|
138
|
-
end
|
139
|
-
|
140
|
-
def ruby_version_gte(version)
|
141
|
-
before(:all) do
|
142
|
-
if RUBY_VERSION < version
|
143
|
-
skip "Ruby version #{version} or higher required"
|
144
|
-
end
|
145
|
-
end
|
146
|
-
end
|
147
|
-
|
148
|
-
def ruby_version_lt(version)
|
149
|
-
before(:all) do
|
150
|
-
if RUBY_VERSION >= version
|
151
|
-
skip "Ruby version less than #{version} required"
|
152
|
-
end
|
153
|
-
end
|
154
|
-
end
|
155
|
-
|
156
|
-
def require_auth
|
157
|
-
before(:all) do
|
158
|
-
unless ENV['AUTH'] == 'auth' || SpecConfig.instance.user || ClusterConfig.instance.auth_enabled?
|
159
|
-
skip "Auth required"
|
160
|
-
end
|
161
|
-
end
|
162
|
-
end
|
163
|
-
|
164
|
-
def require_no_auth
|
165
|
-
before(:all) do
|
166
|
-
if ENV['AUTH'] == 'auth' || SpecConfig.instance.user || ClusterConfig.instance.auth_enabled?
|
167
|
-
skip "Auth not allowed"
|
168
|
-
end
|
169
|
-
end
|
170
|
-
end
|
171
|
-
|
172
|
-
def require_no_x509_auth
|
173
|
-
before(:all) do
|
174
|
-
if SpecConfig.instance.x509_auth?
|
175
|
-
skip "X.509 auth not allowed"
|
176
|
-
end
|
177
|
-
end
|
178
|
-
end
|
179
|
-
|
180
|
-
# Can the driver specify a write concern that won't be overridden?
|
181
|
-
# (mongos 4.0+ overrides the write concern)
|
182
|
-
def require_set_write_concern
|
183
|
-
before(:all) do
|
184
|
-
if ClusterConfig.instance.topology == :sharded && ClusterConfig.instance.short_server_version >= '4.0'
|
185
|
-
skip "mongos 4.0+ overrides write concern"
|
186
|
-
end
|
187
|
-
end
|
188
|
-
end
|
189
|
-
|
190
|
-
def require_multi_shard
|
191
|
-
before(:all) do
|
192
|
-
if ClusterConfig.instance.topology == :sharded && SpecConfig.instance.addresses.length == 1
|
193
|
-
skip 'Test requires a minimum of two shards if run in sharded topology'
|
194
|
-
end
|
195
|
-
end
|
196
|
-
end
|
197
|
-
|
198
|
-
def require_no_multi_shard
|
199
|
-
before(:all) do
|
200
|
-
if ClusterConfig.instance.topology == :sharded && SpecConfig.instance.addresses.length > 1
|
201
|
-
skip 'Test requires a single shard if run in sharded topology'
|
202
|
-
end
|
203
|
-
end
|
204
|
-
end
|
205
|
-
|
206
|
-
def require_wired_tiger
|
207
|
-
before(:all) do
|
208
|
-
if ClusterConfig.instance.storage_engine != :wired_tiger
|
209
|
-
skip 'Test requires WiredTiger storage engine'
|
210
|
-
end
|
211
|
-
end
|
212
|
-
end
|
213
|
-
|
214
|
-
def require_wired_tiger_on_36
|
215
|
-
before(:all) do
|
216
|
-
if ClusterConfig.instance.short_server_version >= '3.6'
|
217
|
-
if ClusterConfig.instance.storage_engine != :wired_tiger
|
218
|
-
skip 'Test requires WiredTiger storage engine on 3.6+ servers'
|
219
|
-
end
|
220
|
-
end
|
221
|
-
end
|
222
|
-
end
|
223
|
-
|
224
|
-
def require_mmapv1
|
225
|
-
before(:all) do
|
226
|
-
if ClusterConfig.instance.storage_engine != :mmapv1
|
227
|
-
skip 'Test requires MMAPv1 storage engine'
|
37
|
+
if version > RAILS_VERSION
|
38
|
+
skip "Rails version #{version} or higher required, we have #{RAILS_VERSION}"
|
228
39
|
end
|
229
40
|
end
|
230
41
|
end
|
231
42
|
|
232
|
-
def
|
233
|
-
|
234
|
-
|
235
|
-
skip 'Test requires enterprise build of MongoDB'
|
236
|
-
end
|
43
|
+
def max_rails_version(version)
|
44
|
+
unless version =~ /\A\d+\.\d+\z/
|
45
|
+
raise ArgumentError, "Version can only be major.minor: #{version}"
|
237
46
|
end
|
238
|
-
end
|
239
47
|
|
240
|
-
# Integration tests for SRV polling require internet connectivity to
|
241
|
-
# look up SRV records and a sharded cluster configured on default port on
|
242
|
-
# localhost (localhost:27017, localhost:27018).
|
243
|
-
def require_default_port_deployment
|
244
|
-
# Because the DNS records at test1.test.build.10gen.cc point to
|
245
|
-
# localhost:27017 & localhost:27018, the test suite must have been
|
246
|
-
# configured to use these addresses
|
247
48
|
before(:all) do
|
248
|
-
|
249
|
-
|
250
|
-
end
|
251
|
-
unless have_default_port
|
252
|
-
skip 'This test requires the test suite to be configured for localhost:27017'
|
49
|
+
if version < RAILS_VERSION
|
50
|
+
skip "Rails version #{version} or lower required, we have #{RAILS_VERSION}"
|
253
51
|
end
|
254
52
|
end
|
255
53
|
end
|