code: def test_find_path_from_directory_fails_on_recursive_link(
      self, test_dir
  ):
      # add a recursive link
      recursing_src = os.path.join(test_dir, "folder2", "recursor")
      recursing_tgt = os.path.join(test_dir, "folder2")
      os.mkdir(recursing_tgt)
      os.symlink(recursing_tgt, recursing_src)
  
      ignore_list_file = ".airflowignore"
  
      try:
          list(
              find_path_from_directory(
                  test_dir, ignore_list_file, ignore_file_syntax="glob"
              )
          )
          assert False, "Walking a self-recursive tree should fail"
      except RuntimeError as err:
          assert str(err) == (
              f"Detected recursive loop when walking DAG directory {test_dir}: "
              f"{Path(recursing_tgt).resolve()} has appeared more than once."
          )
  
imports: from __future__ import annotations
  import os
  import zipfile
  from pathlib import Path
  from unittest import mock
  import pytest
  from airflow.utils import file
  from airflow.utils.file import correct_maybe_zipped, find_path_from_directory, open_maybe_zipped
  from tests.models import TEST_DAGS_FOLDER
  from tests.test_utils.config import conf_vars
label_desc: Use image node_id 6 for calling the TestListPyFilesPath obj's underlying member method code with example usage: obj.test_find_path_from_directory_fails_on_recursive_link(test_dir) without return types