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

Unified Diff: mojo/public/dart/third_party/test/test/runner/pub_serve_test.dart

Issue 1346773002: Stop running pub get at gclient sync time and fix build bugs (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 3 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
Index: mojo/public/dart/third_party/test/test/runner/pub_serve_test.dart
diff --git a/mojo/public/dart/third_party/test/test/runner/pub_serve_test.dart b/mojo/public/dart/third_party/test/test/runner/pub_serve_test.dart
new file mode 100644
index 0000000000000000000000000000000000000000..505c04b1fcbb9a158e99a64abfda5d12cd78c826
--- /dev/null
+++ b/mojo/public/dart/third_party/test/test/runner/pub_serve_test.dart
@@ -0,0 +1,297 @@
+// Copyright (c) 2015, 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.
+
+@TestOn("vm")
+
+import 'dart:async';
+import 'dart:io';
+
+import 'package:path/path.dart' as p;
+import 'package:scheduled_test/descriptor.dart' as d;
+import 'package:scheduled_test/scheduled_stream.dart';
+import 'package:scheduled_test/scheduled_test.dart';
+import 'package:test/src/util/exit_codes.dart' as exit_codes;
+
+import '../io.dart';
+
+/// The `--pub-serve` argument for the test process, based on [pubServePort].
+Future<String> get _pubServeArg =>
+ pubServePort.then((port) => '--pub-serve=$port');
+
+void main() {
+ useSandbox(() {
+ d.file("pubspec.yaml", """
+name: myapp
+dependencies:
+ barback: any
+ test: {path: ${p.current}}
+transformers:
+- myapp:
+ \$include: test/**_test.dart
+- test/pub_serve:
+ \$include: test/**_test.dart
+dependency_overrides:
+ matcher: '0.12.0-alpha.0'
+""").create();
+
+ d.dir("test", [
+ d.file("my_test.dart", """
+import 'package:test/test.dart';
+
+void main() {
+ test("test", () => expect(true, isTrue));
+}
+""")
+ ]).create();
+
+ d.dir("lib", [
+ d.file("myapp.dart", """
+import 'package:barback/barback.dart';
+
+class MyTransformer extends Transformer {
+ final allowedExtensions = '.dart';
+
+ MyTransformer.asPlugin();
+
+ Future apply(Transform transform) async {
+ var contents = await transform.primaryInput.readAsString();
+ transform.addOutput(new Asset.fromString(
+ transform.primaryInput.id,
+ contents.replaceAll("isFalse", "isTrue")));
+ }
+}
+""")
+ ]).create();
+
+ runPub(['get']).shouldExit(0);
+ });
+
+ group("with transformed tests", () {
+ setUp(() {
+ // Give the test a failing assertion that the transformer will convert to
+ // a passing assertion.
+ d.file("test/my_test.dart", """
+import 'package:test/test.dart';
+
+void main() {
+ test("test", () => expect(true, isFalse));
+}
+""").create();
+ });
+
+ test("runs those tests in the VM", () {
+ var pub = runPubServe();
+ var test = runTest([_pubServeArg]);
+ test.stdout.expect(consumeThrough(contains('+1: All tests passed!')));
+ test.shouldExit(0);
+ pub.kill();
+ });
+
+ test("runs those tests on Chrome", () {
+ var pub = runPubServe();
+ var test = runTest([_pubServeArg, '-p', 'chrome']);
+ test.stdout.expect(consumeThrough(contains('+1: All tests passed!')));
+ test.shouldExit(0);
+ pub.kill();
+ });
+
+ test("runs those tests on content shell", () {
+ var pub = runPubServe();
+ var test = runTest([_pubServeArg, '-p', 'content-shell']);
+ test.stdout.expect(consumeThrough(contains('+1: All tests passed!')));
+ test.shouldExit(0);
+ pub.kill();
+ });
+
+ test("gracefully handles pub serve running on the wrong directory for "
+ "VM tests", () {
+ d.dir("web").create();
+
+ var pub = runPubServe(args: ['web']);
+ var test = runTest([_pubServeArg]);
+ test.stdout.expect(containsInOrder([
+ '-1: loading ${p.join("test", "my_test.dart")}',
+ 'Failed to load "${p.join("test", "my_test.dart")}":',
+ '404 Not Found',
+ 'Make sure "pub serve" is serving the test/ directory.'
+ ]));
+ test.shouldExit(1);
+
+ pub.kill();
+ });
+
+ test("gracefully handles pub serve running on the wrong directory for "
+ "browser tests", () {
+ d.dir("web").create();
+
+ var pub = runPubServe(args: ['web']);
+ var test = runTest([_pubServeArg, '-p', 'chrome']);
+ test.stdout.expect(containsInOrder([
+ '-1: compiling ${p.join("test", "my_test.dart")}',
+ 'Failed to load "${p.join("test", "my_test.dart")}":',
+ '404 Not Found',
+ 'Make sure "pub serve" is serving the test/ directory.'
+ ]));
+ test.shouldExit(1);
+
+ pub.kill();
+ });
+
+ test("gracefully handles unconfigured transformers", () {
+ d.file("pubspec.yaml", """
+name: myapp
+dependencies:
+ barback: any
+ test: {path: ${p.current}}
+""").create();
+
+ var pub = runPubServe();
+ var test = runTest([_pubServeArg]);
+ expectStderrEquals(test, '''
+When using --pub-serve, you must include the "test/pub_serve" transformer in
+your pubspec:
+
+transformers:
+- test/pub_serve:
+ \$include: test/**_test.dart
+''');
+ test.shouldExit(exit_codes.data);
+
+ pub.kill();
+ });
+ });
+
+ group("uses a custom HTML file", () {
+ setUp(() {
+ d.dir("test", [
+ d.file("test.dart", """
+import 'dart:html';
+
+import 'package:test/test.dart';
+
+void main() {
+ test("failure", () {
+ expect(document.query('#foo'), isNull);
+ });
+}
+"""),
+
+ d.file("test.html", """
+<html>
+<head>
+ <link rel='x-dart-test' href='test.dart'>
+ <script src="packages/test/dart.js"></script>
+</head>
+<body>
+ <div id="foo"></div>
+</body>
+""")
+ ]).create();
+ });
+
+ test("on Chrome", () {
+ var pub = runPubServe();
+ var test = runTest([_pubServeArg, '-p', 'chrome']);
+ test.stdout.expect(consumeThrough(contains('+1: All tests passed!')));
+ test.shouldExit(0);
+ pub.kill();
+ });
+
+ test("on content shell", () {
+ var pub = runPubServe();
+ var test = runTest([_pubServeArg, '-p', 'content-shell']);
+ test.stdout.expect(consumeThrough(contains('+1: All tests passed!')));
+ test.shouldExit(0);
+ pub.kill();
+ });
+ });
+
+ group("with a failing test", () {
+ setUp(() {
+ d.file("test/my_test.dart", """
+import 'dart:html';
+
+import 'package:test/test.dart';
+
+void main() {
+ test("failure", () => throw 'oh no');
+}
+""").create();
+ });
+
+ test("dartifies stack traces for JS-compiled tests by default", () {
+ var pub = runPubServe();
+ var test = runTest([_pubServeArg, '-p', 'chrome', '--verbose-trace']);
+ test.stdout.expect(containsInOrder([
+ " main.<fn>",
+ "package:test",
+ "dart:async/zone.dart"
+ ]));
+ test.shouldExit(1);
+ pub.kill();
+ });
+
+ test("doesn't dartify stack traces for JS-compiled tests with --js-trace",
+ () {
+ var pub = runPubServe();
+ var test = runTest([
+ _pubServeArg,
+ '-p', 'chrome',
+ '--js-trace',
+ '--verbose-trace'
+ ]);
+
+ test.stdout.fork().expect(never(endsWith(" main.<fn>")));
+ test.stdout.fork().expect(never(contains("package:test")));
+ test.stdout.fork().expect(never(contains("dart:async/zone.dart")));
+ test.stdout.expect(consumeThrough(contains("-1: Some tests failed.")));
+ test.shouldExit(1);
+
+ pub.kill();
+ });
+ });
+
+ test("gracefully handles pub serve not running for VM tests", () {
+ var test = runTest(['--pub-serve=54321']);
+ test.stdout.expect(containsInOrder([
+ '-1: loading ${p.join("test", "my_test.dart")}',
+ 'Failed to load "${p.join("test", "my_test.dart")}":',
+ 'Error getting http://localhost:54321/my_test.dart.vm_test.dart: '
+ 'Connection refused',
+ 'Make sure "pub serve" is running.'
+ ]));
+ test.shouldExit(1);
+ });
+
+ test("gracefully handles pub serve not running for browser tests", () {
+ var test = runTest(['--pub-serve=54321', '-p', 'chrome']);
+ var message = Platform.isWindows
+ ? 'The remote computer refused the network connection.'
+ : 'Connection refused (errno ';
+
+ test.stdout.expect(containsInOrder([
+ '-1: compiling ${p.join("test", "my_test.dart")}',
+ 'Failed to load "${p.join("test", "my_test.dart")}":',
+ 'Error getting http://localhost:54321/my_test.dart.browser_test.dart.js'
+ '.map: $message',
+ 'Make sure "pub serve" is running.'
+ ]));
+ test.shouldExit(1);
+ });
+
+ test("gracefully handles a test file not being in test/", () {
+ schedule(() {
+ new File(p.join(sandbox, 'test/my_test.dart'))
+ .copySync(p.join(sandbox, 'my_test.dart'));
+ });
+
+ var test = runTest(['--pub-serve=54321', 'my_test.dart']);
+ test.stdout.expect(containsInOrder([
+ '-1: loading my_test.dart',
+ 'Failed to load "my_test.dart": When using "pub serve", all test files '
+ 'must be in test/.'
+ ]));
+ test.shouldExit(1);
+ });
+}

Powered by Google App Engine
This is Rietveld 408576698