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

Unified Diff: utils/testrunner/html_wrap_task.dart

Issue 10897016: Testrunner for 3rd parties. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years, 4 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
« no previous file with comments | « utils/testrunner/drt_task.dart ('k') | utils/testrunner/macros.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: utils/testrunner/html_wrap_task.dart
===================================================================
--- utils/testrunner/html_wrap_task.dart (revision 0)
+++ utils/testrunner/html_wrap_task.dart (revision 0)
@@ -0,0 +1,143 @@
+// Copyright (c) 2012, 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.
+
+/**
+ * A pipeline task to create a HTML/CSS wrapper for a test so it can run in DRT.
+ */
+class HtmlWrapTask extends PipelineTask {
+ final String _testFileTemplate;
+ final String _htmlSourceFileTemplate;
+ final String _htmlDestFileTemplate;
+ final String _cssSourceFileTemplate;
+ final String _cssDestFileTemplate;
+
+ HtmlWrapTask(testFileTemplate, htmlSourceFileTemplate,
+ htmlDestFileTemplate, cssSourceFileTemplate, cssDestFileTemplate) :
+ _testFileTemplate = testFileTemplate,
+ _htmlSourceFileTemplate = htmlSourceFileTemplate,
+ _htmlDestFileTemplate = htmlDestFileTemplate,
+ _cssSourceFileTemplate = cssSourceFileTemplate,
+ _cssDestFileTemplate = cssDestFileTemplate;
+
+ void execute(Path testfile, List stdout, List stderr, bool logging,
+ Function exitHandler) {
+ // If the test already has a corresponding HTML file we copy that,
+ // else we create a new wrapper.
+ var testname = expandMacros(_testFileTemplate, testfile);
+ var htmlSourceName = expandMacros(_htmlSourceFileTemplate, testfile);
+ var htmlDestName = expandMacros(_htmlDestFileTemplate, testfile);
+ var cssSourceName = expandMacros(_cssSourceFileTemplate, testfile);
+ var cssDestName = expandMacros(_cssDestFileTemplate, testfile);
+
+ var htmlMaster = new File(htmlSourceName);
+ if (htmlMaster.existsSync()) {
+ if (logging) {
+ stdout.add('Copying $htmlSourceName to $htmlDestName');
+ }
+ copyFile(htmlSourceName, htmlDestName);
+ } else {
+ if (logging) {
+ stdout.add('Creating wrapper $htmlDestName');
+ }
+ var p = new Path(testname);
+ var runtime = config.runtime;
+ StringBuffer sbuf = new StringBuffer();
+ sbuf.add("""
+<!DOCTYPE html>
+
+<html>
+<head>
+ <meta charset="utf-8">
+ <title>$testname</title>
+ <link rel="stylesheet" href="${p.filenameWithoutExtension}.css">
+ <script type='text/javascript'>
+function handleMessage(m) {
+ if (m.data == 'done') {
+ window.testRunner.notifyDone();
+ }
+}
+
+ if (window.testRunner) {
+ window.testRunner.waitUntilDone();
+ window.testRunner.dumpAsText();
+ window.addEventListener("message", handleMessage, false);
+ }
+""");
+ if (runtime == 'drt-dart') {
+ sbuf.add("if (navigator.webkitStartDart) navigator.webkitStartDart();");
+ }
+ sbuf.add("""
+ </script>
+</head>
+<body>
+ <h1>$testname</h1>
+ <div id="container"></div>
+ <pre id="console"></pre>
+ <script type='""");
+ var prefix = flattenPath(p.directoryPath.toString());
+ if (runtime == 'drt-dart') {
+ sbuf.add("application/dart' src='${prefix}_${p.filename}'>");
+ } else {
+ sbuf.add("text/javascript' "
+ "src='${prefix}_${p.filenameWithoutExtension}.js'>");
+ }
+ sbuf.add("""
+ </script>
+ <script
+src="http://dart.googlecode.com/svn/branches/bleeding_edge/dart/client/dart.js">
+ </script>
+</body>
+</html>
+""");
+ createFile(htmlDestName, sbuf.toString());
+ }
+ var cssMaster = new File(cssSourceName);
+ if (cssMaster.existsSync()) {
+ if (logging) {
+ stdout.add('Copying $cssSourceName to $cssDestName');
+ }
+ copyFile(cssSourceName, cssDestName);
+ } else {
+ if (logging) {
+ stdout.add('Creating $cssDestName');
+ }
+ createFile(cssDestName, """
+body {
+background-color: #F8F8F8;
+font-family: 'Open Sans', sans-serif;
+font-size: 14px;
+font-weight: normal;
+line-height: 1.2em;
+margin: 15px;
+}
+
+p {
+color: #333;
+}
+
+#container {
+width: 100%;
+height: 400px;
+position: relative;
+border: 1px solid #ccc;
+background-color: #fff;
+}
+
+#text {
+font-size: 24pt;
+text-align: center;
+margin-top: 140px;
+}
+
+""");
+ }
+ exitHandler(0);
+ }
+
+ void cleanup(Path testfile, List stdout, List stderr,
+ bool logging, bool keepFiles) {
+ deleteFiles([_htmlDestFileTemplate, _cssDestFileTemplate], testfile,
+ logging, keepFiles, stdout);
+ }
+}
« no previous file with comments | « utils/testrunner/drt_task.dart ('k') | utils/testrunner/macros.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698