12
12
from unittest.mock import call
14
14
from fixtures import EnvironmentVariable
15
from maastesting import root
15
from maastesting import (
16
fixtures as fixtures_module,
16
19
from maastesting.factory import factory
17
20
from maastesting.fixtures import (
258
261
super(TestMAASRootFixture, self).setUp()
259
self.maasroot = os.path.join(root, "run-skel")
260
self.useFixture(EnvironmentVariable("MAAS_ROOT", self.maasroot))
262
self.skel = os.path.join(root, "run-skel")
263
self.useFixture(EnvironmentVariable("MAAS_ROOT", "/"))
262
265
def test_creates_populates_and_removes_new_directory(self):
263
266
fixture = MAASRootFixture()
265
268
self.assertThat(fixture.path, PathExists())
266
self.assertThat(fixture.path, Not(SamePath(self.maasroot)))
267
files_expected = set(listdirs(self.maasroot))
269
self.assertThat(fixture.path, Not(SamePath(self.skel)))
270
files_expected = set(listdirs(self.skel))
268
271
files_observed = set(listdirs(fixture.path))
269
272
self.assertThat(files_observed, Equals(files_expected))
270
273
self.assertThat(fixture.path, Not(PathExists()))
272
275
def test_updates_MAAS_ROOT_in_the_environment(self):
273
self.assertThat(os.environ["MAAS_ROOT"], SamePath(self.maasroot))
276
self.assertThat(os.environ["MAAS_ROOT"], Not(SamePath(self.skel)))
274
277
with MAASRootFixture() as fixture:
275
278
self.assertThat(os.environ["MAAS_ROOT"], SamePath(fixture.path))
276
self.assertThat(os.environ["MAAS_ROOT"], SamePath(self.maasroot))
278
def test_breaks_when_MAAS_ROOT_is_not_defined(self):
279
fixture = MAASRootFixture()
280
del os.environ["MAAS_ROOT"]
281
error = self.assertRaises(NotADirectoryError, fixture._setUp)
282
self.assertThat(str(error), Equals("MAAS_ROOT is not defined."))
279
self.assertThat(os.environ["MAAS_ROOT"], Not(SamePath(self.skel)))
284
281
def test_breaks_when_MAAS_ROOT_is_not_a_directory(self):
282
self.patch(fixtures_module, "root", self.make_file())
285
283
fixture = MAASRootFixture()
286
os.environ["MAAS_ROOT"] = self.make_file()
287
284
error = self.assertRaises(NotADirectoryError, fixture._setUp)
288
285
self.assertThat(str(error), DocTestMatches(
289
"MAAS_ROOT (...) is not a directory."))
286
"Skeleton MAAS_ROOT (...) is not a directory."))