code: def test_run_recipe_step_without_change_preserves_state_of_all_recipe_steps(
      test_recipe,
  ):
      _, split_step, transform_step = test_recipe
      curr_time = time.time()
  
      run_test_recipe_step(test_recipe, transform_step)
      step_to_execution_state = {}
      for step in test_recipe:
          step_execution_state = get_test_recipe_step_execution_state(
              step
          )
          step_to_execution_state[step] = step_execution_state
          assert step_execution_state.status == StepStatus.SUCCEEDED
          assert (
              step_execution_state.last_updated_timestamp >= curr_time
          )
  
      run_test_recipe_step(test_recipe, split_step)
      for step in test_recipe:
          step_execution_state = get_test_recipe_step_execution_state(
              step
          )
          prev_execution_state = step_to_execution_state[step]
          assert (
              step_execution_state.status == prev_execution_state.status
          )
          assert (
              step_execution_state.last_updated_timestamp
              == prev_execution_state.last_updated_timestamp
          )
  
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 17 for calling a global function with example usage: test_run_recipe_step_without_change_preserves_state_of_all_recipe_steps(test_recipe) without return types