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

Unified Diff: mojo/dart/apptest/apptest/apptest.dart

Issue 971083002: Create an apptesting framework for dart. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 5 years, 10 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/dart/apptest/apptest/apptest.dart
diff --git a/mojo/dart/apptest/apptest/apptest.dart b/mojo/dart/apptest/apptest/apptest.dart
new file mode 100644
index 0000000000000000000000000000000000000000..5171b4296d0bfe47e1f0ef56dd531c7f283d8b7e
--- /dev/null
+++ b/mojo/dart/apptest/apptest/apptest.dart
@@ -0,0 +1,63 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+library apptest;
+
+import 'dart:async';
+import 'mojo:application';
+import 'mojo:bindings';
+import 'mojo:core';
+
+// Import and reexport the unittest package. We are a *.dartzip file designed to
+// be linked into your_apptest.mojo file and are your main entrypoint.
+import 'package:unittest/unittest.dart';
+export 'package:unittest/unittest.dart';
+
+// This class is an application that does nothing but tears down the connections
+// between each test.
+class _ConnectionToShellApplication extends Application {
+ List<Function> testFunctions;
+
+ _ConnectionToShellApplication.fromHandle(MojoHandle handle,
+ this.testFunctions)
+ : super.fromHandle(handle);
+
+ // Only run the test suite passed in once we have received an initialize()
+ // call from the shell. We need to first have a valid connection to the shell
+ // so that apptests can connect to other applications.
+ void initialize(List<String> args, String url) {
+ for (var fun in testFunctions) {
+ fun(this);
+ }
+ }
+}
+
+// A configuration which properly shuts down our application at the end.
+class _CleanShutdownConfiguration extends SimpleConfiguration {
+ _ConnectionToShellApplication _application;
+
+ _CleanShutdownConfiguration(this._application) : super() {}
+
+ void onTestResult(TestCase externalTestCase) {
+ super.onTestResult(externalTestCase);
+ _application.resetConnections();
+ }
+
+ void onDone(bool success) {
+ _application.close();
+ super.onDone(success);
+ }
+}
+
+// The public interface to apptests.
+//
+// In a dart mojo application, |incoming_handle| is args[0]. |testFunction| is a
+// list of functions that actually contains your testing code, and will pass
+// back an application to each of them.
+runAppTests(var incoming_handle, List<Function> testFunction) {
+ MojoHandle appHandle = new MojoHandle(incoming_handle);
+ var application =
+ new _ConnectionToShellApplication.fromHandle(appHandle, testFunction);
+ unittestConfiguration = new _CleanShutdownConfiguration(application);
+}

Powered by Google App Engine
This is Rietveld 408576698