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):