@@ -13,181 +13,184 @@ import 'package:test/test.dart';
13
13
import 'package:win32/win32.dart' as win32;
14
14
15
15
import 'errors.dart' as errors;
16
+ import 'file_system_file_utils.dart' hide fileUtils;
16
17
import 'test_utils.dart' ;
17
18
18
- void main () {
19
- group ('createTemporaryDirectory' , () {
20
- late String tmp;
21
- late String cwd;
22
-
23
- setUp (() {
24
- tmp = createTemp ('createTemporaryDirectory' );
25
- cwd = fileSystem.currentDirectory;
26
- fileSystem.currentDirectory = tmp;
27
- });
28
-
29
- tearDown (() {
30
- fileSystem.currentDirectory = cwd;
31
- deleteTemp (tmp);
32
- });
33
-
34
- test ('no arguments' , () {
35
- final tmp1 = fileSystem.createTemporaryDirectory ();
36
- addTearDown (() => io.Directory (tmp1).deleteSync ());
37
- final tmp2 = fileSystem.createTemporaryDirectory ();
38
- addTearDown (() => io.Directory (tmp2).deleteSync ());
39
-
40
- expect (fileSystem.same (tmp1, tmp2), isFalse);
41
- expect (io.Directory (tmp1).existsSync (), isTrue);
42
- expect (io.Directory (tmp2).existsSync (), isTrue);
43
- });
44
-
45
- test ('prefix' , () {
46
- final tmp1 = fileSystem.createTemporaryDirectory (prefix: 'myprefix' );
47
- addTearDown (() => io.Directory (tmp1).deleteSync ());
48
- final tmp2 = fileSystem.createTemporaryDirectory (prefix: 'myprefix' );
49
- addTearDown (() => io.Directory (tmp2).deleteSync ());
50
-
51
- expect (tmp1, contains ('myprefix' ));
52
- expect (tmp2, contains ('myprefix' ));
53
- expect (fileSystem.same (tmp1, tmp2), isFalse);
54
- expect (io.Directory (tmp1).existsSync (), isTrue);
55
- expect (io.Directory (tmp2).existsSync (), isTrue);
56
- });
57
-
58
- test ('prefix is empty string' , () {
59
- final tmp1 = fileSystem.createTemporaryDirectory (prefix: '' );
60
- addTearDown (() => io.Directory (tmp1).deleteSync ());
61
- final tmp2 = fileSystem.createTemporaryDirectory (prefix: '' );
62
- addTearDown (() => io.Directory (tmp2).deleteSync ());
63
-
64
- expect (fileSystem.same (tmp1, tmp2), isFalse);
65
- expect (io.Directory (tmp1).existsSync (), isTrue);
66
- expect (io.Directory (tmp2).existsSync (), isTrue);
67
- });
68
-
69
- test ('prefix contains XXXXXX' , () {
70
- final tmp1 = fileSystem.createTemporaryDirectory (
71
- prefix: 'myprefix-XXXXXX' ,
72
- );
73
- addTearDown (() => io.Directory (tmp1).deleteSync ());
74
- final tmp2 = fileSystem.createTemporaryDirectory (
75
- prefix: 'myprefix-XXXXXX' ,
76
- );
77
- addTearDown (() => io.Directory (tmp2).deleteSync ());
78
-
79
- expect (tmp1, contains ('myprefix-' ));
80
- expect (tmp2, contains ('myprefix-' ));
81
- expect (fileSystem.same (tmp1, tmp2), isFalse);
82
- expect (io.Directory (tmp1).existsSync (), isTrue);
83
- expect (io.Directory (tmp2).existsSync (), isTrue);
84
- });
85
-
86
- test ('parent' , () {
87
- final tmp1 = fileSystem.createTemporaryDirectory (parent: tmp);
88
- final tmp2 = fileSystem.createTemporaryDirectory (parent: tmp);
89
-
90
- expect (tmp1, startsWith (tmp));
91
- expect (tmp2, startsWith (tmp));
92
- expect (fileSystem.same (tmp1, tmp2), isFalse);
93
- expect (io.Directory (tmp1).existsSync (), isTrue);
94
- expect (io.Directory (tmp2).existsSync (), isTrue);
95
- });
96
-
97
- test ('parent has a long directory name' , () {
98
- // On Windows:
99
- // When using an API to create a directory, the specified path cannot be
100
- // so long that you cannot append an 8.3 file name (that is, the directory
101
- // name cannot exceed MAX_PATH minus 12).
102
- final dirname = 'd' * (io.Platform .isWindows ? win32.MAX_PATH - 12 : 255 );
103
- final parent = p.join (tmp, dirname);
104
- io.Directory (parent).createSync ();
105
-
106
- final tmp1 = fileSystem.createTemporaryDirectory (parent: parent);
107
- final tmp2 = fileSystem.createTemporaryDirectory (parent: parent);
108
-
109
- expect (tmp1, startsWith (tmp));
110
- expect (tmp2, startsWith (tmp));
111
- expect (fileSystem.same (tmp1, tmp2), isFalse);
112
- expect (io.Directory (tmp1).existsSync (), isTrue);
113
- expect (io.Directory (tmp2).existsSync (), isTrue);
114
- });
115
-
116
- test ('parent is empty string' , () {
117
- final tmp1 = fileSystem.createTemporaryDirectory (parent: '' );
118
- addTearDown (() => io.Directory (tmp1).deleteSync ());
119
- final tmp2 = fileSystem.createTemporaryDirectory (parent: '' );
120
- addTearDown (() => io.Directory (tmp2).deleteSync ());
121
-
122
- expect (p.isRelative (tmp1), isTrue);
123
- expect (p.isRelative (tmp2), isTrue);
124
- expect (fileSystem.same (tmp1, tmp2), isFalse);
125
- expect (io.Directory (tmp1).existsSync (), isTrue);
126
- expect (io.Directory (tmp2).existsSync (), isTrue);
127
- });
128
-
129
- test ('parent does not exist' , () {
130
- expect (
131
- () => fileSystem.createTemporaryDirectory (parent: '/foo/bar/baz' ),
132
- throwsA (
133
- isA <PathNotFoundException >().having (
134
- (e) => e.errorCode,
135
- 'errorCode' ,
136
- io.Platform .isWindows ? win32.ERROR_PATH_NOT_FOUND : errors.enoent,
137
- ),
19
+ void tests (FileUtils utils, FileSystem fs) {
20
+ late String tmp;
21
+ late String cwd;
22
+
23
+ setUp (() {
24
+ tmp = utils.createTestDirectory ('createTemporaryDirectory' );
25
+ cwd = fs.currentDirectory;
26
+ fs.currentDirectory = tmp;
27
+ });
28
+
29
+ tearDown (() {
30
+ fs.currentDirectory = cwd;
31
+ utils.deleteDirectoryTree (tmp);
32
+ });
33
+
34
+ test ('no arguments' , () {
35
+ final tmp1 = fs.createTemporaryDirectory ();
36
+ addTearDown (() => utils.deleteDirectory (tmp1));
37
+ final tmp2 = fs.createTemporaryDirectory ();
38
+ addTearDown (() => utils.deleteDirectory (tmp2));
39
+
40
+ expect (fs.same (tmp1, tmp2), isFalse);
41
+ expect (utils.isDirectory (tmp1), isTrue);
42
+ expect (utils.isDirectory (tmp2), isTrue);
43
+ });
44
+
45
+ test ('prefix' , () {
46
+ final tmp1 = fs.createTemporaryDirectory (prefix: 'myprefix' );
47
+ addTearDown (() => utils.deleteDirectory (tmp1));
48
+ final tmp2 = fs.createTemporaryDirectory (prefix: 'myprefix' );
49
+ addTearDown (() => utils.deleteDirectory (tmp2));
50
+
51
+ expect (tmp1, contains ('myprefix' ));
52
+ expect (tmp2, contains ('myprefix' ));
53
+ expect (fs.same (tmp1, tmp2), isFalse);
54
+ expect (utils.isDirectory (tmp1), isTrue);
55
+ expect (utils.isDirectory (tmp2), isTrue);
56
+ });
57
+
58
+ test ('prefix is empty string' , () {
59
+ final tmp1 = fs.createTemporaryDirectory (prefix: '' );
60
+ addTearDown (() => utils.deleteDirectory (tmp1));
61
+ final tmp2 = fs.createTemporaryDirectory (prefix: '' );
62
+ addTearDown (() => utils.deleteDirectory (tmp2));
63
+
64
+ expect (fs.same (tmp1, tmp2), isFalse);
65
+ expect (utils.isDirectory (tmp1), isTrue);
66
+ expect (utils.isDirectory (tmp2), isTrue);
67
+ });
68
+
69
+ test ('prefix contains XXXXXX' , () {
70
+ final tmp1 = fs.createTemporaryDirectory (prefix: 'myprefix-XXXXXX' );
71
+ addTearDown (() => utils.deleteDirectory (tmp1));
72
+ final tmp2 = fs.createTemporaryDirectory (prefix: 'myprefix-XXXXXX' );
73
+ addTearDown (() => utils.deleteDirectory (tmp2));
74
+
75
+ expect (tmp1, contains ('myprefix-' ));
76
+ expect (tmp2, contains ('myprefix-' ));
77
+ expect (fs.same (tmp1, tmp2), isFalse);
78
+ expect (utils.isDirectory (tmp1), isTrue);
79
+ expect (utils.isDirectory (tmp2), isTrue);
80
+ });
81
+
82
+ test ('parent' , () {
83
+ final tmp1 = fs.createTemporaryDirectory (parent: tmp);
84
+ final tmp2 = fs.createTemporaryDirectory (parent: tmp);
85
+
86
+ expect (tmp1, startsWith (tmp));
87
+ expect (tmp2, startsWith (tmp));
88
+ expect (fs.same (tmp1, tmp2), isFalse);
89
+ expect (utils.isDirectory (tmp1), isTrue);
90
+ expect (utils.isDirectory (tmp2), isTrue);
91
+ });
92
+
93
+ test ('parent has a long directory name' , () {
94
+ // On Windows:
95
+ // When using an API to create a directory, the specified path cannot be
96
+ // so long that you cannot append an 8.3 file name (that is, the directory
97
+ // name cannot exceed MAX_PATH minus 12).
98
+ final dirname = 'd' * (io.Platform .isWindows ? win32.MAX_PATH - 12 : 255 );
99
+ final parent = p.join (tmp, dirname);
100
+ utils.createDirectory (parent);
101
+
102
+ final tmp1 = fs.createTemporaryDirectory (parent: parent);
103
+ final tmp2 = fs.createTemporaryDirectory (parent: parent);
104
+
105
+ expect (tmp1, startsWith (tmp));
106
+ expect (tmp2, startsWith (tmp));
107
+ expect (fs.same (tmp1, tmp2), isFalse);
108
+ expect (utils.isDirectory (tmp1), isTrue);
109
+ expect (utils.isDirectory (tmp2), isTrue);
110
+ });
111
+
112
+ test ('parent is empty string' , () {
113
+ final tmp1 = fs.createTemporaryDirectory (parent: '' );
114
+ addTearDown (() => utils.deleteDirectory (tmp1));
115
+ final tmp2 = fs.createTemporaryDirectory (parent: '' );
116
+ addTearDown (() => utils.deleteDirectory (tmp2));
117
+
118
+ expect (p.isRelative (tmp1), isTrue);
119
+ expect (p.isRelative (tmp2), isTrue);
120
+ expect (fs.same (tmp1, tmp2), isFalse);
121
+ expect (utils.isDirectory (tmp1), isTrue);
122
+ expect (utils.isDirectory (tmp2), isTrue);
123
+ });
124
+
125
+ test ('parent does not exist' , () {
126
+ expect (
127
+ () => fs.createTemporaryDirectory (parent: '/foo/bar/baz' ),
128
+ throwsA (
129
+ isA <PathNotFoundException >().having (
130
+ (e) => e.errorCode,
131
+ 'errorCode' ,
132
+ io.Platform .isWindows ? win32.ERROR_PATH_NOT_FOUND : errors.enoent,
138
133
),
139
- );
140
- });
141
-
142
- test ('prefix is absolute path inside of parent' , () {
143
- final subdir1 = '$tmp /dir1' ;
144
- io.Directory (subdir1).createSync ();
145
-
146
- final tmp1 = fileSystem.createTemporaryDirectory (
147
- parent: subdir1,
148
- prefix: '$subdir1 /file' ,
149
- );
150
-
151
- expect (tmp1, startsWith (subdir1));
152
- });
153
-
154
- test ('prefix is absolute path outside of parent' , () {
155
- final subdir1 = '$tmp /dir1' ;
156
- final subdir2 = '$tmp /dir2' ;
157
- io.Directory (subdir1).createSync ();
158
- io.Directory (subdir2).createSync ();
159
-
160
- final tmp1 = fileSystem.createTemporaryDirectory (
161
- parent: subdir1,
162
- prefix: '$subdir2 /file' ,
163
- );
164
-
165
- expect (tmp1, startsWith (subdir2));
166
- });
167
-
168
- test ('prefix is non-existant path inside temp directory' , () {
169
- expect (
170
- () => fileSystem.createTemporaryDirectory (prefix: 'subdir/file' ),
171
- throwsA (
172
- isA <PathNotFoundException >().having (
173
- (e) => e.errorCode,
174
- 'errorCode' ,
175
- io.Platform .isWindows ? win32.ERROR_PATH_NOT_FOUND : errors.enoent,
176
- ),
134
+ ),
135
+ );
136
+ });
137
+
138
+ test ('prefix is absolute path inside of parent' , () {
139
+ final subdir1 = '$tmp /dir1' ;
140
+ utils.createDirectory (subdir1);
141
+
142
+ final tmp1 = fs.createTemporaryDirectory (
143
+ parent: subdir1,
144
+ prefix: '$subdir1 /file' ,
145
+ );
146
+
147
+ expect (tmp1, startsWith (subdir1));
148
+ });
149
+
150
+ test ('prefix is absolute path outside of parent' , () {
151
+ final subdir1 = '$tmp /dir1' ;
152
+ final subdir2 = '$tmp /dir2' ;
153
+ utils
154
+ ..createDirectory (subdir1)
155
+ ..createDirectory (subdir2);
156
+
157
+ final tmp1 = fs.createTemporaryDirectory (
158
+ parent: subdir1,
159
+ prefix: '$subdir2 /file' ,
160
+ );
161
+
162
+ expect (tmp1, startsWith (subdir2));
163
+ });
164
+
165
+ test ('prefix is non-existant path inside temp directory' , () {
166
+ expect (
167
+ () => fs.createTemporaryDirectory (prefix: 'subdir/file' ),
168
+ throwsA (
169
+ isA <PathNotFoundException >().having (
170
+ (e) => e.errorCode,
171
+ 'errorCode' ,
172
+ io.Platform .isWindows ? win32.ERROR_PATH_NOT_FOUND : errors.enoent,
177
173
),
178
- );
179
- });
180
-
181
- test ('prefix is existant path inside temp directory' , () {
182
- final subdir1 = '$tmp /dir1' ;
183
- io.Directory (subdir1).createSync ();
184
-
185
- final tmp1 = fileSystem.createTemporaryDirectory (
186
- parent: tmp,
187
- prefix: 'dir1/file' ,
188
- );
189
- expect (p.canonicalize (tmp1), startsWith (p.canonicalize (subdir1)));
190
- expect (io.Directory (tmp1).existsSync (), isTrue);
191
- });
174
+ ),
175
+ );
176
+ });
177
+
178
+ test ('prefix is existant path inside temp directory' , () {
179
+ final subdir1 = '$tmp /dir1' ;
180
+ utils.createDirectory (subdir1);
181
+
182
+ final tmp1 = fs.createTemporaryDirectory (parent: tmp, prefix: 'dir1/file' );
183
+ expect (p.canonicalize (tmp1), startsWith (p.canonicalize (subdir1)));
184
+ expect (utils.isDirectory (tmp1), isTrue);
185
+ });
186
+ }
187
+
188
+ void main () {
189
+ group ('createTemporaryDirectory' , () {
190
+ group ('dart:io verification' , () => tests (fileUtils (), fileSystem));
191
+ group (
192
+ 'self verification' ,
193
+ () => tests (FileSystemFileUtils (fileSystem), fileSystem),
194
+ );
192
195
});
193
196
}
0 commit comments