code: def test_dirty(path=None):
      ds = Dataset(path).create(force=True)
      # must fail, because README.md is to be modified, but already dirty
      assert_in_results(
          ds.run_procedure(
              "cfg_yoda", on_failure="ignore", result_renderer=None
          ),
          action="run",
          status="error",
      )
      # make sure that was the issue
      # save to git explicitly to keep the test simple and avoid unlocking...
      ds.save("README.md", to_git=True)
      ds.run_procedure("cfg_yoda")
      assert_repo_status(ds.path)
  
imports: import json
  import os.path
  import sys
  from unittest.mock import patch
  from datalad.api import run_procedure
  from datalad.cmd import KillOutput, WitlessRunner
  from datalad.distribution.dataset import Dataset
  from datalad.support.exceptions import CommandError, InsufficientArgumentsError
  from datalad.tests.utils_pytest import OBSCURE_FILENAME, assert_false, assert_in_results, assert_not_in_results, assert_raises, assert_repo_status, assert_result_count, assert_true, eq_, known_failure_windows, ok_file_has_content, patch_config, with_tempfile, with_tree, xfail_buggy_annex_info
  from datalad.utils import chpwd, quote_cmdlinearg, swallow_outputs
label_desc: Use image node_id 2 for calling a global function with example usage: test_dirty(path) without return types