diff --git a/diskimage_builder/elements.py b/diskimage_builder/elements.py index 3002a919..728ccf98 100644 --- a/diskimage_builder/elements.py +++ b/diskimage_builder/elements.py @@ -20,9 +20,8 @@ import sys def get_elements_dir(): - if 'ELEMENTS_DIR' not in os.environ: - return os.path.abspath( - os.path.join(os.path.dirname(__file__), '..', 'elements')) + if not os.environ.get('ELEMENTS_DIR'): + raise Exception("$ELEMENTS_DIR must be set.") return os.environ['ELEMENTS_DIR'] diff --git a/diskimage_builder/test_elementdeps.py b/diskimage_builder/test_elementdeps.py index a62a66f3..c52cafa2 100644 --- a/diskimage_builder/test_elementdeps.py +++ b/diskimage_builder/test_elementdeps.py @@ -16,9 +16,10 @@ import os from testtools import TestCase -from fixtures import Fixture, TempDir +from fixtures import Fixture, EnvironmentVariable, TempDir from diskimage_builder.elements import expand_dependencies +from diskimage_builder.elements import get_elements_dir data_dir = os.path.abspath( os.path.join(os.path.dirname(__file__), 'test-elements')) @@ -72,3 +73,13 @@ class TestElementDeps(TestCase): result = expand_dependencies(['circular1'], elements_dir=self.element_dir) self.assertEquals(set(['circular1', 'circular2']), result) + + +class TestElements(TestCase): + def test_depends_on_env(self): + self.useFixture(EnvironmentVariable('ELEMENTS_DIR', '/foo/bar')) + self.assertEquals('/foo/bar', get_elements_dir()) + + def test_env_not_set(self): + self.useFixture(EnvironmentVariable('ELEMENTS_DIR', '')) + self.assertRaises(Exception, get_elements_dir, ()) diff --git a/diskimage_builder/test_elements.py b/diskimage_builder/test_elements.py index 1668b8a9..503277e8 100644 --- a/diskimage_builder/test_elements.py +++ b/diskimage_builder/test_elements.py @@ -22,6 +22,7 @@ class StubPackage: 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):