old_contents: # Copyright 2009-2010 10gen, Inc.
  #
  # Licensed under the Apache License, Version 2.0 (the "License");
  # you may not use this file except in compliance with the License.
  # You may obtain a copy of the License at
  #
  # http://www.apache.org/licenses/LICENSE-2.0
  #
  # Unless required by applicable law or agreed to in writing, software
  # distributed under the License is distributed on an "AS IS" BASIS,
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  # See the License for the specific language governing permissions and
  # limitations under the License.
  
  """Some tools for running tests based on MongoDB server version."""
  
  def _padded(iter, length, padding=0):
      l = list(iter)
      if len(l) < length:
          for _ in range(length - len(l)):
              l.append(0)
      return l
  
  def _parse_version_string(version_string):
      mod = 0
      if version_string.endswith("+"):
          version_string = version_string[0:-1]
          mod = 1
      elif version_string.endswith("-"):
          version_string = version_string[0:-1]
          mod = -1
  
      version = [int(part) for part in version_string.split(".")]
      version = _padded(version, 3)
      version.append(mod)
  
      return tuple(version)
  
  # Note this is probably broken for very old versions of the database...
  def version(connection):
      return _parse_version_string(connection.server_info()["version"])
  
  def at_least(connection, min_version):
      return version(connection) >= tuple(_padded(min_version, 4))
  
new_contents: # Copyright 2009-2010 10gen, Inc.
  #
  # Licensed under the Apache License, Version 2.0 (the "License");
  # you may not use this file except in compliance with the License.
  # You may obtain a copy of the License at
  #
  # http://www.apache.org/licenses/LICENSE-2.0
  #
  # Unless required by applicable law or agreed to in writing, software
  # distributed under the License is distributed on an "AS IS" BASIS,
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  # See the License for the specific language governing permissions and
  # limitations under the License.
  
  """Some tools for running tests based on MongoDB server version."""
  
  def _padded(iter, length, padding=0):
      l = list(iter)
      if len(l) < length:
          for _ in range(length - len(l)):
              l.append(0)
      return l
  
  def _parse_version_string(version_string):
      mod = 0
      if version_string.endswith("+"):
          version_string = version_string[0:-1]
          mod = 1
      elif version_string.endswith("-pre-"):
          version_string = version_string[0:-5]
          mod = -1
      elif version_string.endswith("-"):
          version_string = version_string[0:-1]
          mod = -1
  
      version = [int(part) for part in version_string.split(".")]
      version = _padded(version, 3)
      version.append(mod)
  
      return tuple(version)
  
  # Note this is probably broken for very old versions of the database...
  def version(connection):
      return _parse_version_string(connection.server_info()["version"])
  
  def at_least(connection, min_version):
      return version(connection) >= tuple(_padded(min_version, 4))
  
subject: handle -pre- in version parser