def main() -> None: zfs = ZFS() zfs.createDataset() loader = unittest.TestLoader() tests = loader.discover('.') testRunner = unittest.runner.TextTestRunner() testRunner.run(tests) zfs.destroyDataset()
class Tests(unittest.TestCase): zfs = ZFS() def setUp(self) -> None: self.page = Page(headless=True) self.assertIn("ZFS-Snap-Diff", self.page.title()) def testActualFileContent(self) -> None: fs.createTestFile(self.zfs.mountpoint() + "/file.txt", ["firstline", "secondline", "thirdline"]) self.page.selectView("Browse filesystem") self.page.selectDataset(self.zfs.dataset) self.page.findByXPath("//td[contains(.,'file.txt')]").click() self.assertIn("Current content of file.txt", self.page.findById("file-actions-header").text) self.assertIn( "firstline\nsecondline\nthirdline", self.page.findByCSS("#file-actions-body > pre > code").text) def testCreateSnapshotInBrowseFilesystem(self) -> None: self.page.selectView("Browse filesystem") self.page.selectDataset(self.zfs.dataset) self.page.createSnapshot("create-snapshot-in-browse-filesystem") self.assertIn("@create-snapshot-in-browse-filesystem' created", self.page.alertText()) def testCreateSnapshotInBrowseSnapshots(self) -> None: self.page.selectView("Browse snapshots") self.page.selectDataset(self.zfs.dataset) self.page.createSnapshot("create-snapshot-in-browse-snapshots") self.assertIn("@create-snapshot-in-browse-snapshots' created", self.page.alertText()) def testDestroySnapshot(self) -> None: self.page.selectView("Browse snapshots") self.page.selectDataset(self.zfs.dataset) # create snapshot self.page.createSnapshot("destroy-snapshot") self.page.closeAlert() # destroy snapshot self.page.destroySnapshot("destroy-snapshot") self.assertIn("Snapshot 'destroy-snapshot' destroyed", self.page.alertText()) self.page.closeAlert() def testRenameSnapshot(self) -> None: self.page.selectView("Browse snapshots") self.page.selectDataset(self.zfs.dataset) # create snapshot self.page.createSnapshot("rename-snapshot") self.page.closeAlert() # rename snapshot self.page.renameSnapshot("rename-snapshot", "snapshot-rename") self.assertIn( "Snapshot 'rename-snapshot' renamed to 'snapshot-rename'", self.page.alertText()) self.page.closeAlert() def testCloneSnapshot(self) -> None: self.page.selectView("Browse snapshots") self.page.selectDataset(self.zfs.dataset) # create snapshot self.page.createSnapshot("clone-snapshot") self.page.closeAlert() # clone snapshot self.page.cloneSnapshot("clone-snapshot", "cloned") self.assertIn( "Snapshot 'clone-snapshot' cloned to '" + self.zfs.pool + "/cloned'", self.page.alertText()) self.page.closeAlert() def testRollbackSnapshot(self) -> None: self.page.selectView("Browse snapshots") self.page.selectDataset(self.zfs.dataset) # create snapshot self.page.createSnapshot("rollback-snapshot") self.assertIn("@rollback-snapshot' created", self.page.alertText()) self.page.closeAlert() # create a file fs.createTestFile(self.zfs.mountpoint() + "/rollback-test.txt", ["dummy"]) self.assertTrue(fs.exists(self.zfs.mountpoint() + "/rollback-test.txt")) # rollback self.page.rollbackSnapshot("rollback-snapshot") self.assertIn("Snapshot 'rollback-snapshot' rolled back", self.page.alertText()) self.assertFalse( fs.exists(self.zfs.mountpoint() + "/rollback-test.txt")) def tearDown(self) -> None: self.page.close()