code: def test_makefile_with_runtime_error_print_cached_steps_messages(
      capsys,
  ):
      split = 'echo "Run MLflow Recipe step: split"'
      tokens = _MAKEFILE_FORMAT_STRING.split(split)
      assert len(tokens) == 2
      tokens[1] = "\n\tnon-existing-cmd" + tokens[1]
      malformed_makefile_rte = split.join(tokens)
  
      with mock.patch(
          "mlflow.recipes.utils.execution._MAKEFILE_FORMAT_STRING",
          new=malformed_makefile_rte,
      ):
          r = Recipe(profile="local")
          r.clean()
          try:
              r.run(step="split")
          except MlflowException:
              pass
          captured = capsys.readouterr()
          output_info = captured.out
          # Runtime error occurs
          assert re.search(r"\*\*\*.+Error", output_info) is not None
          # ingest step is executed
          assert (
              re.search("Running step ingest...", output_info)
              is not None
          )
          # split step is not executed
          assert re.search("Running step split...", output_info) is None
  
          try:
              r.run(step="split")
          except MlflowException:
              pass
          captured = capsys.readouterr()
          output_info = captured.out
          # Runtime error occurs
          assert re.search(r"\*\*\*.+Error", output_info) is not None
          output_info = captured.err
          # ingest step is cached
          assert (
              re.search("ingest: No changes. Skipping.", output_info)
              is not None
          )
          # split step is not cached
          assert (
              re.search("split: No changes. Skipping.", output_info)
              is None
          )
  
imports: import os
  import pathlib
  import re
  import shutil
  from unittest import mock
  import pandas
  import pytest
  import yaml
  import mlflow
  from mlflow.entities import Run, SourceType
  from mlflow.entities.model_registry import ModelVersion
  from mlflow.exceptions import MlflowException
  from mlflow.recipes.recipe import Recipe
  from mlflow.recipes.step import BaseStep
  from mlflow.recipes.utils.execution import _MAKEFILE_FORMAT_STRING, _get_execution_directory_basename, get_step_output_path
  from mlflow.tracking.client import MlflowClient
  from mlflow.tracking.context.registry import resolve_tags
  from mlflow.utils.file_utils import path_to_local_file_uri
  from mlflow.utils.mlflow_tags import LEGACY_MLFLOW_GIT_REPO_URL, MLFLOW_GIT_COMMIT, MLFLOW_GIT_REPO_URL, MLFLOW_SOURCE_NAME, MLFLOW_SOURCE_TYPE
  from tests.recipes.helper_functions import chdir, list_all_artifacts
label_desc: Use image node_id 14 for calling a global function with example usage: test_makefile_with_runtime_error_print_cached_steps_messages(capsys) without return types