# ===--- test_clone.py ----------------------------------------------------===# # # This source file is part of the Swift.org open source project # # Copyright (c) 2014 - 2020 Apple Inc. and the Swift project authors # Licensed under Apache License v2.0 with Runtime Library Exception # # See https:#swift.org/LICENSE.txt for license information # See https:#swift.org/CONTRIBUTORS.txt for the list of Swift project authors # # ===----------------------------------------------------------------------===# import os from . import scheme_mock from .scheme_mock import call_quietly WORKTREE_NAME = "feature" def path_for_worktree(workspace_path, worktree_name): return os.path.join(workspace_path, worktree_name) def setup_worktree(workspace_path, local_path, worktree_name): worktree_path = path_for_worktree(workspace_path, worktree_name) os.makedirs(worktree_path) for project in os.listdir(local_path): local_project_path = os.path.join(local_path, project) worktree_project_path = os.path.join(worktree_path, project) call_quietly(['git', '-C', local_project_path, 'worktree', 'add', worktree_project_path]) def teardown_worktree(workspace_path, local_path, worktree_name): worktree_path = path_for_worktree(workspace_path, worktree_name) for project in os.listdir(local_path): local_project_path = os.path.join(local_path, project) worktree_project_path = os.path.join(worktree_path, project) call_quietly(['git', '-C', local_project_path, 'worktree', 'remove', worktree_project_path]) class WorktreeTestCase(scheme_mock.SchemeMockTestCase): def __init__(self, *args, **kwargs): super(WorktreeTestCase, self).__init__(*args, **kwargs) def test_worktree(self): self.call([self.update_checkout_path, '--config', self.config_path, '--source-root', self.worktree_path, '--scheme', 'main']) def setUp(self): super(WorktreeTestCase, self).setUp() self.worktree_path = os.path.join(self.workspace, WORKTREE_NAME) setup_worktree(self.workspace, self.local_path, WORKTREE_NAME) def tearDown(self): teardown_worktree(self.workspace, self.local_path, WORKTREE_NAME) super(WorktreeTestCase, self).tearDown()