code: def test_ignore_external(tmp_dir, scm, dvc, tmp_path_factory):
      tmp_dir.gen(".dvcignore", "*.backup\ntmp")
      ext_dir = TmpDir(
          os.fspath(tmp_path_factory.mktemp("external_dir"))
      )
      ext_dir.gen({"y.backup": "y", "tmp": {"file": "ext tmp"}})
  
      result = dvc.dvcignore.find(dvc.fs, ext_dir)
      assert set(result) == {
          (ext_dir / "y.backup").fs_path,
          (ext_dir / "tmp" / "file").fs_path,
      }
      assert (
          dvc.dvcignore.is_ignored_dir(os.fspath(ext_dir / "tmp"))
          is False
      )
      assert (
          dvc.dvcignore.is_ignored_file(os.fspath(ext_dir / "y.backup"))
          is False
      )
  
imports: import os
  import shutil
  from pathlib import Path
  from typing import List
  import pytest
  from dvc.ignore import DvcIgnore, DvcIgnorePatterns
  from dvc.output import OutputIsIgnoredError
  from dvc.pathspec_math import PatternInfo, merge_patterns
  from dvc.repo import Repo
  from dvc.testing.tmp_dir import TmpDir
  from dvc_data.hashfile.build import IgnoreInCollectedDirError
  from dvc_data.hashfile.utils import get_mtime_and_size
label_desc: Use image node_id 12 for calling a global function with example usage: test_ignore_external(tmp_dir, scm, dvc, tmp_path_factory) without return types