1414poolset .parse_zfs_r_output (zlist_data , properties = properties )
1515pool_names = pool_names = [p .name for p in poolset if True ]
1616
17-
1817class PoolSetTests (unittest .TestCase ):
1918
2019 def test_pool_names (self ):
@@ -28,21 +27,54 @@ def test_zfs_list_parsing(self):
2827 if line .strip () == '' : continue
2928 row = line .split ('\t ' )
3029 name = row [0 ]
31- obj = poolset . lookup ( name )
30+
3231 if name .find ('@' ) > - 1 :
33- self .assertIsInstance (obj , zfs .Snapshot )
34- if not obj .dataset is None :
35- self .assertIsInstance (obj .dataset , zfs .Dataset )
36- self .assertIsInstance (obj .pool , zfs .Pool )
37- self .assertIsInstance (obj .parent , (zfs .Dataset , zfs .Pool ))
32+ snap = poolset .lookup (name )
33+ self .assertIsInstance (snap , zfs .Snapshot )
34+ if not snap .dataset is None :
35+ self .assertIsInstance (snap .dataset , zfs .Dataset )
36+ self .assertIsInstance (snap .pool , zfs .Pool )
37+ self .assertIsInstance (snap .parent , (zfs .Dataset , zfs .Pool ))
38+ if name .find ('/' ) > - 1 :
39+ pool_name = name [:name .find ('/' )]
40+ ds_path = name [len (pool_name )+ 1 :name .find ('@' )]
41+ else :
42+ pool_name = name [:name .find ('@' )]
43+ ds_path = None
44+ pool = poolset .get_pool (pool_name )
45+ self .assertIs (pool , snap .pool )
46+
47+ if ds_path is None : # Snapshot of pool
48+ self .assertIs (pool , snap .pool )
49+ else :
50+ ds1 = poolset .lookup ('{}/{}' .format (pool_name , ds_path ))
51+ ds2 = pool .lookup (ds_path )
52+ self .assertIs (ds1 , ds2 )
53+ self .assertIs (ds1 , ds2 )
54+ self .assertIs (snap .parent , ds1 )
55+
3856
3957 elif name .find ('/' ) > - 1 :
40- self .assertIsInstance (obj , zfs .Dataset )
41- self .assertIsInstance (obj .pool , zfs .Pool )
42- self .assertIsInstance (obj .parent , (zfs .Dataset , zfs .Pool ))
58+ ds = poolset .lookup (name )
59+ self .assertIsInstance (ds , zfs .Dataset )
60+ self .assertIsInstance (ds .pool , zfs .Pool )
61+ self .assertIsInstance (ds .parent , (zfs .Dataset , zfs .Pool ))
62+
63+ pool_name = name [:name .find ('/' )]
64+ ds_path = name [len (pool_name )+ 1 :]
65+ pool = poolset .get_pool (pool_name )
66+ self .assertIsInstance (pool , zfs .Pool )
67+ ds2 = pool .lookup (ds_path )
68+ ds3 = pool .get_dataset (ds_path )
69+ self .assertIs (ds , ds2 )
70+ self .assertIs (ds2 , ds3 )
71+ self .assertIs (ds .pool , pool )
4372
4473 else :
45- self .assertIsInstance (obj , zfs .Pool )
74+ pool = poolset .lookup (name )
75+ self .assertIsInstance (pool , zfs .Pool )
76+ self .assertIs (pool , poolset .get_pool (name ))
77+
4678
4779
4880 def test_poolset_get_pool (self ):
0 commit comments