5ca944f7a0
Change-Id: Ib4f4e5d2e48717a514636cde906dc4f977021cc6
52 lines
2 KiB
Python
52 lines
2 KiB
Python
# Copyright 2012 Hewlett-Packard Development Company, L.P.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
import os
|
|
import sys
|
|
|
|
|
|
class StubPackage(object):
|
|
pass
|
|
|
|
|
|
# load all tests from /elements/*/tests/ dirs.
|
|
# conceptually load_tests should be in __init__, but see
|
|
# http://bugs.python.org/issue16662 instead. So, its here in test_elements.py
|
|
def load_tests(loader, tests, pattern):
|
|
"""load tests for diskimage_builder elements."""
|
|
if pattern is None:
|
|
# http://bugs.python.org/issue11218
|
|
pattern = "test*.py"
|
|
this_dir = os.path.dirname(__file__)
|
|
elements_dir = os.path.join(this_dir, "..", "..", "elements")
|
|
# Make a fake elements top level package, as discovery doesn't let us
|
|
# override the python path.
|
|
package = StubPackage()
|
|
package.__path__ = [elements_dir]
|
|
sys.modules['elements'] = package
|
|
elements = os.listdir(elements_dir)
|
|
for element in elements:
|
|
element_dir = os.path.join(elements_dir, element)
|
|
tests_path = os.path.join(element_dir, "tests")
|
|
if (not os.path.isdir(tests_path) or
|
|
not os.path.isfile(os.path.join(tests_path, '__init__.py'))):
|
|
continue
|
|
# Create a 'package' for the element, so it can be imported.
|
|
package = StubPackage()
|
|
package.__path__ = [element_dir]
|
|
sys.modules['elements.%s' % element] = package
|
|
# Try importing the test module
|
|
package_tests = loader.discover(start_dir=tests_path, pattern=pattern)
|
|
tests.addTests(package_tests)
|
|
return tests
|