code: def test_collect_repo_callback(tmp_dir, dvc, mocker):
      mock = mocker.Mock()
      dvc.stage_collection_error_handler = mock
  
      (stage,) = tmp_dir.dvc_gen("foo", "foo")
      (tmp_dir / PROJECT_FILE).dump(
          {"stages": {"cmd": "echo hello world"}}
      )
  
      dvc._reset()
      assert dvc.index.stages == [stage]
      mock.assert_called_once()
  
      file_path, exc = mock.call_args[0]
      assert file_path == PROJECT_FILE
      assert isinstance(exc, YAMLValidationError)
  
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 24 for calling a global function with example usage: test_collect_repo_callback(tmp_dir, dvc, mocker) without return types