code: def test_subdir(tmp_dir, scm, dvc, workspace):
      subdir = tmp_dir / "dir"
      subdir.gen("copy.py", COPY_SCRIPT)
      subdir.gen("params.yaml", "foo: 1")
  
      with subdir.chdir():
          dvc.run(
              cmd="python copy.py params.yaml metrics.yaml",
              metrics_no_cache=["metrics.yaml"],
              params=["foo"],
              name="copy-file",
              no_exec=True,
          )
          scm.add(
              [
                  subdir / "dvc.yaml",
                  subdir / "copy.py",
                  subdir / "params.yaml",
              ]
          )
          scm.commit("init")
  
          results = dvc.experiments.run(
              PROJECT_FILE, params=["foo=2"], tmp_dir=not workspace
          )
          assert results
  
      exp = first(results)
      ref_info = first(exp_refs_by_rev(scm, exp))
  
      fs = scm.get_fs(exp)
      for fname in ["metrics.yaml", "dvc.lock"]:
          assert fs.exists(f"dir/{fname}")
      with fs.open(
          "dir/metrics.yaml", mode="r", encoding="utf-8"
      ) as fobj:
          assert fobj.read().strip() == "foo: 2"
  
      assert dvc.experiments.get_exact_name([exp])[exp] == ref_info.name
      assert resolve_rev(scm, ref_info.name) == exp
  
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 13 for calling a global function with example usage: test_subdir(tmp_dir, scm, dvc, workspace) without return types