@@ -428,6 +428,7 @@ def test_merge_future_tasks_to_submissions() -> None:
428428 tasks_3 = context .submit_subtasks ([TaskA (6 , "six" ), TaskB (8.12 )], cluster = "other" )
429429
430430 submissions = merge_future_tasks_to_submissions (tasks_1 + tasks_2 + tasks_3 , fallback_cluster = "test" )
431+ assert submissions is not None
431432 assert len (submissions .task_groups ) == 1
432433 group = submissions .task_groups [0 ]
433434 assert group .dependencies_on_other_groups == []
@@ -465,6 +466,7 @@ def test_merge_future_tasks_to_submissions_dependencies() -> None:
465466 # tasks_1, tasks_2 and tasks_4 should not be merged, because they have different dependants
466467 # tasks_3 and tasks_5 should not be merged, because they have different dependencies
467468
469+ assert submissions is not None
468470 assert len (submissions .task_groups ) == 5
469471 assert submissions .task_groups [0 ].dependencies_on_other_groups == []
470472 assert submissions .task_groups [0 ].inputs == [serialize_task (TaskA (2 , "two" )), serialize_task (TaskA (3 , "three" ))]
@@ -485,6 +487,7 @@ def test_merge_future_tasks_to_submissions_many_tasks() -> None:
485487 tasks_2 = context .submit_subtasks ([TaskB (i / 3 ) for i in range (n )], depends_on = tasks_1 )
486488
487489 submissions = merge_future_tasks_to_submissions (tasks_1 + tasks_2 , fallback_cluster = "test" )
490+ assert submissions is not None
488491 assert len (submissions .task_groups ) == 2
489492 assert submissions .task_groups [0 ].dependencies_on_other_groups == []
490493 assert submissions .task_groups [0 ].identifier_pointers == [0 ] * n
@@ -500,4 +503,26 @@ def test_merge_future_tasks_to_submissions_many_non_mergeable_dependency_groups(
500503 context .submit_subtasks ([TaskB (i / 3 )], depends_on = task_1 )
501504
502505 submissions = merge_future_tasks_to_submissions (context ._sub_tasks , fallback_cluster = "test" )
506+ assert submissions is not None
503507 assert len (submissions .task_groups ) == 2 * n
508+
509+
510+ def test_merge_future_tasks_two_separate_branches () -> None :
511+ context = RunnerExecutionContext (None , None , job_cache = InMemoryCache ()) # type: ignore[arg-type]
512+ task_a = context .submit_subtasks ([TaskA (0 , "Task 0" )])
513+ # left branch
514+ task_b_left = context .submit_subtasks ([TaskB (0.0 )], depends_on = task_a )
515+ context .submit_subtasks ([TaskB (1.0 )], depends_on = task_b_left )
516+
517+ # right branch
518+ task_b_right = context .submit_subtasks ([TaskB (2.0 )], depends_on = task_a )
519+ context .submit_subtasks ([TaskB (3.0 )], depends_on = task_b_right )
520+
521+ submissions = merge_future_tasks_to_submissions (context ._sub_tasks , fallback_cluster = "test" )
522+ assert submissions is not None
523+ assert len (submissions .task_groups ) == 5
524+ assert submissions .task_groups [0 ].dependencies_on_other_groups == []
525+ assert submissions .task_groups [1 ].dependencies_on_other_groups == [0 ]
526+ assert submissions .task_groups [2 ].dependencies_on_other_groups == [1 ]
527+ assert submissions .task_groups [3 ].dependencies_on_other_groups == [0 ]
528+ assert submissions .task_groups [4 ].dependencies_on_other_groups == [3 ]
0 commit comments