mongoid 8.0.6 → 8.0.8
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/lib/mongoid/atomic.rb +9 -7
- data/lib/mongoid/config.rb +13 -0
- data/lib/mongoid/contextual/mongo.rb +24 -1
- data/lib/mongoid/deprecable.rb +3 -2
- data/lib/mongoid/deprecation.rb +3 -3
- data/lib/mongoid/extensions/hash.rb +19 -1
- data/lib/mongoid/interceptable.rb +122 -13
- data/lib/mongoid/validatable/associated.rb +96 -18
- data/lib/mongoid/validatable.rb +8 -0
- data/lib/mongoid/version.rb +1 -1
- data/spec/integration/associations/has_and_belongs_to_many_spec.rb +40 -0
- data/spec/integration/callbacks_spec.rb +20 -0
- data/spec/mongoid/config_spec.rb +2 -2
- data/spec/mongoid/contextual/mongo_spec.rb +51 -6
- data/spec/mongoid/copyable_spec.rb +1 -1
- data/spec/mongoid/interceptable_spec.rb +362 -161
- data/spec/mongoid/validatable/associated_spec.rb +13 -30
- data/spec/shared/lib/mrss/docker_runner.rb +7 -0
- data/spec/shared/lib/mrss/lite_constraints.rb +2 -2
- data/spec/shared/lib/mrss/server_version_registry.rb +16 -23
- data/spec/shared/lib/mrss/utils.rb +28 -6
- data/spec/shared/share/Dockerfile.erb +36 -40
- data/spec/shared/shlib/server.sh +28 -4
- data/spec/shared/shlib/set_env.sh +4 -4
- data/spec/support/models/name.rb +10 -0
- data.tar.gz.sig +0 -0
- metadata +15 -15
- metadata.gz.sig +0 -0
| @@ -75,7 +75,6 @@ describe Mongoid::Validatable::AssociatedValidator do | |
| 75 75 | 
             
                    end
         | 
| 76 76 |  | 
| 77 77 | 
             
                    it "does not run validation on them" do
         | 
| 78 | 
            -
                      expect(description).to receive(:valid?).never
         | 
| 79 78 | 
             
                      expect(user).to be_valid
         | 
| 80 79 | 
             
                    end
         | 
| 81 80 |  | 
| @@ -84,14 +83,14 @@ describe Mongoid::Validatable::AssociatedValidator do | |
| 84 83 | 
             
                end
         | 
| 85 84 | 
             
              end
         | 
| 86 85 |  | 
| 87 | 
            -
              describe "# | 
| 86 | 
            +
              describe "#validate" do
         | 
| 88 87 |  | 
| 89 88 | 
             
                let(:person) do
         | 
| 90 89 | 
             
                  Person.new
         | 
| 91 90 | 
             
                end
         | 
| 92 91 |  | 
| 93 92 | 
             
                let(:validator) do
         | 
| 94 | 
            -
                  described_class.new(attributes: person. | 
| 93 | 
            +
                  described_class.new(attributes: person.relations.keys)
         | 
| 95 94 | 
             
                end
         | 
| 96 95 |  | 
| 97 96 | 
             
                context "when the association is a one to one" do
         | 
| @@ -99,7 +98,7 @@ describe Mongoid::Validatable::AssociatedValidator do | |
| 99 98 | 
             
                  context "when the association is nil" do
         | 
| 100 99 |  | 
| 101 100 | 
             
                    before do
         | 
| 102 | 
            -
                      validator. | 
| 101 | 
            +
                      validator.validate(person)
         | 
| 103 102 | 
             
                    end
         | 
| 104 103 |  | 
| 105 104 | 
             
                    it "adds no errors" do
         | 
| @@ -108,14 +107,9 @@ describe Mongoid::Validatable::AssociatedValidator do | |
| 108 107 | 
             
                  end
         | 
| 109 108 |  | 
| 110 109 | 
             
                  context "when the association is valid" do
         | 
| 111 | 
            -
             | 
| 112 | 
            -
                    let(:associated) do
         | 
| 113 | 
            -
                      double(valid?: true, flagged_for_destroy?: false)
         | 
| 114 | 
            -
                    end
         | 
| 115 | 
            -
             | 
| 116 110 | 
             
                    before do
         | 
| 117 | 
            -
                       | 
| 118 | 
            -
                      validator. | 
| 111 | 
            +
                      person.name = Name.new(first_name: 'A', last_name: 'B')
         | 
| 112 | 
            +
                      validator.validate(person)
         | 
| 119 113 | 
             
                    end
         | 
| 120 114 |  | 
| 121 115 | 
             
                    it "adds no errors" do
         | 
| @@ -125,13 +119,9 @@ describe Mongoid::Validatable::AssociatedValidator do | |
| 125 119 |  | 
| 126 120 | 
             
                  context "when the association is invalid" do
         | 
| 127 121 |  | 
| 128 | 
            -
                    let(:associated) do
         | 
| 129 | 
            -
                      double(valid?: false, flagged_for_destroy?: false)
         | 
| 130 | 
            -
                    end
         | 
| 131 | 
            -
             | 
| 132 122 | 
             
                    before do
         | 
| 133 | 
            -
                       | 
| 134 | 
            -
                      validator. | 
| 123 | 
            +
                      person.name = Name.new(first_name: 'Jamis', last_name: 'Buck')
         | 
| 124 | 
            +
                      validator.validate(person)
         | 
| 135 125 | 
             
                    end
         | 
| 136 126 |  | 
| 137 127 | 
             
                    it "adds errors to the parent document" do
         | 
| @@ -149,7 +139,7 @@ describe Mongoid::Validatable::AssociatedValidator do | |
| 149 139 | 
             
                  context "when the association is empty" do
         | 
| 150 140 |  | 
| 151 141 | 
             
                    before do
         | 
| 152 | 
            -
                      validator. | 
| 142 | 
            +
                      validator.validate(person)
         | 
| 153 143 | 
             
                    end
         | 
| 154 144 |  | 
| 155 145 | 
             
                    it "adds no errors" do
         | 
| @@ -159,13 +149,9 @@ describe Mongoid::Validatable::AssociatedValidator do | |
| 159 149 |  | 
| 160 150 | 
             
                  context "when the association has invalid documents" do
         | 
| 161 151 |  | 
| 162 | 
            -
                    let(:associated) do
         | 
| 163 | 
            -
                      double(valid?: false, flagged_for_destroy?: false)
         | 
| 164 | 
            -
                    end
         | 
| 165 | 
            -
             | 
| 166 152 | 
             
                    before do
         | 
| 167 | 
            -
                       | 
| 168 | 
            -
                      validator. | 
| 153 | 
            +
                      person.addresses << Address.new(street: '123')
         | 
| 154 | 
            +
                      validator.validate(person)
         | 
| 169 155 | 
             
                    end
         | 
| 170 156 |  | 
| 171 157 | 
             
                    it "adds errors to the parent document" do
         | 
| @@ -175,13 +161,10 @@ describe Mongoid::Validatable::AssociatedValidator do | |
| 175 161 |  | 
| 176 162 | 
             
                  context "when the association has all valid documents" do
         | 
| 177 163 |  | 
| 178 | 
            -
                    let(:associated) do
         | 
| 179 | 
            -
                      double(valid?: true, flagged_for_destroy?: false)
         | 
| 180 | 
            -
                    end
         | 
| 181 | 
            -
             | 
| 182 164 | 
             
                    before do
         | 
| 183 | 
            -
                       | 
| 184 | 
            -
                       | 
| 165 | 
            +
                      person.addresses << Address.new(street: '123 First St')
         | 
| 166 | 
            +
                      person.addresses << Address.new(street: '456 Second St')
         | 
| 167 | 
            +
                      validator.validate(person)
         | 
| 185 168 | 
             
                    end
         | 
| 186 169 |  | 
| 187 170 | 
             
                    it "adds no errors" do
         | 
| @@ -195,12 +195,15 @@ module Mrss | |
| 195 195 | 
             
                  'debian81' => 'debian:jessie',
         | 
| 196 196 | 
             
                  'debian92' => 'debian:stretch',
         | 
| 197 197 | 
             
                  'debian10' => 'debian:buster',
         | 
| 198 | 
            +
                  'debian11' => 'debian:bullseye',
         | 
| 198 199 | 
             
                  'ubuntu1404' => 'ubuntu:trusty',
         | 
| 199 200 | 
             
                  'ubuntu1604' => 'ubuntu:xenial',
         | 
| 200 201 | 
             
                  'ubuntu1804' => 'ubuntu:bionic',
         | 
| 201 202 | 
             
                  'ubuntu2004' => 'ubuntu:focal',
         | 
| 203 | 
            +
                  'ubuntu2204' => 'ubuntu:jammy',
         | 
| 202 204 | 
             
                  'rhel62' => 'centos:6',
         | 
| 203 205 | 
             
                  'rhel70' => 'centos:7',
         | 
| 206 | 
            +
                  'rhel80' => 'rockylinux:8',
         | 
| 204 207 | 
             
                }.freeze
         | 
| 205 208 |  | 
| 206 209 | 
             
                def base_image
         | 
| @@ -231,6 +234,10 @@ module Mrss | |
| 231 234 | 
             
                  distro =~ /debian|ubuntu/
         | 
| 232 235 | 
             
                end
         | 
| 233 236 |  | 
| 237 | 
            +
                def ubuntu?
         | 
| 238 | 
            +
                  distro=~ /ubuntu/
         | 
| 239 | 
            +
                end
         | 
| 240 | 
            +
             | 
| 234 241 | 
             
                def preload?
         | 
| 235 242 | 
             
                  !!@options[:preload]
         | 
| 236 243 | 
             
                end
         | 
| @@ -98,8 +98,8 @@ module Mrss | |
| 98 98 | 
             
                def min_libmongocrypt_version(version)
         | 
| 99 99 | 
             
                  require_libmongocrypt
         | 
| 100 100 | 
             
                  before(:all) do
         | 
| 101 | 
            -
                    actual_version =  | 
| 102 | 
            -
                    min_version =  | 
| 101 | 
            +
                    actual_version = Utils.parse_version(Mongo::Crypt::Binding.mongocrypt_version(nil))
         | 
| 102 | 
            +
                    min_version = Utils.parse_version(version)
         | 
| 103 103 | 
             
                    unless actual_version >= min_version
         | 
| 104 104 | 
             
                      skip "libmongocrypt version #{min_version} required, but version #{actual_version} is available"
         | 
| 105 105 | 
             
                    end
         | 
| @@ -24,6 +24,21 @@ module Mrss | |
| 24 24 |  | 
| 25 25 | 
             
                attr_reader :desired_version, :arch
         | 
| 26 26 |  | 
| 27 | 
            +
                def target_arch
         | 
| 28 | 
            +
                  # can't use RbConfig::CONFIG["arch"] because JRuby doesn't
         | 
| 29 | 
            +
                  # return anything meaningful there.
         | 
| 30 | 
            +
                  #
         | 
| 31 | 
            +
                  # also, need to use `uname -a` instead of (e.g.) `uname -p`
         | 
| 32 | 
            +
                  # because debian (at least) does not return anything meaningful
         | 
| 33 | 
            +
                  # for `uname -p`.
         | 
| 34 | 
            +
                  uname = `uname -a`.strip
         | 
| 35 | 
            +
                  @target_arch ||= case uname
         | 
| 36 | 
            +
                    when /aarch/ then "aarch64"
         | 
| 37 | 
            +
                    when /x86/   then "x86_64"
         | 
| 38 | 
            +
                    else raise "unsupported architecture #{uname.inspect}"
         | 
| 39 | 
            +
                    end
         | 
| 40 | 
            +
                end
         | 
| 41 | 
            +
             | 
| 27 42 | 
             
                def download_url
         | 
| 28 43 | 
             
                  @download_url ||= begin
         | 
| 29 44 | 
             
                    version, version_ok = detect_version(current_catalog)
         | 
| @@ -40,35 +55,13 @@ module Mrss | |
| 40 55 | 
             
                    end
         | 
| 41 56 | 
             
                    dl = version['downloads'].detect do |dl|
         | 
| 42 57 | 
             
                      dl['archive']['url'].index("enterprise-#{arch}") &&
         | 
| 43 | 
            -
                      dl['arch'] ==  | 
| 58 | 
            +
                      dl['arch'] == target_arch
         | 
| 44 59 | 
             
                    end
         | 
| 45 60 | 
             
                    unless dl
         | 
| 46 61 | 
             
                      raise MissingDownloadUrl, "No download for #{arch} for #{version['version']}"
         | 
| 47 62 | 
             
                    end
         | 
| 48 63 | 
             
                    url = dl['archive']['url']
         | 
| 49 64 | 
             
                  end
         | 
| 50 | 
            -
                rescue MissingDownloadUrl
         | 
| 51 | 
            -
                  if %w(2.6 3.0).include?(desired_version) && arch == 'ubuntu1604'
         | 
| 52 | 
            -
                    # 2.6 and 3.0 are only available for ubuntu1204 and ubuntu1404.
         | 
| 53 | 
            -
                    # Those ubuntus have ancient Pythons that don't work due to not
         | 
| 54 | 
            -
                    # implementing recent TLS protocols.
         | 
| 55 | 
            -
                    # Because of this we test on ubuntu1604 which has a newer Python.
         | 
| 56 | 
            -
                    # But we still need to retrieve ubuntu1404-targeting builds.
         | 
| 57 | 
            -
                    url = self.class.new('3.2', arch).download_url
         | 
| 58 | 
            -
                    unless url.include?('3.2.')
         | 
| 59 | 
            -
                      raise 'URL not in expected format'
         | 
| 60 | 
            -
                    end
         | 
| 61 | 
            -
                    url = case desired_version
         | 
| 62 | 
            -
                    when '2.6'
         | 
| 63 | 
            -
                      url.sub(/\b3\.2\.\d+/, '2.6.12')
         | 
| 64 | 
            -
                    when '3.0'
         | 
| 65 | 
            -
                      url.sub(/\b3\.2\.\d+/, '3.0.15')
         | 
| 66 | 
            -
                    else
         | 
| 67 | 
            -
                      raise NotImplementedError
         | 
| 68 | 
            -
                    end.sub('ubuntu1604', 'ubuntu1404')
         | 
| 69 | 
            -
                  else
         | 
| 70 | 
            -
                    raise
         | 
| 71 | 
            -
                  end
         | 
| 72 65 | 
             
                end
         | 
| 73 66 |  | 
| 74 67 | 
             
                private
         | 
| @@ -3,13 +3,35 @@ | |
| 3 3 |  | 
| 4 4 | 
             
            module Mrss
         | 
| 5 5 | 
             
              module Utils
         | 
| 6 | 
            +
                extend self
         | 
| 6 7 |  | 
| 7 | 
            -
                 | 
| 8 | 
            -
                   | 
| 9 | 
            -
             | 
| 10 | 
            -
                   | 
| 11 | 
            -
             | 
| 12 | 
            -
             | 
| 8 | 
            +
                def print_backtrace(dest=STDERR)
         | 
| 9 | 
            +
                  raise
         | 
| 10 | 
            +
                rescue => e
         | 
| 11 | 
            +
                  dest.puts e.backtrace.join("\n")
         | 
| 12 | 
            +
                end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                # Parses the given version string, accounting for suffix information that
         | 
| 15 | 
            +
                # Gem::Version cannot successfully parse.
         | 
| 16 | 
            +
                #
         | 
| 17 | 
            +
                # @param [ String ] version the version to parse
         | 
| 18 | 
            +
                #
         | 
| 19 | 
            +
                # @return [ Gem::Version ] the parsed version
         | 
| 20 | 
            +
                #
         | 
| 21 | 
            +
                # @raise [ ArgumentError ] if the string cannot be parsed.
         | 
| 22 | 
            +
                def parse_version(version)
         | 
| 23 | 
            +
                  Gem::Version.new(version)
         | 
| 24 | 
            +
                rescue ArgumentError
         | 
| 25 | 
            +
                  match = version.match(/\A(?<major>\d+)\.(?<minor>\d+)\.(?<patch>\d+)?(-[A-Za-z\+\d]+)?\z/)
         | 
| 26 | 
            +
                  raise ArgumentError.new("Malformed version number string #{version}") if match.nil?
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                  Gem::Version.new(
         | 
| 29 | 
            +
                    [
         | 
| 30 | 
            +
                      match[:major],
         | 
| 31 | 
            +
                      match[:minor],
         | 
| 32 | 
            +
                      match[:patch]
         | 
| 33 | 
            +
                    ].join('.')
         | 
| 34 | 
            +
                  )
         | 
| 13 35 | 
             
                end
         | 
| 14 36 | 
             
              end
         | 
| 15 37 | 
             
            end
         | 
| @@ -7,13 +7,13 @@ | |
| 7 7 | 
             
            <%
         | 
| 8 8 |  | 
| 9 9 | 
             
            python_toolchain_url = "https://s3.amazonaws.com//mciuploads/mongo-python-driver-toolchain/#{distro}/ba92de2700c04ee2d4f82c3ffdfc33105140cb04/mongo_python_driver_toolchain_#{distro.gsub('-', '_')}_ba92de2700c04ee2d4f82c3ffdfc33105140cb04_19_11_14_15_33_33.tar.gz"
         | 
| 10 | 
            -
            server_version = '4.3.3'
         | 
| 10 | 
            +
            # server_version = '4.3.3'
         | 
| 11 11 | 
             
            server_url = "http://downloads.10gen.com/linux/mongodb-linux-x86_64-enterprise-#{distro}-#{server_version}.tgz"
         | 
| 12 12 | 
             
            server_archive_basename = File.basename(server_url)
         | 
| 13 13 | 
             
            server_extracted_dir = server_archive_basename.sub(/\.(tar\.gz|tgz)$/, '')
         | 
| 14 14 |  | 
| 15 15 | 
             
            # When changing, also update the hash in shlib/set_env.sh.
         | 
| 16 | 
            -
            TOOLCHAIN_VERSION=' | 
| 16 | 
            +
            TOOLCHAIN_VERSION='e8c60866f54bed7e336a37df3a97d6ae1b971b7d'
         | 
| 17 17 |  | 
| 18 18 | 
             
            def ruby_toolchain_url(ruby)
         | 
| 19 19 | 
             
              "http://boxes.10gen.com/build/toolchain-drivers/mongo-ruby-driver/#{TOOLCHAIN_VERSION}/#{distro}/#{ruby}.tar.xz"
         | 
| @@ -77,25 +77,31 @@ ENV DOCKER=1 | |
| 77 77 | 
             
              # therefore install python-pip in all configurations here.
         | 
| 78 78 |  | 
| 79 79 | 
             
              <% packages = %w(
         | 
| 80 | 
            -
                procps lsb-release bzip2 curl zsh
         | 
| 80 | 
            +
                procps lsb-release bzip2 curl wget gpg zsh
         | 
| 81 81 | 
             
                git make gcc libyaml-0-2 libgmp-dev zlib1g-dev libsnappy-dev
         | 
| 82 82 | 
             
                krb5-user krb5-kdc krb5-admin-server libsasl2-dev libsasl2-modules-gssapi-mit
         | 
| 83 83 | 
             
                haproxy
         | 
| 84 84 | 
             
                python3-pip
         | 
| 85 | 
            -
                tzdata shared-mime-info
         | 
| 85 | 
            +
                tzdata shared-mime-info software-properties-common
         | 
| 86 86 | 
             
              ) %>
         | 
| 87 87 |  | 
| 88 88 | 
             
              <% if distro =~ /ubuntu2004/ %>
         | 
| 89 89 | 
             
                <% packages << 'libsnmp35' %>
         | 
| 90 | 
            +
              <% elsif distro =~ /ubuntu2204|debian11/ %>
         | 
| 91 | 
            +
                <% packages << 'libsnmp40' %>
         | 
| 90 92 | 
             
              <% else %>
         | 
| 91 93 | 
             
                <% packages << 'libsnmp30' %>
         | 
| 92 94 | 
             
              <% end %>
         | 
| 93 95 |  | 
| 94 | 
            -
              <% if distro !~ /ubuntu2004/ %>
         | 
| 96 | 
            +
              <% if distro !~ /ubuntu2004|ubuntu2204|debian11/ %>
         | 
| 95 97 | 
             
                <% packages << 'python-pip' %>
         | 
| 96 98 | 
             
              <% end %>
         | 
| 97 99 |  | 
| 98 | 
            -
              <% if distro =~ / | 
| 100 | 
            +
              <% if distro =~ /ubuntu2204|debian11/ %>
         | 
| 101 | 
            +
                <% packages << 'python3-venv' %>
         | 
| 102 | 
            +
              <% end %>
         | 
| 103 | 
            +
             | 
| 104 | 
            +
              <% if distro =~ /debian10|ubuntu2204|debian11/ %>
         | 
| 99 105 | 
             
                <% packages << 'openjdk-11-jdk-headless' %>
         | 
| 100 106 | 
             
              <% elsif distro =~ /ubuntu1404/ %>
         | 
| 101 107 | 
             
                # Ubuntu 14.04 only has openjdk 7, this is too old to be useful
         | 
| @@ -105,31 +111,37 @@ ENV DOCKER=1 | |
| 105 111 |  | 
| 106 112 | 
             
              # ubuntu1404, ubuntu1604: libcurl3
         | 
| 107 113 | 
             
              # ubuntu1804, ubuntu2004, debian10: libcurl4
         | 
| 108 | 
            -
              <% if distro =~ /ubuntu1804|ubuntu2004|debian10/ %>
         | 
| 114 | 
            +
              <% if distro =~ /ubuntu1804|ubuntu2004|ubuntu2204|debian10|debian11/ %>
         | 
| 109 115 | 
             
                <% packages << 'libcurl4' %>
         | 
| 110 116 | 
             
              <% else %>
         | 
| 111 117 | 
             
                <% packages << 'libcurl3' %>
         | 
| 112 118 | 
             
              <% end %>
         | 
| 113 119 |  | 
| 114 | 
            -
              <% if distro =~ /ubuntu1804|ubuntu2004/ %>
         | 
| 120 | 
            +
              <% if distro =~ /ubuntu1804|ubuntu2004|ubuntu2204/ %>
         | 
| 115 121 | 
             
                <% packages << 'nodejs' %>
         | 
| 116 122 | 
             
              <% end %>
         | 
| 117 123 |  | 
| 118 | 
            -
              <% if distro =~ /ubuntu2004/ %>
         | 
| 119 | 
            -
                <% packages += %w(ruby  | 
| 124 | 
            +
              <% if distro =~ /ubuntu2004|ubuntu2204/ %>
         | 
| 125 | 
            +
                <% packages += %w(ruby bundler) %>
         | 
| 120 126 | 
             
              <% end %>
         | 
| 121 127 |  | 
| 122 128 | 
             
              RUN apt-get update && apt-get install -y <%= packages.join(' ') %>
         | 
| 123 | 
            -
             | 
| 129 | 
            +
             | 
| 130 | 
            +
              <% if ubuntu? %>
         | 
| 131 | 
            +
                RUN wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null
         | 
| 132 | 
            +
                RUN echo "deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/kitware.list >/dev/null
         | 
| 133 | 
            +
              <% end %>
         | 
| 134 | 
            +
              RUN apt-get update && apt-get install -y cmake
         | 
| 135 | 
            +
             | 
| 124 136 | 
             
            <% else %>
         | 
| 125 137 |  | 
| 126 138 | 
             
              <% if distro =~ /rhel6/ %>
         | 
| 127 | 
            -
             | 
| 139 | 
            +
             | 
| 128 140 | 
             
                # CentOS 6 is dead - to use it retrieve the packages from vault:
         | 
| 129 141 | 
             
                # https://stackoverflow.com/questions/53562691/error-cannot-retrieve-repository-metadata-repomd-xml-for-repository-base-pl
         | 
| 130 | 
            -
             | 
| 142 | 
            +
             | 
| 131 143 | 
             
                <%
         | 
| 132 | 
            -
             | 
| 144 | 
            +
             | 
| 133 145 | 
             
                  cfg = <<-CFG
         | 
| 134 146 | 
             
            [base]
         | 
| 135 147 | 
             
            name=CentOS-$releasever - Base
         | 
| @@ -141,11 +153,11 @@ gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 | |
| 141 153 | 
             
            CFG
         | 
| 142 154 |  | 
| 143 155 | 
             
                %>
         | 
| 144 | 
            -
             | 
| 156 | 
            +
             | 
| 145 157 | 
             
                RUN printf "<%= cfg.gsub("\n", "\\n") %>" >/etc/yum.repos.d/CentOS-Base.repo
         | 
| 146 | 
            -
             | 
| 158 | 
            +
             | 
| 147 159 | 
             
              <% end %>
         | 
| 148 | 
            -
             | 
| 160 | 
            +
             | 
| 149 161 | 
             
              # Enterprise server: net-snmp
         | 
| 150 162 | 
             
              # lsb_release: redhat-lsb-core
         | 
| 151 163 | 
             
              # our runner scripts: which
         | 
| @@ -162,23 +174,8 @@ CFG | |
| 162 174 |  | 
| 163 175 | 
             
              RUN yum install -y redhat-lsb-core which git gcc libyaml krb5-server \
         | 
| 164 176 | 
             
                krb5-workstation cyrus-sasl-devel cyrus-sasl-gssapi java-1.8.0-openjdk \
         | 
| 165 | 
            -
                net-snmp  | 
| 177 | 
            +
                net-snmp python38 python38-devel cmake nodejs
         | 
| 166 178 |  | 
| 167 | 
            -
              <% if distro =~ /rhel6/ %>
         | 
| 168 | 
            -
             | 
| 169 | 
            -
                # RHEL 6 ships with Python 2.6.
         | 
| 170 | 
            -
             | 
| 171 | 
            -
                RUN yum install -y centos-release-scl && \
         | 
| 172 | 
            -
                  yum install -y python27-python python27-python-devel
         | 
| 173 | 
            -
                ENV PATH=/opt/rh/python27/root/usr/bin:$PATH \
         | 
| 174 | 
            -
                  LD_LIBRARY_PATH=/opt/rh/python27/root/usr/lib64
         | 
| 175 | 
            -
             | 
| 176 | 
            -
              <% else %>
         | 
| 177 | 
            -
             | 
| 178 | 
            -
                RUN yum install -y python-devel
         | 
| 179 | 
            -
             | 
| 180 | 
            -
              <% end %>
         | 
| 181 | 
            -
              
         | 
| 182 179 | 
             
            <% end %>
         | 
| 183 180 |  | 
| 184 181 | 
             
            <% if preload? %>
         | 
| @@ -220,7 +217,7 @@ CFG | |
| 220 217 | 
             
              <% when 'git' %>
         | 
| 221 218 | 
             
                # dateutil dependency is missing in mtools: https://github.com/rueckstiess/mtools/issues/864
         | 
| 222 219 | 
             
                RUN python3 -m pip install virtualenv 'pymongo>=4' python-dateutil psutil
         | 
| 223 | 
            -
             | 
| 220 | 
            +
             | 
| 224 221 | 
             
                # Install mtools from git because released versions do not work with pymongo 4.0
         | 
| 225 222 | 
             
                RUN git clone https://github.com/p-mongodb/mtools && \
         | 
| 226 223 | 
             
                  cd mtools && \
         | 
| @@ -234,7 +231,7 @@ CFG | |
| 234 231 | 
             
              <% if @env.fetch('MONGODB_VERSION') >= '4.4' %>
         | 
| 235 232 | 
             
                # ubuntu1604 installs MarkupSafe 0.0.0 here instead of 2.0.0+
         | 
| 236 233 | 
             
                # as specified by dependencies, causing OCSP mock to not work.
         | 
| 237 | 
            -
                RUN python3 -mpip install asn1crypto oscrypto flask --upgrade
         | 
| 234 | 
            +
                RUN python3 -mpip install asn1crypto oscrypto flask --upgrade --ignore-installed
         | 
| 238 235 | 
             
              <% end %>
         | 
| 239 236 |  | 
| 240 237 | 
             
              # FLE is tested against 4.0+ servers.
         | 
| @@ -243,7 +240,7 @@ CFG | |
| 243 240 | 
             
                # boto3~=1.19 cryptography~=3.4.8 pykmip~=0.10.0
         | 
| 244 241 | 
             
                # cryptography does not install due to lacking setuptools_rust
         | 
| 245 242 | 
             
                # (either that version or anything that isn't part of system packages)
         | 
| 246 | 
            -
                RUN python3 -mpip install boto3~=1.19 cryptography pykmip~=0.10.0
         | 
| 243 | 
            +
                RUN python3 -mpip install boto3~=1.19 cryptography pykmip~=0.10.0 'sqlalchemy<2.0.0'
         | 
| 247 244 | 
             
              <% end %>
         | 
| 248 245 |  | 
| 249 246 | 
             
              <% unless ruby_head? || system_ruby? %>
         | 
| @@ -255,10 +252,6 @@ CFG | |
| 255 252 |  | 
| 256 253 | 
             
              <% end %>
         | 
| 257 254 |  | 
| 258 | 
            -
              RUN curl --retry 3 -fL <%= server_download_url %> |tar xzf - && \
         | 
| 259 | 
            -
                mv mongo*/ /opt/mongodb
         | 
| 260 | 
            -
              ENV USE_OPT_MONGODB=1 USE_SYSTEM_PYTHON_PACKAGES=1
         | 
| 261 | 
            -
             | 
| 262 255 | 
             
            <% end %>
         | 
| 263 256 |  | 
| 264 257 | 
             
            <% if distro =~ /debian|ubuntu/ %>
         | 
| @@ -308,6 +301,9 @@ ENV MONGO_ORCHESTRATION_HOME=/tmpfs \ | |
| 308 301 |  | 
| 309 302 | 
             
            COPY . .
         | 
| 310 303 |  | 
| 304 | 
            +
            RUN bash -c '. .evergreen/download-mongodb.sh && get_distro && get_mongodb_download_url_for "$DISTRO" "<%= server_version %>" && curl --retry 3 -fL $MONGODB_DOWNLOAD_URL |tar xzf - && mv mongo*/ /opt/mongodb'
         | 
| 305 | 
            +
            ENV USE_OPT_MONGODB=1 USE_SYSTEM_PYTHON_PACKAGES=1
         | 
| 306 | 
            +
             | 
| 311 307 | 
             
            <% if expose? %>
         | 
| 312 308 |  | 
| 313 309 | 
             
              <% ports = [] %>
         | 
    
        data/spec/shared/shlib/server.sh
    CHANGED
    
    | @@ -78,15 +78,26 @@ install_mlaunch_venv() { | |
| 78 78 | 
             
                # https://github.com/pypa/virtualenv/issues/1630
         | 
| 79 79 | 
             
                python3 -m pip install venv --user
         | 
| 80 80 | 
             
              fi
         | 
| 81 | 
            +
              if ! python3 -m ensurepip -h > /dev/null; then
         | 
| 82 | 
            +
                # Debian11/Ubuntu2204 have venv installed, but it is nonfunctional unless
         | 
| 83 | 
            +
                # the python3-venv package is also installed (it lacks the ensurepip
         | 
| 84 | 
            +
                # module).
         | 
| 85 | 
            +
                sudo apt-get install --yes python3-venv
         | 
| 86 | 
            +
              fi
         | 
| 81 87 | 
             
              if test "$USE_SYSTEM_PYTHON_PACKAGES" = 1 &&
         | 
| 82 88 | 
             
                python3 -m pip list |grep mtools
         | 
| 83 89 | 
             
              then
         | 
| 84 90 | 
             
                # Use the existing mtools-legacy
         | 
| 85 91 | 
             
                :
         | 
| 86 92 | 
             
              else
         | 
| 87 | 
            -
                 | 
| 88 | 
            -
                 | 
| 89 | 
            -
                 | 
| 93 | 
            +
                # Spawn a virtual environment, but only if one is not already
         | 
| 94 | 
            +
                # active...
         | 
| 95 | 
            +
                if test -z "$VIRTUAL_ENV"; then
         | 
| 96 | 
            +
                  venvpath="$MONGO_ORCHESTRATION_HOME"/venv
         | 
| 97 | 
            +
                  python3 -m venv $venvpath
         | 
| 98 | 
            +
                  . $venvpath/bin/activate
         | 
| 99 | 
            +
                fi
         | 
| 100 | 
            +
             | 
| 90 101 | 
             
                # [mlaunch] does not work:
         | 
| 91 102 | 
             
                # https://github.com/rueckstiess/mtools/issues/856
         | 
| 92 103 | 
             
                # dateutil dependency is missing in mtools: https://github.com/rueckstiess/mtools/issues/864
         | 
| @@ -158,6 +169,19 @@ install_mlaunch_git() { | |
| 158 169 | 
             
              fi
         | 
| 159 170 | 
             
            }
         | 
| 160 171 |  | 
| 172 | 
            +
            install_cmake() {
         | 
| 173 | 
            +
              if ! command -v cmake &> /dev/null; then
         | 
| 174 | 
            +
                if ! command -v apt-get &> /dev/null; then
         | 
| 175 | 
            +
                  # no apt-get; assume RHEL
         | 
| 176 | 
            +
                  sudo yum -y install cmake libarchive
         | 
| 177 | 
            +
                else
         | 
| 178 | 
            +
                  sudo apt-get install --yes cmake
         | 
| 179 | 
            +
                fi
         | 
| 180 | 
            +
              else
         | 
| 181 | 
            +
                echo 'cmake is present'
         | 
| 182 | 
            +
              fi
         | 
| 183 | 
            +
            }
         | 
| 184 | 
            +
             | 
| 161 185 | 
             
            # This function sets followong global variables:
         | 
| 162 186 | 
             
            #   server_cert_path
         | 
| 163 187 | 
             
            #   server_ca_path
         | 
| @@ -173,7 +197,7 @@ calculate_server_args() { | |
| 173 197 | 
             
              fi
         | 
| 174 198 |  | 
| 175 199 | 
             
              if test $mongo_version = latest; then
         | 
| 176 | 
            -
                mongo_version= | 
| 200 | 
            +
                mongo_version=70
         | 
| 177 201 | 
             
              fi
         | 
| 178 202 |  | 
| 179 203 | 
             
              local args="--setParameter enableTestCommands=1"
         | 
| @@ -1,5 +1,5 @@ | |
| 1 1 | 
             
            # When changing, also update the hash in share/Dockerfile.
         | 
| 2 | 
            -
            TOOLCHAIN_VERSION= | 
| 2 | 
            +
            TOOLCHAIN_VERSION=e8c60866f54bed7e336a37df3a97d6ae1b971b7d
         | 
| 3 3 |  | 
| 4 4 | 
             
            set_env_java() {
         | 
| 5 5 | 
             
              ls -l /opt || true
         | 
| @@ -53,7 +53,7 @@ set_env_python() { | |
| 53 53 | 
             
                  curl -fL --retry 3 https://github.com/p-mongodb/deps/raw/main/"$arch"-python37.tar.xz | \
         | 
| 54 54 | 
             
                    tar xfJ - -C /opt
         | 
| 55 55 | 
             
                fi
         | 
| 56 | 
            -
             | 
| 56 | 
            +
             | 
| 57 57 | 
             
                if test -d /opt/python/3.7/bin; then
         | 
| 58 58 | 
             
                  # Most Evergreen configurations.
         | 
| 59 59 | 
             
                  export PATH=/opt/python/3.7/bin:$PATH
         | 
| @@ -61,7 +61,7 @@ set_env_python() { | |
| 61 61 | 
             
                  # Configurations that use Docker in Evergreen - these don't preload.
         | 
| 62 62 | 
             
                  export PATH=/opt/python37/bin:$PATH
         | 
| 63 63 | 
             
                fi
         | 
| 64 | 
            -
             | 
| 64 | 
            +
             | 
| 65 65 | 
             
                python3 -V
         | 
| 66 66 | 
             
              fi
         | 
| 67 67 | 
             
            }
         | 
| @@ -78,7 +78,7 @@ set_env_node() { | |
| 78 78 | 
             
                # Node from toolchain in Evergreen
         | 
| 79 79 | 
             
                export PATH=/opt/node/bin:$PATH
         | 
| 80 80 | 
             
              fi
         | 
| 81 | 
            -
             | 
| 81 | 
            +
             | 
| 82 82 | 
             
              node -v
         | 
| 83 83 | 
             
            }
         | 
| 84 84 |  | 
    
        data/spec/support/models/name.rb
    CHANGED
    
    | @@ -4,6 +4,8 @@ class Name | |
| 4 4 | 
             
              include Mongoid::Document
         | 
| 5 5 | 
             
              include Mongoid::Attributes::Dynamic
         | 
| 6 6 |  | 
| 7 | 
            +
              validate :is_not_jamis
         | 
| 8 | 
            +
             | 
| 7 9 | 
             
              field :_id, type: String, overwrite: true, default: ->{
         | 
| 8 10 | 
             
                "#{first_name}-#{last_name}"
         | 
| 9 11 | 
             
              }
         | 
| @@ -23,4 +25,12 @@ class Name | |
| 23 25 | 
             
              def set_parent=(set = false)
         | 
| 24 26 | 
             
                self.parent_title = namable.title if set
         | 
| 25 27 | 
             
              end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
              private
         | 
| 30 | 
            +
             | 
| 31 | 
            +
              def is_not_jamis
         | 
| 32 | 
            +
                if first_name == 'Jamis' && last_name == 'Buck'
         | 
| 33 | 
            +
                  errors.add(:base, :invalid)
         | 
| 34 | 
            +
                end
         | 
| 35 | 
            +
              end
         | 
| 26 36 | 
             
            end
         | 
    
        data.tar.gz.sig
    CHANGED
    
    | Binary file | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: mongoid
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 8.0. | 
| 4 | 
            +
              version: 8.0.8
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - The MongoDB Ruby Team
         | 
| @@ -12,7 +12,7 @@ cert_chain: | |
| 12 12 | 
             
              -----BEGIN CERTIFICATE-----
         | 
| 13 13 | 
             
              MIIEeDCCAuCgAwIBAgIBATANBgkqhkiG9w0BAQsFADBBMREwDwYDVQQDDAhkYngt
         | 
| 14 14 | 
             
              cnVieTEXMBUGCgmSJomT8ixkARkWB21vbmdvZGIxEzARBgoJkiaJk/IsZAEZFgNj
         | 
| 15 | 
            -
               | 
| 15 | 
            +
              b20wHhcNMjQwMjA5MTc0NzIyWhcNMjUwMjA4MTc0NzIyWjBBMREwDwYDVQQDDAhk
         | 
| 16 16 | 
             
              YngtcnVieTEXMBUGCgmSJomT8ixkARkWB21vbmdvZGIxEzARBgoJkiaJk/IsZAEZ
         | 
| 17 17 | 
             
              FgNjb20wggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQC0/Veq9l47cTfX
         | 
| 18 18 | 
             
              tQ+kHq2NOCwJuJGt1iXWQ/vH/yp7pZ/bLej7gPDl2CfIngAXRjM7r1FkR9ya7VAm
         | 
| @@ -25,17 +25,17 @@ cert_chain: | |
| 25 25 | 
             
              D+YQSuB2qYu021FI9zeY9sbZyWysEXBxhwrmTk+XUV0qz+OQZkMCAwEAAaN7MHkw
         | 
| 26 26 | 
             
              CQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFH4nnr4tYlatU57RbExW
         | 
| 27 27 | 
             
              jG86YM5nMB8GA1UdEQQYMBaBFGRieC1ydWJ5QG1vbmdvZGIuY29tMB8GA1UdEgQY
         | 
| 28 | 
            -
               | 
| 29 | 
            -
               | 
| 30 | 
            -
               | 
| 31 | 
            -
               | 
| 32 | 
            -
               | 
| 33 | 
            -
               | 
| 34 | 
            -
               | 
| 35 | 
            -
               | 
| 36 | 
            -
               | 
| 28 | 
            +
              MBaBFGRieC1ydWJ5QG1vbmdvZGIuY29tMA0GCSqGSIb3DQEBCwUAA4IBgQBKGtHA
         | 
| 29 | 
            +
              fpi3N/BL1J5O4CBsAjtF4jHDiw2r5MwK+66NzMh3uedjgPI7MoosemLy++SB+8BR
         | 
| 30 | 
            +
              SE8bDkb6gfDQQzrI6KSXXyqH2TbQXpY5Tac7/yqXRiu8G2qOrOj4czB/Hq7j09CV
         | 
| 31 | 
            +
              YoH88v6hL11i5jt6jPjFh8hXYG0hDQxhi3atRz5Wwd98tUf2DSbyJXJiRgCBeZjl
         | 
| 32 | 
            +
              rP7AnKsWMu0C+zPlL+nXtQr+nTFtkKXRWfUJMqePpBqtriQvgQ+Y1ItqYVTSLuiM
         | 
| 33 | 
            +
              iwUMcn/rGhdCMBSaKDXdFkIveCHQE2f2WBo2EdErrcTrgEKYYdNfzcb/43j7L1kx
         | 
| 34 | 
            +
              AUwyTtk+HFrviBynQbKN82rjbZE+5gukVea5c7idQPkqacPYsoU37DI+hTlUyJkV
         | 
| 35 | 
            +
              dcTtfEg44lLlfNukBslfiQf54r+uWbyB0m0rDUN/py7/Ghyzt5GLBU91uCO3dGoI
         | 
| 36 | 
            +
              55uFRHMvEcJMTDeImC/nuucPCAiEGMHggr9+NPC0tqpxjGKTo7lS7GzUFjg=
         | 
| 37 37 | 
             
              -----END CERTIFICATE-----
         | 
| 38 | 
            -
            date:  | 
| 38 | 
            +
            date: 2024-02-28 00:00:00.000000000 Z
         | 
| 39 39 | 
             
            dependencies:
         | 
| 40 40 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 41 41 | 
             
              name: activemodel
         | 
| @@ -46,7 +46,7 @@ dependencies: | |
| 46 46 | 
             
                    version: '5.1'
         | 
| 47 47 | 
             
                - - "<"
         | 
| 48 48 | 
             
                  - !ruby/object:Gem::Version
         | 
| 49 | 
            -
                    version: '7. | 
| 49 | 
            +
                    version: '7.2'
         | 
| 50 50 | 
             
                - - "!="
         | 
| 51 51 | 
             
                  - !ruby/object:Gem::Version
         | 
| 52 52 | 
             
                    version: 7.0.0
         | 
| @@ -59,7 +59,7 @@ dependencies: | |
| 59 59 | 
             
                    version: '5.1'
         | 
| 60 60 | 
             
                - - "<"
         | 
| 61 61 | 
             
                  - !ruby/object:Gem::Version
         | 
| 62 | 
            -
                    version: '7. | 
| 62 | 
            +
                    version: '7.2'
         | 
| 63 63 | 
             
                - - "!="
         | 
| 64 64 | 
             
                  - !ruby/object:Gem::Version
         | 
| 65 65 | 
             
                    version: 7.0.0
         | 
| @@ -1178,7 +1178,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 1178 1178 | 
             
                - !ruby/object:Gem::Version
         | 
| 1179 1179 | 
             
                  version: 1.3.6
         | 
| 1180 1180 | 
             
            requirements: []
         | 
| 1181 | 
            -
            rubygems_version: 3. | 
| 1181 | 
            +
            rubygems_version: 3.5.3
         | 
| 1182 1182 | 
             
            signing_key:
         | 
| 1183 1183 | 
             
            specification_version: 4
         | 
| 1184 1184 | 
             
            summary: Elegant Persistence in Ruby for MongoDB.
         | 
    
        metadata.gz.sig
    CHANGED
    
    | Binary file |