From 720bd1e96b4e9c36d035987578fc01a9939d753f Mon Sep 17 00:00:00 2001 From: Gavin Mak Date: Wed, 23 Jul 2025 15:23:10 -0700 Subject: sync: Don't checkout if no worktree Interleaved sync should not try checkout out a project if it's a mirror. Change-Id: I2549faab197a3202d79a10e44b449b68d53e3fe7 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/492942 Commit-Queue: Gavin Mak Reviewed-by: Scott Lee Tested-by: Gavin Mak --- tests/test_subcmds_sync.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'tests/test_subcmds_sync.py') diff --git a/tests/test_subcmds_sync.py b/tests/test_subcmds_sync.py index 9cd19f10..5955e404 100644 --- a/tests/test_subcmds_sync.py +++ b/tests/test_subcmds_sync.py @@ -309,6 +309,7 @@ class FakeProject: self.relpath = relpath self.name = name or relpath self.objdir = objdir or relpath + self.worktree = relpath self.use_git_worktrees = False self.UseAlternates = False @@ -836,6 +837,25 @@ class InterleavedSyncTest(unittest.TestCase): project.Sync_NetworkHalf.assert_called_once() project.Sync_LocalHalf.assert_not_called() + def test_worker_no_worktree(self): + """Test interleaved sync does not checkout with no worktree.""" + opt = self._get_opts() + project = self.projA + project.worktree = None + project.Sync_NetworkHalf = mock.Mock( + return_value=SyncNetworkHalfResult(error=None, remote_fetched=True) + ) + project.Sync_LocalHalf = mock.Mock() + self.mock_context["projects"] = [project] + + result_obj = self.cmd._SyncProjectList(opt, [0]) + result = result_obj.results[0] + + self.assertTrue(result.fetch_success) + self.assertTrue(result.checkout_success) + project.Sync_NetworkHalf.assert_called_once() + project.Sync_LocalHalf.assert_not_called() + def test_worker_fetch_fails_exception(self): """Test _SyncProjectList with an exception during fetch.""" opt = self._get_opts() -- cgit v1.2.3-54-g00ecf