Ensure that this works:

```python
@setup
def mytask():
    print("I am a setup task")

with dag_maker() as dag:
    mytask.override(task_id='newtask')

assert len(dag.task_group.children) == 1
setup_task = dag.task_group.children["newtask"]
assert setup_task._is_setup
```
and teardown also works
serialized = SerializedDAG.serialize(val)
        assert serialized == expected
        round_tripped = SerializedDAG.deserialize(serialized)
        assert val == round_tripped
    @pytest.mark.parametrize(
        "val, expected_val",
        [
            (None, {}),
            ({"param_1": "value_1"}, {"param_1": "value_1"}),
            ({"param_1": {1, 2, 3}}, {"param_1": {1, 2, 3}}),
        ],
    )
    def test_dag_params_roundtrip(self, val, expected_val):
        """
        Test that params work both on Serialized DAGs & Tasks
        """
        dag = DAG(dag_id="simple_dag", params=val)
        BaseOperator(task_id="simple_task", dag=dag, start_date=datetime(2019, 8, 1))
        serialized_dag_json = SerializedDAG.to_json(dag)
        serialized_dag = json.loads(serialized_dag_json)
        assert "params" in serialized_dag["dag"]
        deserialized_dag = SerializedDAG.from_dict(serialized_dag)
        deserialized_simple_task = deserialized_dag.task_dict["simple_task"]
        assert expected_val == deserialized_dag.params.dump()
        assert expected_val == deserialized_simple_task.params.dump()
    def test_invalid_params(self):
        """
        Test to make sure that only native Param objects are being passed as dag or task params
        """
        class S3Param(Param):