3
3
from typing import Any
4
4
from selenium import webdriver # type: ignore
5
5
import sys
6
- import subprocess
7
6
8
- from browser_tests import zfs
9
- from browser_tests import fs
7
+ import fs
10
8
from browser_tests .page import Page
9
+ from zfs import ZFS
11
10
12
11
class Tests (unittest .TestCase ):
13
- pool : str
14
- dataset = "zsd-browser-test"
15
- mountpoint : str
16
-
17
- @classmethod
18
- def setUpClass (cls ) -> None :
19
- # use the first found zfs pool (dirty, unsafe code!)
20
- cls .pool = subprocess .run (["sudo" , "zpool" , "list" , "-Ho" , "name" ]
21
- , text = True
22
- , capture_output = True ).stdout .strip ()
23
-
24
- # create test dataset
25
- cls .mountpoint = zfs .createDataset (cls .pool , cls .dataset )
26
-
12
+ zfs = ZFS ()
27
13
28
14
def setUp (self ) -> None :
29
15
self .page = Page (headless = True )
30
16
self .assertIn ("ZFS-Snap-Diff" , self .page .title ())
31
17
32
18
33
19
def testActualFileContent (self ) -> None :
34
- fs .createTestFile (self .mountpoint + "/file.txt" ,
20
+ fs .createTestFile (self .zfs . mountpoint () + "/file.txt" ,
35
21
["firstline" , "secondline" , "thirdline" ]
36
22
)
37
23
38
24
self .page .selectView ("Browse filesystem" )
39
- self .page .selectDataset (self .dataset )
25
+ self .page .selectDataset (self .zfs . dataset )
40
26
self .page .findByXPath ("//td[contains(.,'file.txt')]" ).click ()
41
27
self .assertIn ("Current content of file.txt" , self .page .findById ("file-actions-header" ).text )
42
- self .assertIn ("firstline\n secondline\n thirdline" , self .page .findById ( " file-actions-body" ).text )
28
+ self .assertIn ("firstline\n secondline\n thirdline" , self .page .findByCSS ( "# file-actions-body > pre > code " ).text )
43
29
44
30
45
31
def testCreateSnapshotInBrowseFilesystem (self ) -> None :
46
32
self .page .selectView ("Browse filesystem" )
47
- self .page .selectDataset (self .dataset )
33
+ self .page .selectDataset (self .zfs . dataset )
48
34
self .page .createSnapshot ("create-snapshot-in-browse-filesystem" )
49
35
self .assertIn ("@create-snapshot-in-browse-filesystem' created" , self .page .alertText ())
50
36
51
37
52
38
def testCreateSnapshotInBrowseSnapshots (self ) -> None :
53
39
self .page .selectView ("Browse snapshots" )
54
- self .page .selectDataset (self .dataset )
40
+ self .page .selectDataset (self .zfs . dataset )
55
41
self .page .createSnapshot ("create-snapshot-in-browse-snapshots" )
56
42
self .assertIn ("@create-snapshot-in-browse-snapshots' created" , self .page .alertText ())
57
43
58
44
59
45
def testDestroySnapshot (self ) -> None :
60
46
self .page .selectView ("Browse snapshots" )
61
- self .page .selectDataset (self .dataset )
47
+ self .page .selectDataset (self .zfs . dataset )
62
48
63
49
64
50
# create snapshot
@@ -73,7 +59,7 @@ def testDestroySnapshot(self) -> None:
73
59
74
60
def testRenameSnapshot (self ) -> None :
75
61
self .page .selectView ("Browse snapshots" )
76
- self .page .selectDataset (self .dataset )
62
+ self .page .selectDataset (self .zfs . dataset )
77
63
78
64
# create snapshot
79
65
self .page .createSnapshot ("rename-snapshot" )
@@ -87,41 +73,37 @@ def testRenameSnapshot(self) -> None:
87
73
88
74
def testCloneSnapshot (self ) -> None :
89
75
self .page .selectView ("Browse snapshots" )
90
- self .page .selectDataset (self .dataset )
76
+ self .page .selectDataset (self .zfs . dataset )
91
77
92
78
# create snapshot
93
79
self .page .createSnapshot ("clone-snapshot" )
94
80
self .page .closeAlert ()
95
81
96
82
# clone snapshot
97
83
self .page .cloneSnapshot ("clone-snapshot" , "cloned" )
98
- self .assertIn ("Snapshot 'clone-snapshot' cloned to '" + self .pool + "/cloned'" , self .page .alertText ())
84
+ self .assertIn ("Snapshot 'clone-snapshot' cloned to '" + self .zfs . pool + "/cloned'" , self .page .alertText ())
99
85
self .page .closeAlert ()
100
86
101
87
102
88
def testRollbackSnapshot (self ) -> None :
103
89
self .page .selectView ("Browse snapshots" )
104
- self .page .selectDataset (self .dataset )
90
+ self .page .selectDataset (self .zfs . dataset )
105
91
106
92
# create snapshot
107
93
self .page .createSnapshot ("rollback-snapshot" )
108
94
self .assertIn ("@rollback-snapshot' created" , self .page .alertText ())
109
95
self .page .closeAlert ()
110
96
111
97
# create a file
112
- fs .createTestFile (self .mountpoint + "/rollback-test.txt" , ["dummy" ])
113
- self .assertTrue (fs .exists (self .mountpoint + "/rollback-test.txt" ))
98
+ fs .createTestFile (self .zfs . mountpoint () + "/rollback-test.txt" , ["dummy" ])
99
+ self .assertTrue (fs .exists (self .zfs . mountpoint () + "/rollback-test.txt" ))
114
100
115
101
# rollback
116
102
self .page .rollbackSnapshot ("rollback-snapshot" )
117
103
self .assertIn ("Snapshot 'rollback-snapshot' rolled back" , self .page .alertText ())
118
- self .assertFalse (fs .exists (self .mountpoint + "/rollback-test.txt" ))
104
+ self .assertFalse (fs .exists (self .zfs . mountpoint () + "/rollback-test.txt" ))
119
105
120
106
121
107
def tearDown (self ) -> None :
122
108
self .page .close ()
123
109
124
-
125
- @classmethod
126
- def tearDownClass (cls ) -> None :
127
- zfs .destroyDataset (cls .pool , cls .dataset )
0 commit comments