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

Side by Side Diff: test/io_test.dart

Issue 850953004: Don't touch files whose contents do not change. Fix #127. (Closed) Base URL: https://github.com/dart-lang/dart_style.git@master
Patch Set: Update changelog. Created 5 years, 11 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
« no previous file with comments | « lib/src/io.dart ('k') | no next file » | 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) 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:io'; 8 import 'dart:io';
8 9
9 import 'package:dart_style/src/io.dart'; 10 import 'package:dart_style/src/io.dart';
10 import 'package:path/path.dart' as p; 11 import 'package:path/path.dart' as p;
11 import 'package:scheduled_test/descriptor.dart' as d; 12 import 'package:scheduled_test/descriptor.dart' as d;
12 import 'package:scheduled_test/scheduled_test.dart'; 13 import 'package:scheduled_test/scheduled_test.dart';
13 import 'package:unittest/compact_vm_config.dart'; 14 import 'package:unittest/compact_vm_config.dart';
14 15
15 const _SOURCE = 'void main() => print("hello") ;'; 16 const _SOURCE = 'void main() => print("hello") ;';
16 const _FORMATTED = 'void main() => print("hello");\n'; 17 const _FORMATTED = 'void main() => print("hello");\n';
(...skipping 27 matching lines...) Expand all
44 schedule(() { 45 schedule(() {
45 var dir = new Directory(d.defaultRoot); 46 var dir = new Directory(d.defaultRoot);
46 processDirectory(dir, overwrite: true); 47 processDirectory(dir, overwrite: true);
47 }, 'Run formatter.'); 48 }, 'Run formatter.');
48 49
49 d.dir('code.dart', [ 50 d.dir('code.dart', [
50 d.file('a.dart', _FORMATTED) 51 d.file('a.dart', _FORMATTED)
51 ]).validate(); 52 ]).validate();
52 }); 53 });
53 54
55 test("doesn't touch unchanged files", () {
56 d.dir('code', [
57 d.file('bad.dart', _SOURCE),
58 d.file('good.dart', _FORMATTED),
59 ]).create();
60
61 modTime(String file) {
62 return new File(p.join(d.defaultRoot, 'code', file)).statSync().modified;
63 }
64
65 var badBefore;
66 var goodBefore;
67
68 schedule(() {
69 badBefore = modTime('bad.dart');
70 goodBefore = modTime('good.dart');
71
72 // Wait a bit so the mod time of a formatted file will be different.
73 return new Future.delayed(new Duration(seconds: 1));
74 });
75
76 schedule(() {
77 var dir = new Directory(p.join(d.defaultRoot, 'code'));
78 processDirectory(dir, overwrite: true);
79
80 // Should be touched.
81 var badAfter = modTime('bad.dart');
82 expect(badAfter, isNot(equals(badBefore)));
83
84 // Should not be touched.
85 var goodAfter = modTime('good.dart');
86 expect(goodAfter, equals(goodBefore));
87 });
88 });
89
54 test("doesn't follow directory symlinks by default", () { 90 test("doesn't follow directory symlinks by default", () {
55 d.dir('code', [ 91 d.dir('code', [
56 d.file('a.dart', _SOURCE), 92 d.file('a.dart', _SOURCE),
57 ]).create(); 93 ]).create();
58 94
59 d.dir('target_dir', [ 95 d.dir('target_dir', [
60 d.file('b.dart', _SOURCE), 96 d.file('b.dart', _SOURCE),
61 ]).create(); 97 ]).create();
62 98
63 schedule(() { 99 schedule(() {
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 var dir = new Directory(p.join(d.defaultRoot, 'code')); 178 var dir = new Directory(p.join(d.defaultRoot, 'code'));
143 processDirectory(dir, overwrite: true, followLinks: true); 179 processDirectory(dir, overwrite: true, followLinks: true);
144 }, 'running formatter'); 180 }, 'running formatter');
145 181
146 d.dir('code', [ 182 d.dir('code', [
147 d.file('linked_file.dart', _FORMATTED), 183 d.file('linked_file.dart', _FORMATTED),
148 ]).validate(); 184 ]).validate();
149 }); 185 });
150 } 186 }
151 } 187 }
OLDNEW
« no previous file with comments | « lib/src/io.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698