| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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 library dart_style.test.io; | 5 library dart_style.test.io; |
| 6 | 6 |
| 7 import 'dart:async'; | 7 import 'dart:async'; |
| 8 import 'dart:io'; | 8 import 'dart:io'; |
| 9 | 9 |
| 10 import 'package:dart_style/src/io.dart'; | 10 import 'package:dart_style/src/io.dart'; |
| 11 import 'package:path/path.dart' as p; | 11 import 'package:path/path.dart' as p; |
| 12 import 'package:scheduled_test/descriptor.dart' as d; | 12 import 'package:scheduled_test/descriptor.dart' as d; |
| 13 import 'package:scheduled_test/scheduled_test.dart'; | 13 import 'package:scheduled_test/scheduled_test.dart'; |
| 14 | 14 |
| 15 import 'package:dart_style/src/formatter_options.dart'; | 15 import 'package:dart_style/src/formatter_options.dart'; |
| 16 | 16 |
| 17 import 'utils.dart'; | 17 import 'utils.dart'; |
| 18 | 18 |
| 19 void main() { | 19 void main() { |
| 20 setUpTestSuite(); | 20 setUpTestSuite(); |
| 21 | 21 |
| 22 var overwriteOptions = new FormatterOptions(OutputReporter.overwrite); | 22 var overwriteOptions = new FormatterOptions(OutputReporter.overwrite); |
| 23 | 23 |
| 24 var followOptions = new FormatterOptions(OutputReporter.overwrite, | 24 var followOptions = |
| 25 followLinks: true); | 25 new FormatterOptions(OutputReporter.overwrite, followLinks: true); |
| 26 | 26 |
| 27 test('handles directory ending in ".dart"', () { | 27 test('handles directory ending in ".dart"', () { |
| 28 d.dir('code.dart', [ | 28 d.dir('code.dart', [d.file('a.dart', unformattedSource),]).create(); |
| 29 d.file('a.dart', unformattedSource), | |
| 30 ]).create(); | |
| 31 | 29 |
| 32 schedule(() { | 30 schedule(() { |
| 33 var dir = new Directory(d.defaultRoot); | 31 var dir = new Directory(d.defaultRoot); |
| 34 processDirectory(overwriteOptions, dir); | 32 processDirectory(overwriteOptions, dir); |
| 35 }, 'Run formatter.'); | 33 }, 'Run formatter.'); |
| 36 | 34 |
| 37 d.dir('code.dart', [ | 35 d.dir('code.dart', [d.file('a.dart', formattedSource)]).validate(); |
| 38 d.file('a.dart', formattedSource) | |
| 39 ]).validate(); | |
| 40 }); | 36 }); |
| 41 | 37 |
| 42 test("doesn't touch unchanged files", () { | 38 test("doesn't touch unchanged files", () { |
| 43 d.dir('code', [ | 39 d.dir('code', [ |
| 44 d.file('bad.dart', unformattedSource), | 40 d.file('bad.dart', unformattedSource), |
| 45 d.file('good.dart', formattedSource), | 41 d.file('good.dart', formattedSource), |
| 46 ]).create(); | 42 ]).create(); |
| 47 | 43 |
| 48 modTime(String file) { | 44 modTime(String file) { |
| 49 return new File(p.join(d.defaultRoot, 'code', file)).statSync().modified; | 45 return new File(p.join(d.defaultRoot, 'code', file)).statSync().modified; |
| (...skipping 18 matching lines...) Expand all Loading... |
| 68 var badAfter = modTime('bad.dart'); | 64 var badAfter = modTime('bad.dart'); |
| 69 expect(badAfter, isNot(equals(badBefore))); | 65 expect(badAfter, isNot(equals(badBefore))); |
| 70 | 66 |
| 71 // Should not be touched. | 67 // Should not be touched. |
| 72 var goodAfter = modTime('good.dart'); | 68 var goodAfter = modTime('good.dart'); |
| 73 expect(goodAfter, equals(goodBefore)); | 69 expect(goodAfter, equals(goodBefore)); |
| 74 }); | 70 }); |
| 75 }); | 71 }); |
| 76 | 72 |
| 77 test("skips subdirectories whose name starts with '.'", () { | 73 test("skips subdirectories whose name starts with '.'", () { |
| 78 d.dir('code', [ | 74 d.dir('code', [d.dir('.skip', [d.file('a.dart', unformattedSource)])]) |
| 79 d.dir('.skip', [ | 75 .create(); |
| 80 d.file('a.dart', unformattedSource) | |
| 81 ]) | |
| 82 ]).create(); | |
| 83 | 76 |
| 84 schedule(() { | 77 schedule(() { |
| 85 var dir = new Directory(d.defaultRoot); | 78 var dir = new Directory(d.defaultRoot); |
| 86 processDirectory(overwriteOptions, dir); | 79 processDirectory(overwriteOptions, dir); |
| 87 }, 'Run formatter.'); | 80 }, 'Run formatter.'); |
| 88 | 81 |
| 89 d.dir('code', [ | 82 d.dir('code', [d.dir('.skip', [d.file('a.dart', unformattedSource)])]) |
| 90 d.dir('.skip', [ | 83 .validate(); |
| 91 d.file('a.dart', unformattedSource) | |
| 92 ]) | |
| 93 ]).validate(); | |
| 94 }); | 84 }); |
| 95 | 85 |
| 96 test("traverses the given directory even if its name starts with '.'", () { | 86 test("traverses the given directory even if its name starts with '.'", () { |
| 97 d.dir('.code', [ | 87 d.dir('.code', [d.file('a.dart', unformattedSource)]).create(); |
| 98 d.file('a.dart', unformattedSource) | |
| 99 ]).create(); | |
| 100 | 88 |
| 101 schedule(() { | 89 schedule(() { |
| 102 var dir = new Directory(p.join(d.defaultRoot, '.code')); | 90 var dir = new Directory(p.join(d.defaultRoot, '.code')); |
| 103 processDirectory(overwriteOptions, dir); | 91 processDirectory(overwriteOptions, dir); |
| 104 }, 'Run formatter.'); | 92 }, 'Run formatter.'); |
| 105 | 93 |
| 106 d.dir('.code', [ | 94 d.dir('.code', [d.file('a.dart', formattedSource)]).validate(); |
| 107 d.file('a.dart', formattedSource) | |
| 108 ]).validate(); | |
| 109 }); | 95 }); |
| 110 | 96 |
| 111 test("doesn't follow directory symlinks by default", () { | 97 test("doesn't follow directory symlinks by default", () { |
| 112 d.dir('code', [ | 98 d.dir('code', [d.file('a.dart', unformattedSource),]).create(); |
| 113 d.file('a.dart', unformattedSource), | |
| 114 ]).create(); | |
| 115 | 99 |
| 116 d.dir('target_dir', [ | 100 d.dir('target_dir', [d.file('b.dart', unformattedSource),]).create(); |
| 117 d.file('b.dart', unformattedSource), | |
| 118 ]).create(); | |
| 119 | 101 |
| 120 schedule(() { | 102 schedule(() { |
| 121 // Create a link to the target directory in the code directory. | 103 // Create a link to the target directory in the code directory. |
| 122 new Link(p.join(d.defaultRoot, 'code', 'linked_dir')) | 104 new Link(p.join(d.defaultRoot, 'code', 'linked_dir')) |
| 123 .createSync(p.join(d.defaultRoot, 'target_dir')); | 105 .createSync(p.join(d.defaultRoot, 'target_dir')); |
| 124 }, 'Create symlinks.'); | 106 }, 'Create symlinks.'); |
| 125 | 107 |
| 126 schedule(() { | 108 schedule(() { |
| 127 var dir = new Directory(p.join(d.defaultRoot, 'code')); | 109 var dir = new Directory(p.join(d.defaultRoot, 'code')); |
| 128 processDirectory(overwriteOptions, dir); | 110 processDirectory(overwriteOptions, dir); |
| 129 }, 'Run formatter.'); | 111 }, 'Run formatter.'); |
| 130 | 112 |
| 131 d.dir('code', [ | 113 d.dir('code', [ |
| 132 d.file('a.dart', formattedSource), | 114 d.file('a.dart', formattedSource), |
| 133 d.dir('linked_dir', [ | 115 d.dir('linked_dir', [d.file('b.dart', unformattedSource),]) |
| 134 d.file('b.dart', unformattedSource), | |
| 135 ]) | |
| 136 ]).validate(); | 116 ]).validate(); |
| 137 }); | 117 }); |
| 138 | 118 |
| 139 test("follows directory symlinks when 'followLinks' is true", () { | 119 test("follows directory symlinks when 'followLinks' is true", () { |
| 140 d.dir('code', [ | 120 d.dir('code', [d.file('a.dart', unformattedSource),]).create(); |
| 141 d.file('a.dart', unformattedSource), | |
| 142 ]).create(); | |
| 143 | 121 |
| 144 d.dir('target_dir', [ | 122 d.dir('target_dir', [d.file('b.dart', unformattedSource),]).create(); |
| 145 d.file('b.dart', unformattedSource), | |
| 146 ]).create(); | |
| 147 | 123 |
| 148 schedule(() { | 124 schedule(() { |
| 149 // Create a link to the target directory in the code directory. | 125 // Create a link to the target directory in the code directory. |
| 150 new Link(p.join(d.defaultRoot, 'code', 'linked_dir')) | 126 new Link(p.join(d.defaultRoot, 'code', 'linked_dir')) |
| 151 .createSync(p.join(d.defaultRoot, 'target_dir')); | 127 .createSync(p.join(d.defaultRoot, 'target_dir')); |
| 152 }); | 128 }); |
| 153 | 129 |
| 154 schedule(() { | 130 schedule(() { |
| 155 var dir = new Directory(p.join(d.defaultRoot, 'code')); | 131 var dir = new Directory(p.join(d.defaultRoot, 'code')); |
| 156 processDirectory(followOptions, dir); | 132 processDirectory(followOptions, dir); |
| 157 }, 'running formatter'); | 133 }, 'running formatter'); |
| 158 | 134 |
| 159 d.dir('code', [ | 135 d.dir('code', [ |
| 160 d.file('a.dart', formattedSource), | 136 d.file('a.dart', formattedSource), |
| 161 d.dir('linked_dir', [ | 137 d.dir('linked_dir', [d.file('b.dart', formattedSource),]) |
| 162 d.file('b.dart', formattedSource), | |
| 163 ]) | |
| 164 ]).validate(); | 138 ]).validate(); |
| 165 }); | 139 }); |
| 166 | 140 |
| 167 if (!Platform.isWindows) { | 141 if (!Platform.isWindows) { |
| 168 test("doesn't follow file symlinks by default", () { | 142 test("doesn't follow file symlinks by default", () { |
| 169 d.dir('code').create(); | 143 d.dir('code').create(); |
| 170 d.file('target_file.dart', unformattedSource).create(); | 144 d.file('target_file.dart', unformattedSource).create(); |
| 171 | 145 |
| 172 schedule(() { | 146 schedule(() { |
| 173 // Create a link to the target file in the code directory. | 147 // Create a link to the target file in the code directory. |
| 174 new Link(p.join(d.defaultRoot, 'code', 'linked_file.dart')) | 148 new Link(p.join(d.defaultRoot, 'code', 'linked_file.dart')) |
| 175 .createSync(p.join(d.defaultRoot, 'target_file.dart')); | 149 .createSync(p.join(d.defaultRoot, 'target_file.dart')); |
| 176 }, 'Create symlinks.'); | 150 }, 'Create symlinks.'); |
| 177 | 151 |
| 178 schedule(() { | 152 schedule(() { |
| 179 var dir = new Directory(p.join(d.defaultRoot, 'code')); | 153 var dir = new Directory(p.join(d.defaultRoot, 'code')); |
| 180 processDirectory(overwriteOptions, dir); | 154 processDirectory(overwriteOptions, dir); |
| 181 }, 'Run formatter.'); | 155 }, 'Run formatter.'); |
| 182 | 156 |
| 183 d.dir('code', [ | 157 d.dir('code', [d.file('linked_file.dart', unformattedSource),]) |
| 184 d.file('linked_file.dart', unformattedSource), | 158 .validate(); |
| 185 ]).validate(); | |
| 186 }); | 159 }); |
| 187 | 160 |
| 188 test("follows file symlinks when 'followLinks' is true", () { | 161 test("follows file symlinks when 'followLinks' is true", () { |
| 189 d.dir('code').create(); | 162 d.dir('code').create(); |
| 190 d.file('target_file.dart', unformattedSource).create(); | 163 d.file('target_file.dart', unformattedSource).create(); |
| 191 | 164 |
| 192 schedule(() { | 165 schedule(() { |
| 193 // Create a link to the target file in the code directory. | 166 // Create a link to the target file in the code directory. |
| 194 new Link(p.join(d.defaultRoot, 'code', 'linked_file.dart')) | 167 new Link(p.join(d.defaultRoot, 'code', 'linked_file.dart')) |
| 195 .createSync(p.join(d.defaultRoot, 'target_file.dart')); | 168 .createSync(p.join(d.defaultRoot, 'target_file.dart')); |
| 196 }); | 169 }); |
| 197 | 170 |
| 198 schedule(() { | 171 schedule(() { |
| 199 var dir = new Directory(p.join(d.defaultRoot, 'code')); | 172 var dir = new Directory(p.join(d.defaultRoot, 'code')); |
| 200 processDirectory(followOptions, dir); | 173 processDirectory(followOptions, dir); |
| 201 }, 'running formatter'); | 174 }, 'running formatter'); |
| 202 | 175 |
| 203 d.dir('code', [ | 176 d.dir('code', [d.file('linked_file.dart', formattedSource),]).validate(); |
| 204 d.file('linked_file.dart', formattedSource), | |
| 205 ]).validate(); | |
| 206 }); | 177 }); |
| 207 } | 178 } |
| 208 } | 179 } |
| OLD | NEW |