Merge remote-tracking branch 'origin/master'

Conflicts:
	setup.py
This commit is contained in:
Anthony Sottile
2014-03-13 14:12:13 -07:00
6 changed files with 80 additions and 9 deletions

View File

@@ -79,11 +79,6 @@ TESTS = [
"All - No tabs",
True, 'testtabs',
),
Test(
"make test",
"Py - Tests",
False, 'testtests',
),
]
def get_git_config(config_name):

27
pre_commit/git.py Normal file
View File

@@ -0,0 +1,27 @@
import os
import pkg_resources
from plumbum import local
def get_root():
return local['git']['rev-parse', '--show-toplevel']().strip()
def get_pre_commit_path():
return os.path.join(get_root(), '.git/hooks/pre-commit')
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())
def remove_pre_commit():
local.path(get_pre_commit_path()).delete()

View File

@@ -0,0 +1,3 @@
#!/usr/bin/env bash
pre-commit

View File

@@ -1,11 +1,10 @@
import argparse
from pre_commit import git
def install():
"""Install the pre-commit hook."""
raise NotImplementedError
git.create_pre_commit()
def uninstall():
"""Uninstall the pre-commit hook."""
@@ -39,4 +38,4 @@ def run(argv):
elif args.uninstall:
return uninstall()
else:
return run_hooks(args)
return run_hooks(args)

View File

@@ -5,6 +5,11 @@ setup(
name='pre_commit',
version='0.0.0',
packages=find_packages('.', exclude=('tests*', 'testing*')),
package_data={
'pre_commit': [
'resources/pre-commit.sh'
]
},
install_requires=[
'argparse',
'jsonschema',

42
tests/git_test.py Normal file
View File

@@ -0,0 +1,42 @@
import os
import pytest
from plumbum import local
from pre_commit import git
@pytest.fixture
def empty_git_dir(tmpdir):
local.cwd.chdir(tmpdir.strpath)
local['git']['init']()
return tmpdir.strpath
def test_get_root(empty_git_dir):
assert git.get_root() == empty_git_dir
foo = local.path('foo')
foo.mkdir()
local.cwd.chdir(foo)
assert git.get_root() == empty_git_dir
def test_get_pre_commit_path(empty_git_dir):
assert git.get_pre_commit_path() == '{0}/.git/hooks/pre-commit'.format(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
def test_remove_pre_commit(empty_git_dir):
git.remove_pre_commit()
assert not os.path.exists(git.get_pre_commit_path())
git.create_pre_commit()
git.remove_pre_commit()
assert not os.path.exists(git.get_pre_commit_path())