diff options
author | Jenkins <jenkins@review.openstack.org> | 2017-08-29 04:07:31 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2017-08-29 04:07:31 +0000 |
commit | a9bd38c7b45ec7bce421c72b7c2cd5e0b2a42888 (patch) | |
tree | 1733c6bb727c571d46fee4f5fa098dea0425425f | |
parent | b19d2170de30ceebc4297c71661dd0949d025fb0 (diff) | |
parent | 3f236c1bfa989b730265c0b9c10114e2125067ef (diff) | |
download | neutron-a9bd38c7b45ec7bce421c72b7c2cd5e0b2a42888.tar.gz |
Merge "Fixes import_modules_recursively for Windows" into stable/newton
-rw-r--r-- | neutron/common/utils.py | 6 | ||||
-rw-r--r-- | neutron/tests/unit/common/test_utils.py | 10 |
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) |