blob: 34261f46460a74872a70b8f1de9140868686c036 [file] [log] [blame]
# Copyright 2011-2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
from portage.const import PORTAGE_PYM_PATH
from portage.tests import TestCase
from portage import os
from portage import _encodings
from portage import _unicode_decode
class ImportModulesTestCase(TestCase):
def testImportModules(self):
expected_failures = frozenset((
))
for mod in self._iter_modules(PORTAGE_PYM_PATH):
try:
__import__(mod)
except ImportError as e:
if mod not in expected_failures:
self.assertTrue(False, "failed to import '%s': %s" % (mod, e))
del e
def _iter_modules(self, base_dir):
for parent, dirs, files in os.walk(base_dir):
parent = _unicode_decode(parent,
encoding=_encodings['fs'], errors='strict')
parent_mod = parent[len(PORTAGE_PYM_PATH)+1:]
parent_mod = parent_mod.replace("/", ".")
for x in files:
x = _unicode_decode(x,
encoding=_encodings['fs'], errors='strict')
if x[-3:] != '.py':
continue
x = x[:-3]
if x[-8:] == '__init__':
x = parent_mod
else:
x = parent_mod + "." + x
yield x