| OLD | NEW |
| 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, void callback()) { | 9 createLink(String dst, String link, bool symbolic, void callback()) { |
| 10 new Link(link).create(dst, linkRelative: true).then((_) => callback()); | 10 var args = [ symbolic ? '-s' : '', dst, link ]; |
| 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 }); |
| 11 } | 22 } |
| 12 | 23 |
| 13 | 24 |
| 14 testFileExistsCreate() { | 25 testFileExistsCreate() { |
| 15 var temp = new Directory('').createTempSync(); | 26 var temp = new Directory('').createTempSync(); |
| 16 var x = '${temp.path}${Platform.pathSeparator}x'; | 27 var x = '${temp.path}${Platform.pathSeparator}x'; |
| 17 var y = '${temp.path}${Platform.pathSeparator}y'; | 28 var y = '${temp.path}${Platform.pathSeparator}y'; |
| 18 createLink(x, y, () { | 29 createLink(x, y, true, () { |
| 19 Expect.isFalse(new File(y).existsSync()); | 30 Expect.isFalse(new File(y).existsSync()); |
| 20 Expect.isFalse(new File(x).existsSync()); | 31 Expect.isFalse(new File(x).existsSync()); |
| 21 Expect.isTrue(FileSystemEntity.isLinkSync(y)); | 32 Expect.isTrue(FileSystemEntity.isLinkSync(y)); |
| 22 Expect.isFalse(FileSystemEntity.isLinkSync(x)); | 33 Expect.isFalse(FileSystemEntity.isLinkSync(x)); |
| 23 Expect.equals(FileSystemEntityType.NOT_FOUND, FileSystemEntity.typeSync(y)); | 34 Expect.equals(FileSystemEntityType.NOT_FOUND, FileSystemEntity.typeSync(y)); |
| 24 Expect.equals(FileSystemEntityType.NOT_FOUND, FileSystemEntity.typeSync(x)); | 35 Expect.equals(FileSystemEntityType.NOT_FOUND, FileSystemEntity.typeSync(x)); |
| 25 Expect.equals(FileSystemEntityType.LINK, | 36 Expect.equals(FileSystemEntityType.LINK, |
| 26 FileSystemEntity.typeSync(y, followLinks: false)); | 37 FileSystemEntity.typeSync(y, followLinks: false)); |
| 27 Expect.equals(FileSystemEntityType.NOT_FOUND, | 38 Expect.equals(FileSystemEntityType.NOT_FOUND, |
| 28 FileSystemEntity.typeSync(x, followLinks: false)); | 39 FileSystemEntity.typeSync(x, followLinks: false)); |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 61 temp.deleteSync(recursive: true); | 72 temp.deleteSync(recursive: true); |
| 62 }); | 73 }); |
| 63 } | 74 } |
| 64 | 75 |
| 65 | 76 |
| 66 testFileDelete() { | 77 testFileDelete() { |
| 67 var temp = new Directory('').createTempSync(); | 78 var temp = new Directory('').createTempSync(); |
| 68 var x = '${temp.path}${Platform.pathSeparator}x'; | 79 var x = '${temp.path}${Platform.pathSeparator}x'; |
| 69 var y = '${temp.path}${Platform.pathSeparator}y'; | 80 var y = '${temp.path}${Platform.pathSeparator}y'; |
| 70 new File(x).createSync(); | 81 new File(x).createSync(); |
| 71 createLink(x, y, () { | 82 createLink(x, y, true, () { |
| 72 Expect.isTrue(new File(x).existsSync()); | 83 Expect.isTrue(new File(x).existsSync()); |
| 73 Expect.isTrue(new File(y).existsSync()); | 84 Expect.isTrue(new File(y).existsSync()); |
| 74 new File(y).deleteSync(); | 85 new File(y).deleteSync(); |
| 75 Expect.isTrue(new File(x).existsSync()); | 86 Expect.isTrue(new File(x).existsSync()); |
| 76 Expect.isFalse(new File(y).existsSync()); | 87 Expect.isFalse(new File(y).existsSync()); |
| 77 createLink(x, y, () { | 88 createLink(x, y, false, () { |
| 78 Expect.isTrue(new File(x).existsSync()); | 89 Expect.isTrue(new File(x).existsSync()); |
| 79 Expect.isTrue(new File(y).existsSync()); | 90 Expect.isTrue(new File(y).existsSync()); |
| 80 new File(y).deleteSync(); | 91 new File(y).deleteSync(); |
| 81 Expect.isTrue(new File(x).existsSync()); | 92 Expect.isTrue(new File(x).existsSync()); |
| 82 Expect.isFalse(new File(y).existsSync()); | 93 Expect.isFalse(new File(y).existsSync()); |
| 83 temp.deleteSync(recursive: true); | 94 temp.deleteSync(recursive: true); |
| 84 }); | 95 }); |
| 85 }); | 96 }); |
| 86 } | 97 } |
| 87 | 98 |
| 88 | 99 |
| 89 testFileWriteRead() { | 100 testFileWriteRead() { |
| 90 var temp = new Directory('').createTempSync(); | 101 var temp = new Directory('').createTempSync(); |
| 91 var x = '${temp.path}${Platform.pathSeparator}x'; | 102 var x = '${temp.path}${Platform.pathSeparator}x'; |
| 92 var y = '${temp.path}${Platform.pathSeparator}y'; | 103 var y = '${temp.path}${Platform.pathSeparator}y'; |
| 93 new File(x).createSync(); | 104 new File(x).createSync(); |
| 94 createLink(x, y, () { | 105 createLink(x, y, true, () { |
| 95 var data = "asdf".codeUnits; | 106 var data = "asdf".codeUnits; |
| 96 var output = new File(y).openWrite(mode: FileMode.WRITE); | 107 var output = new File(y).openWrite(mode: FileMode.WRITE); |
| 97 output.writeBytes(data); | 108 output.writeBytes(data); |
| 98 output.close(); | 109 output.close(); |
| 99 output.done.then((_) { | 110 output.done.then((_) { |
| 100 var read = new File(y).readAsBytesSync(); | 111 var read = new File(y).readAsBytesSync(); |
| 101 Expect.listEquals(data, read); | 112 Expect.listEquals(data, read); |
| 102 var read2 = new File(x).readAsBytesSync(); | 113 var read2 = new File(x).readAsBytesSync(); |
| 103 Expect.listEquals(data, read2); | 114 Expect.listEquals(data, read2); |
| 104 temp.deleteSync(recursive: true); | 115 temp.deleteSync(recursive: true); |
| 105 }); | 116 }); |
| 106 }); | 117 }); |
| 107 } | 118 } |
| 108 | 119 |
| 109 | 120 |
| 110 testDirectoryExistsCreate() { | 121 testDirectoryExistsCreate() { |
| 111 var temp = new Directory('').createTempSync(); | 122 var temp = new Directory('').createTempSync(); |
| 112 var x = '${temp.path}${Platform.pathSeparator}x'; | 123 var x = '${temp.path}${Platform.pathSeparator}x'; |
| 113 var y = '${temp.path}${Platform.pathSeparator}y'; | 124 var y = '${temp.path}${Platform.pathSeparator}y'; |
| 114 createLink(x, y, () { | 125 createLink(x, y, true, () { |
| 115 Expect.isFalse(new Directory(x).existsSync()); | 126 Expect.isFalse(new Directory(x).existsSync()); |
| 116 Expect.isFalse(new Directory(y).existsSync()); | 127 Expect.isFalse(new Directory(y).existsSync()); |
| 117 Expect.throws(new Directory(y).createSync); | 128 Expect.throws(new Directory(y).createSync); |
| 118 temp.deleteSync(recursive: true); | 129 temp.deleteSync(recursive: true); |
| 119 }); | 130 }); |
| 120 } | 131 } |
| 121 | 132 |
| 122 | 133 |
| 123 testDirectoryDelete() { | 134 testDirectoryDelete() { |
| 124 var temp = new Directory('').createTempSync(); | 135 var temp = new Directory('').createTempSync(); |
| 125 var temp2 = new Directory('').createTempSync(); | 136 var temp2 = new Directory('').createTempSync(); |
| 126 var y = '${temp.path}${Platform.pathSeparator}y'; | 137 var y = '${temp.path}${Platform.pathSeparator}y'; |
| 127 var x = '${temp2.path}${Platform.pathSeparator}x'; | 138 var x = '${temp2.path}${Platform.pathSeparator}x'; |
| 128 new File(x).createSync(); | 139 new File(x).createSync(); |
| 129 createLink(temp2.path, y, () { | 140 createLink(temp2.path, y, true, () { |
| 130 var link = new Directory(y); | 141 var link = new Directory(y); |
| 131 Expect.isTrue(link.existsSync()); | 142 Expect.isTrue(link.existsSync()); |
| 132 Expect.isTrue(temp2.existsSync()); | 143 Expect.isTrue(temp2.existsSync()); |
| 133 link.deleteSync(); | 144 link.deleteSync(); |
| 134 Expect.isFalse(link.existsSync()); | 145 Expect.isFalse(link.existsSync()); |
| 135 Expect.isTrue(temp2.existsSync()); | 146 Expect.isTrue(temp2.existsSync()); |
| 136 createLink(temp2.path, y, () { | 147 createLink(temp2.path, y, true, () { |
| 137 Expect.isTrue(link.existsSync()); | 148 Expect.isTrue(link.existsSync()); |
| 138 temp.deleteSync(recursive: true); | 149 temp.deleteSync(recursive: true); |
| 139 Expect.isFalse(link.existsSync()); | 150 Expect.isFalse(link.existsSync()); |
| 140 Expect.isTrue(temp2.existsSync()); | 151 Expect.isTrue(temp2.existsSync()); |
| 141 Expect.isTrue(new File(x).existsSync()); | 152 Expect.isTrue(new File(x).existsSync()); |
| 142 temp2.deleteSync(recursive: true); | 153 temp2.deleteSync(recursive: true); |
| 143 }); | 154 }); |
| 144 }); | 155 }); |
| 145 } | 156 } |
| 146 | 157 |
| 147 | 158 |
| 148 testDirectoryListing() { | 159 testDirectoryListing() { |
| 149 var keepAlive = new ReceivePort(); | 160 var keepAlive = new ReceivePort(); |
| 150 var temp = new Directory('').createTempSync(); | 161 var temp = new Directory('').createTempSync(); |
| 151 var temp2 = new Directory('').createTempSync(); | 162 var temp2 = new Directory('').createTempSync(); |
| 152 var y = '${temp.path}${Platform.pathSeparator}y'; | 163 var y = '${temp.path}${Platform.pathSeparator}y'; |
| 153 var x = '${temp2.path}${Platform.pathSeparator}x'; | 164 var x = '${temp2.path}${Platform.pathSeparator}x'; |
| 154 new File(x).createSync(); | 165 new File(x).createSync(); |
| 155 createLink(temp2.path, y, () { | 166 createLink(temp2.path, y, true, () { |
| 156 var files = []; | 167 var files = []; |
| 157 var dirs = []; | 168 var dirs = []; |
| 158 for (var entry in temp.listSync(recursive:true)) { | 169 for (var entry in temp.listSync(recursive:true)) { |
| 159 if (entry is File) { | 170 if (entry is File) { |
| 160 files.add(entry.path); | 171 files.add(entry.path); |
| 161 } else { | 172 } else { |
| 162 Expect.isTrue(entry is Directory); | 173 Expect.isTrue(entry is Directory); |
| 163 dirs.add(entry.path); | 174 dirs.add(entry.path); |
| 164 } | 175 } |
| 165 } | 176 } |
| (...skipping 26 matching lines...) Expand all Loading... |
| 192 } | 203 } |
| 193 | 204 |
| 194 | 205 |
| 195 testDirectoryListingBrokenLink() { | 206 testDirectoryListingBrokenLink() { |
| 196 var keepAlive = new ReceivePort(); | 207 var keepAlive = new ReceivePort(); |
| 197 var temp = new Directory('').createTempSync(); | 208 var temp = new Directory('').createTempSync(); |
| 198 var x = '${temp.path}${Platform.pathSeparator}x'; | 209 var x = '${temp.path}${Platform.pathSeparator}x'; |
| 199 var link = '${temp.path}${Platform.pathSeparator}link'; | 210 var link = '${temp.path}${Platform.pathSeparator}link'; |
| 200 var doesNotExist = 'this_thing_does_not_exist'; | 211 var doesNotExist = 'this_thing_does_not_exist'; |
| 201 new File(x).createSync(); | 212 new File(x).createSync(); |
| 202 createLink(doesNotExist, link, () { | 213 createLink(doesNotExist, link, true, () { |
| 203 Expect.throws(() => temp.listSync(recursive: true), | 214 Expect.throws(() => temp.listSync(recursive: true), |
| 204 (e) => e is DirectoryIOException); | 215 (e) => e is DirectoryIOException); |
| 205 var files = []; | 216 var files = []; |
| 206 var dirs = []; | 217 var dirs = []; |
| 207 var errors = []; | 218 var errors = []; |
| 208 temp.list(recursive: true).listen( | 219 temp.list(recursive: true).listen( |
| 209 (entity) { | 220 (entity) { |
| 210 if (entity is File) { | 221 if (entity is File) { |
| 211 files.add(entity.path); | 222 files.add(entity.path); |
| 212 } else { | 223 } else { |
| (...skipping 17 matching lines...) Expand all Loading... |
| 230 | 241 |
| 231 main() { | 242 main() { |
| 232 testFileExistsCreate(); | 243 testFileExistsCreate(); |
| 233 testFileDelete(); | 244 testFileDelete(); |
| 234 testFileWriteRead(); | 245 testFileWriteRead(); |
| 235 testDirectoryExistsCreate(); | 246 testDirectoryExistsCreate(); |
| 236 testDirectoryDelete(); | 247 testDirectoryDelete(); |
| 237 testDirectoryListing(); | 248 testDirectoryListing(); |
| 238 testDirectoryListingBrokenLink(); | 249 testDirectoryListingBrokenLink(); |
| 239 } | 250 } |
| OLD | NEW |