| # ===--- 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', 'master']) |
| |
| 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() |