diff options
author | ZhiQiang Fan <aji.zqfan@gmail.com> | 2015-12-14 22:52:49 +0800 |
---|---|---|
committer | ZhiQiang Fan <aji.zqfan@gmail.com> | 2015-12-16 08:04:21 +0800 |
commit | 95f3b068ee46c10c6deb177e36836ec3e99ff833 (patch) | |
tree | 947058587feb979debc0f97b00188b6e86728107 | |
parent | e46a46ba90741987f1147afc56876e3d0d27e8a2 (diff) | |
download | oslo-utils-95f3b068ee46c10c6deb177e36836ec3e99ff833.tar.gz |
fix fnmatch.filter in non-posix system
filter should return original elements instead of modified normal
case elements.
Change-Id: I2c190f0b9a56738f7cdcd9ed06ef04b24f6c30c3
-rw-r--r-- | oslo_utils/fnmatch.py | 4 | ||||
-rw-r--r-- | oslo_utils/tests/test_fnmatch.py | 39 |
2 files changed, 37 insertions, 6 deletions
diff --git a/oslo_utils/fnmatch.py b/oslo_utils/fnmatch.py index 8dd7aa0..62f9553 100644 --- a/oslo_utils/fnmatch.py +++ b/oslo_utils/fnmatch.py @@ -69,8 +69,8 @@ else: filtered_filenames.append(filename) else: for filename in filenames: - filename = os.path.normcase(filename) - if cached_pattern.match(filename): + norm_name = os.path.normcase(filename) + if cached_pattern.match(norm_name): filtered_filenames.append(filename) return filtered_filenames diff --git a/oslo_utils/tests/test_fnmatch.py b/oslo_utils/tests/test_fnmatch.py index 537d72a..233138e 100644 --- a/oslo_utils/tests/test_fnmatch.py +++ b/oslo_utils/tests/test_fnmatch.py @@ -10,21 +10,52 @@ # License for the specific language governing permissions and limitations # under the License. +from __future__ import absolute_import + +import fnmatch as standard_fnmatch +import ntpath +import posixpath import sys import mock from oslotest import base +from six.moves import reload_module + -from oslo_utils import fnmatch +fnmatch = None class TestFnmatch(base.BaseTestCase): - @mock.patch.object(sys, 'version_info', new=(2, 7, 0)) - def test_fnmatch(self): + def _test_fnmatch(self): self.assertFalse(fnmatch.fnmatch("tesX", "Test")) self.assertTrue(fnmatch.fnmatch("test", "test")) self.assertFalse(fnmatch.fnmatchcase("test", "Test")) self.assertTrue(fnmatch.fnmatchcase("test", "test")) self.assertTrue(fnmatch.fnmatch("testX", "test*")) - self.assertEqual(["test"], fnmatch.filter(["test", "testX"], "test")) + self.assertEqual(["Test"], fnmatch.filter(["Test", "TestX"], "Test")) + + def _test_fnmatch_posix_nt(self): + with mock.patch("os.path", new=posixpath): + self.assertFalse(fnmatch.fnmatch("test", "Test")) + self._test_fnmatch() + with mock.patch("os.path", new=ntpath): + self._test_fnmatch() + self.assertTrue(fnmatch.fnmatch("test", "Test")) + self.assertEqual(["Test"], + fnmatch.filter(["Test", "TestX"], "test")) + + def test_fnmatch(self): + global fnmatch + + fnmatch = standard_fnmatch + self._test_fnmatch_posix_nt() + + with mock.patch.object(sys, 'version_info', new=(2, 7, 11)): + from oslo_utils import fnmatch as oslo_fnmatch + fnmatch = oslo_fnmatch + self._test_fnmatch_posix_nt() + + with mock.patch.object(sys, 'version_info', new=(2, 7, 0)): + reload_module(oslo_fnmatch) + self._test_fnmatch_posix_nt() |