code: def test_two_step_fail_pipeline_with_join_fn(
      sagemaker_session, role, pipeline_name
  ):
      param = ParameterInteger(name="MyInt", default_value=2)
      cond = ConditionEquals(left=param, right=1)
      step_cond = ConditionStep(
          name="CondStep",
          conditions=[cond],
          if_steps=[],
          else_steps=[],
      )
      step_fail = FailStep(
          name="FailStep",
          error_message=Join(
              on=": ",
              values=[
                  "Failed due to xxx == yyy returns",
                  step_cond.properties.Outcome,
              ],
          ),
      )
      pipeline = Pipeline(
          name=pipeline_name,
          steps=[step_cond, step_fail],
          sagemaker_session=sagemaker_session,
          parameters=[param],
      )
  
      try:
          response = pipeline.create(role)
          pipeline_arn = response["PipelineArn"]
          execution = pipeline.start(
              parameters={"MyInt": 3},
          )
          response = execution.describe()
          assert response["PipelineArn"] == pipeline_arn
  
          wait_pipeline_execution(execution=execution)
          execution_steps = execution.list_steps()
  
          assert len(execution_steps) == 2
          for execution_step in execution_steps:
              if execution_step["StepName"] == "CondStep":
                  assert execution_step["StepStatus"] == "Succeeded"
                  continue
              assert execution_step["StepName"] == "FailStep"
              assert execution_step["StepStatus"] == "Failed"
              assert (
                  execution_step["FailureReason"]
                  == "Failed due to xxx == yyy returns: false"
              )
              metadata = execution_steps[0]["Metadata"]["Fail"]
              assert (
                  metadata["ErrorMessage"]
                  == "Failed due to xxx == yyy returns: false"
              )
  
          # Check FailureReason field in ListPipelineExecutions
          executions = sagemaker_session.sagemaker_client.list_pipeline_executions(
              PipelineName=pipeline.name
          )[
              "PipelineExecutionSummaries"
          ]
  
          assert len(executions) == 1
          assert executions[0]["PipelineExecutionStatus"] == "Failed"
          assert (
              "Step failure: One or multiple steps failed"
              in executions[0]["PipelineExecutionFailureReason"]
          )
      finally:
          try:
              pipeline.delete()
          except Exception:
              pass
  
file_path: sagemaker-python-sdk/tests/integ/sagemaker/workflow/test_fail_steps.py
imports: from __future__ import absolute_import
  import pytest
  from tests.integ.sagemaker.workflow.helpers import wait_pipeline_execution
  from sagemaker import get_execution_role, utils
  from sagemaker.workflow.condition_step import ConditionStep
  from sagemaker.workflow.conditions import ConditionEquals, ConditionNot
  from sagemaker.workflow.fail_step import FailStep
  from sagemaker.workflow.functions import Join
  from sagemaker.workflow.parameters import ParameterInteger, ParameterString
  from sagemaker.workflow.pipeline import Pipeline
label_desc: Use image node_id 5 for calling a global function with example usage: test_two_step_fail_pipeline_with_join_fn(sagemaker_session, role, pipeline_name) without return types