summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZhiQiang Fan <aji.zqfan@gmail.com>2015-12-14 22:52:49 +0800
committerZhiQiang Fan <aji.zqfan@gmail.com>2015-12-16 08:04:21 +0800
commit95f3b068ee46c10c6deb177e36836ec3e99ff833 (patch)
tree947058587feb979debc0f97b00188b6e86728107
parente46a46ba90741987f1147afc56876e3d0d27e8a2 (diff)
downloadoslo-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.py4
-rw-r--r--oslo_utils/tests/test_fnmatch.py39
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()