Use rev-parse --show-toplevel

This commit is contained in:
Anthony Sottile 2015-12-17 20:06:16 -08:00
parent 72516288df
commit 3f02a66e37
3 changed files with 13 additions and 16 deletions

View file

@ -7,6 +7,7 @@ import os.path
import re
from pre_commit.errors import FatalError
from pre_commit.util import CalledProcessError
from pre_commit.util import cmd_output
from pre_commit.util import memoize_by_cwd
@ -15,15 +16,11 @@ logger = logging.getLogger('pre_commit')
def get_root():
path = os.getcwd()
while path != os.path.normpath(os.path.join(path, '../')):
if os.path.exists(os.path.join(path, '.git')):
return path
else:
path = os.path.normpath(os.path.join(path, '../'))
try:
return cmd_output('git', 'rev-parse', '--show-toplevel')[1].strip()
except CalledProcessError:
raise FatalError(
'Called from outside of the gits. '
'Please cd to a git repository.'
'Called from outside of the gits. Please cd to a git repository.'
)

View file

@ -15,7 +15,7 @@ from testing.fixtures import git_dir
def test_get_root_at_root(tempdir_factory):
path = git_dir(tempdir_factory)
with cwd(path):
assert git.get_root() == path
assert os.path.normcase(git.get_root()) == os.path.normcase(path)
def test_get_root_deeper(tempdir_factory):
@ -24,7 +24,7 @@ def test_get_root_deeper(tempdir_factory):
foo_path = os.path.join(path, 'foo')
os.mkdir(foo_path)
with cwd(foo_path):
assert git.get_root() == path
assert os.path.normcase(git.get_root()) == os.path.normcase(path)
def test_get_root_not_git_dir(tempdir_factory):

View file

@ -24,8 +24,8 @@ def test_create_sets_correct_directory(tempdir_factory):
path = git_dir(tempdir_factory)
with cwd(path):
runner = Runner.create()
assert runner.git_root == path
assert os.getcwd() == path
assert os.path.normcase(runner.git_root) == os.path.normcase(path)
assert os.path.normcase(os.getcwd()) == os.path.normcase(path)
def test_create_changes_to_git_root(tempdir_factory):
@ -38,8 +38,8 @@ def test_create_changes_to_git_root(tempdir_factory):
assert os.getcwd() != path
runner = Runner.create()
assert runner.git_root == path
assert os.getcwd() == path
assert os.path.normcase(runner.git_root) == os.path.normcase(path)
assert os.path.normcase(os.getcwd()) == os.path.normcase(path)
def test_config_file_path():