### 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.
"""
        Tests that an attempt to schedule a task after the Dag's end_date
        does not succeed.
        """
        delta = datetime.timedelta(hours=1)
        runs = 3
        start_date = DEFAULT_DATE
        end_date = start_date + (runs - 1) * delta
        dag_id = "test_schedule_dag_start_end_dates"
        dag = DAG(dag_id=dag_id, start_date=start_date, end_date=end_date, schedule=delta)
        dag.add_task(BaseOperator(task_id="faketastic", owner="Also fake"))
        
        dates = []
        interval = None
        for _ in range(runs):
            next_info = dag.next_dagrun_info(interval)
            if next_info is None:
                dates.append(None)
            else:
                interval = next_info.data_interval
                dates.append(interval.start)
        assert all(date is not None for date in dates)
        assert dates[-1] == end_date
        assert dag.next_dagrun_info(interval.start) is None
    def test_next_dagrun_info_catchup(self):