Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(222)

Side by Side Diff: tests/standalone/io/file_system_links_test.dart

Issue 12691002: dart:io | Add Link class, as sibling to File and Directory. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Fix Windows errors Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « sdk/lib/io/link.dart ('k') | tests/standalone/io/link_test.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 import "dart:io"; 5 import "dart:io";
6 import "dart:isolate"; 6 import "dart:isolate";
7 7
8 8
9 createLink(String dst, String link, bool symbolic, void callback()) { 9 createLink(String dst, String link, void callback()) {
10 var args = [ symbolic ? '-s' : '', dst, link ]; 10 new Link(link).create(dst).then((_) => callback());
11 var script = 'tests/standalone/io/ln.sh';
12 if (!new File(script).existsSync()) {
13 script = '../$script';
14 }
15 Process.run(script, args).then((result) {
16 if (result.exitCode == 0) {
17 callback();
18 } else {
19 throw new Exception('link creation failed');
20 }
21 });
22 } 11 }
23 12
24 13
25 testFileExistsCreate() { 14 testFileExistsCreate() {
26 var temp = new Directory('').createTempSync(); 15 var temp = new Directory('').createTempSync();
27 var x = '${temp.path}${Platform.pathSeparator}x'; 16 var x = '${temp.path}${Platform.pathSeparator}x';
28 var y = '${temp.path}${Platform.pathSeparator}y'; 17 var y = '${temp.path}${Platform.pathSeparator}y';
29 createLink(x, y, true, () { 18 createLink(x, y, () {
30 Expect.isFalse(new File(y).existsSync()); 19 Expect.isFalse(new File(y).existsSync());
31 Expect.isFalse(new File(x).existsSync()); 20 Expect.isFalse(new File(x).existsSync());
32 Expect.isTrue(FileSystemEntity.isLinkSync(y)); 21 Expect.isTrue(FileSystemEntity.isLinkSync(y));
33 Expect.isFalse(FileSystemEntity.isLinkSync(x)); 22 Expect.isFalse(FileSystemEntity.isLinkSync(x));
34 Expect.equals(FileSystemEntityType.NOT_FOUND, FileSystemEntity.typeSync(y)); 23 Expect.equals(FileSystemEntityType.NOT_FOUND, FileSystemEntity.typeSync(y));
35 Expect.equals(FileSystemEntityType.NOT_FOUND, FileSystemEntity.typeSync(x)); 24 Expect.equals(FileSystemEntityType.NOT_FOUND, FileSystemEntity.typeSync(x));
36 Expect.equals(FileSystemEntityType.LINK, 25 Expect.equals(FileSystemEntityType.LINK,
37 FileSystemEntity.typeSync(y, followLinks: false)); 26 FileSystemEntity.typeSync(y, followLinks: false));
38 Expect.equals(FileSystemEntityType.NOT_FOUND, 27 Expect.equals(FileSystemEntityType.NOT_FOUND,
39 FileSystemEntity.typeSync(x, followLinks: false)); 28 FileSystemEntity.typeSync(x, followLinks: false));
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
72 temp.deleteSync(recursive: true); 61 temp.deleteSync(recursive: true);
73 }); 62 });
74 } 63 }
75 64
76 65
77 testFileDelete() { 66 testFileDelete() {
78 var temp = new Directory('').createTempSync(); 67 var temp = new Directory('').createTempSync();
79 var x = '${temp.path}${Platform.pathSeparator}x'; 68 var x = '${temp.path}${Platform.pathSeparator}x';
80 var y = '${temp.path}${Platform.pathSeparator}y'; 69 var y = '${temp.path}${Platform.pathSeparator}y';
81 new File(x).createSync(); 70 new File(x).createSync();
82 createLink(x, y, true, () { 71 createLink(x, y, () {
83 Expect.isTrue(new File(x).existsSync()); 72 Expect.isTrue(new File(x).existsSync());
84 Expect.isTrue(new File(y).existsSync()); 73 Expect.isTrue(new File(y).existsSync());
85 new File(y).deleteSync(); 74 new File(y).deleteSync();
86 Expect.isTrue(new File(x).existsSync()); 75 Expect.isTrue(new File(x).existsSync());
87 Expect.isFalse(new File(y).existsSync()); 76 Expect.isFalse(new File(y).existsSync());
88 createLink(x, y, false, () { 77 createLink(x, y, () {
89 Expect.isTrue(new File(x).existsSync()); 78 Expect.isTrue(new File(x).existsSync());
90 Expect.isTrue(new File(y).existsSync()); 79 Expect.isTrue(new File(y).existsSync());
91 new File(y).deleteSync(); 80 new File(y).deleteSync();
92 Expect.isTrue(new File(x).existsSync()); 81 Expect.isTrue(new File(x).existsSync());
93 Expect.isFalse(new File(y).existsSync()); 82 Expect.isFalse(new File(y).existsSync());
94 temp.deleteSync(recursive: true); 83 temp.deleteSync(recursive: true);
95 }); 84 });
96 }); 85 });
97 } 86 }
98 87
99 88
100 testFileWriteRead() { 89 testFileWriteRead() {
101 var temp = new Directory('').createTempSync(); 90 var temp = new Directory('').createTempSync();
102 var x = '${temp.path}${Platform.pathSeparator}x'; 91 var x = '${temp.path}${Platform.pathSeparator}x';
103 var y = '${temp.path}${Platform.pathSeparator}y'; 92 var y = '${temp.path}${Platform.pathSeparator}y';
104 new File(x).createSync(); 93 new File(x).createSync();
105 createLink(x, y, true, () { 94 createLink(x, y, () {
106 var data = "asdf".codeUnits; 95 var data = "asdf".codeUnits;
107 var output = new File(y).openWrite(mode: FileMode.WRITE); 96 var output = new File(y).openWrite(mode: FileMode.WRITE);
108 output.writeBytes(data); 97 output.writeBytes(data);
109 output.close(); 98 output.close();
110 output.done.then((_) { 99 output.done.then((_) {
111 var read = new File(y).readAsBytesSync(); 100 var read = new File(y).readAsBytesSync();
112 Expect.listEquals(data, read); 101 Expect.listEquals(data, read);
113 var read2 = new File(x).readAsBytesSync(); 102 var read2 = new File(x).readAsBytesSync();
114 Expect.listEquals(data, read2); 103 Expect.listEquals(data, read2);
115 temp.deleteSync(recursive: true); 104 temp.deleteSync(recursive: true);
116 }); 105 });
117 }); 106 });
118 } 107 }
119 108
120 109
121 testDirectoryExistsCreate() { 110 testDirectoryExistsCreate() {
122 var temp = new Directory('').createTempSync(); 111 var temp = new Directory('').createTempSync();
123 var x = '${temp.path}${Platform.pathSeparator}x'; 112 var x = '${temp.path}${Platform.pathSeparator}x';
124 var y = '${temp.path}${Platform.pathSeparator}y'; 113 var y = '${temp.path}${Platform.pathSeparator}y';
125 createLink(x, y, true, () { 114 createLink(x, y, () {
126 Expect.isFalse(new Directory(x).existsSync()); 115 Expect.isFalse(new Directory(x).existsSync());
127 Expect.isFalse(new Directory(y).existsSync()); 116 Expect.isFalse(new Directory(y).existsSync());
128 Expect.throws(new Directory(y).createSync); 117 Expect.throws(new Directory(y).createSync);
129 temp.deleteSync(recursive: true); 118 temp.deleteSync(recursive: true);
130 }); 119 });
131 } 120 }
132 121
133 122
134 testDirectoryDelete() { 123 testDirectoryDelete() {
135 var temp = new Directory('').createTempSync(); 124 var temp = new Directory('').createTempSync();
136 var temp2 = new Directory('').createTempSync(); 125 var temp2 = new Directory('').createTempSync();
137 var y = '${temp.path}${Platform.pathSeparator}y'; 126 var y = '${temp.path}${Platform.pathSeparator}y';
138 var x = '${temp2.path}${Platform.pathSeparator}x'; 127 var x = '${temp2.path}${Platform.pathSeparator}x';
139 new File(x).createSync(); 128 new File(x).createSync();
140 createLink(temp2.path, y, true, () { 129 createLink(temp2.path, y, () {
141 var link = new Directory(y); 130 var link = new Directory(y);
142 Expect.isTrue(link.existsSync()); 131 Expect.isTrue(link.existsSync());
143 Expect.isTrue(temp2.existsSync()); 132 Expect.isTrue(temp2.existsSync());
144 link.deleteSync(); 133 link.deleteSync();
145 Expect.isFalse(link.existsSync()); 134 Expect.isFalse(link.existsSync());
146 Expect.isTrue(temp2.existsSync()); 135 Expect.isTrue(temp2.existsSync());
147 createLink(temp2.path, y, true, () { 136 createLink(temp2.path, y, () {
148 Expect.isTrue(link.existsSync()); 137 Expect.isTrue(link.existsSync());
149 temp.deleteSync(recursive: true); 138 temp.deleteSync(recursive: true);
150 Expect.isFalse(link.existsSync()); 139 Expect.isFalse(link.existsSync());
151 Expect.isTrue(temp2.existsSync()); 140 Expect.isTrue(temp2.existsSync());
152 Expect.isTrue(new File(x).existsSync()); 141 Expect.isTrue(new File(x).existsSync());
153 temp2.deleteSync(recursive: true); 142 temp2.deleteSync(recursive: true);
154 }); 143 });
155 }); 144 });
156 } 145 }
157 146
158 147
159 testDirectoryListing() { 148 testDirectoryListing() {
160 var keepAlive = new ReceivePort(); 149 var keepAlive = new ReceivePort();
161 var temp = new Directory('').createTempSync(); 150 var temp = new Directory('').createTempSync();
162 var temp2 = new Directory('').createTempSync(); 151 var temp2 = new Directory('').createTempSync();
163 var y = '${temp.path}${Platform.pathSeparator}y'; 152 var y = '${temp.path}${Platform.pathSeparator}y';
164 var x = '${temp2.path}${Platform.pathSeparator}x'; 153 var x = '${temp2.path}${Platform.pathSeparator}x';
165 new File(x).createSync(); 154 new File(x).createSync();
166 createLink(temp2.path, y, true, () { 155 createLink(temp2.path, y, () {
167 var files = []; 156 var files = [];
168 var dirs = []; 157 var dirs = [];
169 for (var entry in temp.listSync(recursive:true)) { 158 for (var entry in temp.listSync(recursive:true)) {
170 if (entry is File) { 159 if (entry is File) {
171 files.add(entry.path); 160 files.add(entry.path);
172 } else { 161 } else {
173 Expect.isTrue(entry is Directory); 162 Expect.isTrue(entry is Directory);
174 dirs.add(entry.path); 163 dirs.add(entry.path);
175 } 164 }
176 } 165 }
(...skipping 26 matching lines...) Expand all
203 } 192 }
204 193
205 194
206 testDirectoryListingBrokenLink() { 195 testDirectoryListingBrokenLink() {
207 var keepAlive = new ReceivePort(); 196 var keepAlive = new ReceivePort();
208 var temp = new Directory('').createTempSync(); 197 var temp = new Directory('').createTempSync();
209 var x = '${temp.path}${Platform.pathSeparator}x'; 198 var x = '${temp.path}${Platform.pathSeparator}x';
210 var link = '${temp.path}${Platform.pathSeparator}link'; 199 var link = '${temp.path}${Platform.pathSeparator}link';
211 var doesNotExist = 'this_thing_does_not_exist'; 200 var doesNotExist = 'this_thing_does_not_exist';
212 new File(x).createSync(); 201 new File(x).createSync();
213 createLink(doesNotExist, link, true, () { 202 createLink(doesNotExist, link, () {
214 Expect.throws(() => temp.listSync(recursive: true), 203 Expect.throws(() => temp.listSync(recursive: true),
215 (e) => e is DirectoryIOException); 204 (e) => e is DirectoryIOException);
216 var files = []; 205 var files = [];
217 var dirs = []; 206 var dirs = [];
218 var errors = []; 207 var errors = [];
219 temp.list(recursive: true).listen( 208 temp.list(recursive: true).listen(
220 (entity) { 209 (entity) {
221 if (entity is File) { 210 if (entity is File) {
222 files.add(entity.path); 211 files.add(entity.path);
223 } else { 212 } else {
(...skipping 17 matching lines...) Expand all
241 230
242 main() { 231 main() {
243 testFileExistsCreate(); 232 testFileExistsCreate();
244 testFileDelete(); 233 testFileDelete();
245 testFileWriteRead(); 234 testFileWriteRead();
246 testDirectoryExistsCreate(); 235 testDirectoryExistsCreate();
247 testDirectoryDelete(); 236 testDirectoryDelete();
248 testDirectoryListing(); 237 testDirectoryListing();
249 testDirectoryListingBrokenLink(); 238 testDirectoryListingBrokenLink();
250 } 239 }
OLDNEW
« no previous file with comments | « sdk/lib/io/link.dart ('k') | tests/standalone/io/link_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698