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

Unified Diff: dart/tools/testing/dart/runtime_configuration.dart

Issue 179173003: Refactor compiler and runtime configurations (command line tools command building). (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge
Patch Set: Address comments, sorta. Created 6 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: dart/tools/testing/dart/runtime_configuration.dart
diff --git a/dart/tools/testing/dart/runtime_configuration.dart b/dart/tools/testing/dart/runtime_configuration.dart
index 383ad3f8786c335f7d3d95190e5a7851849b8145..fd30dd9931b165908781672498d332ab5ec5a407 100644
--- a/dart/tools/testing/dart/runtime_configuration.dart
+++ b/dart/tools/testing/dart/runtime_configuration.dart
@@ -2,7 +2,19 @@
// 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.
-library compiler_configuration;
+library runtime_configuration;
+
+import 'compiler_configuration.dart' show
+ CommandArtifact;
+
+// TODO(ahe): Remove this import, we can precompute all the values required
+// from TestSuite once the refactoring is complete.
+import 'test_suite.dart' show
+ TestSuite;
+
+import 'test_runner.dart' show
+ Command,
+ CommandBuilder;
// TODO(ahe): I expect this class will become abstract very soon.
class RuntimeConfiguration {
@@ -16,20 +28,31 @@ class RuntimeConfiguration {
case 'DartiumOnAndroid':
case 'chrome':
case 'chromeOnAndroid':
- case 'd8':
case 'dartium':
case 'ff':
case 'firefox':
case 'ie10':
case 'ie9':
- case 'jsshell':
- case 'none':
case 'opera':
case 'safari':
+ // TODO(ahe): Replace this with one or more browser runtimes.
+ return new DummyRuntimeConfiguration();
+
+ case 'jsshell':
+ return new JsshellRuntimeConfiguration();
+
+ case 'd8':
+ return new D8RuntimeConfiguration();
+
+ case 'none':
+ return new NoneRuntimeConfiguration();
+
case 'vm':
- return new RuntimeConfiguration._subclass();
+ return new StandaloneDartRuntimeConfiguration();
+
case 'drt':
return new DrtRuntimeConfiguration();
+
default:
throw "Unknown runtime '$runtime'";
}
@@ -41,6 +64,95 @@ class RuntimeConfiguration {
bool isDebug: false,
bool isChecked: false,
String arch}) {
+ return 1;
+ }
+
+ List<Command> computeRuntimeCommands(
+ TestSuite suite,
+ CommandBuilder commandBuilder,
+ CommandArtifact artifact,
+ List<String> arguments,
+ Map<String, String> environmentOverrides) {
+ // TODO(ahe): Make this method abstract.
+ throw "Unimplemented runtime '$runtimeType'";
+ }
+}
+
+/// The 'none' runtime configuration.
+class NoneRuntimeConfiguration extends RuntimeConfiguration {
+ NoneRuntimeConfiguration()
+ : super._subclass();
+
+ List<Command> computeRuntimeCommands(
+ TestSuite suite,
+ CommandBuilder commandBuilder,
+ CommandArtifact artifact,
+ List<String> arguments,
+ Map<String, String> environmentOverrides) {
+ return <Command>[];
+ }
+}
+
+class CommandLineJavaScriptRuntime extends RuntimeConfiguration {
+ final String moniker;
+
+ CommandLineJavaScriptRuntime(this.moniker)
+ : super._subclass();
+
+ void checkArtifact(CommandArtifact artifact) {
+ String type = artifact.mimeType;
+ if (type != 'application/javascript') {
+ throw "Runtime '$moniker' cannot run files of type '$type'.";
+ }
+ }
+}
+
+/// Chrome/V8-based development shell (d8).
+class D8RuntimeConfiguration extends CommandLineJavaScriptRuntime {
+ D8RuntimeConfiguration()
+ : super('d8');
+
+ List<Command> computeRuntimeCommands(
+ TestSuite suite,
+ CommandBuilder commandBuilder,
+ CommandArtifact artifact,
+ List<String> arguments,
+ Map<String, String> environmentOverrides) {
+ // TODO(ahe): Avoid duplication of this method between d8 and jsshell.
+ checkArtifact(artifact);
+ return <Command>[
+ commandBuilder.getJSCommandlineCommand(
+ moniker, suite.d8FileName, arguments, environmentOverrides)];
+ }
+}
+
+/// Firefox/SpiderMonkey-based development shell (jsshell).
+class JsshellRuntimeConfiguration extends CommandLineJavaScriptRuntime {
+ JsshellRuntimeConfiguration()
+ : super('jsshell');
+
+ List<Command> computeRuntimeCommands(
+ TestSuite suite,
+ CommandBuilder commandBuilder,
+ CommandArtifact artifact,
+ List<String> arguments,
+ Map<String, String> environmentOverrides) {
+ checkArtifact(artifact);
+ return <Command>[
+ commandBuilder.getJSCommandlineCommand(
+ moniker, suite.jsShellFileName, arguments, environmentOverrides)];
+ }
+}
+
+/// Common runtime configuration for runtimes based on the Dart VM.
+class DartVmRuntimeConfiguration extends RuntimeConfiguration {
+ DartVmRuntimeConfiguration()
+ : super._subclass();
+
+ int computeTimeoutMultiplier({
+ bool isDebug: false,
+ bool isChecked: false,
+ String arch}) {
int multiplier = 1;
switch (arch) {
case 'simarm':
@@ -57,16 +169,50 @@ class RuntimeConfiguration {
}
}
-class DrtRuntimeConfiguration extends RuntimeConfiguration {
- DrtRuntimeConfiguration()
- : super._subclass();
-
+/// Runtime configuration for Content Shell. We previously used a similar
+/// program named Dump Render Tree, hence the name.
+class DrtRuntimeConfiguration extends DartVmRuntimeConfiguration {
int computeTimeoutMultiplier({
bool isDebug: false,
bool isChecked: false,
String arch}) {
return 4 // Allow additional time for browser testing to run.
+ // TODO(ahe): We might need to distinquish between DRT for running
+ // JavaScript and Dart code. I'm not convinced the inherited timeout
+ // multiplier is relevant for JavaScript.
* super.computeTimeoutMultiplier(
isDebug: isDebug, isChecked: isChecked);
}
}
+
+/// The standalone Dart VM binary, "dart" or "dart.exe".
+class StandaloneDartRuntimeConfiguration extends DartVmRuntimeConfiguration {
+ List<Command> computeRuntimeCommands(
+ TestSuite suite,
+ CommandBuilder commandBuilder,
+ CommandArtifact artifact,
+ List<String> arguments,
+ Map<String, String> environmentOverrides) {
+ String script = artifact.filename;
+ String type = artifact.mimeType;
+ if (script != null && type != 'application/dart') {
+ throw "Dart VM cannot run files of type '$type'.";
+ }
+ return <Command>[commandBuilder.getVmCommand(
+ suite.dartVmBinaryFileName, arguments, environmentOverrides)];
+ }
+}
+
+/// Temporary runtime configuration for browser runtimes that haven't been
+/// migrated yet.
+// TODO(ahe): Remove this class.
+class DummyRuntimeConfiguration extends DartVmRuntimeConfiguration {
+ List<Command> computeRuntimeCommands(
+ TestSuite suite,
+ CommandBuilder commandBuilder,
+ CommandArtifact artifact,
+ List<String> arguments,
+ Map<String, String> environmentOverrides) {
+ throw "Unimplemented runtime '$runtimeType'";
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698