code: def test_flow_runner():
      old_argv = sys.argv
      sys.argv = [sys.argv[0]]
  
      opt_keys = [
          "param_combined",
          "dwf1.param1",
          "dwf2.param2",
          "force",
          "out_strat",
          "mix_names",
      ]
  
      pos_results = ["dipy.txt"]
      opt_results = [30, 10, 20, True, "absolute", True]
  
      inputs = inputs_from_results(opt_results, opt_keys, optional=True)
      inputs.extend(inputs_from_results(pos_results))
  
      sys.argv.extend(inputs)
  
      dcwf = DummyCombinedWorkflow()
      param1, param2, combined = run_flow(dcwf)
  
      # generic flow params
      assert dcwf._force_overwrite
      assert dcwf._output_strategy == "absolute"
      assert dcwf._mix_names
  
      # sub flow params
      assert param1 == 10
      assert param2 == 20
  
      # parent flow param
      assert combined == 30
  
      sys.argv = old_argv
  
file_path: dipy/dipy/workflows/tests/test_iap.py
imports: import sys
  from os.path import join
  from tempfile import TemporaryDirectory
  import numpy.testing
  from dipy.workflows.base import IntrospectiveArgumentParser, none_or_dtype
  from dipy.workflows.flow_runner import run_flow
  from dipy.workflows.tests.workflow_tests_utils import DummyFlow, DummyCombinedWorkflow, DummyWorkflow1, DummyWorkflowOptionalStr, DummyVariableTypeWorkflow, DummyVariableTypeErrorWorkflow
label_desc: Use image node_id 6 for calling a global function with example usage: test_flow_runner() without return types