code: def test_should_raise_on_overlapping_output_paths(
      tmp_dir, dvc, append_foo_script
  ):
      tmp_dir.gen("data", {"foo": "foo", "bar": "bar"})
      ret = main(["add", "data"])
      assert ret == 0
  
      foo_file = os.path.join("data", "foo")
      with pytest.raises(OverlappingOutputPathsError) as err:
          dvc.run(
              outs=["data/foo"],
              cmd=f"python append_foo.py {foo_file}",
              name="append-foo",
          )
  
      error_output = str(err.value)
  
      assert "The output paths:\n" in error_output
      assert "\n'data'('data.dvc')\n" in error_output
      assert f"\n'{foo_file}'('append-foo')\n" in error_output
      assert (
          "overlap and are thus in the same tracked directory.\n"
          "To keep reproducibility, outputs should be in separate "
          "tracked directories or tracked individually." in error_output
      )
  
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 30 for calling a global function with example usage: test_should_raise_on_overlapping_output_paths(tmp_dir, dvc, append_foo_script) without return types