6868from databricks .labs .ucx .hive_metastore import TablesCrawler , ExternalLocations
6969from databricks .labs .ucx .hive_metastore .locations import ExternalLocation
7070from databricks .labs .ucx .hive_metastore .tables import Table
71+ from databricks .labs .ucx .progress .install import VerifyProgressTracking
7172from databricks .labs .ucx .source_code .linters .files import LocalFileMigrator
7273
7374
@@ -929,6 +930,7 @@ def test_migrate_tables_calls_migrate_table_job_run_now(
929930 )
930931 for workspace_client in workspace_clients :
931932 workspace_client .jobs .wait_get_run_job_terminated_or_skipped .return_value = run
933+ workspace_client .jobs .list_runs .return_value = [Run (state = RunState (result_state = RunResultState .SUCCESS ))]
932934
933935 migrate_tables (workspace_clients [0 ], MockPrompts ({}), run_as_collection = run_as_collection , a = acc_client )
934936
@@ -937,6 +939,30 @@ def test_migrate_tables_calls_migrate_table_job_run_now(
937939 workspace_client .jobs .wait_get_run_job_terminated_or_skipped .assert_called_once ()
938940
939941
942+ @pytest .mark .parametrize ("run_as_collection" , [False , True ])
943+ def test_migrate_tables_errors_out_before_assessment (
944+ run_as_collection ,
945+ workspace_clients ,
946+ acc_client ,
947+ ) -> None :
948+ if not run_as_collection :
949+ workspace_clients = [workspace_clients [0 ]]
950+ run = Run (
951+ state = RunState (result_state = RunResultState .SUCCESS ),
952+ start_time = 0 ,
953+ end_time = 1000 ,
954+ run_duration = 1000 ,
955+ )
956+ for workspace_client in workspace_clients :
957+ workspace_client .jobs .wait_get_run_job_terminated_or_skipped .return_value = run
958+ workspace_client .jobs .list_runs .return_value = [Run (state = RunState (result_state = RunResultState .FAILED ))]
959+
960+ migrate_tables (workspace_clients [0 ], MockPrompts ({}), run_as_collection = run_as_collection , a = acc_client )
961+
962+ for workspace_client in workspace_clients :
963+ workspace_client .jobs .run_now .assert_not_called ()
964+
965+
940966def test_migrate_tables_calls_external_hiveserde_tables_job_run_now (ws ) -> None :
941967 # TODO: Test for running on a collection when context injection for multiple workspaces is supported.
942968 tables_crawler = create_autospec (TablesCrawler )
@@ -948,7 +974,9 @@ def test_migrate_tables_calls_external_hiveserde_tables_job_run_now(ws) -> None:
948974 table_format = "HIVE" ,
949975 )
950976 tables_crawler .snapshot .return_value = [table ]
951- ctx = WorkspaceContext (ws ).replace (tables_crawler = tables_crawler )
977+ verify_progress_tracking = create_autospec (VerifyProgressTracking )
978+ verify_progress_tracking .verify .return_value = None
979+ ctx = WorkspaceContext (ws ).replace (tables_crawler = tables_crawler , verify_progress_tracking = verify_progress_tracking )
952980 ws .jobs .wait_get_run_job_terminated_or_skipped .return_value = Run (
953981 state = RunState (result_state = RunResultState .SUCCESS ),
954982 start_time = 0 ,
@@ -979,7 +1007,10 @@ def test_migrate_tables_calls_external_tables_ctas_job_run_now(ws) -> None:
9791007 table_format = "EXTERNAL" ,
9801008 )
9811009 tables_crawler .snapshot .return_value = [table ]
982- ctx = WorkspaceContext (ws ).replace (tables_crawler = tables_crawler )
1010+ verify_progress_tracking = create_autospec (VerifyProgressTracking )
1011+ verify_progress_tracking .verify .return_value = None
1012+ ctx = WorkspaceContext (ws ).replace (tables_crawler = tables_crawler , verify_progress_tracking = verify_progress_tracking )
1013+
9831014 ws .jobs .wait_get_run_job_terminated_or_skipped .return_value = Run (
9841015 state = RunState (result_state = RunResultState .SUCCESS ),
9851016 start_time = 0 ,
0 commit comments