code: def test_new_simple(
      tmp_dir, scm, dvc, exp_stage, mocker, name, workspace
  ):
      baseline = scm.get_rev()
      tmp_dir.gen("params.yaml", "foo: 2")
  
      new_mock = mocker.spy(dvc.experiments, "new")
      results = dvc.experiments.run(
          exp_stage.addressing, name=name, tmp_dir=not workspace
      )
      exp = first(results)
      ref_info = first(exp_refs_by_rev(scm, exp))
      assert ref_info
      assert ref_info.baseline_sha == baseline
  
      new_mock.assert_called_once()
      fs = scm.get_fs(exp)
      with fs.open("metrics.yaml", mode="r", encoding="utf-8") as fobj:
          assert fobj.read().strip() == "foo: 2"
  
      if workspace:
          assert (
              tmp_dir / "metrics.yaml"
          ).read_text().strip() == "foo: 2"
  
      exp_name = name if name else ref_info.name
      assert dvc.experiments.get_exact_name([exp])[exp] == exp_name
      assert resolve_rev(scm, exp_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 1 for calling a global function with example usage: test_new_simple(tmp_dir, scm, dvc, exp_stage, mocker, name, workspace) without return types