code: def test_get_recurse_dirs(o_path=None, c_path=None):
      # prepare source:
      origin = Dataset(o_path).create(force=True)
      origin.save()
  
      ds = install(
          c_path,
          source=o_path,
          result_xfm="datasets",
          return_type="item-or-list",
      )
  
      file_list = [
          "file1.txt",
          opj("subdir", "file2.txt"),
          opj("subdir", "subsubdir", "file3.txt"),
          opj("subdir", "subsubdir", "file4.txt"),
      ]
      files_in_sub = [
          f for f in file_list if f.startswith(with_pathsep("subdir"))
      ]
  
      # no content present:
      ok_(not any(ds.repo.file_has_content(file_list)))
  
      result = ds.get("subdir")
      # check result:
      assert_status("ok", result)
      eq_(
          set(
              [
                  item.get("path")[len(ds.path) + 1 :]
                  for item in result
                  if item["type"] == "file"
              ]
          ),
          set(files_in_sub),
      )
      # we also get one report on the subdir
      eq_(len(result) - 1, len(files_in_sub))
  
      # got all files beneath subdir:
      ok_(all(ds.repo.file_has_content(files_in_sub)))
  
      # additionally got file1.txt silently, since it has the same content as
      # subdir/subsubdir/file4.txt:
      ok_(ds.repo.file_has_content("file1.txt") is True)
  
imports: from os import curdir
  from os.path import basename
  from os.path import join
  from unittest.mock import patch
  import pytest
  from datalad.api import clone, create, get, install
  from datalad.distribution.get import _get_flexible_source_candidates_for_submodule
  from datalad.interface.results import only_matching_paths
  from datalad.support.annexrepo import AnnexRepo
  from datalad.support.exceptions import InsufficientArgumentsError, RemoteNotAvailableError
  from datalad.support.network import get_local_file_url
  from datalad.tests.utils_testdatasets import _make_dataset_hierarchy, _mk_submodule_annex
  from datalad.tests.utils_pytest import create_tree, assert_false, assert_raises, assert_in, assert_status, assert_in_results, assert_not_in_results, assert_repo_status, assert_result_count, assert_message, DEFAULT_REMOTE, eq_, known_failure_windows, known_failure_githubci_win, ok_, serve_path_via_http, skip_if_adjusted_branch, skip_ssh, skip_if_on_windows, slow, with_tempfile, with_tree
  from datalad.utils import Path, chpwd, rmtree, with_pathsep
  from ..dataset import Dataset
label_desc: Use image node_id 6 for calling a global function with example usage: test_get_recurse_dirs(o_path, c_path) without return types