def test_hook_commit_msg(self): commit_msg_fail = """#!/bin/sh exit 1 """ commit_msg_success = """#!/bin/sh exit 0 """ repo_dir = os.path.join(tempfile.mkdtemp()) os.mkdir(os.path.join(repo_dir, 'hooks')) self.addCleanup(shutil.rmtree, repo_dir) commit_msg = os.path.join(repo_dir, 'hooks', 'commit-msg') hook = CommitMsgShellHook(repo_dir) with open(commit_msg, 'w') as f: f.write(commit_msg_fail) os.chmod(commit_msg, stat.S_IREAD | stat.S_IWRITE | stat.S_IEXEC) self.assertRaises(errors.HookError, hook.execute, b'failed commit') with open(commit_msg, 'w') as f: f.write(commit_msg_success) os.chmod(commit_msg, stat.S_IREAD | stat.S_IWRITE | stat.S_IEXEC) hook.execute(b'empty commit')
def test_hook_commit_msg(self): commit_msg_fail = """#!/bin/sh exit 1 """ commit_msg_success = """#!/bin/sh exit 0 """ repo_dir = os.path.join(tempfile.mkdtemp()) os.mkdir(os.path.join(repo_dir, "hooks")) self.addCleanup(shutil.rmtree, repo_dir) commit_msg = os.path.join(repo_dir, "hooks", "commit-msg") hook = CommitMsgShellHook(repo_dir) f = open(commit_msg, "wb") try: f.write(commit_msg_fail) finally: f.close() os.chmod(commit_msg, stat.S_IREAD | stat.S_IWRITE | stat.S_IEXEC) self.assertRaises(errors.HookError, hook.execute, "failed commit") f = open(commit_msg, "wb") try: f.write(commit_msg_success) finally: f.close() os.chmod(commit_msg, stat.S_IREAD | stat.S_IWRITE | stat.S_IEXEC) hook.execute("empty commit")
def test_hook_commit_msg(self): commit_msg_fail = """#!/bin/sh exit 1 """ commit_msg_success = """#!/bin/sh exit 0 """ repo_dir = os.path.join(tempfile.mkdtemp()) if not isinstance(repo_dir, bytes): repo_dir = repo_dir.encode(sys.getfilesystemencoding()) os.mkdir(os.path.join(repo_dir, b'hooks')) self.addCleanup(shutil.rmtree, repo_dir) commit_msg = os.path.join(repo_dir, b'hooks', b'commit-msg') hook = CommitMsgShellHook(repo_dir) with open(commit_msg, 'w') as f: f.write(commit_msg_fail) os.chmod(commit_msg, stat.S_IREAD | stat.S_IWRITE | stat.S_IEXEC) self.assertRaises(errors.HookError, hook.execute, b'failed commit') with open(commit_msg, 'w') as f: f.write(commit_msg_success) os.chmod(commit_msg, stat.S_IREAD | stat.S_IWRITE | stat.S_IEXEC) hook.execute(b'empty commit')
def test_hook_commit_msg(self): commit_msg_fail = """#!/bin/sh exit 1 """ commit_msg_success = """#!/bin/sh exit 0 """ repo_dir = os.path.join(tempfile.mkdtemp()) os.mkdir(os.path.join(repo_dir, 'hooks')) self.addCleanup(shutil.rmtree, repo_dir) commit_msg = os.path.join(repo_dir, 'hooks', 'commit-msg') hook = CommitMsgShellHook(repo_dir) with open(commit_msg, 'wb') as f: f.write(commit_msg_fail) os.chmod(commit_msg, stat.S_IREAD | stat.S_IWRITE | stat.S_IEXEC) self.assertRaises(errors.HookError, hook.execute, 'failed commit') with open(commit_msg, 'wb') as f: f.write(commit_msg_success) os.chmod(commit_msg, stat.S_IREAD | stat.S_IWRITE | stat.S_IEXEC) hook.execute('empty commit')
def __init__(self, root): if os.path.isdir(os.path.join(root, ".git", OBJECTDIR)): self.bare = False self._controldir = os.path.join(root, ".git") elif (os.path.isdir(os.path.join(root, OBJECTDIR)) and os.path.isdir(os.path.join(root, REFSDIR))): self.bare = True self._controldir = root elif (os.path.isfile(os.path.join(root, ".git"))): import re f = open(os.path.join(root, ".git"), 'r') try: _, path = re.match('(gitdir: )(.+$)', f.read()).groups() finally: f.close() self.bare = False self._controldir = os.path.join(root, path) else: raise NotGitRepository("No git repository was found at %(path)s" % dict(path=root)) self.path = root object_store = DiskObjectStore( os.path.join(self.controldir(), OBJECTDIR)) refs = DiskRefsContainer(self.controldir()) BaseRepo.__init__(self, object_store, refs) graft_file = self.get_named_file(os.path.join("info", "grafts")) if graft_file: self._graftpoints = parse_graftpoints(graft_file) self.hooks['pre-commit'] = PreCommitShellHook(self.controldir()) self.hooks['commit-msg'] = CommitMsgShellHook(self.controldir()) self.hooks['post-commit'] = PostCommitShellHook(self.controldir())
def __init__(self, root): hidden_path = os.path.join(root, CONTROLDIR) if os.path.isdir(os.path.join(hidden_path, OBJECTDIR)): self.bare = False self._controldir = hidden_path elif (os.path.isdir(os.path.join(root, OBJECTDIR)) and os.path.isdir(os.path.join(root, REFSDIR))): self.bare = True self._controldir = root elif os.path.isfile(hidden_path): self.bare = False with open(hidden_path, 'r') as f: path = read_gitfile(f) self.bare = False self._controldir = os.path.join(root, path) else: raise NotGitRepository( "No git repository was found at %(path)s" % dict(path=root) ) commondir = self.get_named_file(COMMONDIR) if commondir is not None: with commondir: self._commondir = os.path.join( self.controldir(), os.fsdecode(commondir.read().rstrip(b"\r\n"))) else: self._commondir = self._controldir self.path = root config = self.get_config() object_store = DiskObjectStore.from_config( os.path.join(self.commondir(), OBJECTDIR), config) refs = DiskRefsContainer(self.commondir(), self._controldir, logger=self._write_reflog) BaseRepo.__init__(self, object_store, refs) self._graftpoints = {} graft_file = self.get_named_file(os.path.join("info", "grafts"), basedir=self.commondir()) if graft_file: with graft_file: self._graftpoints.update(parse_graftpoints(graft_file)) graft_file = self.get_named_file("shallow", basedir=self.commondir()) if graft_file: with graft_file: self._graftpoints.update(parse_graftpoints(graft_file)) self.hooks['pre-commit'] = PreCommitShellHook(self.controldir()) self.hooks['commit-msg'] = CommitMsgShellHook(self.controldir()) self.hooks['post-commit'] = PostCommitShellHook(self.controldir()) self.hooks['post-receive'] = PostReceiveShellHook(self.controldir())
def test_hook_commit_msg(self): repo_dir = os.path.join(tempfile.mkdtemp()) os.mkdir(os.path.join(repo_dir, 'hooks')) self.addCleanup(shutil.rmtree, repo_dir) commit_msg_fail = """#!/bin/sh exit 1 """ commit_msg_success = """#!/bin/sh exit 0 """ commit_msg_cwd = """#!/bin/sh if [ "$(pwd)" = '""" + repo_dir + "' ]; then exit 0; else exit 1; fi\n" commit_msg = os.path.join(repo_dir, 'hooks', 'commit-msg') hook = CommitMsgShellHook(repo_dir) with open(commit_msg, 'w') as f: f.write(commit_msg_fail) os.chmod(commit_msg, stat.S_IREAD | stat.S_IWRITE | stat.S_IEXEC) self.assertRaises(errors.HookError, hook.execute, b'failed commit') with open(commit_msg, 'w') as f: f.write(commit_msg_cwd) os.chmod(commit_msg, stat.S_IREAD | stat.S_IWRITE | stat.S_IEXEC) hook.execute(b'cwd test commit') with open(commit_msg, 'w') as f: f.write(commit_msg_success) os.chmod(commit_msg, stat.S_IREAD | stat.S_IWRITE | stat.S_IEXEC) hook.execute(b'empty commit')
def __init__(self, path): self.path = path if not isinstance(path, bytes): self._path_bytes = path.encode(sys.getfilesystemencoding()) else: self._path_bytes = path if os.path.isdir(os.path.join(self._path_bytes, b'.git', OBJECTDIR)): self.bare = False self._controldir = os.path.join(self._path_bytes, b'.git') elif (os.path.isdir(os.path.join(self._path_bytes, OBJECTDIR)) and os.path.isdir(os.path.join(self._path_bytes, REFSDIR))): self.bare = True self._controldir = self._path_bytes elif (os.path.isfile(os.path.join(self._path_bytes, b'.git'))): import re with open(os.path.join(self._path_bytes, b'.git'), 'rb') as f: _, gitdir = re.match(b'(gitdir: )(.+$)', f.read()).groups() self.bare = False self._controldir = os.path.join(self._path_bytes, gitdir) else: raise NotGitRepository("No git repository was found at %(path)s" % dict(path=path)) object_store = DiskObjectStore( os.path.join(self.controldir(), OBJECTDIR)) refs = DiskRefsContainer(self.controldir()) BaseRepo.__init__(self, object_store, refs) self._graftpoints = {} graft_file = self.get_named_file(os.path.join(b'info', b'grafts')) if graft_file: with graft_file: self._graftpoints.update(parse_graftpoints(graft_file)) graft_file = self.get_named_file(b'shallow') if graft_file: with graft_file: self._graftpoints.update(parse_graftpoints(graft_file)) self.hooks['pre-commit'] = PreCommitShellHook(self.controldir()) self.hooks['commit-msg'] = CommitMsgShellHook(self.controldir()) self.hooks['post-commit'] = PostCommitShellHook(self.controldir())
def __init__(self, root): hidden_path = os.path.join(root, CONTROLDIR) if os.path.isdir(os.path.join(hidden_path, OBJECTDIR)): self.bare = False self._controldir = hidden_path elif (os.path.isdir(os.path.join(root, OBJECTDIR)) and os.path.isdir(os.path.join(root, REFSDIR))): self.bare = True self._controldir = root elif os.path.isfile(hidden_path): self.bare = False with open(hidden_path, 'r') as f: path = read_gitfile(f) self.bare = False self._controldir = os.path.join(root, path) else: raise NotGitRepository( "No git repository was found at %(path)s" % dict(path=root) ) self.path = root object_store = DiskObjectStore(os.path.join(self.controldir(), OBJECTDIR)) refs = DiskRefsContainer(self.controldir()) BaseRepo.__init__(self, object_store, refs) self._graftpoints = {} graft_file = self.get_named_file(os.path.join("info", "grafts")) if graft_file: with graft_file: self._graftpoints.update(parse_graftpoints(graft_file)) graft_file = self.get_named_file("shallow") if graft_file: with graft_file: self._graftpoints.update(parse_graftpoints(graft_file)) self.hooks['pre-commit'] = PreCommitShellHook(self.controldir()) self.hooks['commit-msg'] = CommitMsgShellHook(self.controldir()) self.hooks['post-commit'] = PostCommitShellHook(self.controldir())
def test_hook_commit_msg(self): repo_dir = os.path.join(tempfile.mkdtemp()) os.mkdir(os.path.join(repo_dir, "hooks")) self.addCleanup(shutil.rmtree, repo_dir) commit_msg_fail = """#!/bin/sh exit 1 """ commit_msg_success = """#!/bin/sh exit 0 """ commit_msg_cwd = ("""#!/bin/sh if [ "$(pwd)" = '""" + repo_dir + "' ]; then exit 0; else exit 1; fi\n") commit_msg = os.path.join(repo_dir, "hooks", "commit-msg") hook = CommitMsgShellHook(repo_dir) with open(commit_msg, "w") as f: f.write(commit_msg_fail) os.chmod(commit_msg, stat.S_IREAD | stat.S_IWRITE | stat.S_IEXEC) self.assertRaises(errors.HookError, hook.execute, b"failed commit") if sys.platform != "darwin": # Don't bother running this test on darwin since path # canonicalization messages with our simple string comparison. with open(commit_msg, "w") as f: f.write(commit_msg_cwd) os.chmod(commit_msg, stat.S_IREAD | stat.S_IWRITE | stat.S_IEXEC) hook.execute(b"cwd test commit") with open(commit_msg, "w") as f: f.write(commit_msg_success) os.chmod(commit_msg, stat.S_IREAD | stat.S_IWRITE | stat.S_IEXEC) hook.execute(b"empty commit")