### Body

Currently `start_date` is mandatory parameter.
For DAGs with `schedule=None` we can relax this requirement as no scheduling calculation needed so the `start_date` parameter isn't used.

### Committer

- [X] I acknowledge that I am a maintainer/committer of the Apache Airflow project.
"""
        Test that the dag file processor creates multiple dagruns
        if a dag is scheduled with 'timedelta' and catchup=True
        """
        dag = DAG(
            "test_scheduler_dagrun_once_with_timedelta_and_catchup_true",
            start_date=timezone.datetime(2020, 5, 1),
            schedule=timedelta(days=1),
            catchup=True,
        )
        next_info = dag.next_dagrun_info(None)
        assert next_info and next_info.logical_date == timezone.datetime(2020, 5, 1)
        next_info = dag.next_dagrun_info(next_info.data_interval)
        assert next_info and next_info.logical_date == timezone.datetime(2020, 5, 2)
        next_info = dag.next_dagrun_info(next_info.data_interval)
        assert next_info and next_info.logical_date == timezone.datetime(2020, 5, 3)
        
        next_info = dag.next_dagrun_info(next_info.data_interval)
        assert next_info and next_info.logical_date == timezone.datetime(2020, 5, 4)
    def test_next_dagrun_info_timetable_exception(self, caplog):
        """Test the DAG does not crash the scheduler if the timetable raises an exception."""
        class FailingTimetable(Timetable):