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

Side by Side Diff: pkg/polymer/test/build/common.dart

Issue 427623002: Polymer transformer logs now show on the frontend for pub serve. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: dont wrap the logger in release mode Created 6 years, 4 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
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 library polymer.test.build.common; 5 library polymer.test.build.common;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 8
9 import 'package:barback/barback.dart'; 9 import 'package:barback/barback.dart';
10 import 'package:polymer/src/build/common.dart';
10 import 'package:stack_trace/stack_trace.dart'; 11 import 'package:stack_trace/stack_trace.dart';
11 import 'package:unittest/unittest.dart'; 12 import 'package:unittest/unittest.dart';
12 13
13 String idToString(AssetId id) => '${id.package}|${id.path}'; 14 String idToString(AssetId id) => '${id.package}|${id.path}';
14 AssetId idFromString(String s) { 15 AssetId idFromString(String s) {
15 int index = s.indexOf('|'); 16 int index = s.indexOf('|');
16 return new AssetId(s.substring(0, index), s.substring(index + 1)); 17 return new AssetId(s.substring(0, index), s.substring(index + 1));
17 } 18 }
18 19
19 String _removeTrailingWhitespace(String str) => 20 String _removeTrailingWhitespace(String str) =>
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
121 if (messages == null) return; 122 if (messages == null) return;
122 expect(messagesSeen, messages.length, 123 expect(messagesSeen, messages.length,
123 reason: 'less messages than expected'); 124 reason: 'less messages than expected');
124 }); 125 });
125 } 126 }
126 } 127 }
127 128
128 testPhases(String testName, List<List<Transformer>> phases, 129 testPhases(String testName, List<List<Transformer>> phases,
129 Map<String, String> inputFiles, Map<String, String> expectedFiles, 130 Map<String, String> inputFiles, Map<String, String> expectedFiles,
130 [List<String> expectedMessages, bool solo = false]) { 131 [List<String> expectedMessages, bool solo = false]) {
131
132 // Include mock versions of the polymer library that can be used to test 132 // Include mock versions of the polymer library that can be used to test
133 // resolver-based code generation. 133 // resolver-based code generation.
134 POLYMER_MOCKS.forEach((file, contents) { inputFiles[file] = contents; }); 134 POLYMER_MOCKS.forEach((file, contents) { inputFiles[file] = contents; });
135 (solo ? solo_test : test)(testName, () { 135 (solo ? solo_test : test)(testName, () {
136 var helper = new TestHelper(phases, inputFiles, expectedMessages)..run(); 136 var helper = new TestHelper(phases, inputFiles, expectedMessages)..run();
137 return helper.checkAll(expectedFiles).whenComplete(() => helper.tearDown()); 137 return helper.checkAll(expectedFiles).whenComplete(() => helper.tearDown());
138 }); 138 });
139 } 139 }
140 140
141 solo_testPhases(String testName, List<List<Transformer>> phases, 141 solo_testPhases(String testName, List<List<Transformer>> phases,
142 Map<String, String> inputFiles, Map<String, String> expectedFiles, 142 Map<String, String> inputFiles, Map<String, String> expectedFiles,
143 [List<String> expectedMessages]) => 143 [List<String> expectedMessages]) =>
144 testPhases(testName, phases, inputFiles, expectedFiles, expectedMessages, 144 testPhases(testName, phases, inputFiles, expectedFiles, expectedMessages,
145 true); 145 true);
146 146
147
148 // Similar to testPhases, but tests all the cases around log behaviour in
149 // different modes. Any expectedFiles with [LOG_EXTENSION] will be removed from
150 // the expectation as appropriate, and any error logs will be changed to expect
151 // warning logs as appropriate.
152 testLogOutput(Function buildPhase, String testName,
153 Map<String, String> inputFiles, Map<String, String> expectedFiles,
154 [List<String> expectedMessages, bool solo = false]) {
155
156 final transformOptions = [
157 new TransformOptions(injectBuildLogsInOutput: false, releaseMode: false),
158 new TransformOptions(injectBuildLogsInOutput: false, releaseMode: true),
159 new TransformOptions(injectBuildLogsInOutput: true, releaseMode: false),
160 new TransformOptions(injectBuildLogsInOutput: true, releaseMode: true),
161 ];
162
163 for (var options in transformOptions) {
164 var phase = buildPhase(options);
165 var actualExpectedFiles = {};
166 expectedFiles.forEach((file, content) {
167 if (file.contains(LOG_EXTENSION)
168 && (!options.injectBuildLogsInOutput || options.releaseMode)) {
169 return;
170 }
171 actualExpectedFiles[file] = content;
172 });
173 var fullTestName = '$testName: '
174 'injectLogs=${options.injectBuildLogsInOutput} '
175 'releaseMode=${options.releaseMode}';
176 testPhases(
177 fullTestName, [[phase]], inputFiles,
178 actualExpectedFiles,
179 expectedMessages.map((m) =>
180 options.releaseMode ? m : m.replaceFirst('error:', 'warning:'))
181 .toList(),
182 solo);
183 }
184 }
185
147 /// Generate an expected ._data file, where all files are assumed to be in the 186 /// Generate an expected ._data file, where all files are assumed to be in the
148 /// same [package]. 187 /// same [package].
149 String expectedData(List<String> urls, {package: 'a', experimental: false}) { 188 String expectedData(List<String> urls, {package: 'a', experimental: false}) {
150 var ids = urls.map((e) => '["$package","$e"]').join(','); 189 var ids = urls.map((e) => '["$package","$e"]').join(',');
151 return '{"experimental_bootstrap":$experimental,"script_ids":[$ids]}'; 190 return '{"experimental_bootstrap":$experimental,"script_ids":[$ids]}';
152 } 191 }
153 192
154 const EMPTY_DATA = '{"experimental_bootstrap":false,"script_ids":[]}'; 193 const EMPTY_DATA = '{"experimental_bootstrap":false,"script_ids":[]}';
155 194
156 const WEB_COMPONENTS_TAG = 195 const WEB_COMPONENTS_TAG =
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
202 241
203 'observe|lib/observe.dart': 242 'observe|lib/observe.dart':
204 'library observe;\n' 243 'library observe;\n'
205 'export "src/metadata.dart";', 244 'export "src/metadata.dart";',
206 245
207 'observe|lib/src/metadata.dart': 246 'observe|lib/src/metadata.dart':
208 'library observe.src.metadata;\n' 247 'library observe.src.metadata;\n'
209 'class ObservableProperty { const ObservableProperty(); }\n' 248 'class ObservableProperty { const ObservableProperty(); }\n'
210 'const observable = const ObservableProperty();\n', 249 'const observable = const ObservableProperty();\n',
211 }; 250 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698