code: def test_env_determinism_rollout(env_spec: EnvSpec):
      """Run a rollout with two environments and assert equality.
  
      This test run a rollout of NUM_STEPS steps with two environments
      initialized with the same seed and assert that:
  
      - observation after first reset are the same
      - same actions are sampled by the two envs
      - observations are contained in the observation space
      - obs, rew, done and info are equals between the two envs
      """
      # Don't check rollout equality if it's a nondeterministic environment.
      if env_spec.nondeterministic is True:
          return
  
      env_1 = env_spec.make(disable_env_checker=True)
      env_2 = env_spec.make(disable_env_checker=True)
  
      initial_obs_1, initial_info_1 = env_1.reset(seed=SEED)
      initial_obs_2, initial_info_2 = env_2.reset(seed=SEED)
      assert_equals(initial_obs_1, initial_obs_2)
  
      env_1.action_space.seed(SEED)
  
      for time_step in range(NUM_STEPS):
          # We don't evaluate the determinism of actions
          action = env_1.action_space.sample()
  
          obs_1, rew_1, terminated_1, truncated_1, info_1 = env_1.step(
              action
          )
          obs_2, rew_2, terminated_2, truncated_2, info_2 = env_2.step(
              action
          )
  
          assert_equals(obs_1, obs_2, f"[{time_step}] ")
          assert env_1.observation_space.contains(
              obs_1
          )  # obs_2 verified by previous assertion
  
          assert (
              rew_1 == rew_2
          ), f"[{time_step}] reward 1={rew_1}, reward 2={rew_2}"
          assert (
              terminated_1 == terminated_2
          ), f"[{time_step}] done 1={terminated_1}, done 2={terminated_2}"
          assert (
              truncated_1 == truncated_2
          ), f"[{time_step}] done 1={truncated_1}, done 2={truncated_2}"
          assert_equals(info_1, info_2, f"[{time_step}] ")
  
          if (
              terminated_1 or truncated_1
          ):  # terminated_2, truncated_2 verified by previous assertion
              env_1.reset(seed=SEED)
              env_2.reset(seed=SEED)
  
      env_1.close()
      env_2.close()
  
file_path: gym/tests/envs/test_envs.py
imports: import pickle
  import warnings
  import numpy
  import pytest
  import gym
  from gym.envs.registration import EnvSpec
  from gym.logger import warn
  from gym.utils.env_checker import check_env, data_equivalence
  from tests.envs.utils import all_testing_env_specs, all_testing_initialised_envs, assert_equals
label_desc: Use image node_id 2 for calling a global function with example usage: test_env_determinism_rollout(env_spec) without return types