Fix hook test on Windows

This test was failing on Windows, for several reasons. Number one, the paths
for the hook test were hard-coded with forward slashes as path separators. I
replaced those with calls to os.path.join. Number two, the drive letter was
getting in the way of the path manipulation. On Windows, I'm using
os.path.splitdrive to fix that.
This commit is contained in:
Christian Long 2015-03-11 16:46:43 -05:00
parent c51702e9f0
commit 02308dab2a
2 changed files with 27 additions and 6 deletions

View file

@ -21,3 +21,4 @@ Contributors (by order of appearance) :
- Florent Xicluna
- Austin Morton
- Michael McNeil Forbes
- Christian Long

View file

@ -8,6 +8,7 @@ except ImportError:
import mock
import flake8.hooks
from flake8.util import is_windows
def excluded(filename):
@ -15,24 +16,43 @@ def excluded(filename):
class TestGitHook(unittest.TestCase):
if is_windows:
current_drive, ignore_tail = os.path.splitdrive(os.getcwd())
fake_path_at_root_of_filesystem = os.path.join(current_drive,
os.path.sep,
'fake',
'tmp')
else:
fake_path_at_root_of_filesystem = os.path.join(os.path.sep,
'fake',
'tmp')
@mock.patch('os.makedirs')
@mock.patch('flake8.hooks.open', create=True)
@mock.patch('shutil.rmtree')
@mock.patch('tempfile.mkdtemp', return_value='/fake/tmp')
@mock.patch('tempfile.mkdtemp',
return_value=fake_path_at_root_of_filesystem)
@mock.patch('flake8.hooks.run',
return_value=(None, ['foo/afile.py', 'foo/bfile.py'], None))
return_value=(None,
[os.path.join('foo', 'afile.py'),
os.path.join('foo', 'bfile.py')],
None))
@mock.patch('flake8.hooks.get_style_guide')
def test_prepends_tmp_directory_to_exclude(self, get_style_guide, run,
*args):
style_guide = get_style_guide.return_value = mock.Mock()
style_guide.options.exclude = ['foo/afile.py']
style_guide.options.filename = ['foo/*']
style_guide.options.exclude = [os.path.join('foo', 'afile.py')]
style_guide.options.filename = [os.path.join('foo', '*')]
style_guide.excluded = excluded
flake8.hooks.git_hook()
dirname, filename = os.path.split(os.path.abspath('foo/bfile.py'))
tmpdir = os.path.join('/fake/tmp', dirname[1:])
dirname, filename = os.path.split(
os.path.abspath(os.path.join('foo', 'bfile.py')))
if is_windows:
ignore_drive, dirname = os.path.splitdrive(dirname)
tmpdir = os.path.join(self.fake_path_at_root_of_filesystem,
dirname[1:])
tmpfile = os.path.join(tmpdir, 'bfile.py')
style_guide.check_files.assert_called_once_with([tmpfile])