diff options
author | Ronny Pfannschmidt <opensource@ronnypfannschmidt.de> | 2016-06-12 22:55:48 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-06-12 22:55:48 +0200 |
commit | 4e8237549a40c47420163e39410e1ffc94ef1340 (patch) | |
tree | bba812cea28a5dcfdfab0afa22c92c512e3d9d31 | |
parent | a575570cf822ba53ded6a784aa1332ed98ec5e18 (diff) | |
parent | e7c768a1e4b0247be84b51b356d03fec3ce4a5de (diff) | |
download | setuptools-scm-4e8237549a40c47420163e39410e1ffc94ef1340.tar.gz |
Merge pull request #91 from te-je/master
Case-insensitive path comparison for git on windows. Fixes #89
-rw-r--r-- | setuptools_scm/git.py | 5 | ||||
-rw-r--r-- | testing/test_regressions.py | 15 |
2 files changed, 18 insertions, 2 deletions
diff --git a/setuptools_scm/git.py b/setuptools_scm/git.py index 40b0f77..6864f96 100644 --- a/setuptools_scm/git.py +++ b/setuptools_scm/git.py @@ -1,6 +1,6 @@ from .utils import do, do_ex, trace from .version import meta -from os.path import abspath, realpath +from os.path import abspath, normcase, realpath FILES_COMMAND = 'git ls-files' @@ -12,7 +12,8 @@ def parse(root, describe_command=DEFAULT_DESCRIBE): if ret: return trace('real root', real_root) - if abspath(realpath(real_root)) != abspath(realpath(root)): + if (normcase(abspath(realpath(real_root))) != + normcase(abspath(realpath(root)))): return rev_node, _, ret = do_ex('git rev-parse --verify --quiet HEAD', root) if ret: diff --git a/testing/test_regressions.py b/testing/test_regressions.py index c123753..ac7ecfc 100644 --- a/testing/test_regressions.py +++ b/testing/test_regressions.py @@ -1,3 +1,7 @@ +import sys + +import pytest +from setuptools_scm.git import parse from setuptools_scm.utils import do_ex, do @@ -43,3 +47,14 @@ setup(use_scm_version=vcfg) res = do('python setup.py --version', p) assert res == '1.0' + + +@pytest.mark.skipif(sys.platform != 'win32', + reason="this bug is only valid on windows") +def test_case_mismatch_on_windows_git(tmpdir): + """Case insensitive path checks on Windows""" + p = tmpdir.ensure("CapitalizedDir", dir=1) + + do('git init', p) + res = parse(str(p).lower()) + assert res is not None |