def test_git_work_tree_dotgit(self, rw_dir): """Check that we find .git as a worktree file and find the worktree based on it.""" git = Git(rw_dir) if git.version_info[:3] < (2, 5, 1): raise SkipTest("worktree feature unsupported") rw_master = self.rorepo.clone(join_path_native(rw_dir, 'master_repo')) branch = rw_master.create_head('aaaaaaaa') worktree_path = join_path_native(rw_dir, 'worktree_repo') if Git.is_cygwin(): worktree_path = cygpath(worktree_path) rw_master.git.worktree('add', worktree_path, branch.name) # this ensures that we can read the repo's gitdir correctly repo = Repo(worktree_path) self.assertIsInstance(repo, Repo) # this ensures we're able to actually read the refs in the tree, which # means we can read commondir correctly. commit = repo.head.commit self.assertIsInstance(commit, Object) # this ensures we can read the remotes, which confirms we're reading # the config correctly. origin = repo.remotes.origin self.assertIsInstance(origin, Remote) self.assertIsInstance(repo.heads['aaaaaaaa'], Head)
def polish_url(cls, url, is_cygwin=None): if is_cygwin is None: is_cygwin = cls.is_cygwin() if is_cygwin: url = cygpath(url) else: """Remove any backslahes from urls to be written in config files. Windows might create config-files containing paths with backslashed, but git stops liking them as it will escape the backslashes. Hence we undo the escaping just to be sure. """ url = url.replace("\\\\", "\\").replace("\\", "/") return url
def test_work_tree_unsupported(self, rw_dir): git = Git(rw_dir) if git.version_info[:3] < (2, 5, 1): raise SkipTest("worktree feature unsupported") rw_master = self.rorepo.clone(join_path_native(rw_dir, 'master_repo')) rw_master.git.checkout('HEAD~10') worktree_path = join_path_native(rw_dir, 'worktree_repo') if Git.is_cygwin(): worktree_path = cygpath(worktree_path) try: rw_master.git.worktree('add', worktree_path, 'master') except Exception as ex: raise AssertionError(ex, "It's ok if TC not running from `master`.") self.failUnlessRaises(InvalidGitRepositoryError, Repo, worktree_path)
def test_linked_worktree_traversal(self, rw_dir): """Check that we can identify a linked worktree based on a .git file""" git = Git(rw_dir) if git.version_info[:3] < (2, 5, 1): raise SkipTest("worktree feature unsupported") rw_master = self.rorepo.clone(join_path_native(rw_dir, 'master_repo')) branch = rw_master.create_head('aaaaaaaa') worktree_path = join_path_native(rw_dir, 'worktree_repo') if Git.is_cygwin(): worktree_path = cygpath(worktree_path) rw_master.git.worktree('add', worktree_path, branch.name) dotgit = osp.join(worktree_path, ".git") statbuf = stat(dotgit) assert_true(statbuf.st_mode & S_IFREG) gitdir = find_worktree_git_dir(dotgit) self.assertIsNotNone(gitdir) statbuf = stat(gitdir) assert_true(statbuf.st_mode & S_IFDIR)
def test_git_work_tree_dotgit(self, rw_dir): """Check that we find .git as a worktree file and find the worktree based on it.""" git = Git(rw_dir) if git.version_info[:3] < (2, 5, 1): raise SkipTest("worktree feature unsupported") rw_master = self.rorepo.clone(join_path_native(rw_dir, 'master_repo')) branch = rw_master.create_head('aaaaaaaa') worktree_path = join_path_native(rw_dir, 'worktree_repo') if Git.is_cygwin(): worktree_path = cygpath(worktree_path) rw_master.git.worktree('add', worktree_path, branch.name) # this ensures that we can read the repo's gitdir correctly repo = Repo(worktree_path) self.assertIsInstance(repo, Repo) # this ensures we're able to actually read the refs in the tree, which # means we can read commondir correctly. commit = repo.head.commit self.assertIsInstance(commit, Object)
def test_cygpath_invalids(self, wpath): cwpath = cygpath(wpath) self.assertEqual(cwpath, wpath.replace('\\', '/'), wpath)
def test_cygpath_norm_ok(self, case): wpath, cpath = case cwpath = cygpath(wpath) self.assertEqual(cwpath, cpath or wpath, wpath)