code: def test_run_unexpanded_placeholders(path=None):
      ds = Dataset(path).create()
      cmd = [
          sys.executable,
          "-c",
          "import sys; open(sys.argv[1], 'w').write(' '.join(sys.argv[2:]))",
      ]
  
      # It's weird, but for lack of better options, inputs and outputs that don't
      # have matches are available unexpanded.
  
      with assert_raises(IncompleteResultsError):
          ds.run(
              cmd + ["arg1", "{inputs}"],
              inputs=["foo*"],
              on_failure="continue",
          )
      assert_repo_status(ds.path)
      ok_file_has_content(op.join(path, "arg1"), "foo*")
  
      ds.run(cmd + ["arg2", "{outputs}"], outputs=["bar*"])
      assert_repo_status(ds.path)
      ok_file_has_content(op.join(path, "arg2"), "bar*")
  
      ds.run(cmd + ["arg3", "{outputs[1]}"], outputs=["foo*", "bar"])
      ok_file_has_content(op.join(path, "arg3"), "bar")
  
imports: import logging
  import os
  import os.path
  import sys
  from os import mkdir, remove
  from unittest.mock import patch
  from datalad.api import clone, run
  from datalad.cli.main import main
  from datalad.core.local.run import _format_iospecs, _get_substitutions, format_command, run_command
  from datalad.distribution.dataset import Dataset
  from datalad.support.exceptions import CommandError, IncompleteResultsError, NoDatasetFound
  from datalad.tests.utils_pytest import DEFAULT_BRANCH, OBSCURE_FILENAME, assert_false, assert_in, assert_in_results, assert_not_in, assert_not_in_results, assert_raises, assert_repo_status, assert_result_count, assert_status, create_tree, eq_, known_failure_windows, neq_, ok_, ok_exists, ok_file_has_content, patch_config, swallow_logs, swallow_outputs, with_tempfile, with_tree
  from datalad.utils import chpwd, ensure_unicode, on_windows
label_desc: Use image node_id 18 for calling a global function with example usage: test_run_unexpanded_placeholders(path) without return types