### 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.
for ti in test_dag.get_task_instances_before(base_date=REF_DATE, num=0, session=session)
            ]
        )
        assert set([dr.run_id for dr in [dr8]]) == set(
            [
                ti.run_id
                for ti in test_dag.get_task_instances_before(base_date=REF_DATE, num=1, session=session)
            ]
        )
        assert set([dr.run_id for dr in [dr8]]) == set(
            [
                ti.run_id
                for ti in test_dag.get_task_instances_before(base_date=REF_DATE, num=10, session=session)
            ]
        )
        session.close()
    def test_user_defined_filters_macros(self):
        def jinja_udf(name):
            return f"Hello {name}"
        dag = DAG(
            "test-dag",
            start_date=DEFAULT_DATE,
            user_defined_filters={"hello": jinja_udf},
            user_defined_macros={"foo": "bar"},
        )
        jinja_env = dag.get_template_env()
        assert "hello" in jinja_env.filters
        assert jinja_env.filters["hello"] == jinja_udf
        assert jinja_env.globals["foo"] == "bar"
    def test_set_jinja_env_additional_option(self):