Permalink
Browse files

add basic qunit support

  • Loading branch information...
maccman committed Mar 14, 2011
1 parent 4c0bfcd commit af5804ba734842f2d9a8e1652a11dd4cf6851c59
Showing with 1,979 additions and 7 deletions.
  1. +2 −2 README.md
  2. +20 −0 examples/qunit/index.html
  3. +52 −0 examples/qunit/klass.js
  4. +205 −0 examples/qunit/lib/qunit.css
  5. +1,428 −0 examples/qunit/lib/qunit.js
  6. +206 −0 examples/qunit/model.js
  7. +45 −0 examples/qunit/model.test.js
  8. +21 −5 lib/js/qunit.js
View
@@ -5,7 +5,7 @@ Run JavaScript tests from the command line using a headless version of WebKit.
Features:
* [Jasmine](http://pivotal.github.com/jasmine) tests support
- <!-- * [QUnit](TODO) tests support -->
+ * [QUnit](http://docs.jquery.com/Qunit) tests support
* Use Ruby methods from JavaScript
## Prerequisites
@@ -27,7 +27,7 @@ Or, if you're using rvm:
ichabod http://example.com
ichabod --jasmine http://your-jasmine-test-page.html
-<!-- ichabod --qunit http://your-qunit-test-page.html -->
+ ichabod --qunit http://your-qunit-test-page.html
ichabod --jasmin ./local-qunit-path/index.html
xxxxxxxxxxxxxoxxxxxxxxxx
View
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>QUnit Test Suite</title>
+ <link rel="stylesheet" href="lib/qunit.css" type="text/css" media="screen">
+ <script type="text/javascript" src="lib/qunit.js"></script>
+
+ <script src="klass.js" type="text/javascript" charset="utf-8"></script>
+ <script src="model.js" type="text/javascript" charset="utf-8"></script>
+ <script src="model.test.js" type="text/javascript" charset="utf-8"></script>
+</head>
+<body>
+ <h1 id="qunit-header">QUnit Test Suite</h1>
+ <h2 id="qunit-banner"></h2>
+ <div id="qunit-testrunner-toolbar"></div>
+ <h2 id="qunit-userAgent"></h2>
+ <ol id="qunit-tests"></ol>
+ <div id="qunit-fixture">test markup</div>
+</body>
+</html>
View
@@ -0,0 +1,52 @@
+if (typeof Object.create !== "function")
+ Object.create = function(o) {
+ function F() {}
+ F.prototype = o;
+ return new F();
+ };
+
+var Klass = {
+ init: function(){},
+
+ prototype: {
+ init: function(){}
+ },
+
+ create: function(){
+ var object = Object.create(this);
+ object.parent = this;
+ object.init.apply(object, arguments);
+ return object;
+ },
+
+ inst: function(){
+ var instance = Object.create(this.prototype);
+ instance.parent = this;
+ instance.init.apply(instance, arguments);
+ return instance;
+ },
+
+ proxy: function(func){
+ var thisObject = this;
+ return(function(){
+ return func.apply(thisObject, arguments);
+ });
+ },
+
+ include: function(obj){
+ var included = obj.included || obj.setup;
+ for(var i in obj)
+ this.fn[i] = obj[i];
+ if (included) included(this);
+ },
+
+ extend: function(obj){
+ var extended = obj.extended || obj.setup;
+ for(var i in obj)
+ this[i] = obj[i];
+ if (extended) extended(this);
+ }
+};
+
+Klass.fn = Klass.prototype;
+Klass.fn.proxy = Klass.proxy;
@@ -0,0 +1,205 @@
+/** Font Family and Sizes */
+
+#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult {
+ font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial;
+}
+
+#qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; }
+#qunit-tests { font-size: smaller; }
+
+
+/** Resets */
+
+#qunit-tests, #qunit-tests ol, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult {
+ margin: 0;
+ padding: 0;
+}
+
+
+/** Header */
+
+#qunit-header {
+ padding: 0.5em 0 0.5em 1em;
+
+ color: #8699a4;
+ background-color: #0d3349;
+
+ font-size: 1.5em;
+ line-height: 1em;
+ font-weight: normal;
+
+ border-radius: 15px 15px 0 0;
+ -moz-border-radius: 15px 15px 0 0;
+ -webkit-border-top-right-radius: 15px;
+ -webkit-border-top-left-radius: 15px;
+}
+
+#qunit-header a {
+ text-decoration: none;
+ color: #c2ccd1;
+}
+
+#qunit-header a:hover,
+#qunit-header a:focus {
+ color: #fff;
+}
+
+#qunit-banner {
+ height: 5px;
+}
+
+#qunit-testrunner-toolbar {
+ padding: 0.5em 0 0.5em 2em;
+ color: #5E740B;
+ background-color: #eee;
+}
+
+#qunit-userAgent {
+ padding: 0.5em 0 0.5em 2.5em;
+ background-color: #2b81af;
+ color: #fff;
+ text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px;
+}
+
+
+/** Tests: Pass/Fail */
+
+#qunit-tests {
+ list-style-position: inside;
+}
+
+#qunit-tests li {
+ padding: 0.4em 0.5em 0.4em 2.5em;
+ border-bottom: 1px solid #fff;
+ list-style-position: inside;
+}
+
+#qunit-tests.hidepass li.pass, #qunit-tests.hidepass li.running {
+ display: none;
+}
+
+#qunit-tests li strong {
+ cursor: pointer;
+}
+
+#qunit-tests ol {
+ margin-top: 0.5em;
+ padding: 0.5em;
+
+ background-color: #fff;
+
+ border-radius: 15px;
+ -moz-border-radius: 15px;
+ -webkit-border-radius: 15px;
+
+ box-shadow: inset 0px 2px 13px #999;
+ -moz-box-shadow: inset 0px 2px 13px #999;
+ -webkit-box-shadow: inset 0px 2px 13px #999;
+}
+
+#qunit-tests table {
+ border-collapse: collapse;
+ margin-top: .2em;
+}
+
+#qunit-tests th {
+ text-align: right;
+ vertical-align: top;
+ padding: 0 .5em 0 0;
+}
+
+#qunit-tests td {
+ vertical-align: top;
+}
+
+#qunit-tests pre {
+ margin: 0;
+ white-space: pre-wrap;
+ word-wrap: break-word;
+}
+
+#qunit-tests del {
+ background-color: #e0f2be;
+ color: #374e0c;
+ text-decoration: none;
+}
+
+#qunit-tests ins {
+ background-color: #ffcaca;
+ color: #500;
+ text-decoration: none;
+}
+
+/*** Test Counts */
+
+#qunit-tests b.counts { color: black; }
+#qunit-tests b.passed { color: #5E740B; }
+#qunit-tests b.failed { color: #710909; }
+
+#qunit-tests li li {
+ margin: 0.5em;
+ padding: 0.4em 0.5em 0.4em 0.5em;
+ background-color: #fff;
+ border-bottom: none;
+ list-style-position: inside;
+}
+
+/*** Passing Styles */
+
+#qunit-tests li li.pass {
+ color: #5E740B;
+ background-color: #fff;
+ border-left: 26px solid #C6E746;
+}
+
+#qunit-tests .pass { color: #528CE0; background-color: #D2E0E6; }
+#qunit-tests .pass .test-name { color: #366097; }
+
+#qunit-tests .pass .test-actual,
+#qunit-tests .pass .test-expected { color: #999999; }
+
+#qunit-banner.qunit-pass { background-color: #C6E746; }
+
+/*** Failing Styles */
+
+#qunit-tests li li.fail {
+ color: #710909;
+ background-color: #fff;
+ border-left: 26px solid #EE5757;
+}
+
+#qunit-tests > li:last-child {
+ border-radius: 0 0 15px 15px;
+ -moz-border-radius: 0 0 15px 15px;
+ -webkit-border-bottom-right-radius: 15px;
+ -webkit-border-bottom-left-radius: 15px;
+}
+
+#qunit-tests .fail { color: #000000; background-color: #EE5757; }
+#qunit-tests .fail .test-name,
+#qunit-tests .fail .module-name { color: #000000; }
+
+#qunit-tests .fail .test-actual { color: #EE5757; }
+#qunit-tests .fail .test-expected { color: green; }
+
+#qunit-banner.qunit-fail { background-color: #EE5757; }
+
+
+/** Result */
+
+#qunit-testresult {
+ padding: 0.5em 0.5em 0.5em 2.5em;
+
+ color: #2b81af;
+ background-color: #D2E0E6;
+
+ border-bottom: 1px solid white;
+}
+
+/** Fixture */
+
+#qunit-fixture {
+ position: absolute;
+ top: -10000px;
+ left: -10000px;
+}
Oops, something went wrong.

0 comments on commit af5804b

Please sign in to comment.