code: def test_driver_error_with_tuner(ray_start_4_cpus, error_on):
      tuner = Tuner(
          trainable=passing_fn,
          run_config=RunConfig(
              name=f"test_driver_errors_with_tuner-error_on={error_on}",
              callbacks=[FailingCallback(error_on=error_on)],
          ),
      )
  
      # All driver errors should get propagated to the user in the same way
      with pytest.raises(TuneError) as exc_info:
          tuner.fit()
  
      # TODO(ml-team): Assert the cause error type once driver error propagation is fixed
      assert "_TestSpecificError" in str(exc_info.value.__cause__)
  
imports: import gc
  import threading
  import time
  from tempfile import TemporaryDirectory
  import pytest
  import ray
  from ray import train, tune
  from ray._private.test_utils import wait_for_condition
  from ray._raylet import GcsClient
  from ray.cluster_utils import Cluster
  from ray.core.generated import autoscaler_pb2
  from ray.train import Checkpoint, FailureConfig, RunConfig, ScalingConfig
  from ray.train.data_parallel_trainer import DataParallelTrainer
  from ray.train.trainer import BaseTrainer, TrainingFailedError
  from ray.tune import Tuner, TuneConfig, TuneError
  from ray.tests.conftest import *
  from ray.train.tests.util import create_dict_checkpoint, load_dict_checkpoint
label_desc: Use image node_id 8 for calling a global function with example usage: test_driver_error_with_tuner(ray_start_4_cpus, error_on) without return types