envjs 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README +113 -0
- data/bin/envjsrb +239 -0
- data/bin/jquery-1.2.6-test.js +33 -0
- data/bin/jquery-1.3.1-test.js +33 -0
- data/bin/jquery-1.3.2-test.js +106 -0
- data/bin/prototype-1.6.0.3-test.js +82 -0
- data/bin/prototype_1.6.0.3_tmpl.txt +27 -0
- data/bin/test-jquery.sh +58 -0
- data/bin/test-prototype.sh +54 -0
- data/bin/tidy +0 -0
- data/lib/envjs/env.js +21549 -0
- data/lib/envjs/net/cgi.rb +94 -0
- data/lib/envjs/net/file.rb +75 -0
- data/lib/envjs/net.rb +3 -0
- data/lib/envjs/options.rb +11 -0
- data/lib/envjs/runtime.rb +280 -0
- data/lib/envjs/tempfile.rb +24 -0
- data/lib/envjs.rb +23 -0
- data/test/call-load-test.js +15 -0
- data/test/debug.js +53 -0
- data/test/firebug/errorIcon.png +0 -0
- data/test/firebug/firebug.css +209 -0
- data/test/firebug/firebug.html +23 -0
- data/test/firebug/firebug.js +672 -0
- data/test/firebug/firebugx.js +10 -0
- data/test/firebug/infoIcon.png +0 -0
- data/test/firebug/warningIcon.png +0 -0
- data/test/fixtures/html/events.html +171 -0
- data/test/fixtures/html/iframe1.html +46 -0
- data/test/fixtures/html/iframe1a.html +46 -0
- data/test/fixtures/html/iframe2.html +45 -0
- data/test/fixtures/html/iframe3.html +28 -0
- data/test/fixtures/html/iframeN.html +57 -0
- data/test/fixtures/html/malformed.html +181 -0
- data/test/fixtures/html/scope.html +81 -0
- data/test/fixtures/html/trivial.html +19 -0
- data/test/fixtures/html/with_js.html +26 -0
- data/test/fixtures/images/icon-blue.png +0 -0
- data/test/fixtures/js/external_script.js +1 -0
- data/test/fixtures/js/script.js +1 -0
- data/test/fixtures/js/script_error.js +2 -0
- data/test/html/events.html +171 -0
- data/test/html/iframe1.html +46 -0
- data/test/html/iframe1a.html +46 -0
- data/test/html/iframe2.html +45 -0
- data/test/html/iframe3.html +30 -0
- data/test/html/iframeN.html +57 -0
- data/test/html/malformed.html +181 -0
- data/test/html/scope.html +87 -0
- data/test/html/script.js +1 -0
- data/test/html/trivial.html +19 -0
- data/test/html/with_js.html +26 -0
- data/test/index.html +328 -0
- data/test/java-prototype.js +9 -0
- data/test/primary-tests.js +24 -0
- data/test/prototype-test.js +13 -0
- data/test/qunit/qunit/qunit.css +17 -0
- data/test/qunit/qunit/qunit.js +997 -0
- data/test/qunit.js +61 -0
- data/test/specs/dist/env.spec.js +1534 -0
- data/test/specs/envjs.spec.css +46 -0
- data/test/specs/parser/html.js +31 -0
- data/test/specs/parser/spec.html +40 -0
- data/test/specs/parser/xml.js +31 -0
- data/test/specs/qunit.bdd.js +210 -0
- data/test/specs/qunit.css +17 -0
- data/test/specs/qunit.js +997 -0
- data/test/specs/template/spec-0.js +31 -0
- data/test/specs/template/spec-1.js +31 -0
- data/test/specs/template/spec.html +40 -0
- data/test/specs/window/css.js +23 -0
- data/test/specs/window/dialog.js +25 -0
- data/test/specs/window/document.js +23 -0
- data/test/specs/window/event.js +25 -0
- data/test/specs/window/history.js +34 -0
- data/test/specs/window/location.js +34 -0
- data/test/specs/window/navigator.js +71 -0
- data/test/specs/window/screen.js +42 -0
- data/test/specs/window/spec.html +48 -0
- data/test/specs/window/timer.js +26 -0
- data/test/specs/window/window.js +53 -0
- data/test/specs/xhr/spec.html +47 -0
- data/test/specs/xhr/xhr.js +31 -0
- data/test/test.js +10 -0
- data/test/unit/dom.js +44 -0
- data/test/unit/elementmembers.js +60 -0
- data/test/unit/events.js +195 -0
- data/test/unit/fixtures/external_script.js +1 -0
- data/test/unit/iframe.js +234 -0
- data/test/unit/multi-window.js +212 -0
- data/test/unit/nu.validator.js +34 -0
- data/test/unit/onload.js +90 -0
- data/test/unit/parser.js +121 -0
- data/test/unit/prototypecompat.js +22 -0
- data/test/unit/proxy.js +6 -0
- data/test/unit/scope.js +209 -0
- data/test/unit/timer.js +115 -0
- data/test/unit/window.js +41 -0
- data/test/vendor/jQuery/README +2 -0
- data/test/vendor/prototype-1.6.0.3.js +4320 -0
- metadata +164 -0
@@ -0,0 +1,46 @@
|
|
1
|
+
html{
|
2
|
+
background-color:#333;
|
3
|
+
}
|
4
|
+
body.container{
|
5
|
+
margin-top:20px;
|
6
|
+
border:none;
|
7
|
+
background-color:#333;
|
8
|
+
}
|
9
|
+
body.container strong {
|
10
|
+
text-transform:none;
|
11
|
+
}
|
12
|
+
h2#qunit-banner {
|
13
|
+
-moz-border-radius:30px;
|
14
|
+
padding:10px 10px 50px 10px;
|
15
|
+
text-align:center;
|
16
|
+
}
|
17
|
+
h2#qunit-banner.pass {
|
18
|
+
background-color:#66BB66;
|
19
|
+
text-align:center;
|
20
|
+
}
|
21
|
+
h2#qunit-banner #envjs-icon{
|
22
|
+
margin:5px 5px 0 20px;
|
23
|
+
}
|
24
|
+
h2#qunit-userAgent {
|
25
|
+
-moz-border-radius:0px;
|
26
|
+
background-color:#111;
|
27
|
+
color:white;
|
28
|
+
text-align:center;
|
29
|
+
margin:-40px 0 0 0;
|
30
|
+
padding:10px;
|
31
|
+
}
|
32
|
+
#qunit-test-summary{
|
33
|
+
-moz-border-radius-bottomleft:30px;
|
34
|
+
-moz-border-radius-bottomright:30px;
|
35
|
+
background-color:#338;
|
36
|
+
color:#99FFFF;
|
37
|
+
}
|
38
|
+
#qunit-tests{
|
39
|
+
background-color:#fff;
|
40
|
+
margin:0 0 40px;
|
41
|
+
padding:15px 60px;
|
42
|
+
}
|
43
|
+
p#qunit-testresult {
|
44
|
+
text-align:center;
|
45
|
+
padding:0 0 20px;
|
46
|
+
}
|
@@ -0,0 +1,31 @@
|
|
1
|
+
/**
|
2
|
+
* @author thatcher
|
3
|
+
*/
|
4
|
+
(function(Q){
|
5
|
+
|
6
|
+
Q.describe('TEMPLATE Spec',{
|
7
|
+
before:function(){
|
8
|
+
//setup
|
9
|
+
},
|
10
|
+
after:function(){
|
11
|
+
//tear down
|
12
|
+
}
|
13
|
+
|
14
|
+
}).should('do something', function(){
|
15
|
+
|
16
|
+
expect(1);
|
17
|
+
ok(true, 'good job');
|
18
|
+
|
19
|
+
}).should('do something else', function(){
|
20
|
+
|
21
|
+
expect(1);
|
22
|
+
ok(true, 'good job');
|
23
|
+
|
24
|
+
}).pending('should do something new soon', function(){
|
25
|
+
|
26
|
+
expect(1);
|
27
|
+
ok(false, 'todo');
|
28
|
+
});
|
29
|
+
|
30
|
+
})(QUnit);
|
31
|
+
|
@@ -0,0 +1,40 @@
|
|
1
|
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
5
|
+
<title>Envjs HTML5 Parser Spec</title>
|
6
|
+
<link rel="stylesheet" media="screen" href="../qunit.css"/>
|
7
|
+
<link rel="stylesheet" media="screen" href="../envjs.spec.css"/>
|
8
|
+
<link rel="stylesheet" media="screen" href="http://www.envjs.com/css/blueprint/screen.css"/>
|
9
|
+
<link rel="stylesheet" media="screen" href="http://www.envjs.com/css/site.css"/>
|
10
|
+
<script type='text/javascript' src='../qunit.js'></script>
|
11
|
+
<script type='text/javascript' src='../qunit.bdd.js'></script>
|
12
|
+
|
13
|
+
<!-- specs for this general api 'module' -->
|
14
|
+
<script type='text/javascript' src='spec-0.js'></script>
|
15
|
+
<script type='text/javascript' src='spec-1.js'></script>
|
16
|
+
</head>
|
17
|
+
<body class='container'>
|
18
|
+
<h2 id="qunit-banner">
|
19
|
+
<img id="envjs-icon"
|
20
|
+
src="../../fixtures/images/icon-blue.png"
|
21
|
+
height='40'/>
|
22
|
+
<span id="spec-title">Envjs HTML5 Parser Spec</span>
|
23
|
+
</h2>
|
24
|
+
<h2 id="qunit-userAgent"></h2>
|
25
|
+
<div id='qunit-testrunner-toolbar'></div>
|
26
|
+
<div id='qunit-test-summary'>
|
27
|
+
<ol id='qunit-tests'></ol>
|
28
|
+
</div>
|
29
|
+
<div id="qunit-main" style="display:none;">
|
30
|
+
<!--
|
31
|
+
Test HTML here:
|
32
|
+
|
33
|
+
not required to be in here but it makes it convenient
|
34
|
+
by convention to avoid having to look at the html
|
35
|
+
artifacts the test may require or have generated as
|
36
|
+
a side effect.
|
37
|
+
-->
|
38
|
+
</div>
|
39
|
+
</body>
|
40
|
+
</html>
|
@@ -0,0 +1,31 @@
|
|
1
|
+
/**
|
2
|
+
* @author thatcher
|
3
|
+
*/
|
4
|
+
|
5
|
+
(function(Q){
|
6
|
+
|
7
|
+
Q.describe('Another TEMPLATE Spec',{
|
8
|
+
before:function(){
|
9
|
+
//setup
|
10
|
+
},
|
11
|
+
after:function(){
|
12
|
+
//tear down
|
13
|
+
}
|
14
|
+
|
15
|
+
}).should('do something', function(){
|
16
|
+
|
17
|
+
expect(1);
|
18
|
+
ok(true, 'good job');
|
19
|
+
|
20
|
+
}).should('do something else', function(){
|
21
|
+
|
22
|
+
expect(1);
|
23
|
+
ok(true, 'good job');
|
24
|
+
|
25
|
+
}).pending('should do something new soon', function(){
|
26
|
+
|
27
|
+
expect(1);
|
28
|
+
ok(false, 'todo');
|
29
|
+
});
|
30
|
+
|
31
|
+
})(QUnit);
|
@@ -0,0 +1,210 @@
|
|
1
|
+
|
2
|
+
(function(Q){
|
3
|
+
|
4
|
+
Q.Spec = function(name){
|
5
|
+
this.before = false;
|
6
|
+
this.after = false;
|
7
|
+
this.assigns = {};
|
8
|
+
this.name = name;
|
9
|
+
Q.module(name);
|
10
|
+
};
|
11
|
+
Q.Spec.reminders = {};
|
12
|
+
|
13
|
+
|
14
|
+
// RSpec style describe
|
15
|
+
// takes an arbitrary number of arguments that are contactenated as strings
|
16
|
+
// the last argument is the configuration object
|
17
|
+
// which can have before: after: callbacks
|
18
|
+
function describe(){
|
19
|
+
var args = [].splice.call(arguments, 0);
|
20
|
+
// configuration function
|
21
|
+
var bddconfig = (args[args.length - 1].constructor == Object) ? args.pop() : {};
|
22
|
+
var spec = new Q.Spec(args.join(' '));
|
23
|
+
spec.before = bddconfig['before'] || bddconfig['setup'];
|
24
|
+
spec.after = bddconfig['after'] || bddconfig['teardown'];
|
25
|
+
return spec;
|
26
|
+
};
|
27
|
+
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
// RSpec style test definition
|
32
|
+
Q.Spec.prototype.it = function(name, callback ){
|
33
|
+
var spec = this;
|
34
|
+
if (spec.before)
|
35
|
+
spec.before.apply(spec.assigns);
|
36
|
+
Q.test(spec.name+" : "+name, function(){
|
37
|
+
callback.apply(spec);
|
38
|
+
});
|
39
|
+
if (spec.after)
|
40
|
+
spec.after.apply(spec.assigns);
|
41
|
+
return spec;
|
42
|
+
};
|
43
|
+
|
44
|
+
// Shoulda style test definition
|
45
|
+
Q.Spec.prototype.should = function(name, callback){
|
46
|
+
name = 'should ' + name;
|
47
|
+
return this.it.apply(this, [name, callback]);
|
48
|
+
};
|
49
|
+
|
50
|
+
Q.Spec.prototype.pending = function(name, callback, nowait){
|
51
|
+
name = '<span style="color: #EB8531;" class="pending">deferred: ' + name + '</span>';
|
52
|
+
Q.test(name, function(){
|
53
|
+
Q.ok(true,'behavior pending');
|
54
|
+
});
|
55
|
+
return this;
|
56
|
+
};
|
57
|
+
|
58
|
+
Q.Spec.prototype.should_eventually = function(name, callback, nowait){
|
59
|
+
return this.pending(name, callback);
|
60
|
+
};
|
61
|
+
|
62
|
+
Q.Spec.prototype.a = function(key){
|
63
|
+
if (typeof key == 'undefined') {
|
64
|
+
return this.assigns;
|
65
|
+
}
|
66
|
+
else {
|
67
|
+
return this.assigns[key];
|
68
|
+
}
|
69
|
+
};
|
70
|
+
|
71
|
+
// aliases for describe
|
72
|
+
Q.describe = describe;
|
73
|
+
Q.context = describe;
|
74
|
+
|
75
|
+
// asserts that the method is defined (like respond_to?)
|
76
|
+
Q.defined = function(object, method){
|
77
|
+
return Q.ok(typeof object[method] == 'function', method + 'is not defined on' + object);
|
78
|
+
};
|
79
|
+
|
80
|
+
// asserts that the object is of a certain type
|
81
|
+
Q.isType = function(object, type){
|
82
|
+
return Q.ok(object.constructor === type, object.toString() + ' is not of type ' + type + ', is ' + object.constructor);
|
83
|
+
};
|
84
|
+
|
85
|
+
// assert a string matches a regex
|
86
|
+
Q.match = function(matcher, string, message){
|
87
|
+
return Q.ok(string.match(matcher), message);
|
88
|
+
};
|
89
|
+
|
90
|
+
// assert that a matching error is raised
|
91
|
+
// expected can be a regex, a string, or an object
|
92
|
+
Q.raised = function(expected_error, callback){
|
93
|
+
var error = '';
|
94
|
+
try {
|
95
|
+
callback.apply(this);
|
96
|
+
}
|
97
|
+
catch (e) {
|
98
|
+
error = e;
|
99
|
+
}
|
100
|
+
message = "Expected error to match " + expected_error + " but was " + error.toString();
|
101
|
+
if (expected_error.constructor == RegExp) {
|
102
|
+
return Q.match(expected_error, error.toString(), message);
|
103
|
+
}
|
104
|
+
else
|
105
|
+
if (expected_error.constructor == String) {
|
106
|
+
return Q.equals(expected_error, error.toString(), message);
|
107
|
+
}
|
108
|
+
else {
|
109
|
+
return Q.equals(expected_error, error, message);
|
110
|
+
}
|
111
|
+
};
|
112
|
+
|
113
|
+
|
114
|
+
var log;
|
115
|
+
try{
|
116
|
+
if(Envjs)
|
117
|
+
log = Envjs.log;
|
118
|
+
}catch(e){
|
119
|
+
try{
|
120
|
+
log = console.log;
|
121
|
+
}catch(e){
|
122
|
+
log=function(){};
|
123
|
+
}
|
124
|
+
|
125
|
+
}
|
126
|
+
var assertion_index = 0;
|
127
|
+
|
128
|
+
var module_index = 0;
|
129
|
+
var module;
|
130
|
+
|
131
|
+
var test_index = 0;
|
132
|
+
var test;
|
133
|
+
|
134
|
+
Q._moduleStart = Q.moduleStart;
|
135
|
+
Q.moduleStart = function(m, te){
|
136
|
+
Q._moduleStart.apply(this, arguments);
|
137
|
+
module = m;
|
138
|
+
module_index++;
|
139
|
+
};
|
140
|
+
|
141
|
+
Q._moduleDone = Q.moduleDone;
|
142
|
+
Q.moduleDone = function(t, f, tx){
|
143
|
+
Q._moduleDone.apply(this, arguments);
|
144
|
+
var s = module_index + ". module " + t + ": ";
|
145
|
+
if (f) {
|
146
|
+
s += f + " failure(s) in " + tx + " tests";
|
147
|
+
}
|
148
|
+
else {
|
149
|
+
s += "all " + tx + " tests successful";
|
150
|
+
}
|
151
|
+
// print(s);
|
152
|
+
module = undefined;
|
153
|
+
};
|
154
|
+
|
155
|
+
Q._testStart = Q.testStart;
|
156
|
+
Q.testStart = function(t){
|
157
|
+
Q._testStart.apply(this, arguments);
|
158
|
+
test = t;
|
159
|
+
test_index++;
|
160
|
+
};
|
161
|
+
|
162
|
+
Q._testDone = Q.testDone;
|
163
|
+
Q.testDone = function(t){
|
164
|
+
Q._testDone.apply(this, arguments);
|
165
|
+
test = undefined;
|
166
|
+
}
|
167
|
+
|
168
|
+
Q._log = Q.log;
|
169
|
+
Q.log = function(r, m){
|
170
|
+
Q._log.apply(this, arguments);
|
171
|
+
assertion_index++;
|
172
|
+
var test_string = "";
|
173
|
+
if (module || test) {
|
174
|
+
var test_string = "[";
|
175
|
+
if (module) {
|
176
|
+
test_string += module;
|
177
|
+
if (test) {
|
178
|
+
test_string += ": ";
|
179
|
+
}
|
180
|
+
}
|
181
|
+
if (test) {
|
182
|
+
test_string += test;
|
183
|
+
}
|
184
|
+
test_string += "] ";
|
185
|
+
}
|
186
|
+
var s = (r ? "PASS (" : "FAIL (") + assertion_index + ") " + test_string + m;
|
187
|
+
log(s);
|
188
|
+
};
|
189
|
+
|
190
|
+
Q._done = Q.done;
|
191
|
+
Q.done = function(f, t){
|
192
|
+
Q._done.apply(this, arguments);
|
193
|
+
log((t - f) + " Passed, " + f + " Failed, " + t + " Total Tests");
|
194
|
+
try{
|
195
|
+
if(Envjs){
|
196
|
+
var scripts = document.getElementsByTagName('script');
|
197
|
+
for(var i = 0;i<scripts.length;i++){
|
198
|
+
//prevents scripts from being re-run when
|
199
|
+
//we look at the results in the browser
|
200
|
+
scripts[i].type='text/envjs';
|
201
|
+
}
|
202
|
+
Envjs.writeToFile(document.xml, Envjs.location('results.html'));
|
203
|
+
}
|
204
|
+
}catch(e){
|
205
|
+
log('failed to print results to file.\n'+e);
|
206
|
+
}
|
207
|
+
};
|
208
|
+
|
209
|
+
})(QUnit);
|
210
|
+
|
@@ -0,0 +1,17 @@
|
|
1
|
+
h1#qunit-header { padding: 15px; font-size: large; background-color: #06b; color: white; font-family: 'trebuchet ms', verdana, arial; margin: 0; }
|
2
|
+
h1#qunit-header a { color: white; }
|
3
|
+
|
4
|
+
h2#qunit-banner { height: 2em; border-bottom: 1px solid white; background-color: #eee; margin: 0; font-family: 'trebuchet ms', verdana, arial; }
|
5
|
+
h2#qunit-banner.pass { background-color: green; }
|
6
|
+
h2#qunit-banner.fail { background-color: red; }
|
7
|
+
|
8
|
+
h2#qunit-userAgent { padding: 10px; background-color: #eee; color: black; margin: 0; font-size: small; font-weight: normal; font-family: 'trebuchet ms', verdana, arial; font-size: 10pt; }
|
9
|
+
|
10
|
+
div#qunit-testrunner-toolbar { background: #eee; border-top: 1px solid black; padding: 10px; font-family: 'trebuchet ms', verdana, arial; margin: 0; font-size: 10pt; }
|
11
|
+
|
12
|
+
ol#qunit-tests { font-family: 'trebuchet ms', verdana, arial; font-size: 10pt; }
|
13
|
+
ol#qunit-tests li strong { cursor:pointer; }
|
14
|
+
ol#qunit-tests .pass { color: green; }
|
15
|
+
ol#qunit-tests .fail { color: red; }
|
16
|
+
|
17
|
+
p#qunit-testresult { margin-left: 1em; font-size: 10pt; font-family: 'trebuchet ms', verdana, arial; }
|