code: def test_collect_granular_collision_output_dir_stage_name(
      tmp_dir, dvc, run_copy
  ):
      stage1, *_ = tmp_dir.dvc_gen(
          {"dir": {"foo": "foo"}, "foo": "foo"}
      )
      stage3 = run_copy("foo", "bar", name="dir")
  
      assert dvc.stage.collect_granular("dir") == [(stage3, None)]
      assert not dvc.stage.collect_granular("dir", recursive=True)
      assert dvc.stage.collect_granular("./dir") == [
          (stage1, os.path.join(tmp_dir / "dir"))
      ]
  
imports: import os
  from operator import itemgetter
  import pytest
  from funcy import raiser
  from dvc.dvcfile import PROJECT_FILE, FileIsGitIgnored
  from dvc.exceptions import NoOutputOrStageError
  from dvc.repo import Repo
  from dvc.stage.exceptions import StageFileDoesNotExistError, StageNameUnspecified, StageNotFound
  from dvc.utils import relpath
  from dvc.utils.fs import remove
  from dvc.utils.strictyaml import YAMLValidationError
label_desc: Use image node_id 16 for calling a global function with example usage: test_collect_granular_collision_output_dir_stage_name(tmp_dir, dvc, run_copy) without return types