|
| 1 | +from cascade.compiler import * |
| 2 | +from cascade.compiler.ast import CascadeConfig, Dependencies, Status |
| 3 | +from typing import List |
| 4 | +from zoneinfo import ZoneInfo |
| 5 | + |
| 6 | +DEFAULT_TZ = ZoneInfo("Europe/London") |
| 7 | + |
| 8 | + |
| 9 | +def test_implicit_deps(): |
| 10 | + tasks: List[Step | Goal] = [ |
| 11 | + Step(name="Task A", status=Status.todo, duration=DURATION_UNIT), |
| 12 | + Step( |
| 13 | + name="Task B", |
| 14 | + status=Status.todo, |
| 15 | + deps=Dependencies(after={"task-c"}), |
| 16 | + duration=DURATION_UNIT, |
| 17 | + ), |
| 18 | + Step(name="Task C", status=Status.todo, duration=DURATION_UNIT), |
| 19 | + Goal( |
| 20 | + name="Goal A", |
| 21 | + subtasks=["goal-b", "task-a"], |
| 22 | + implicit_deps_by_order=True, |
| 23 | + ), |
| 24 | + Goal(name="Goal B", subtasks=["task-b"]), |
| 25 | + ] |
| 26 | + ast = TaskAST(config=CascadeConfig(default_tz=DEFAULT_TZ), tasks=tasks) |
| 27 | + processed = ProcessedAST.from_raw_ast(ast) |
| 28 | + |
| 29 | + assert len(processed.nodes) == 3 |
| 30 | + assert processed.nodes["task-a"].deps == {"task-b"} |
| 31 | + assert processed.nodes["task-b"].deps == {"task-c"} |
| 32 | + assert processed.nodes["task-c"].deps == set() |
0 commit comments