code: def test_rerun_deterministic(tmp_dir, run_copy, mocker):
      from dvc.stage.run import subprocess
  
      tmp_dir.gen("foo", "foo content")
  
      spy = mocker.spy(subprocess, "Popen")
  
      run_copy("foo", "out", name="copy")
      assert spy.called
  
      spy.reset_mock()
      run_copy("foo", "out", name="copy")
      assert not spy.called
  
imports: import logging
  import os
  import textwrap
  import uuid
  import pytest
  from funcy import get_in
  from dvc.cli import main
  from dvc.dependency import ParamsDependency
  from dvc.dependency.base import DependencyDoesNotExistError
  from dvc.dvcfile import LOCK_FILE, PROJECT_FILE, load_file
  from dvc.exceptions import ArgumentDuplicationError, CircularDependencyError, CyclicGraphError, InvalidArgumentError, OutputDuplicationError, OverlappingOutputPathsError
  from dvc.stage import PipelineStage
  from dvc.stage.exceptions import DuplicateStageName, InvalidStageName, StagePathNotDirectoryError, StagePathNotFoundError, StagePathOutsideError
  from dvc.utils.serialize import load_yaml
label_desc: Use image node_id 26 for calling a global function with example usage: test_rerun_deterministic(tmp_dir, run_copy, mocker) without return types