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

Unified Diff: packages/code_transformers/lib/src/test_harness.dart

Issue 2989763002: Update charted to 0.4.8 and roll (Closed)
Patch Set: Removed Cutch from list of reviewers Created 3 years, 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « packages/code_transformers/lib/src/resolvers.dart ('k') | packages/code_transformers/lib/tests.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: packages/code_transformers/lib/src/test_harness.dart
diff --git a/packages/code_transformers/lib/src/test_harness.dart b/packages/code_transformers/lib/src/test_harness.dart
deleted file mode 100644
index 817fbb39374f262d1a5ae6f6d564a41ff252e191..0000000000000000000000000000000000000000
--- a/packages/code_transformers/lib/src/test_harness.dart
+++ /dev/null
@@ -1,166 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-/// Utilities for creating unit tests of Barback transformers.
-library code_transformers.src.test_harness;
-
-import 'dart:async';
-
-import 'package:barback/barback.dart';
-import 'package:stack_trace/stack_trace.dart';
-import 'package:unittest/unittest.dart';
-
-String idToString(AssetId id) => '${id.package}|${id.path}';
-AssetId idFromString(String s) {
- int index = s.indexOf('|');
- return new AssetId(s.substring(0, index), s.substring(index + 1));
-}
-
-/// A helper package provider that has files stored in memory, also wraps
-/// [Barback] to simply our tests.
-class TestHelper implements PackageProvider {
-
- /// Maps from an asset string identifier of the form 'package|path' to the
- /// file contents.
- final Map<String, String> files;
- final Iterable<String> packages;
- final List<String> messages;
- int messagesSeen = 0;
- bool errorSeen = false;
-
- Barback barback;
- var errorSubscription;
- var resultSubscription;
- var logSubscription;
-
- final StringFormatter formatter;
-
- Future<Asset> getAsset(AssetId id) =>
- new Future.value(new Asset.fromString(id, files[idToString(id)]));
-
- TestHelper(List<List<Transformer>> transformers, Map<String, String> files,
- this.messages, {this.formatter: StringFormatter.noTrailingWhitespace})
- : files = files,
- packages = files.keys.map((s) => idFromString(s).package) {
- barback = new Barback(this);
- for (var p in packages) {
- barback.updateTransformers(p, transformers);
- }
-
- errorSubscription = barback.errors.listen((e) {
- var trace = null;
- if (e is Error) trace = e.stackTrace;
- if (trace != null) {
- print(Trace.format(trace));
- }
- fail('error running barback: $e');
- });
-
- resultSubscription = barback.results.listen((result) {
- expect(result.succeeded, !errorSeen, reason: "${result.errors}");
- });
-
- logSubscription = barback.log.listen((entry) {
- // Ignore info and fine messages.
- if (entry.level == LogLevel.INFO || entry.level == LogLevel.FINE) return;
- if (entry.level == LogLevel.ERROR) errorSeen = true;
- // We only check messages when an expectation is provided.
- if (messages == null) return;
-
- var msg = '${entry.level.name.toLowerCase()}: ${entry.message}';
- var span = entry.span;
- var spanInfo = span == null
- ? ''
- : ' (${span.sourceUrl} ${span.start.line} ${span.start.column})';
- expect(messagesSeen, lessThan(messages.length),
- reason: 'more messages than expected.\nMessage seen: $msg$spanInfo');
- expect('$msg$spanInfo', messages[messagesSeen++]);
- });
- }
-
- void tearDown() {
- errorSubscription.cancel();
- resultSubscription.cancel();
- logSubscription.cancel();
- }
-
- /// Tells barback which files have changed, and thus anything that depends on
- /// it on should be computed. By default mark all the input files.
- void run([Iterable<String> paths]) {
- if (paths == null) paths = files.keys;
- barback.updateSources(paths.map(idFromString));
- }
-
- Future<String> operator [](String assetString) {
- return barback
- .getAssetById(idFromString(assetString))
- .then((asset) => asset.readAsString());
- }
-
- Future check(String assetIdString, String content) {
- return this[assetIdString].then((value) {
- value = formatter.formatString(value);
- content = formatter.formatString(content);
- expect(value, content, reason: 'Final output of $assetIdString differs.');
- });
- }
-
- Future checkAll(Map<String, String> files) {
- return barback.results.first.then((_) {
- if (files == null) return null;
- var futures = [];
- files.forEach((k, v) {
- futures.add(check(k, v));
- });
- return Future.wait(futures);
- }).then((_) {
- // We only check messages when an expectation is provided.
- if (messages == null) return;
- expect(
- messagesSeen, messages.length, reason: 'less messages than expected');
- });
- }
-}
-
-class StringFormatter {
- // Formatting options
- final bool stripLeadingWhitespace;
- final bool stripTrailingWhitespace;
- final bool stripNewlines;
-
- // Static variations for convenience
- static const noLeadingWhitespace =
- const StringFormatter(stripLeadingWhitespace: true);
-
- static const noTrailingWhitespace =
- const StringFormatter(stripTrailingWhitespace: true);
-
- static const noSurroundingWhitespace = const StringFormatter(
- stripLeadingWhitespace: true, stripTrailingWhitespace: true);
-
- static const noNewlines = const StringFormatter(stripNewlines: true);
-
- static const noNewlinesOrSurroundingWhitespace = const StringFormatter(
- stripLeadingWhitespace: true,
- stripTrailingWhitespace: true,
- stripNewlines: true);
-
- const StringFormatter({this.stripLeadingWhitespace: false,
- this.stripTrailingWhitespace: false, this.stripNewlines: false});
-
- String formatString(String str) {
- if (stripLeadingWhitespace) str = _removeLeadingWhitespace(str);
- if (stripTrailingWhitespace) str = _removeTrailingWhitespace(str);
- if (stripNewlines) str = _removeNewlines(str);
- return str;
- }
-}
-
-String _removeTrailingWhitespace(String str) => str.splitMapJoin('\n',
- onNonMatch: (s) => s.replaceAll(new RegExp(r'\s+$'), ''));
-
-String _removeLeadingWhitespace(String str) => str.splitMapJoin('\n',
- onNonMatch: (s) => s.replaceAll(new RegExp(r'^\s+'), ''));
-
-String _removeNewlines(String str) => str.replaceAll('\n', '');
« no previous file with comments | « packages/code_transformers/lib/src/resolvers.dart ('k') | packages/code_transformers/lib/tests.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698