@@ -16,6 +16,7 @@ def test_archive_workflow(tmpdir, mocker, test_function, expected_state):
16
16
"""Regression test archive_workflow."""
17
17
workdir = str (tmpdir / "workdir" )
18
18
db = mocker .MagicMock ()
19
+ db .workflows .get_workflow_state .return_value = "Running"
19
20
mocker .patch ("os.path.expanduser" , return_value = str (tmpdir ))
20
21
mocker .patch (
21
22
"beeflow.wf_manager.resources.wf_utils.get_workflow_dir" , return_value = workdir
@@ -54,3 +55,18 @@ def test_archive_workflow(tmpdir, mocker, test_function, expected_state):
54
55
mock_update_wf_status .assert_called_once_with ("wf_id_test" , expected_state )
55
56
mock_remove_wf_dir .assert_called_once_with ("wf_id_test" )
56
57
mock_log .assert_called_once_with ("Removing Workflow Directory" )
58
+
59
+
60
+ @pytest .mark .parametrize ("wf_state" , ["Archived" , "Archived/Failed" ])
61
+ def test_archive_archived_wf (mocker , wf_state ):
62
+ """Don't archive workflow that is already archived."""
63
+ db = mocker .MagicMock ()
64
+ db .workflows .get_workflow_state .return_value = wf_state
65
+ mock_log_warning = mocker .patch ("logging.Logger.warning" )
66
+ wf_update .archive_workflow (db , "id" )
67
+ mock_log_warning .assert_called_once_with (
68
+ (
69
+ "Attempted to archive workflow id which is already archived; "
70
+ f"in state { wf_state } ."
71
+ )
72
+ )
0 commit comments