@@ -104,3 +104,41 @@ def test_list_workspace_workflows_collects_repository_workflows(
104104 }
105105 ]
106106 }
107+
108+
109+ @patch ("workflow_service.read_workflows" )
110+ @patch ("workflow_service.get_workspace_home" )
111+ def test_list_workspace_workflows_skips_git_worktrees (
112+ mock_workspace_home , mock_read_workflows
113+ ):
114+ mock_workspace_home .return_value = Path ("/workspace/home" )
115+
116+ repo = Path ("/workspace/home/repo-a" )
117+ worktree = Path ("/workspace/home/repo-a-feature" )
118+
119+ with patch .object (Path , "iterdir" , return_value = [repo , worktree ]), patch .object (
120+ Path , "is_dir" , return_value = True
121+ ), patch .object (Path , "is_file" , side_effect = [False , True ]):
122+ mock_read_workflows .return_value = {
123+ "workflows" : [
124+ {"id" : "wf_a" , "name" : "A" , "enabled" : True , "schedule" : "* * * * *" }
125+ ]
126+ }
127+
128+ result = list_workspace_workflows ()
129+
130+ assert result == {
131+ "workflows" : [
132+ {
133+ "repository" : "repo-a" ,
134+ "id" : "wf_a" ,
135+ "name" : "A" ,
136+ "enabled" : True ,
137+ "schedule" : "* * * * *" ,
138+ "shellScriptPath" : None ,
139+ "lastRun" : None ,
140+ "diagnostics" : None ,
141+ }
142+ ]
143+ }
144+ mock_read_workflows .assert_called_once_with ("repo-a" )
0 commit comments