22
33import unittest
44
5+ from parameterized import parameterized_class
6+
57from fs .mirror import mirror
68from fs import open_fs
79
810
11+ @parameterized_class (("WORKERS" ,), [(0 ,), (1 ,), (2 ,), (4 ,)])
912class TestMirror (unittest .TestCase ):
10- WORKERS = 0 # Single threaded
11-
1213 def _contents (self , fs ):
1314 """Extract an FS in to a simple data structure."""
15+ namespaces = ("details" , "accessed" , "metadata_changed" , "modified" )
1416 contents = []
1517 for path , dirs , files in fs .walk ():
1618 for info in dirs :
1719 _path = info .make_path (path )
1820 contents .append ((_path , "dir" , b"" ))
1921 for info in files :
2022 _path = info .make_path (path )
21- contents .append ((_path , "file" , fs .readbytes (_path )))
23+ _bytes = fs .readbytes (_path )
24+ _info = fs .getinfo (_path , namespaces )
25+ contents .append (
26+ (
27+ _path ,
28+ "file" ,
29+ _bytes ,
30+ _info .modified ,
31+ _info .accessed ,
32+ _info .metadata_changed ,
33+ )
34+ )
2235 return sorted (contents )
2336
2437 def assert_compare_fs (self , fs1 , fs2 ):
@@ -28,36 +41,36 @@ def assert_compare_fs(self, fs1, fs2):
2841 def test_empty_mirror (self ):
2942 m1 = open_fs ("mem://" )
3043 m2 = open_fs ("mem://" )
31- mirror (m1 , m2 , workers = self .WORKERS )
44+ mirror (m1 , m2 , workers = self .WORKERS , preserve_time = True )
3245 self .assert_compare_fs (m1 , m2 )
3346
3447 def test_mirror_one_file (self ):
3548 m1 = open_fs ("mem://" )
3649 m1 .writetext ("foo" , "hello" )
3750 m2 = open_fs ("mem://" )
38- mirror (m1 , m2 , workers = self .WORKERS )
51+ mirror (m1 , m2 , workers = self .WORKERS , preserve_time = True )
3952 self .assert_compare_fs (m1 , m2 )
4053
4154 def test_mirror_one_file_one_dir (self ):
4255 m1 = open_fs ("mem://" )
4356 m1 .writetext ("foo" , "hello" )
4457 m1 .makedir ("bar" )
4558 m2 = open_fs ("mem://" )
46- mirror (m1 , m2 , workers = self .WORKERS )
59+ mirror (m1 , m2 , workers = self .WORKERS , preserve_time = True )
4760 self .assert_compare_fs (m1 , m2 )
4861
4962 def test_mirror_delete_replace (self ):
5063 m1 = open_fs ("mem://" )
5164 m1 .writetext ("foo" , "hello" )
5265 m1 .makedir ("bar" )
5366 m2 = open_fs ("mem://" )
54- mirror (m1 , m2 , workers = self .WORKERS )
67+ mirror (m1 , m2 , workers = self .WORKERS , preserve_time = True )
5568 self .assert_compare_fs (m1 , m2 )
5669 m2 .remove ("foo" )
57- mirror (m1 , m2 , workers = self .WORKERS )
70+ mirror (m1 , m2 , workers = self .WORKERS , preserve_time = True )
5871 self .assert_compare_fs (m1 , m2 )
5972 m2 .removedir ("bar" )
60- mirror (m1 , m2 , workers = self .WORKERS )
73+ mirror (m1 , m2 , workers = self .WORKERS , preserve_time = True )
6174 self .assert_compare_fs (m1 , m2 )
6275
6376 def test_mirror_extra_dir (self ):
@@ -66,7 +79,7 @@ def test_mirror_extra_dir(self):
6679 m1 .makedir ("bar" )
6780 m2 = open_fs ("mem://" )
6881 m2 .makedir ("baz" )
69- mirror (m1 , m2 , workers = self .WORKERS )
82+ mirror (m1 , m2 , workers = self .WORKERS , preserve_time = True )
7083 self .assert_compare_fs (m1 , m2 )
7184
7285 def test_mirror_extra_file (self ):
@@ -76,7 +89,7 @@ def test_mirror_extra_file(self):
7689 m2 = open_fs ("mem://" )
7790 m2 .makedir ("baz" )
7891 m2 .touch ("egg" )
79- mirror (m1 , m2 , workers = self .WORKERS )
92+ mirror (m1 , m2 , workers = self .WORKERS , preserve_time = True )
8093 self .assert_compare_fs (m1 , m2 )
8194
8295 def test_mirror_wrong_type (self ):
@@ -86,28 +99,16 @@ def test_mirror_wrong_type(self):
8699 m2 = open_fs ("mem://" )
87100 m2 .makedir ("foo" )
88101 m2 .touch ("bar" )
89- mirror (m1 , m2 , workers = self .WORKERS )
102+ mirror (m1 , m2 , workers = self .WORKERS , preserve_time = True )
90103 self .assert_compare_fs (m1 , m2 )
91104
92105 def test_mirror_update (self ):
93106 m1 = open_fs ("mem://" )
94107 m1 .writetext ("foo" , "hello" )
95108 m1 .makedir ("bar" )
96109 m2 = open_fs ("mem://" )
97- mirror (m1 , m2 , workers = self .WORKERS )
110+ mirror (m1 , m2 , workers = self .WORKERS , preserve_time = True )
98111 self .assert_compare_fs (m1 , m2 )
99112 m2 .appendtext ("foo" , " world!" )
100- mirror (m1 , m2 , workers = self .WORKERS )
113+ mirror (m1 , m2 , workers = self .WORKERS , preserve_time = True )
101114 self .assert_compare_fs (m1 , m2 )
102-
103-
104- class TestMirrorWorkers1 (TestMirror ):
105- WORKERS = 1
106-
107-
108- class TestMirrorWorkers2 (TestMirror ):
109- WORKERS = 2
110-
111-
112- class TestMirrorWorkers4 (TestMirror ):
113- WORKERS = 4
0 commit comments