code: def test_exp_run_recursive(tmp_dir, scm, dvc, run_copy_metrics):
      tmp_dir.dvc_gen("metric_t.json", '{"foo": 1}')
      run_copy_metrics(
          "metric_t.json",
          "metric.json",
          metrics=["metric.json"],
          no_exec=True,
          name="copy-metric",
      )
      assert dvc.experiments.run(".", recursive=True)
      assert (tmp_dir / "metric.json").parse() == {"foo": 1}
  
imports: import itertools
  import logging
  import os
  import stat
  from textwrap import dedent
  import pytest
  from configobj import ConfigObj
  from funcy import first
  from dvc.dvcfile import PROJECT_FILE
  from dvc.env import DVC_EXP_BASELINE_REV, DVC_EXP_NAME, DVC_ROOT, DVC_STUDIO_OFFLINE, DVC_STUDIO_REPO_URL, DVC_STUDIO_TOKEN, DVC_STUDIO_URL
  from dvc.exceptions import DvcException, ReproductionError
  from dvc.repo.experiments.exceptions import ExperimentExistsError
  from dvc.repo.experiments.queue.base import BaseStashQueue
  from dvc.repo.experiments.refs import CELERY_STASH
  from dvc.repo.experiments.utils import exp_refs_by_rev
  from dvc.scm import SCMError, resolve_rev
  from dvc.stage.exceptions import StageFileDoesNotExistError
  from dvc.testing.scripts import COPY_SCRIPT
  from dvc.utils.serialize import PythonFileCorruptedError
label_desc: Use image node_id 19 for calling a global function with example usage: test_exp_run_recursive(tmp_dir, scm, dvc, run_copy_metrics) without return types