From 6188903ed7430b481b13dccd2775082990417913 Mon Sep 17 00:00:00 2001 From: Anthony Sottile Date: Tue, 18 Mar 2014 21:40:08 -0700 Subject: [PATCH] Make the pre-commit actually executable. Closes #32 --- pre_commit/git.py | 3 +++ tests/git_test.py | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/pre_commit/git.py b/pre_commit/git.py index 986adb84..3ed28da4 100644 --- a/pre_commit/git.py +++ b/pre_commit/git.py @@ -3,6 +3,7 @@ import os import os.path import pkg_resources import re +import stat from plumbum import local from pre_commit.util import memoize_by_cwd @@ -32,6 +33,8 @@ def create_pre_commit(): path = get_pre_commit_path() pre_commit_file = pkg_resources.resource_filename('pre_commit', 'resources/pre-commit.sh') local.path(path).write(local.path(pre_commit_file).read()) + original_mode = os.stat(path).st_mode + os.chmod(path, original_mode | stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH) def remove_pre_commit(): diff --git a/tests/git_test.py b/tests/git_test.py index 3b701751..f625ac83 100644 --- a/tests/git_test.py +++ b/tests/git_test.py @@ -1,6 +1,7 @@ import os import pytest +import stat from plumbum import local from pre_commit import git @@ -25,6 +26,10 @@ def test_get_pre_commit_path(empty_git_dir): def test_create_pre_commit(empty_git_dir): git.create_pre_commit() assert len(open(git.get_pre_commit_path(), 'r').read()) > 0 + stat_result = os.stat(git.get_pre_commit_path()) + assert stat_result.st_mode & stat.S_IXUSR + assert stat_result.st_mode & stat.S_IXGRP + assert stat_result.st_mode & stat.S_IXOTH def test_remove_pre_commit(empty_git_dir):