From 78d959d7ef3f9b4182905a30ec4a2e2c93381fe9 Mon Sep 17 00:00:00 2001 From: Will Kahn-Greene Date: Thu, 6 Nov 2014 20:23:46 -0500 Subject: [PATCH] Fix normalize_paths to allow whitespace This fixes normalize_paths so that it strips whitespace before and after paths before working on them. This allows you to do specify excludes with multiple lines in the config file. This also tweaks normalize_paths so that the behavior matches the docstring. This also adds tests. Fixes #339 --- pep8.py | 5 ++++- testsuite/test_all.py | 3 ++- testsuite/test_util.py | 20 ++++++++++++++++++++ 3 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 testsuite/test_util.py diff --git a/pep8.py b/pep8.py index b31a9781..f32d27c3 100755 --- a/pep8.py +++ b/pep8.py @@ -1155,10 +1155,13 @@ def normalize_paths(value, parent=os.curdir): Return a list of absolute paths. """ - if not value or isinstance(value, list): + if not value: + return [] + if isinstance(value, list): return value paths = [] for path in value.split(','): + path = path.strip() if '/' in path: path = os.path.abspath(os.path.join(parent, path)) paths.append(path.rstrip('/')) diff --git a/testsuite/test_all.py b/testsuite/test_all.py index 5160900d..50e2cb9f 100644 --- a/testsuite/test_all.py +++ b/testsuite/test_all.py @@ -46,12 +46,13 @@ def test_own_dog_food(self): def suite(): - from testsuite import test_api, test_shell + from testsuite import test_api, test_shell, test_util suite = unittest.TestSuite() suite.addTest(unittest.makeSuite(Pep8TestCase)) suite.addTest(unittest.makeSuite(test_api.APITestCase)) suite.addTest(unittest.makeSuite(test_shell.ShellTestCase)) + suite.addTest(unittest.makeSuite(test_util.UtilTestCase)) return suite diff --git a/testsuite/test_util.py b/testsuite/test_util.py new file mode 100644 index 00000000..84b736a9 --- /dev/null +++ b/testsuite/test_util.py @@ -0,0 +1,20 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +import os +import unittest + +import pep8 + + +class UtilTestCase(unittest.TestCase): + def test_normalize_paths(self): + cwd = os.getcwd() + + self.assertEquals(pep8.normalize_paths(''), []) + self.assertEquals(pep8.normalize_paths(['foo']), ['foo']) + self.assertEquals(pep8.normalize_paths('foo'), ['foo']) + self.assertEquals(pep8.normalize_paths('foo,bar'), ['foo', 'bar']) + self.assertEquals(pep8.normalize_paths('/foo/bar,baz/../bat'), + ['/foo/bar', cwd + '/bat']) + self.assertEquals(pep8.normalize_paths(".pyc,\n build/*"), + ['.pyc', cwd + '/build/*'])