| Index: test/runner/browser/dartium_test.dart
|
| diff --git a/test/runner/browser/firefox_test.dart b/test/runner/browser/dartium_test.dart
|
| similarity index 56%
|
| copy from test/runner/browser/firefox_test.dart
|
| copy to test/runner/browser/dartium_test.dart
|
| index 6453f0dd53c470db1f0b20a94bbd0b6b8d5600d5..b83e42486b31c4f44f1b8624677faf315f0fc54e 100644
|
| --- a/test/runner/browser/firefox_test.dart
|
| +++ b/test/runner/browser/dartium_test.dart
|
| @@ -7,38 +7,39 @@
|
| import 'dart:async';
|
| import 'dart:io';
|
|
|
| -import 'package:test/test.dart';
|
| -import 'package:test/src/runner/browser/firefox.dart';
|
| -import 'package:test/src/util/io.dart';
|
| import 'package:shelf/shelf.dart' as shelf;
|
| import 'package:shelf/shelf_io.dart' as shelf_io;
|
| import 'package:shelf_web_socket/shelf_web_socket.dart';
|
| +import 'package:test/src/runner/browser/dartium.dart';
|
| +import 'package:test/src/util/io.dart';
|
| +import 'package:test/src/utils.dart';
|
| +import 'package:test/test.dart';
|
|
|
| void main() {
|
| - group("running JavaScript", () {
|
| - // The JavaScript to serve in the server. We use actual JavaScript here to
|
| - // avoid the pain of compiling to JS in a test
|
| - var javaScript;
|
| + group("running Dart", () {
|
| + // The Dart to serve in the server.
|
| + var dart;
|
|
|
| var servePage = (request) {
|
| - var path = request.url.path;
|
| -
|
| - // We support both shelf 0.5.x and 0.6.x. The former has a leading "/"
|
| - // here, the latter does not.
|
| - if (path.startsWith("/")) path = path.substring(1);
|
| + var path = shelfUrl(request).path;
|
|
|
| if (path.isEmpty) {
|
| return new shelf.Response.ok("""
|
| <!doctype html>
|
| <html>
|
| <head>
|
| - <script src="index.js"></script>
|
| + <script type="application/dart" src="index.dart"></script>
|
| </head>
|
| </html>
|
| """, headers: {'content-type': 'text/html'});
|
| - } else if (path == "index.js") {
|
| - return new shelf.Response.ok(javaScript,
|
| - headers: {'content-type': 'application/javascript'});
|
| + } else if (path == "index.dart") {
|
| + return new shelf.Response.ok('''
|
| +import "dart:html";
|
| +
|
| +void main() {
|
| + $dart
|
| +}
|
| +''', headers: {'content-type': 'application/dart'});
|
| } else {
|
| return new shelf.Response.notFound(null);
|
| }
|
| @@ -62,53 +63,52 @@ void main() {
|
| tearDown(() {
|
| if (server != null) server.close();
|
|
|
| - javaScript = null;
|
| + dart = null;
|
| server = null;
|
| webSockets = null;
|
| });
|
|
|
| - test("starts Firefox with the given URL", () {
|
| - javaScript = '''
|
| -var webSocket = new WebSocket(window.location.href.replace("http://", "ws://"));
|
| -webSocket.addEventListener("open", function() {
|
| - webSocket.send("loaded!");
|
| -});
|
| + test("starts Dartium with the given URL", () {
|
| + dart = '''
|
| +var webSocket = new WebSocket(
|
| + window.location.href.replaceFirst("http://", "ws://"));
|
| +webSocket.onOpen.first.then((_) => webSocket.send("loaded!"));
|
| ''';
|
| - var firefox = new Firefox(baseUrlForAddress(server.address, server.port));
|
| + var dartium = new Dartium(baseUrlForAddress(server.address, server.port));
|
|
|
| return webSockets.first.then((webSocket) {
|
| return webSocket.first.then(
|
| (message) => expect(message, equals("loaded!")));
|
| - }).whenComplete(firefox.close);
|
| + }).whenComplete(dartium.close);
|
| });
|
|
|
| test("doesn't preserve state across runs", () {
|
| - javaScript = '''
|
| -localStorage.setItem("data", "value");
|
| + dart = '''
|
| +window.localStorage["data"] = "value";
|
|
|
| -var webSocket = new WebSocket(window.location.href.replace("http://", "ws://"));
|
| -webSocket.addEventListener("open", function() {
|
| - webSocket.send("done");
|
| -});
|
| +var webSocket = new WebSocket(
|
| + window.location.href.replaceFirst("http://", "ws://"));
|
| +webSocket.onOpen.first.then((_) => webSocket.send("done"));
|
| ''';
|
| - var firefox = new Firefox(baseUrlForAddress(server.address, server.port));
|
| + var dartium = new Dartium(baseUrlForAddress(server.address, server.port));
|
|
|
| var first = true;
|
| webSockets.listen(expectAsync((webSocket) {
|
| if (first) {
|
| // The first request will set local storage data. We can't kill the
|
| - // old firefox and start a new one until we're sure that that has
|
| + // old Dartium and start a new one until we're sure that that has
|
| // finished.
|
| webSocket.first.then((_) {
|
| - firefox.close();
|
| + dartium.close();
|
|
|
| - javaScript = '''
|
| -var webSocket = new WebSocket(window.location.href.replace("http://", "ws://"));
|
| -webSocket.addEventListener("open", function() {
|
| - webSocket.send(localStorage.getItem("data"));
|
| -});
|
| + dart = '''
|
| +var webSocket = new WebSocket(
|
| + window.location.href.replaceFirst("http://", "ws://"));
|
| +webSocket.onOpen.first.then((_) =>
|
| + webSocket.send(window.localStorage["data"].toString()));
|
| ''';
|
| - firefox = new Firefox(baseUrlForAddress(server.address, server.port));
|
| + dartium = new Dartium(
|
| + baseUrlForAddress(server.address, server.port));
|
| first = false;
|
| });
|
| } else {
|
| @@ -117,7 +117,7 @@ webSocket.addEventListener("open", function() {
|
| expect(
|
| webSocket.first
|
| .then((message) => expect(message, equals('null')))
|
| - .whenComplete(firefox.close),
|
| + .whenComplete(dartium.close),
|
| completes);
|
| }
|
| }, count: 2));
|
| @@ -127,14 +127,14 @@ webSocket.addEventListener("open", function() {
|
| test("a process can be killed synchronously after it's started", () {
|
| return shelf_io.serve(expectAsync((_) {}, count: 0), 'localhost', 0)
|
| .then((server) {
|
| - var firefox = new Firefox(baseUrlForAddress(server.address, server.port));
|
| - return firefox.close().whenComplete(server.close);
|
| + var dartium = new Dartium(baseUrlForAddress(server.address, server.port));
|
| + return dartium.close().whenComplete(server.close);
|
| });
|
| });
|
|
|
| test("reports an error in onExit", () {
|
| - var firefox = new Firefox("http://dart-lang.org",
|
| + var dartium = new Dartium("http://dart-lang.org",
|
| executable: "_does_not_exist");
|
| - expect(firefox.onExit, throwsA(new isInstanceOf<ProcessException>()));
|
| + expect(dartium.onExit, throwsA(new isInstanceOf<ProcessException>()));
|
| });
|
| }
|
|
|