code: def test_catchup_next_info_starts_at_previous_interval_end(
      timetable: Timetable,
  ) -> None:
      """If ``catchup=True``, the next interval starts at the previous's end."""
      next_info = timetable.next_dagrun_info(
          last_automated_data_interval=PREV_DATA_INTERVAL,
          restriction=TimeRestriction(
              earliest=START_DATE, latest=None, catchup=True
          ),
      )
      expected_end = PREV_DATA_INTERVAL_END + datetime.timedelta(
          hours=1
      )
      assert next_info == DagRunInfo.interval(
          start=PREV_DATA_INTERVAL_END, end=expected_end
      )
  
imports: from __future__ import annotations
  import datetime
  import dateutil.relativedelta
  import pendulum
  import pytest
  import time_machine
  from airflow.exceptions import AirflowTimetableInvalid
  from airflow.timetables.base import DagRunInfo, DataInterval, TimeRestriction, Timetable
  from airflow.timetables.interval import CronDataIntervalTimetable, DeltaDataIntervalTimetable
  from airflow.utils.timezone import utc
label_desc: Use image node_id 4 for calling a global function with example usage: test_catchup_next_info_starts_at_previous_interval_end(timetable) without return types