summaryrefslogtreecommitdiffstats
path: root/chrome/test/base/js2gtest.js
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/test/base/js2gtest.js')
-rw-r--r--chrome/test/base/js2gtest.js81
1 files changed, 81 insertions, 0 deletions
diff --git a/chrome/test/base/js2gtest.js b/chrome/test/base/js2gtest.js
new file mode 100644
index 0000000..995a257
--- /dev/null
+++ b/chrome/test/base/js2gtest.js
@@ -0,0 +1,81 @@
+// Copyright (c) 2011 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.
+if (arguments.length < 4) {
+ print('usage: ' +
+ arguments[0] + ' path-to-testfile.js testfile.js output.cc test-type');
+ quit(-1);
+}
+var jsFile = arguments[1];
+var jsFileBase = arguments[2];
+var outputFile = arguments[3];
+var testType = arguments[4];
+
+// Generate the file to stdout.
+print('// GENERATED FILE');
+print('// ' + arguments.join(' '));
+print('// PLEASE DO NOT HAND EDIT!');
+print();
+
+var testF;
+
+if (testType === 'unit') {
+ print('#include "chrome/test/base/v8_unit_test.h"');
+ testing.Test.prototype.typedefCppFixture = 'V8UnitTest';
+ testF = 'TEST_F';
+} else {
+ print('#include "chrome/browser/ui/webui/web_ui_browsertest.h"');
+ testing.Test.prototype.typedefCppFixture = 'WebUIBrowserTest';
+ testF = 'IN_PROC_BROWSER_TEST_F';
+}
+print('#include "googleurl/src/gurl.h"');
+print('#include "testing/gtest/include/gtest/gtest.h"');
+print();
+
+function GEN(code) {
+ print(code);
+}
+
+var typedeffedCppFixtures = {};
+
+function TEST_F(testFixture, testFunction, testBody) {
+ var browsePreload = this[testFixture].prototype.browsePreload;
+ var browsePrintPreload = this[testFixture].prototype.browsePrintPreload;
+ var testGenPreamble = this[testFixture].prototype.testGenPreamble;
+ var testGenPostamble = this[testFixture].prototype.testGenPostamble;
+ var typedefCppFixture = this[testFixture].prototype.typedefCppFixture;
+ var isAsyncParam = testType === 'unit' ? '' :
+ this[testFixture].prototype.isAsync + ', ';
+ var testShouldFail = this[testFixture].prototype.testShouldFail;
+ var testPredicate = testShouldFail ? 'ASSERT_FALSE' : 'ASSERT_TRUE';
+
+ if (typedefCppFixture && !(testFixture in typedeffedCppFixtures)) {
+ print('typedef ' + typedefCppFixture + ' ' + testFixture + ';');
+ typedeffedCppFixtures[testFixture] = typedefCppFixture;
+ }
+
+ print(testF + '(' + testFixture + ', ' + testFunction + ') {');
+ if (testGenPreamble)
+ testGenPreamble(testFixture, testFunction);
+ print(' AddLibrary(FilePath(FILE_PATH_LITERAL("' +
+ jsFileBase.replace(/\\/g, '/') + '")));');
+ if (browsePreload) {
+ print(' BrowsePreload(GURL("' + browsePreload + '"), "' + testFixture +
+ '", "' + testFunction + '");');
+ }
+ if (browsePrintPreload) {
+ print(' BrowsePrintPreload(GURL(WebUITestDataPathToURL(\n' +
+ ' FILE_PATH_LITERAL("' + browsePrintPreload + '"))),\n' +
+ ' "' + testFixture + '", "' + testFunction + '");');
+ }
+ print(' ' + testPredicate + '(RunJavascriptTestF(' + isAsyncParam +
+ '"' + testFixture + '", ' +
+ '"' + testFunction + '"));');
+ if (testGenPostamble)
+ testGenPostamble(testFixture, testFunction);
+ print('}');
+ print();
+}
+
+var js = read(jsFile);
+eval(js);