code: def test_execution_plan():
      train_subgraph = [
          "ingest",
          "split",
          "transform",
          "train",
          "evaluate",
          "register",
      ]
  
      # all steps are cached
      plan = _ExecutionPlan(
          "register",
          ["make: `register' is up to date."],
          train_subgraph,
      )
      assert plan.steps_cached == train_subgraph
  
      # all steps will be executed
      plan = _ExecutionPlan(
          "transform",
          [
              'echo "Run MLflow Recipe step: ingest"\n',
              'echo "Run MLflow Recipe step: split"\n',
              'echo "Run MLflow Recipe step: transform"\n',
          ],
          train_subgraph,
      )
      assert plan.steps_cached == []
  
      plan = _ExecutionPlan(
          "transform",
          ['echo "Run MLflow Recipe step: transform"\n'],
          train_subgraph,
      )
      assert plan.steps_cached == ["ingest", "split"]
  
imports: import os
  import pathlib
  import shutil
  import time
  from unittest import mock
  import pandas
  import pytest
  from mlflow.environment_variables import MLFLOW_RECIPES_EXECUTION_TARGET_STEP_NAME
  from mlflow.recipes import Recipe
  from mlflow.recipes.step import StepStatus
  from mlflow.recipes.steps.ingest import IngestStep
  from mlflow.recipes.steps.split import SplitStep
  from mlflow.recipes.steps.transform import TransformStep
  from mlflow.recipes.utils.execution import _ExecutionPlan, _get_or_create_execution_directory, get_step_output_path, run_recipe_step
  from tests.recipes.helper_functions import BaseStepImplemented
label_desc: Use image node_id 19 for calling a global function with example usage: test_execution_plan() without return types