| OLD | NEW |
| (Empty) |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 library apptest; | |
| 6 | |
| 7 import 'dart:async'; | |
| 8 | |
| 9 import 'package:mojo/public/dart/application.dart'; | |
| 10 import 'package:mojo/public/dart/bindings.dart'; | |
| 11 import 'package:mojo/public/dart/core.dart'; | |
| 12 | |
| 13 // Import and reexport the unittest package. We are a *.dartzip file designed to | |
| 14 // be linked into your_apptest.mojo file and are your main entrypoint. | |
| 15 import 'package:unittest/unittest.dart'; | |
| 16 export 'package:unittest/unittest.dart'; | |
| 17 | |
| 18 // This class is an application that does nothing but tears down the connections | |
| 19 // between each test. | |
| 20 class _ConnectionToShellApplication extends Application { | |
| 21 final List<Function> _testFunctions; | |
| 22 | |
| 23 _ConnectionToShellApplication.fromHandle( | |
| 24 MojoHandle handle, this._testFunctions) | |
| 25 : super.fromHandle(handle); | |
| 26 | |
| 27 // Only run the test suite passed in once we have received an initialize() | |
| 28 // call from the shell. We need to first have a valid connection to the shell | |
| 29 // so that apptests can connect to other applications. | |
| 30 void initialize(List<String> args, String url) { | |
| 31 _testFunctions.forEach((f) => f(this, url)); | |
| 32 } | |
| 33 } | |
| 34 | |
| 35 // A configuration which properly shuts down our application at the end. | |
| 36 class _CleanShutdownConfiguration extends SimpleConfiguration { | |
| 37 final _ConnectionToShellApplication _application; | |
| 38 | |
| 39 _CleanShutdownConfiguration(this._application) : super() {} | |
| 40 | |
| 41 Duration timeout = const Duration(seconds: 10); | |
| 42 | |
| 43 void onTestResult(TestCase externalTestCase) { | |
| 44 super.onTestResult(externalTestCase); | |
| 45 _application.resetConnections(); | |
| 46 } | |
| 47 | |
| 48 void onDone(bool success) { | |
| 49 closeApplication(); | |
| 50 super.onDone(success); | |
| 51 } | |
| 52 | |
| 53 Future closeApplication() async { | |
| 54 await _application.close(); | |
| 55 assert(MojoHandle.reportLeakedHandles()); | |
| 56 } | |
| 57 } | |
| 58 | |
| 59 // The public interface to apptests. | |
| 60 // | |
| 61 // In a dart mojo application, |incoming_handle| is args[0]. |testFunction| is a | |
| 62 // list of functions that actually contains your testing code, and will pass | |
| 63 // back an application to each of them. | |
| 64 runAppTests(var incomingHandle, List<Function> testFunction) { | |
| 65 var appHandle = new MojoHandle(incomingHandle); | |
| 66 var application = | |
| 67 new _ConnectionToShellApplication.fromHandle(appHandle, testFunction); | |
| 68 unittestConfiguration = new _CleanShutdownConfiguration(application); | |
| 69 } | |
| OLD | NEW |