code: def test_future(self):
      pkg_ver = foc.VERSION
      future_ver = str(int(pkg_ver[0]) + 1) + pkg_ver[1:]
  
      # Uprading to a future version is not allowed
  
      with self.assertRaises(EnvironmentError):
          MigrationRunner(pkg_ver, future_ver)
  
      with self.assertRaises(EnvironmentError):
          MigrationRunner("0.1", future_ver)
  
      # Downgrading from a future version is not allowed
  
      with self.assertRaises(EnvironmentError):
          MigrationRunner(future_ver, pkg_ver)
  
      with self.assertRaises(EnvironmentError):
          MigrationRunner(future_ver, "0.1")
  
imports: import time
  import unittest
  from unittest.mock import MagicMock, patch
  import numpy
  import fiftyone
  import fiftyone.constants
  import fiftyone.core.media
  import fiftyone.core.odm
  import fiftyone.core.utils
  from fiftyone.migrations.runner import MigrationRunner
  from decorators import drop_datasets
  from bson import ObjectId
  from fiftyone.core.odm.utils import load_dataset
label_desc: Use image node_id 2 for calling the MigrationTests obj's underlying member method code with example usage: obj.test_future() without return types