You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by mm...@apache.org on 2013/10/29 15:35:56 UTC
[26/26] git commit: Adds an oppinionated plugin testing method
Adds an oppinionated plugin testing method
Project: http://git-wip-us.apache.org/repos/asf/cordova-labs/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-labs/commit/6984ce60
Tree: http://git-wip-us.apache.org/repos/asf/cordova-labs/tree/6984ce60
Diff: http://git-wip-us.apache.org/repos/asf/cordova-labs/diff/6984ce60
Branch: refs/heads/cdvtest
Commit: 6984ce603dfcf1bccfbe4e5b8c22ba4b995355db
Parents: 7a089f4
Author: Michal Mocny <mm...@gmail.com>
Authored: Tue Oct 29 10:20:32 2013 -0400
Committer: Michal Mocny <mm...@gmail.com>
Committed: Tue Oct 29 10:31:09 2013 -0400
----------------------------------------------------------------------
cordova-app-test-harness/LICENSE | 191 +
cordova-app-test-harness/README.md | 0
.../www/assets/jasmine-2.0.0-rc3/boot.js | 105 +
.../assets/jasmine-2.0.0-rc3/jasmine-html.js | 356 ++
.../www/assets/jasmine-2.0.0-rc3/jasmine.css | 55 +
.../www/assets/jasmine-2.0.0-rc3/jasmine.js | 2391 +++++++++++
.../jasmine-2.0.0-rc3/jasmine_favicon.png | Bin 0 -> 905 bytes
.../www/assets/topcoat-0.7.5/.gitignore | 6 +
.../www/assets/topcoat-0.7.5/Gruntfile.js | 277 ++
.../www/assets/topcoat-0.7.5/LICENSE | 203 +
.../www/assets/topcoat-0.7.5/NOTICE | 193 +
.../www/assets/topcoat-0.7.5/README.md | 89 +
.../www/assets/topcoat-0.7.5/contributors.txt | 7 +
.../topcoat-0.7.5/css/topcoat-desktop-dark.css | 3450 ++++++++++++++++
.../css/topcoat-desktop-dark.min.css | 1 +
.../topcoat-0.7.5/css/topcoat-desktop-light.css | 3450 ++++++++++++++++
.../css/topcoat-desktop-light.min.css | 1 +
.../topcoat-0.7.5/css/topcoat-mobile-dark.css | 3700 ++++++++++++++++++
.../css/topcoat-mobile-dark.min.css | 1 +
.../topcoat-0.7.5/css/topcoat-mobile-light.css | 3700 ++++++++++++++++++
.../css/topcoat-mobile-light.min.css | 1 +
.../assets/topcoat-0.7.5/demo/css/brackets.css | 69 +
.../www/assets/topcoat-0.7.5/demo/css/main.css | 508 +++
.../www/assets/topcoat-0.7.5/demo/css/theme.css | 28 +
.../fonts/sourcecodepro-regular-webfont.eot | Bin 0 -> 23949 bytes
.../fonts/sourcecodepro-regular-webfont.svg | 242 ++
.../fonts/sourcecodepro-regular-webfont.ttf | Bin 0 -> 52660 bytes
.../fonts/sourcecodepro-regular-webfont.woff | Bin 0 -> 27068 bytes
.../demo/fonts/sourcesanspro-light-webfont.eot | Bin 0 -> 23716 bytes
.../demo/fonts/sourcesanspro-light-webfont.svg | 243 ++
.../demo/fonts/sourcesanspro-light-webfont.ttf | Bin 0 -> 51876 bytes
.../demo/fonts/sourcesanspro-light-webfont.woff | Bin 0 -> 26716 bytes
.../fonts/sourcesanspro-regular-webfont.eot | Bin 0 -> 23970 bytes
.../fonts/sourcesanspro-regular-webfont.svg | 243 ++
.../fonts/sourcesanspro-regular-webfont.ttf | Bin 0 -> 52456 bytes
.../fonts/sourcesanspro-regular-webfont.woff | Bin 0 -> 27076 bytes
.../fonts/sourcesanspro-semibold-webfont.eot | Bin 0 -> 23974 bytes
.../fonts/sourcesanspro-semibold-webfont.svg | 243 ++
.../fonts/sourcesanspro-semibold-webfont.ttf | Bin 0 -> 51960 bytes
.../fonts/sourcesanspro-semibold-webfont.woff | Bin 0 -> 27048 bytes
.../topcoat-0.7.5/demo/fonts/stylesheet.css | 57 +
.../www/assets/topcoat-0.7.5/demo/index.html | 3167 +++++++++++++++
.../www/assets/topcoat-0.7.5/demo/js/main.js | 44 +
.../topcoat-0.7.5/demo/js/rainbow-custom.min.js | 11 +
.../demo/js/rainbow.linenumbers.min.js | 2 +
.../demo/topcoat-desktop-light.html | 3167 +++++++++++++++
.../topcoat-0.7.5/demo/topcoat-mobile-dark.html | 3417 ++++++++++++++++
.../demo/topcoat-mobile-light.html | 3417 ++++++++++++++++
.../topcoat-0.7.5/dev/build/styleguide.css | 495 +++
.../topcoat-0.7.5/dev/build/styleguide.js | 10 +
.../topcoat-0.7.5/dev/tasks/checkchromiumsrc.js | 13 +
.../topcoat-0.7.5/dev/tasks/telemetrygentest.js | 98 +
.../topcoat-0.7.5/dev/tasks/telemetrysubmit.js | 101 +
.../dev/test/perf/telemetry/README.md | 79 +
.../dev/test/perf/telemetry/bin/runAll.py | 200 +
.../dev/test/perf/telemetry/bin/runAll.sh | 105 +
.../dev/test/perf/telemetry/lib/csvToJSON.js | 56 +
.../test/perf/telemetry/lib/extractFileName.js | 12 +
.../dev/test/perf/telemetry/lib/settings.js | 31 +
.../dev/test/perf/telemetry/lib/submitData.js | 61 +
.../page_sets/topcoat/topcoat_telemetry.jade | 17 +
.../www/assets/topcoat-0.7.5/font/LICENSE.txt | 93 +
.../topcoat-0.7.5/font/SourceCodePro-Black.otf | Bin 0 -> 88472 bytes
.../topcoat-0.7.5/font/SourceCodePro-Bold.otf | Bin 0 -> 92248 bytes
.../font/SourceCodePro-ExtraLight.otf | Bin 0 -> 84636 bytes
.../topcoat-0.7.5/font/SourceCodePro-Light.otf | Bin 0 -> 88152 bytes
.../font/SourceCodePro-Regular.otf | Bin 0 -> 89600 bytes
.../font/SourceCodePro-Semibold.otf | Bin 0 -> 89576 bytes
.../topcoat-0.7.5/font/SourceSansPro-Black.otf | Bin 0 -> 98472 bytes
.../font/SourceSansPro-BlackIt.otf | Bin 0 -> 96536 bytes
.../topcoat-0.7.5/font/SourceSansPro-Bold.otf | Bin 0 -> 104072 bytes
.../topcoat-0.7.5/font/SourceSansPro-BoldIt.otf | Bin 0 -> 101848 bytes
.../font/SourceSansPro-ExtraLight.otf | Bin 0 -> 94560 bytes
.../font/SourceSansPro-ExtraLightIt.otf | Bin 0 -> 92880 bytes
.../topcoat-0.7.5/font/SourceSansPro-It.otf | Bin 0 -> 100556 bytes
.../topcoat-0.7.5/font/SourceSansPro-Light.otf | Bin 0 -> 98972 bytes
.../font/SourceSansPro-LightIt.otf | Bin 0 -> 97352 bytes
.../font/SourceSansPro-Regular.otf | Bin 0 -> 101820 bytes
.../font/SourceSansPro-Semibold.otf | Bin 0 -> 101772 bytes
.../font/SourceSansPro-SemiboldIt.otf | Bin 0 -> 100000 bytes
.../www/assets/topcoat-0.7.5/img/avatar.png | Bin 0 -> 11926 bytes
.../www/assets/topcoat-0.7.5/img/bg_dark.png | Bin 0 -> 85839 bytes
.../www/assets/topcoat-0.7.5/img/breadcrumb.png | Bin 0 -> 202 bytes
.../topcoat-0.7.5/img/checkbox_checked.png | Bin 0 -> 1424 bytes
.../topcoat-0.7.5/img/checkbox_checked_dark.png | Bin 0 -> 1437 bytes
.../topcoat-0.7.5/img/checkbox_unchecked.png | Bin 0 -> 1216 bytes
.../img/checkbox_unchecked_dark.png | Bin 0 -> 1199 bytes
.../assets/topcoat-0.7.5/img/checkmark_bw.svg | 15 +
.../topcoat-0.7.5/img/dark-combo-box-bg.png | Bin 0 -> 1023 bytes
.../topcoat-0.7.5/img/dark-combo-box-bg2x.png | Bin 0 -> 1124 bytes
.../www/assets/topcoat-0.7.5/img/dark-grips.png | Bin 0 -> 220 bytes
.../assets/topcoat-0.7.5/img/dark-sprites2x.png | Bin 0 -> 5066 bytes
.../assets/topcoat-0.7.5/img/dialog-zone-bg.png | Bin 0 -> 600868 bytes
.../img/drop-down-triangle-dark.png | Bin 0 -> 1091 bytes
.../topcoat-0.7.5/img/drop-down-triangle.png | Bin 0 -> 2892 bytes
.../assets/topcoat-0.7.5/img/hamburger_bw.svg | 1912 +++++++++
.../assets/topcoat-0.7.5/img/hamburger_dark.svg | 1935 +++++++++
.../topcoat-0.7.5/img/hamburger_light.svg | 1936 +++++++++
.../topcoat-0.7.5/img/light-combo-box-bg.png | Bin 0 -> 1023 bytes
.../topcoat-0.7.5/img/light-combo-box-bg2x.png | Bin 0 -> 1124 bytes
.../assets/topcoat-0.7.5/img/light-grips.png | Bin 0 -> 248 bytes
.../topcoat-0.7.5/img/light-sprites2x.png | Bin 0 -> 5351 bytes
.../topcoat-0.7.5/img/pop-up-triangle-dark.png | Bin 0 -> 1153 bytes
.../topcoat-0.7.5/img/pop-up-triangle.png | Bin 0 -> 2958 bytes
.../www/assets/topcoat-0.7.5/img/search-bg.png | Bin 0 -> 1390 bytes
.../assets/topcoat-0.7.5/img/search-bg2x.png | Bin 0 -> 1800 bytes
.../www/assets/topcoat-0.7.5/img/search.svg | 11 +
.../www/assets/topcoat-0.7.5/img/search_bw.svg | 16 +
.../assets/topcoat-0.7.5/img/search_dark.svg | 16 +
.../assets/topcoat-0.7.5/img/search_light.svg | 11 +
.../www/assets/topcoat-0.7.5/img/spinner.png | Bin 0 -> 2707 bytes
.../www/assets/topcoat-0.7.5/img/spinner2x.png | Bin 0 -> 5201 bytes
.../www/assets/topcoat-0.7.5/package.json | 85 +
cordova-app-test-harness/www/config.xml | 15 +
cordova-app-test-harness/www/index.html | 19 +
cordova-app-test-harness/www/main.css | 17 +
cordova-app-test-harness/www/main.js | 148 +
cordova-plugin-test-framework/LICENSE | 191 +
cordova-plugin-test-framework/README.md | 0
cordova-plugin-test-framework/plugin.xml | 15 +
cordova-plugin-test-framework/www/test.js | 151 +
121 files changed, 40899 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-labs/blob/6984ce60/cordova-app-test-harness/LICENSE
----------------------------------------------------------------------
diff --git a/cordova-app-test-harness/LICENSE b/cordova-app-test-harness/LICENSE
new file mode 100644
index 0000000..37ec93a
--- /dev/null
+++ b/cordova-app-test-harness/LICENSE
@@ -0,0 +1,191 @@
+Apache License
+Version 2.0, January 2004
+http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+"License" shall mean the terms and conditions for use, reproduction, and
+distribution as defined by Sections 1 through 9 of this document.
+
+"Licensor" shall mean the copyright owner or entity authorized by the copyright
+owner that is granting the License.
+
+"Legal Entity" shall mean the union of the acting entity and all other entities
+that control, are controlled by, or are under common control with that entity.
+For the purposes of this definition, "control" means (i) the power, direct or
+indirect, to cause the direction or management of such entity, whether by
+contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the
+outstanding shares, or (iii) beneficial ownership of such entity.
+
+"You" (or "Your") shall mean an individual or Legal Entity exercising
+permissions granted by this License.
+
+"Source" form shall mean the preferred form for making modifications, including
+but not limited to software source code, documentation source, and configuration
+files.
+
+"Object" form shall mean any form resulting from mechanical transformation or
+translation of a Source form, including but not limited to compiled object code,
+generated documentation, and conversions to other media types.
+
+"Work" shall mean the work of authorship, whether in Source or Object form, made
+available under the License, as indicated by a copyright notice that is included
+in or attached to the work (an example is provided in the Appendix below).
+
+"Derivative Works" shall mean any work, whether in Source or Object form, that
+is based on (or derived from) the Work and for which the editorial revisions,
+annotations, elaborations, or other modifications represent, as a whole, an
+original work of authorship. For the purposes of this License, Derivative Works
+shall not include works that remain separable from, or merely link (or bind by
+name) to the interfaces of, the Work and Derivative Works thereof.
+
+"Contribution" shall mean any work of authorship, including the original version
+of the Work and any modifications or additions to that Work or Derivative Works
+thereof, that is intentionally submitted to Licensor for inclusion in the Work
+by the copyright owner or by an individual or Legal Entity authorized to submit
+on behalf of the copyright owner. For the purposes of this definition,
+"submitted" means any form of electronic, verbal, or written communication sent
+to the Licensor or its representatives, including but not limited to
+communication on electronic mailing lists, source code control systems, and
+issue tracking systems that are managed by, or on behalf of, the Licensor for
+the purpose of discussing and improving the Work, but excluding communication
+that is conspicuously marked or otherwise designated in writing by the copyright
+owner as "Not a Contribution."
+
+"Contributor" shall mean Licensor and any individual or Legal Entity on behalf
+of whom a Contribution has been received by Licensor and subsequently
+incorporated within the Work.
+
+2. Grant of Copyright License.
+
+Subject to the terms and conditions of this License, each Contributor hereby
+grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
+irrevocable copyright license to reproduce, prepare Derivative Works of,
+publicly display, publicly perform, sublicense, and distribute the Work and such
+Derivative Works in Source or Object form.
+
+3. Grant of Patent License.
+
+Subject to the terms and conditions of this License, each Contributor hereby
+grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
+irrevocable (except as stated in this section) patent license to make, have
+made, use, offer to sell, sell, import, and otherwise transfer the Work, where
+such license applies only to those patent claims licensable by such Contributor
+that are necessarily infringed by their Contribution(s) alone or by combination
+of their Contribution(s) with the Work to which such Contribution(s) was
+submitted. If You institute patent litigation against any entity (including a
+cross-claim or counterclaim in a lawsuit) alleging that the Work or a
+Contribution incorporated within the Work constitutes direct or contributory
+patent infringement, then any patent licenses granted to You under this License
+for that Work shall terminate as of the date such litigation is filed.
+
+4. Redistribution.
+
+You may reproduce and distribute copies of the Work or Derivative Works thereof
+in any medium, with or without modifications, and in Source or Object form,
+provided that You meet the following conditions:
+
+You must give any other recipients of the Work or Derivative Works a copy of
+this License; and
+You must cause any modified files to carry prominent notices stating that You
+changed the files; and
+You must retain, in the Source form of any Derivative Works that You distribute,
+all copyright, patent, trademark, and attribution notices from the Source form
+of the Work, excluding those notices that do not pertain to any part of the
+Derivative Works; and
+If the Work includes a "NOTICE" text file as part of its distribution, then any
+Derivative Works that You distribute must include a readable copy of the
+attribution notices contained within such NOTICE file, excluding those notices
+that do not pertain to any part of the Derivative Works, in at least one of the
+following places: within a NOTICE text file distributed as part of the
+Derivative Works; within the Source form or documentation, if provided along
+with the Derivative Works; or, within a display generated by the Derivative
+Works, if and wherever such third-party notices normally appear. The contents of
+the NOTICE file are for informational purposes only and do not modify the
+License. You may add Your own attribution notices within Derivative Works that
+You distribute, alongside or as an addendum to the NOTICE text from the Work,
+provided that such additional attribution notices cannot be construed as
+modifying the License.
+You may add Your own copyright statement to Your modifications and may provide
+additional or different license terms and conditions for use, reproduction, or
+distribution of Your modifications, or for any such Derivative Works as a whole,
+provided Your use, reproduction, and distribution of the Work otherwise complies
+with the conditions stated in this License.
+
+5. Submission of Contributions.
+
+Unless You explicitly state otherwise, any Contribution intentionally submitted
+for inclusion in the Work by You to the Licensor shall be under the terms and
+conditions of this License, without any additional terms or conditions.
+Notwithstanding the above, nothing herein shall supersede or modify the terms of
+any separate license agreement you may have executed with Licensor regarding
+such Contributions.
+
+6. Trademarks.
+
+This License does not grant permission to use the trade names, trademarks,
+service marks, or product names of the Licensor, except as required for
+reasonable and customary use in describing the origin of the Work and
+reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty.
+
+Unless required by applicable law or agreed to in writing, Licensor provides the
+Work (and each Contributor provides its Contributions) on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,
+including, without limitation, any warranties or conditions of TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are
+solely responsible for determining the appropriateness of using or
+redistributing the Work and assume any risks associated with Your exercise of
+permissions under this License.
+
+8. Limitation of Liability.
+
+In no event and under no legal theory, whether in tort (including negligence),
+contract, or otherwise, unless required by applicable law (such as deliberate
+and grossly negligent acts) or agreed to in writing, shall any Contributor be
+liable to You for damages, including any direct, indirect, special, incidental,
+or consequential damages of any character arising as a result of this License or
+out of the use or inability to use the Work (including but not limited to
+damages for loss of goodwill, work stoppage, computer failure or malfunction, or
+any and all other commercial damages or losses), even if such Contributor has
+been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability.
+
+While redistributing the Work or Derivative Works thereof, You may choose to
+offer, and charge a fee for, acceptance of support, warranty, indemnity, or
+other liability obligations and/or rights consistent with this License. However,
+in accepting such obligations, You may act only on Your own behalf and on Your
+sole responsibility, not on behalf of any other Contributor, and only if You
+agree to indemnify, defend, and hold each Contributor harmless for any liability
+incurred by, or claims asserted against, such Contributor by reason of your
+accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work
+
+To apply the Apache License to your work, attach the following boilerplate
+notice, with the fields enclosed by brackets "[]" replaced with your own
+identifying information. (Don't include the brackets!) The text should be
+enclosed in the appropriate comment syntax for the file format. We also
+recommend that a file or class name and description of purpose be included on
+the same "printed page" as the copyright notice for easier identification within
+third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
http://git-wip-us.apache.org/repos/asf/cordova-labs/blob/6984ce60/cordova-app-test-harness/README.md
----------------------------------------------------------------------
diff --git a/cordova-app-test-harness/README.md b/cordova-app-test-harness/README.md
new file mode 100644
index 0000000..e69de29
http://git-wip-us.apache.org/repos/asf/cordova-labs/blob/6984ce60/cordova-app-test-harness/www/assets/jasmine-2.0.0-rc3/boot.js
----------------------------------------------------------------------
diff --git a/cordova-app-test-harness/www/assets/jasmine-2.0.0-rc3/boot.js b/cordova-app-test-harness/www/assets/jasmine-2.0.0-rc3/boot.js
new file mode 100644
index 0000000..0839157
--- /dev/null
+++ b/cordova-app-test-harness/www/assets/jasmine-2.0.0-rc3/boot.js
@@ -0,0 +1,105 @@
+// Jasmine boot.js for browser runners - exposes external/global interface, builds the Jasmine environment and executes it.
+(function() {
+ window.jasmine = jasmineRequire.core(jasmineRequire);
+ jasmineRequire.html(jasmine);
+
+ var env = jasmine.getEnv();
+
+ var jasmineInterface = {
+ describe: function(description, specDefinitions) {
+ return env.describe(description, specDefinitions);
+ },
+
+ xdescribe: function(description, specDefinitions) {
+ return env.xdescribe(description, specDefinitions);
+ },
+
+ it: function(desc, func) {
+ return env.it(desc, func);
+ },
+
+ xit: function(desc, func) {
+ return env.xit(desc, func);
+ },
+
+ beforeEach: function(beforeEachFunction) {
+ return env.beforeEach(beforeEachFunction);
+ },
+
+ afterEach: function(afterEachFunction) {
+ return env.afterEach(afterEachFunction);
+ },
+
+ expect: function(actual) {
+ return env.expect(actual);
+ },
+
+ pending: function() {
+ return env.pending();
+ },
+
+ addMatchers: function(matchers) {
+ return env.addMatchers(matchers);
+ },
+
+ spyOn: function(obj, methodName) {
+ return env.spyOn(obj, methodName);
+ },
+
+ clock: env.clock,
+ jsApiReporter: new jasmine.JsApiReporter({
+ timer: new jasmine.Timer()
+ })
+ };
+
+ if (typeof window == "undefined" && typeof exports == "object") {
+ extend(exports, jasmineInterface);
+ } else {
+ extend(window, jasmineInterface);
+ }
+
+ var queryString = new jasmine.QueryString({
+ getWindowLocation: function() { return window.location; }
+ });
+
+ // TODO: move all of catching to raise so we don't break our brains
+ var catchingExceptions = queryString.getParam("catch");
+ env.catchExceptions(typeof catchingExceptions === "undefined" ? true : catchingExceptions);
+
+ var htmlReporter = new jasmine.HtmlReporter({
+ env: env,
+ queryString: queryString,
+ onRaiseExceptionsClick: function() { queryString.setParam("catch", !env.catchingExceptions()); },
+ getContainer: function() { return document.body; },
+ createElement: function() { return document.createElement.apply(document, arguments); },
+ createTextNode: function() { return document.createTextNode.apply(document, arguments); },
+ timer: new jasmine.Timer()
+ });
+
+ env.addReporter(jasmineInterface.jsApiReporter);
+ env.addReporter(htmlReporter);
+
+ var specFilter = new jasmine.HtmlSpecFilter({
+ filterString: function() { return queryString.getParam("spec"); }
+ });
+
+ env.specFilter = function(spec) {
+ return specFilter.matches(spec.getFullName());
+ };
+
+ var currentWindowOnload = window.onload;
+
+ window.onload = function() {
+ if (currentWindowOnload) {
+ currentWindowOnload();
+ }
+ htmlReporter.initialize();
+ env.execute();
+ };
+
+ function extend(destination, source) {
+ for (var property in source) destination[property] = source[property];
+ return destination;
+ }
+
+}());
http://git-wip-us.apache.org/repos/asf/cordova-labs/blob/6984ce60/cordova-app-test-harness/www/assets/jasmine-2.0.0-rc3/jasmine-html.js
----------------------------------------------------------------------
diff --git a/cordova-app-test-harness/www/assets/jasmine-2.0.0-rc3/jasmine-html.js b/cordova-app-test-harness/www/assets/jasmine-2.0.0-rc3/jasmine-html.js
new file mode 100644
index 0000000..4a5849b
--- /dev/null
+++ b/cordova-app-test-harness/www/assets/jasmine-2.0.0-rc3/jasmine-html.js
@@ -0,0 +1,356 @@
+/*
+Copyright (c) 2008-2013 Pivotal Labs
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+jasmineRequire.html = function(j$) {
+ j$.ResultsNode = jasmineRequire.ResultsNode();
+ j$.HtmlReporter = jasmineRequire.HtmlReporter(j$);
+ j$.QueryString = jasmineRequire.QueryString();
+ j$.HtmlSpecFilter = jasmineRequire.HtmlSpecFilter();
+};
+jasmineRequire.HtmlReporter = function(j$) {
+
+ var noopTimer = {
+ start: function(){},
+ elapsed: function(){ return 0; }
+ };
+
+ function HtmlReporter(options) {
+ var env = options.env || {},
+ getContainer = options.getContainer,
+ createElement = options.createElement,
+ createTextNode = options.createTextNode,
+ onRaiseExceptionsClick = options.onRaiseExceptionsClick || function() {},
+ timer = options.timer || noopTimer,
+ results = [],
+ specsExecuted = 0,
+ failureCount = 0,
+ pendingSpecCount = 0,
+ htmlReporterMain,
+ symbols;
+
+ this.initialize = function() {
+ htmlReporterMain = createDom("div", {className: "html-reporter"},
+ createDom("div", {className: "banner"},
+ createDom("span", {className: "title"}, "Jasmine"),
+ createDom("span", {className: "version"}, j$.version)
+ ),
+ createDom("ul", {className: "symbol-summary"}),
+ createDom("div", {className: "alert"}),
+ createDom("div", {className: "results"},
+ createDom("div", {className: "failures"})
+ )
+ );
+ getContainer().appendChild(htmlReporterMain);
+
+ symbols = find(".symbol-summary");
+ };
+
+ var totalSpecsDefined;
+ this.jasmineStarted = function(options) {
+ totalSpecsDefined = options.totalSpecsDefined || 0;
+ timer.start();
+ };
+
+ var summary = createDom("div", {className: "summary"});
+
+ var topResults = new j$.ResultsNode({}, "", null),
+ currentParent = topResults;
+
+ this.suiteStarted = function(result) {
+ currentParent.addChild(result, "suite");
+ currentParent = currentParent.last();
+ };
+
+ this.suiteDone = function(result) {
+ if (currentParent == topResults) {
+ return;
+ }
+
+ currentParent = currentParent.parent;
+ };
+
+ this.specStarted = function(result) {
+ currentParent.addChild(result, "spec");
+ };
+
+ var failures = [];
+ this.specDone = function(result) {
+ if (result.status != "disabled") {
+ specsExecuted++;
+ }
+
+ symbols.appendChild(createDom("li", {
+ className: result.status,
+ id: "spec_" + result.id,
+ title: result.fullName}
+ ));
+
+ if (result.status == "failed") {
+ failureCount++;
+
+ var failure =
+ createDom("div", {className: "spec-detail failed"},
+ createDom("div", {className: "description"},
+ createDom("a", {title: result.fullName, href: specHref(result)}, result.fullName)
+ ),
+ createDom("div", {className: "messages"})
+ );
+ var messages = failure.childNodes[1];
+
+ for (var i = 0; i < result.failedExpectations.length; i++) {
+ var expectation = result.failedExpectations[i];
+ messages.appendChild(createDom("div", {className: "result-message"}, expectation.message));
+ messages.appendChild(createDom("div", {className: "stack-trace"}, expectation.stack));
+ }
+
+ failures.push(failure);
+ }
+
+ if (result.status == "pending") {
+ pendingSpecCount++;
+ }
+ };
+
+ this.jasmineDone = function() {
+ var banner = find(".banner");
+ banner.appendChild(createDom("span", {className: "duration"}, "finished in " + timer.elapsed() / 1000 + "s"));
+
+ var alert = find(".alert");
+
+ alert.appendChild(createDom("span", { className: "exceptions" },
+ createDom("label", { className: "label", 'for': "raise-exceptions" }, "raise exceptions"),
+ createDom("input", {
+ className: "raise",
+ id: "raise-exceptions",
+ type: "checkbox"
+ })
+ ));
+ var checkbox = find("input");
+
+ checkbox.checked = !env.catchingExceptions();
+ checkbox.onclick = onRaiseExceptionsClick;
+
+ if (specsExecuted < totalSpecsDefined) {
+ var skippedMessage = "Ran " + specsExecuted + " of " + totalSpecsDefined + " specs - run all";
+ alert.appendChild(
+ createDom("span", {className: "bar skipped"},
+ createDom("a", {href: "?", title: "Run all specs"}, skippedMessage)
+ )
+ );
+ }
+ var statusBarMessage = "" + pluralize("spec", specsExecuted) + ", " + pluralize("failure", failureCount);
+ if (pendingSpecCount) { statusBarMessage += ", " + pluralize("pending spec", pendingSpecCount); }
+
+ var statusBarClassName = "bar " + ((failureCount > 0) ? "failed" : "passed");
+ alert.appendChild(createDom("span", {className: statusBarClassName}, statusBarMessage));
+
+ var results = find(".results");
+ results.appendChild(summary);
+
+ summaryList(topResults, summary);
+
+ function summaryList(resultsTree, domParent) {
+ var specListNode;
+ for (var i = 0; i < resultsTree.children.length; i++) {
+ var resultNode = resultsTree.children[i];
+ if (resultNode.type == "suite") {
+ var suiteListNode = createDom("ul", {className: "suite", id: "suite-" + resultNode.result.id},
+ createDom("li", {className: "suite-detail"},
+ createDom("a", {href: specHref(resultNode.result)}, resultNode.result.description)
+ )
+ );
+
+ summaryList(resultNode, suiteListNode);
+ domParent.appendChild(suiteListNode);
+ }
+ if (resultNode.type == "spec") {
+ if (domParent.getAttribute("class") != "specs") {
+ specListNode = createDom("ul", {className: "specs"});
+ domParent.appendChild(specListNode);
+ }
+ specListNode.appendChild(
+ createDom("li", {
+ className: resultNode.result.status,
+ id: "spec-" + resultNode.result.id
+ },
+ createDom("a", {href: specHref(resultNode.result)}, resultNode.result.description)
+ )
+ );
+ }
+ }
+ }
+
+ if (failures.length) {
+ alert.appendChild(
+ createDom('span', {className: "menu bar spec-list"},
+ createDom("span", {}, "Spec List | "),
+ createDom('a', {className: "failures-menu", href: "#"}, "Failures")));
+ alert.appendChild(
+ createDom('span', {className: "menu bar failure-list"},
+ createDom('a', {className: "spec-list-menu", href: "#"}, "Spec List"),
+ createDom("span", {}, " | Failures ")));
+
+ find(".failures-menu").onclick = function() {
+ setMenuModeTo('failure-list');
+ };
+ find(".spec-list-menu").onclick = function() {
+ setMenuModeTo('spec-list');
+ };
+
+ setMenuModeTo('failure-list');
+
+ var failureNode = find(".failures");
+ for (var i = 0; i < failures.length; i++) {
+ failureNode.appendChild(failures[i]);
+ }
+ }
+ };
+
+ return this;
+
+ function find(selector) {
+ return getContainer().querySelector(selector);
+ }
+
+ function createDom(type, attrs, childrenVarArgs) {
+ var el = createElement(type);
+
+ for (var i = 2; i < arguments.length; i++) {
+ var child = arguments[i];
+
+ if (typeof child === 'string') {
+ el.appendChild(createTextNode(child));
+ } else {
+ if (child) {
+ el.appendChild(child);
+ }
+ }
+ }
+
+ for (var attr in attrs) {
+ if (attr == "className") {
+ el[attr] = attrs[attr];
+ } else {
+ el.setAttribute(attr, attrs[attr]);
+ }
+ }
+
+ return el;
+ }
+
+ function pluralize(singular, count) {
+ var word = (count == 1 ? singular : singular + "s");
+
+ return "" + count + " " + word;
+ }
+
+ function specHref(result) {
+ return "?spec=" + encodeURIComponent(result.fullName);
+ }
+
+ function setMenuModeTo(mode) {
+ htmlReporterMain.setAttribute("class", "html-reporter " + mode);
+ }
+ }
+
+ return HtmlReporter;
+};
+
+jasmineRequire.HtmlSpecFilter = function() {
+ function HtmlSpecFilter(options) {
+ var filterString = options && options.filterString() && options.filterString().replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
+ var filterPattern = new RegExp(filterString);
+
+ this.matches = function(specName) {
+ return filterPattern.test(specName);
+ };
+ }
+
+ return HtmlSpecFilter;
+};
+
+jasmineRequire.ResultsNode = function() {
+ function ResultsNode(result, type, parent) {
+ this.result = result;
+ this.type = type;
+ this.parent = parent;
+
+ this.children = [];
+
+ this.addChild = function(result, type) {
+ this.children.push(new ResultsNode(result, type, this));
+ };
+
+ this.last = function() {
+ return this.children[this.children.length - 1];
+ };
+ }
+
+ return ResultsNode;
+};
+jasmineRequire.QueryString = function() {
+ function QueryString(options) {
+
+ this.setParam = function(key, value) {
+ var paramMap = queryStringToParamMap();
+ paramMap[key] = value;
+ options.getWindowLocation().search = toQueryString(paramMap);
+ };
+
+ this.getParam = function(key) {
+ return queryStringToParamMap()[key];
+ };
+
+ return this;
+
+ function toQueryString(paramMap) {
+ var qStrPairs = [];
+ for (var prop in paramMap) {
+ qStrPairs.push(encodeURIComponent(prop) + "=" + encodeURIComponent(paramMap[prop]));
+ }
+ return "?" + qStrPairs.join('&');
+ }
+
+ function queryStringToParamMap() {
+ var paramStr = options.getWindowLocation().search.substring(1),
+ params = [],
+ paramMap = {};
+
+ if (paramStr.length > 0) {
+ params = paramStr.split('&');
+ for (var i = 0; i < params.length; i++) {
+ var p = params[i].split('=');
+ var value = decodeURIComponent(p[1]);
+ if (value === "true" || value === "false") {
+ value = JSON.parse(value);
+ }
+ paramMap[decodeURIComponent(p[0])] = value;
+ }
+ }
+
+ return paramMap;
+ }
+
+ }
+
+ return QueryString;
+};
http://git-wip-us.apache.org/repos/asf/cordova-labs/blob/6984ce60/cordova-app-test-harness/www/assets/jasmine-2.0.0-rc3/jasmine.css
----------------------------------------------------------------------
diff --git a/cordova-app-test-harness/www/assets/jasmine-2.0.0-rc3/jasmine.css b/cordova-app-test-harness/www/assets/jasmine-2.0.0-rc3/jasmine.css
new file mode 100644
index 0000000..f4d35b6
--- /dev/null
+++ b/cordova-app-test-harness/www/assets/jasmine-2.0.0-rc3/jasmine.css
@@ -0,0 +1,55 @@
+body { background-color: #eeeeee; padding: 0; margin: 5px; overflow-y: scroll; }
+
+.html-reporter { font-size: 11px; font-family: Monaco, "Lucida Console", monospace; line-height: 14px; color: #333333; }
+.html-reporter a { text-decoration: none; }
+.html-reporter a:hover { text-decoration: underline; }
+.html-reporter p, .html-reporter h1, .html-reporter h2, .html-reporter h3, .html-reporter h4, .html-reporter h5, .html-reporter h6 { margin: 0; line-height: 14px; }
+.html-reporter .banner, .html-reporter .symbol-summary, .html-reporter .summary, .html-reporter .result-message, .html-reporter .spec .description, .html-reporter .spec-detail .description, .html-reporter .alert .bar, .html-reporter .stack-trace { padding-left: 9px; padding-right: 9px; }
+.html-reporter .banner .version { margin-left: 14px; }
+.html-reporter #jasmine_content { position: fixed; right: 100%; }
+.html-reporter .version { color: #aaaaaa; }
+.html-reporter .banner { margin-top: 14px; }
+.html-reporter .duration { color: #aaaaaa; float: right; }
+.html-reporter .symbol-summary { overflow: hidden; *zoom: 1; margin: 14px 0; }
+.html-reporter .symbol-summary li { display: inline-block; height: 8px; width: 14px; font-size: 16px; }
+.html-reporter .symbol-summary li.passed { font-size: 14px; }
+.html-reporter .symbol-summary li.passed:before { color: #5e7d00; content: "\02022"; }
+.html-reporter .symbol-summary li.failed { line-height: 9px; }
+.html-reporter .symbol-summary li.failed:before { color: #b03911; content: "x"; font-weight: bold; margin-left: -1px; }
+.html-reporter .symbol-summary li.disabled { font-size: 14px; }
+.html-reporter .symbol-summary li.disabled:before { color: #bababa; content: "\02022"; }
+.html-reporter .symbol-summary li.pending { line-height: 17px; }
+.html-reporter .symbol-summary li.pending:before { color: #ba9d37; content: "*"; }
+.html-reporter .exceptions { color: #fff; float: right; margin-top: 5px; margin-right: 5px; }
+.html-reporter .bar { line-height: 28px; font-size: 14px; display: block; color: #eee; }
+.html-reporter .bar.failed { background-color: #b03911; }
+.html-reporter .bar.passed { background-color: #a6b779; }
+.html-reporter .bar.skipped { background-color: #bababa; }
+.html-reporter .bar.menu { background-color: #fff; color: #aaaaaa; }
+.html-reporter .bar.menu a { color: #333333; }
+.html-reporter .bar a { color: white; }
+.html-reporter.spec-list .bar.menu.failure-list, .html-reporter.spec-list .results .failures { display: none; }
+.html-reporter.failure-list .bar.menu.spec-list, .html-reporter.failure-list .summary { display: none; }
+.html-reporter .running-alert { background-color: #666666; }
+.html-reporter .results { margin-top: 14px; }
+.html-reporter.showDetails .summaryMenuItem { font-weight: normal; text-decoration: inherit; }
+.html-reporter.showDetails .summaryMenuItem:hover { text-decoration: underline; }
+.html-reporter.showDetails .detailsMenuItem { font-weight: bold; text-decoration: underline; }
+.html-reporter.showDetails .summary { display: none; }
+.html-reporter.showDetails #details { display: block; }
+.html-reporter .summaryMenuItem { font-weight: bold; text-decoration: underline; }
+.html-reporter .summary { margin-top: 14px; }
+.html-reporter .summary ul { list-style-type: none; margin-left: 14px; padding-top: 0; padding-left: 0; }
+.html-reporter .summary ul.suite { margin-top: 7px; margin-bottom: 7px; }
+.html-reporter .summary li.passed a { color: #5e7d00; }
+.html-reporter .summary li.failed a { color: #b03911; }
+.html-reporter .summary li.pending a { color: #ba9d37; }
+.html-reporter .description + .suite { margin-top: 0; }
+.html-reporter .suite { margin-top: 14px; }
+.html-reporter .suite a { color: #333333; }
+.html-reporter .failures .spec-detail { margin-bottom: 28px; }
+.html-reporter .failures .spec-detail .description { background-color: #b03911; }
+.html-reporter .failures .spec-detail .description a { color: white; }
+.html-reporter .result-message { padding-top: 14px; color: #333333; white-space: pre; }
+.html-reporter .result-message span.result { display: block; }
+.html-reporter .stack-trace { margin: 5px 0 0 0; max-height: 224px; overflow: auto; line-height: 18px; color: #666666; border: 1px solid #ddd; background: white; white-space: pre; }