code: def test_save_subds_change(path=None):
      ckwa = dict(result_renderer="disabled")
      ds = Dataset(path).create(**ckwa)
      subds = ds.create("sub", **ckwa)
      assert_repo_status(ds.repo)
      rmtree(subds.path)
      res = ds.save(**ckwa)
      assert_repo_status(ds.repo)
      # updated .gitmodules, deleted subds, saved superds
      assert len(res) == 3
      assert_in_results(
          res, type="dataset", path=ds.path, action="save"
      )
      assert_in_results(
          res, type="dataset", path=subds.path, action="delete"
      )
      assert_in_results(
          res,
          type="file",
          path=str(ds.pathobj / ".gitmodules"),
          action="add",
      )
      # now add one via save
      subds2 = create(ds.pathobj / "sub2", **ckwa)
      res = ds.save(**ckwa)
      # updated .gitmodules, added subds, saved superds
      assert len(res) == 3
      assert_repo_status(ds.repo)
      assert_in_results(
          res, type="dataset", path=ds.path, action="save"
      )
      assert_in_results(
          res, type="dataset", path=subds2.path, action="add"
      )
      assert_in_results(
          res,
          type="file",
          path=str(ds.pathobj / ".gitmodules"),
          action="add",
      )
  
file_path: datalad/datalad/support/tests/test_repo_save.py
imports: import shutil
  from datalad.api import create
  from datalad.distribution.dataset import Dataset
  from datalad.support.annexrepo import AnnexRepo
  from datalad.support.gitrepo import GitRepo
  from datalad.tests.utils_pytest import assert_in, assert_in_results, assert_not_in, assert_repo_status, create_tree, eq_, get_annexstatus, get_convoluted_situation, known_failure_windows, slow, with_tempfile
  from datalad.utils import on_windows, rmtree
label_desc: Use image node_id 7 for calling a global function with example usage: test_save_subds_change(path) without return types