summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2017-08-29 04:07:31 +0000
committerGerrit Code Review <review@openstack.org>2017-08-29 04:07:31 +0000
commita9bd38c7b45ec7bce421c72b7c2cd5e0b2a42888 (patch)
tree1733c6bb727c571d46fee4f5fa098dea0425425f
parentb19d2170de30ceebc4297c71661dd0949d025fb0 (diff)
parent3f236c1bfa989b730265c0b9c10114e2125067ef (diff)
downloadneutron-a9bd38c7b45ec7bce421c72b7c2cd5e0b2a42888.tar.gz
Merge "Fixes import_modules_recursively for Windows" into stable/newton
-rw-r--r--neutron/common/utils.py6
-rw-r--r--neutron/tests/unit/common/test_utils.py10
2 files changed, 12 insertions, 4 deletions
diff --git a/neutron/common/utils.py b/neutron/common/utils.py
index 09282f650a..ba48e23b23 100644
--- a/neutron/common/utils.py
+++ b/neutron/common/utils.py
@@ -27,6 +27,7 @@ import multiprocessing
import os
import os.path
import random
+import re
import signal
import socket
import sys
@@ -58,6 +59,8 @@ SYNCHRONIZED_PREFIX = 'neutron-'
DEFAULT_THROTTLER_VALUE = 2
+_SEPARATOR_REGEX = re.compile(r'[/\\]+')
+
synchronized = lockutils.synchronized_with_prefix(SYNCHRONIZED_PREFIX)
@@ -886,6 +889,7 @@ def extract_exc_details(e):
def import_modules_recursively(topdir):
'''Import and return all modules below the topdir directory.'''
+ topdir = _SEPARATOR_REGEX.sub('/', topdir)
modules = []
for root, dirs, files in os.walk(topdir):
for file_ in files:
@@ -896,7 +900,7 @@ def import_modules_recursively(topdir):
if module == '__init__':
continue
- import_base = root.replace('/', '.')
+ import_base = _SEPARATOR_REGEX.sub('.', root)
# NOTE(ihrachys): in Python3, or when we are not located in the
# directory containing neutron code, __file__ is absolute, so we
diff --git a/neutron/tests/unit/common/test_utils.py b/neutron/tests/unit/common/test_utils.py
index 3d775b2ff1..8ebfe8d263 100644
--- a/neutron/tests/unit/common/test_utils.py
+++ b/neutron/tests/unit/common/test_utils.py
@@ -18,6 +18,7 @@ import random
import re
import sys
+import ddt
import eventlet
import mock
import netaddr
@@ -840,17 +841,20 @@ class TestExcDetails(base.BaseTestCase):
utils.extract_exc_details(Exception()), six.text_type)
+@ddt.ddt
class ImportModulesRecursivelyTestCase(base.BaseTestCase):
- def test_recursion(self):
+ @ddt.data('/', r'\\')
+ def test_recursion(self, separator):
expected_modules = (
'neutron.tests.unit.tests.example.dir.example_module',
'neutron.tests.unit.tests.example.dir.subdir.example_module',
)
for module in expected_modules:
sys.modules.pop(module, None)
- modules = utils.import_modules_recursively(
- os.path.dirname(tests.__file__))
+
+ topdir = re.sub(r'[/\\]+', separator, os.path.dirname(tests.__file__))
+ modules = utils.import_modules_recursively(topdir)
for module in expected_modules:
self.assertIn(module, modules)
self.assertIn(module, sys.modules)