def test_clear_not_exists(self): """Failures.clear() does nothing if the failures file is missing.""" failures = Failures(self.dirname) self.assertFalse(os.path.exists(failures.filename)) failures.clear() self.assertFalse(os.path.exists(failures.filename))
def test_fail_entity_one(self): """Failures,fail_entity() writes an initial entry to disk.""" failures = Failures(self.dirname) failures.fail_entity("unit-abc") with open(failures.filename) as file: data = file.read() self.assertEqual(data, "unit-abc\n")
def test_cfgdir_created(self): """Failures() creates a missing cfgdir as soon as it's needed.""" dirname = os.path.join(self.dirname, "subdir") self.assertFalse(os.path.exists(dirname)) failures = Failures(dirname) failures.fail_entity("unit-xyz") self.assertTrue(os.path.exists(dirname))
def test_conversions(self): """FakeJuju() doesn't convert the type of any value.""" juju_str = FakeJuju("/fake-juju", "1.25.6", "/x", "/y", Failures("/...")) juju_unicode = FakeJuju(u"/fake-juju", u"1.25.6", u"/x", u"/y", Failures(u"/...")) for name in ('filename version datadir logsdir'.split()): self.assertIsInstance(getattr(juju_str, name), str) self.assertIsInstance(getattr(juju_unicode, name), unicode)
def test_fail_entity_multiple(self): """Failures.fail_entity() correctly writes multiple entries to disk.""" failures = Failures(self.dirname) failures.fail_entity("unit-abc") failures.fail_entity("unit-xyz") with open(failures.filename) as file: data = file.read() entities = set(tag for tag in data.splitlines() if tag) self.assertEqual(entities, failures.entities) self.assertTrue(data.endswith("\n"))
def test_conversion(self): """Failures() doesn't convert any values.""" failures_str = Failures("/some/dir", ["x", "y", "z"]) failures_unicode = Failures(u"/some/dir", [u"x", u"y", u"z"]) self.assertIsInstance(failures_str.filename, str) self.assertIsInstance(failures_unicode.filename, unicode) for id in failures_str.entities: self.assertIsInstance(id, str) for id in failures_unicode.entities: self.assertIsInstance(id, unicode)
def test_full(self): """Failures() works correctly when given all args.""" entities = [u"x", u"y", u"z"] failures = Failures(u"/some/dir", entities) self.assertEqual(failures.filename, u"/some/dir/juju-failures") self.assertEqual(failures.entities, set(entities))
def test_full(self): """FakeJuju() works correctly when given all args.""" datadir = "/my/juju/home" failures = Failures(datadir) juju = FakeJuju("/fake-juju", "1.25.6", datadir, "/some/logs", failures) self.assertEqual(juju.filename, "/fake-juju") self.assertEqual(juju.version, "1.25.6") self.assertEqual(juju.datadir, datadir) self.assertEqual(juju.logsdir, "/some/logs") self.assertIs(juju.failures, failures)
def test_clear_exists(self): """Failures.clear() deletes the failures file if it exists.""" failures = Failures(self.dirname) failures.fail_entity("unit-abc") self.assertTrue(os.path.exists(failures.filename)) failures.clear() self.assertFalse(os.path.exists(failures.filename)) self.assertEqual(failures.entities, set())
def test_file_not_created_initially(self): """Failures() doesn't create a missing cfgdir until necessary.""" failures = Failures(self.dirname) self.assertFalse(os.path.exists(failures.filename))
def test_minimal(self): """Failures() works correctly when given minimal args.""" failures = Failures(u"/some/dir") self.assertEqual(failures.filename, u"/some/dir/juju-failures") self.assertEqual(failures.entities, set())