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 library descriptor.file; | 5 library descriptor.file; |
6 | 6 |
7 import 'dart:async'; | 7 import 'dart:async'; |
8 import 'dart:convert'; | 8 import 'dart:convert'; |
9 import 'dart:io'; | 9 import 'dart:io'; |
10 import 'dart:math' as math; | 10 import 'dart:math' as math; |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
52 return new File(path.join(parent, name)).writeAsBytes(contents); | 52 return new File(path.join(parent, name)).writeAsBytes(contents); |
53 }, "creating file '$name'"); | 53 }, "creating file '$name'"); |
54 | 54 |
55 Future validate([String parent]) => | 55 Future validate([String parent]) => |
56 schedule(() => validateNow(parent), "validating file '$name'"); | 56 schedule(() => validateNow(parent), "validating file '$name'"); |
57 | 57 |
58 Future validateNow([String parent]) { | 58 Future validateNow([String parent]) { |
59 if (parent == null) parent = defaultRoot; | 59 if (parent == null) parent = defaultRoot; |
60 var fullPath = path.join(parent, name); | 60 var fullPath = path.join(parent, name); |
61 if (!new File(fullPath).existsSync()) { | 61 if (!new File(fullPath).existsSync()) { |
62 throw "File not found: '$fullPath'."; | 62 fail("File not found: '$fullPath'."); |
63 } | 63 } |
64 | 64 |
65 return new File(fullPath).readAsBytes().then(_validateNow); | 65 return new File(fullPath).readAsBytes().then(_validateNow); |
66 } | 66 } |
67 | 67 |
68 // TODO(nweiz): rather than setting up an inheritance chain, just store a | 68 // TODO(nweiz): rather than setting up an inheritance chain, just store a |
69 // Matcher for validation. This would require better error messages from the | 69 // Matcher for validation. This would require better error messages from the |
70 // matcher library, though. | 70 // matcher library, though. |
71 /// A function that throws an error if [binaryContents] doesn't match the | 71 /// A function that throws an error if [binaryContents] doesn't match the |
72 /// expected contents of the descriptor. | 72 /// expected contents of the descriptor. |
73 void _validateNow(List<int> binaryContents); | 73 void _validateNow(List<int> binaryContents); |
74 | 74 |
75 Stream<List<int>> read() => new Future.value(contents).asStream(); | 75 Stream<List<int>> read() => new Future.value(contents).asStream(); |
76 | 76 |
77 String describe() => name; | 77 String describe() => name; |
78 } | 78 } |
79 | 79 |
80 class _BinaryFileDescriptor extends FileDescriptor { | 80 class _BinaryFileDescriptor extends FileDescriptor { |
81 _BinaryFileDescriptor(String name, List<int> contents) | 81 _BinaryFileDescriptor(String name, List<int> contents) |
82 : super._(name, contents); | 82 : super._(name, contents); |
83 | 83 |
84 Future _validateNow(List<int> actualContents) { | 84 Future _validateNow(List<int> actualContents) { |
85 if (orderedIterableEquals(contents, actualContents)) return null; | 85 if (orderedIterableEquals(contents, actualContents)) return null; |
86 // TODO(nweiz): show a hex dump here if the data is small enough. | 86 // TODO(nweiz): show a hex dump here if the data is small enough. |
87 throw "File '$name' didn't contain the expected binary data."; | 87 fail("File '$name' didn't contain the expected binary data."); |
88 } | 88 } |
89 } | 89 } |
90 | 90 |
91 class _StringFileDescriptor extends FileDescriptor { | 91 class _StringFileDescriptor extends FileDescriptor { |
92 _StringFileDescriptor(String name, String contents) | 92 _StringFileDescriptor(String name, String contents) |
93 : super._(name, UTF8.encode(contents)); | 93 : super._(name, UTF8.encode(contents)); |
94 | 94 |
95 Future _validateNow(List<int> actualContents) { | 95 Future _validateNow(List<int> actualContents) { |
96 if (orderedIterableEquals(contents, actualContents)) return null; | 96 if (orderedIterableEquals(contents, actualContents)) return null; |
97 throw _textMismatchMessage(textContents, | 97 throw _textMismatchMessage(textContents, |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
140 | 140 |
141 _MatcherFileDescriptor(String name, this._matcher, {bool isBinary}) | 141 _MatcherFileDescriptor(String name, this._matcher, {bool isBinary}) |
142 : _isBinary = isBinary == true ? true : false, | 142 : _isBinary = isBinary == true ? true : false, |
143 super._(name, <int>[]); | 143 super._(name, <int>[]); |
144 | 144 |
145 void _validateNow(List<int> actualContents) => | 145 void _validateNow(List<int> actualContents) => |
146 expect( | 146 expect( |
147 _isBinary ? actualContents : new String.fromCharCodes(actualContents), | 147 _isBinary ? actualContents : new String.fromCharCodes(actualContents), |
148 _matcher); | 148 _matcher); |
149 } | 149 } |
OLD | NEW |