code: def test_remove_subds(path=None):
      ds = create(path)
      ds.create("sub")
      ds.create(op.join("sub", "subsub"))
      assert_repo_status(ds.path)
      assert_result_count(
          ds.subdatasets(), 1, path=op.join(ds.path, "sub")
      )
      # all good at this point, subdataset known, dataset clean
      # now have some external force wipe out the subdatasets
      rmtree(op.join(ds.path, "sub"))
      assert_result_count(
          ds.status(), 1, path=op.join(ds.path, "sub"), state="deleted"
      )
      # a single call to save() must fix up the mess
      assert_status("ok", ds.save())
      assert_repo_status(ds.path)
  
imports: import itertools
  import logging
  import os
  import os.path
  import pytest
  import datalad.utils
  from datalad.api import create, install, save
  from datalad.distribution.dataset import Dataset
  from datalad.support.annexrepo import AnnexRepo
  from datalad.support.exceptions import CommandError
  from datalad.tests.utils_pytest import DEFAULT_BRANCH, OBSCURE_FILENAME, SkipTest, assert_in, assert_in_results, assert_not_in, assert_raises, assert_repo_status, assert_result_count, assert_status, chpwd, create_tree, eq_, known_failure, known_failure_windows, maybe_adjust_repo, neq_, ok_, patch, skip_if_adjusted_branch, skip_wo_symlink_capability, swallow_logs, swallow_outputs, with_tempfile, with_tree
  from datalad.utils import Path, ensure_list, rmtree
label_desc: Use image node_id 21 for calling a global function with example usage: test_remove_subds(path) without return types