Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
renderjs
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Labels
Merge Requests
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Commits
Open sidebar
nexedi
renderjs
Commits
534e98d5
Commit
534e98d5
authored
Jul 08, 2013
by
Romain Courteaud
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Upgrade jquery and qunit
parent
f8019bd0
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
8991 additions
and
106 deletions
+8991
-106
lib/jquery/jquery.js
lib/jquery/jquery.js
+8829
-4
lib/qunit/qunit.css
lib/qunit/qunit.css
+1
-1
lib/qunit/qunit.js
lib/qunit/qunit.js
+161
-101
No files found.
lib/jquery/jquery.js
View file @
534e98d5
This source diff could not be displayed because it is too large. You can
view the blob
instead.
lib/qunit/qunit.css
View file @
534e98d5
/**
* QUnit v1.1
1
.0 - A JavaScript Unit Testing Framework
* QUnit v1.1
2
.0 - A JavaScript Unit Testing Framework
*
* http://qunitjs.com
*
...
...
lib/qunit/qunit.js
View file @
534e98d5
/**
* QUnit v1.1
1
.0 - A JavaScript Unit Testing Framework
* QUnit v1.1
2
.0 - A JavaScript Unit Testing Framework
*
* http://qunitjs.com
*
* Copyright 201
2
jQuery Foundation and other contributors
* Copyright 201
3
jQuery Foundation and other contributors
* Released under the MIT license.
* http
://jquery.org/license
* http
s://jquery.org/license/
*/
(
function
(
window
)
{
...
...
@@ -20,6 +20,7 @@ var QUnit,
hasOwn
=
Object
.
prototype
.
hasOwnProperty
,
// Keep a local reference to Date (GH-283)
Date
=
window
.
Date
,
setTimeout
=
window
.
setTimeout
,
defined
=
{
setTimeout
:
typeof
window
.
setTimeout
!==
"
undefined
"
,
sessionStorage
:
(
function
()
{
...
...
@@ -115,8 +116,16 @@ Test.prototype = {
}
},
setup
:
function
()
{
if
(
this
.
module
!==
config
.
previousModule
)
{
if
(
config
.
previousModule
)
{
if
(
// Emit moduleStart when we're switching from one module to another
this
.
module
!==
config
.
previousModule
||
// They could be equal (both undefined) but if the previousModule property doesn't
// yet exist it means this is the first test in a suite that isn't wrapped in a
// module, in which case we'll just emit a moduleStart event for 'undefined'.
// Without this, reporters can get testStart before moduleStart which is a problem.
!
hasOwn
.
call
(
config
,
"
previousModule
"
)
)
{
if
(
hasOwn
.
call
(
config
,
"
previousModule
"
)
)
{
runLoggingCallbacks
(
"
moduleDone
"
,
QUnit
,
{
name
:
config
.
previousModule
,
failed
:
config
.
moduleStats
.
bad
,
...
...
@@ -129,10 +138,6 @@ Test.prototype = {
runLoggingCallbacks
(
"
moduleStart
"
,
QUnit
,
{
name
:
this
.
module
});
}
else
if
(
config
.
autorun
)
{
runLoggingCallbacks
(
"
moduleStart
"
,
QUnit
,
{
name
:
this
.
module
});
}
config
.
current
=
this
;
...
...
@@ -148,19 +153,27 @@ Test.prototype = {
module
:
this
.
module
});
// allow utility functions to access the current test environment
// TODO why??
/*jshint camelcase:false */
/**
* Expose the current test environment.
*
* @deprecated since 1.12.0: Use QUnit.config.current.testEnvironment instead.
*/
QUnit
.
current_testEnvironment
=
this
.
testEnvironment
;
/*jshint camelcase:true */
if
(
!
config
.
pollution
)
{
saveGlobal
();
}
if
(
config
.
notrycatch
)
{
this
.
testEnvironment
.
setup
.
call
(
this
.
testEnvironment
);
this
.
testEnvironment
.
setup
.
call
(
this
.
testEnvironment
,
QUnit
.
assert
);
return
;
}
try
{
this
.
testEnvironment
.
setup
.
call
(
this
.
testEnvironment
);
this
.
testEnvironment
.
setup
.
call
(
this
.
testEnvironment
,
QUnit
.
assert
);
}
catch
(
e
)
{
QUnit
.
pushFailure
(
"
Setup failed on
"
+
this
.
testName
+
"
:
"
+
(
e
.
message
||
e
),
extractStacktrace
(
e
,
1
)
);
}
...
...
@@ -208,11 +221,11 @@ Test.prototype = {
if
(
typeof
this
.
callbackRuntime
===
"
undefined
"
)
{
this
.
callbackRuntime
=
+
new
Date
()
-
this
.
callbackStarted
;
}
this
.
testEnvironment
.
teardown
.
call
(
this
.
testEnvironment
);
this
.
testEnvironment
.
teardown
.
call
(
this
.
testEnvironment
,
QUnit
.
assert
);
return
;
}
else
{
try
{
this
.
testEnvironment
.
teardown
.
call
(
this
.
testEnvironment
);
this
.
testEnvironment
.
teardown
.
call
(
this
.
testEnvironment
,
QUnit
.
assert
);
}
catch
(
e
)
{
QUnit
.
pushFailure
(
"
Teardown failed on
"
+
this
.
testName
+
"
:
"
+
(
e
.
message
||
e
),
extractStacktrace
(
e
,
1
)
);
}
...
...
@@ -419,7 +432,7 @@ QUnit = {
test
.
queue
();
},
// Specify the number of expected assertions to gurantee that failed test (no assertions are run at all) don't slip through.
// Specify the number of expected assertions to gu
a
rantee that failed test (no assertions are run at all) don't slip through.
expect
:
function
(
asserts
)
{
if
(
arguments
.
length
===
1
)
{
config
.
current
.
expected
=
asserts
;
...
...
@@ -454,7 +467,7 @@ QUnit = {
}
// A slight delay, to avoid any current callbacks
if
(
defined
.
setTimeout
)
{
window
.
setTimeout
(
function
()
{
setTimeout
(
function
()
{
if
(
config
.
semaphore
>
0
)
{
return
;
}
...
...
@@ -477,7 +490,7 @@ QUnit = {
if
(
config
.
testTimeout
&&
defined
.
setTimeout
)
{
clearTimeout
(
config
.
timeout
);
config
.
timeout
=
window
.
setTimeout
(
function
()
{
config
.
timeout
=
setTimeout
(
function
()
{
QUnit
.
ok
(
false
,
"
Test timed out
"
);
config
.
semaphore
=
1
;
QUnit
.
start
();
...
...
@@ -487,7 +500,7 @@ QUnit = {
};
// `assert` initialized at top of scope
// Ass
s
ert helpers
// Assert helpers
// All of these must either call QUnit.push() or manually do:
// - runLoggingCallbacks( "log", .. );
// - config.current.assertions.push({ .. });
...
...
@@ -505,6 +518,7 @@ assert = {
throw
new
Error
(
"
ok() assertion outside test context, was
"
+
sourceFromStacktrace
(
2
)
);
}
result
=
!!
result
;
msg
=
msg
||
(
result
?
"
okay
"
:
"
failed
"
);
var
source
,
details
=
{
...
...
@@ -514,8 +528,7 @@ assert = {
message
:
msg
};
msg
=
escapeText
(
msg
||
(
result
?
"
okay
"
:
"
failed
"
)
);
msg
=
"
<span class='test-message'>
"
+
msg
+
"
</span>
"
;
msg
=
"
<span class='test-message'>
"
+
escapeText
(
msg
)
+
"
</span>
"
;
if
(
!
result
)
{
source
=
sourceFromStacktrace
(
2
);
...
...
@@ -642,13 +655,13 @@ assert = {
QUnit
.
push
(
ok
,
actual
,
expectedOutput
,
message
);
}
else
{
QUnit
.
pushFailure
(
message
,
null
,
'
No exception was thrown.
'
);
QUnit
.
pushFailure
(
message
,
null
,
"
No exception was thrown.
"
);
}
}
};
/**
* @deprecate since 1.8.0
* @deprecate
d
since 1.8.0
* Kept assertion helpers in root for backwards compatibility.
*/
extend
(
QUnit
,
assert
);
...
...
@@ -737,7 +750,7 @@ config = {
// Export global variables, unless an 'exports' object exists,
// in that case we assume we're in CommonJS (dealt with on the bottom of the script)
if
(
typeof
exports
===
"
undefined
"
)
{
extend
(
window
,
QUnit
);
extend
(
window
,
QUnit
.
constructor
.
prototype
);
// Expose QUnit object
window
.
QUnit
=
QUnit
;
...
...
@@ -836,6 +849,11 @@ extend( QUnit, {
},
// Resets the test setup. Useful for tests that modify the DOM.
/*
DEPRECATED: Use multiple tests instead of resetting inside a test.
Use testStart or testDone for custom cleanup.
This method will throw an error in 2.0, and will be removed in 2.1
*/
reset
:
function
()
{
var
fixture
=
id
(
"
qunit-fixture
"
);
if
(
fixture
)
{
...
...
@@ -985,19 +1003,21 @@ extend( QUnit, {
querystring
=
"
?
"
;
for
(
key
in
params
)
{
if
(
!
hasOwn
.
call
(
params
,
key
)
)
{
continue
;
}
if
(
hasOwn
.
call
(
params
,
key
)
)
{
querystring
+=
encodeURIComponent
(
key
)
+
"
=
"
+
encodeURIComponent
(
params
[
key
]
)
+
"
&
"
;
}
}
return
window
.
location
.
protocol
+
"
//
"
+
window
.
location
.
host
+
window
.
location
.
pathname
+
querystring
.
slice
(
0
,
-
1
);
},
extend
:
extend
,
id
:
id
,
addEvent
:
addEvent
addEvent
:
addEvent
,
addClass
:
addClass
,
hasClass
:
hasClass
,
removeClass
:
removeClass
// load, equiv, jsDump, diff: Attached later
});
...
...
@@ -1044,6 +1064,7 @@ QUnit.load = function() {
var
banner
,
filter
,
i
,
label
,
len
,
main
,
ol
,
toolbar
,
userAgent
,
val
,
urlConfigCheckboxesContainer
,
urlConfigCheckboxes
,
moduleFilter
,
numModules
=
0
,
moduleNames
=
[],
moduleFilterHtml
=
""
,
urlConfigHtml
=
""
,
oldconfig
=
extend
(
{},
config
);
...
...
@@ -1072,18 +1093,24 @@ QUnit.load = function() {
"
'><label for='qunit-urlconfig-
"
+
escapeText
(
val
.
id
)
+
"
' title='
"
+
escapeText
(
val
.
tooltip
)
+
"
'>
"
+
val
.
label
+
"
</label>
"
;
}
for
(
i
in
config
.
modules
)
{
if
(
config
.
modules
.
hasOwnProperty
(
i
)
)
{
moduleNames
.
push
(
i
);
}
}
numModules
=
moduleNames
.
length
;
moduleNames
.
sort
(
function
(
a
,
b
)
{
return
a
.
localeCompare
(
b
);
});
moduleFilterHtml
+=
"
<label for='qunit-modulefilter'>Module: </label><select id='qunit-modulefilter' name='modulefilter'><option value=''
"
+
(
config
.
module
===
undefined
?
"
selected='selected'
"
:
""
)
+
"
>< All Modules ></option>
"
;
for
(
i
in
config
.
modules
)
{
if
(
config
.
modules
.
hasOwnProperty
(
i
)
)
{
numModules
+=
1
;
moduleFilterHtml
+=
"
<option value='
"
+
escapeText
(
encodeURIComponent
(
i
)
)
+
"
'
"
+
(
config
.
module
===
i
?
"
selected='selected'
"
:
""
)
+
"
>
"
+
escapeText
(
i
)
+
"
</option>
"
;
}
for
(
i
=
0
;
i
<
numModules
;
i
++
)
{
moduleFilterHtml
+=
"
<option value='
"
+
escapeText
(
encodeURIComponent
(
moduleNames
[
i
])
)
+
"
'
"
+
(
config
.
module
===
moduleNames
[
i
]
?
"
selected='selected'
"
:
""
)
+
"
>
"
+
escapeText
(
moduleNames
[
i
])
+
"
</option>
"
;
}
moduleFilterHtml
+=
"
</select>
"
;
...
...
@@ -1137,7 +1164,7 @@ QUnit.load = function() {
// `label` initialized at top of scope
label
=
document
.
createElement
(
"
label
"
);
label
.
setAttribute
(
"
for
"
,
"
qunit-filter-pass
"
);
label
.
setAttribute
(
"
title
"
,
"
Only show tests and assertons that fail. Stored in sessionStorage.
"
);
label
.
setAttribute
(
"
title
"
,
"
Only show tests and assert
i
ons that fail. Stored in sessionStorage.
"
);
label
.
innerHTML
=
"
Hide passed tests
"
;
toolbar
.
appendChild
(
label
);
...
...
@@ -1157,14 +1184,19 @@ QUnit.load = function() {
toolbar
.
appendChild
(
urlConfigCheckboxesContainer
);
if
(
numModules
>
1
)
{
moduleFilter
=
document
.
createElement
(
'
span
'
);
moduleFilter
.
setAttribute
(
'
id
'
,
'
qunit-modulefilter-container
'
);
moduleFilter
=
document
.
createElement
(
"
span
"
);
moduleFilter
.
setAttribute
(
"
id
"
,
"
qunit-modulefilter-container
"
);
moduleFilter
.
innerHTML
=
moduleFilterHtml
;
addEvent
(
moduleFilter
.
lastChild
,
"
change
"
,
function
()
{
var
selectBox
=
moduleFilter
.
getElementsByTagName
(
"
select
"
)[
0
],
selectedModule
=
decodeURIComponent
(
selectBox
.
options
[
selectBox
.
selectedIndex
].
value
);
window
.
location
=
QUnit
.
url
(
{
module
:
(
selectedModule
===
""
)
?
undefined
:
selectedModule
}
);
window
.
location
=
QUnit
.
url
({
module
:
(
selectedModule
===
""
)
?
undefined
:
selectedModule
,
// Remove any existing filters
filter
:
undefined
,
testNumber
:
undefined
});
});
toolbar
.
appendChild
(
moduleFilter
);
}
...
...
@@ -1188,7 +1220,7 @@ addEvent( window, "load", QUnit.load );
onErrorFnPrev
=
window
.
onerror
;
// Cover uncaught exceptions
// Returning true will su
r
press the default browser handler,
// Returning true will su
p
press the default browser handler,
// returning false will let it run.
window
.
onerror
=
function
(
error
,
filePath
,
linerNr
)
{
var
ret
=
false
;
...
...
@@ -1197,7 +1229,7 @@ window.onerror = function ( error, filePath, linerNr ) {
}
// Treat return value as window.onerror itself does,
// Only do our handling if not su
r
pressed.
// Only do our handling if not su
p
pressed.
if
(
ret
!==
true
)
{
if
(
QUnit
.
config
.
current
)
{
if
(
QUnit
.
config
.
current
.
ignoreGlobalErrors
)
{
...
...
@@ -1227,6 +1259,7 @@ function done() {
total
:
config
.
moduleStats
.
all
});
}
delete
config
.
previousModule
;
var
i
,
key
,
banner
=
id
(
"
qunit-banner
"
),
...
...
@@ -1386,16 +1419,16 @@ function escapeText( s ) {
// Both single quotes and double quotes (for attributes)
return
s
.
replace
(
/
[
'"<>&
]
/g
,
function
(
s
)
{
switch
(
s
)
{
case
'
\'
'
:
return
'
'
'
;
case
'
"
'
:
return
'
"
'
;
case
'
<
'
:
return
'
<
'
;
case
'
>
'
:
return
'
>
'
;
case
'
&
'
:
return
'
&
'
;
case
"
'
"
:
return
"
'
"
;
case
"
\"
"
:
return
"
"
"
;
case
"
<
"
:
return
"
<
"
;
case
"
>
"
:
return
"
>
"
;
case
"
&
"
:
return
"
&
"
;
}
});
}
...
...
@@ -1419,7 +1452,7 @@ function process( last ) {
if
(
!
defined
.
setTimeout
||
config
.
updateRate
<=
0
||
(
(
new
Date
().
getTime
()
-
start
)
<
config
.
updateRate
)
)
{
config
.
queue
.
shift
()();
}
else
{
window
.
setTimeout
(
next
,
13
);
setTimeout
(
next
,
13
);
break
;
}
}
...
...
@@ -1434,13 +1467,15 @@ function saveGlobal() {
if
(
config
.
noglobals
)
{
for
(
var
key
in
window
)
{
if
(
hasOwn
.
call
(
window
,
key
)
)
{
// in Opera sometimes DOM element ids show up here, ignore them
if
(
!
hasOwn
.
call
(
window
,
key
)
||
/^qunit-test-output/
.
test
(
key
)
)
{
if
(
/^qunit-test-output/
.
test
(
key
)
)
{
continue
;
}
config
.
pollution
.
push
(
key
);
}
}
}
}
function
checkPollution
()
{
...
...
@@ -1480,14 +1515,17 @@ function diff( a, b ) {
function
extend
(
a
,
b
)
{
for
(
var
prop
in
b
)
{
if
(
hasOwn
.
call
(
b
,
prop
)
)
{
// Avoid "Member not found" error in IE8 caused by messing with window.constructor
if
(
!
(
prop
===
"
constructor
"
&&
a
===
window
)
)
{
if
(
b
[
prop
]
===
undefined
)
{
delete
a
[
prop
];
// Avoid "Member not found" error in IE8 caused by setting window.constructor
}
else
if
(
prop
!==
"
constructor
"
||
a
!==
window
)
{
}
else
{
a
[
prop
]
=
b
[
prop
];
}
}
}
}
return
a
;
}
...
...
@@ -1535,8 +1573,8 @@ function removeClass( elem, name ) {
while
(
set
.
indexOf
(
"
"
+
name
+
"
"
)
>
-
1
)
{
set
=
set
.
replace
(
"
"
+
name
+
"
"
,
"
"
);
}
// If possible, trim it for prettiness, but not nec
cec
arily
elem
.
className
=
window
.
jQuery
?
jQuery
.
trim
(
set
)
:
(
set
.
trim
?
set
.
trim
()
:
set
);
// If possible, trim it for prettiness, but not nec
ess
arily
elem
.
className
=
typeof
set
.
trim
===
"
function
"
?
set
.
trim
()
:
set
.
replace
(
/^
\s
+|
\s
+$/g
,
""
);
}
function
id
(
name
)
{
...
...
@@ -1585,8 +1623,10 @@ QUnit.equiv = (function() {
callers
=
[],
// stack to avoiding loops from circular referencing
parents
=
[],
parentsB
=
[],
getProto
=
Object
.
getPrototypeOf
||
function
(
obj
)
{
/*jshint camelcase:false */
return
obj
.
__proto__
;
},
callbacks
=
(
function
()
{
...
...
@@ -1595,7 +1635,7 @@ QUnit.equiv = (function() {
function
useStrictEquality
(
b
,
a
)
{
/*jshint eqeqeq:false */
if
(
b
instanceof
a
.
constructor
||
a
instanceof
b
.
constructor
)
{
// to catch short annotaion VS 'new' annotation of a
// to catch short annota
t
ion VS 'new' annotation of a
// declaration
// e.g. var i = 1;
// var j = new Number(1);
...
...
@@ -1624,7 +1664,7 @@ QUnit.equiv = (function() {
return
QUnit
.
objectType
(
b
)
===
"
regexp
"
&&
// the regex itself
a
.
source
===
b
.
source
&&
// and its modifers
// and its modif
i
ers
a
.
global
===
b
.
global
&&
// (gmi) ...
a
.
ignoreCase
===
b
.
ignoreCase
&&
...
...
@@ -1641,7 +1681,7 @@ QUnit.equiv = (function() {
},
"
array
"
:
function
(
b
,
a
)
{
var
i
,
j
,
len
,
loop
;
var
i
,
j
,
len
,
loop
,
aCircular
,
bCircular
;
// b could be an object literal here
if
(
QUnit
.
objectType
(
b
)
!==
"
array
"
)
{
...
...
@@ -1656,24 +1696,36 @@ QUnit.equiv = (function() {
// track reference to avoid circular references
parents
.
push
(
a
);
parentsB
.
push
(
b
);
for
(
i
=
0
;
i
<
len
;
i
++
)
{
loop
=
false
;
for
(
j
=
0
;
j
<
parents
.
length
;
j
++
)
{
if
(
parents
[
j
]
===
a
[
i
]
)
{
loop
=
true
;
// dont rewalk array
aCircular
=
parents
[
j
]
===
a
[
i
];
bCircular
=
parentsB
[
j
]
===
b
[
i
];
if
(
aCircular
||
bCircular
)
{
if
(
a
[
i
]
===
b
[
i
]
||
aCircular
&&
bCircular
)
{
loop
=
true
;
}
else
{
parents
.
pop
();
parentsB
.
pop
();
return
false
;
}
}
}
if
(
!
loop
&&
!
innerEquiv
(
a
[
i
],
b
[
i
])
)
{
parents
.
pop
();
parentsB
.
pop
();
return
false
;
}
}
parents
.
pop
();
parentsB
.
pop
();
return
true
;
},
"
object
"
:
function
(
b
,
a
)
{
var
i
,
j
,
loop
,
/*jshint forin:false */
var
i
,
j
,
loop
,
aCircular
,
bCircular
,
// Default to true
eq
=
true
,
aProperties
=
[],
...
...
@@ -1692,28 +1744,36 @@ QUnit.equiv = (function() {
// stack constructor before traversing properties
callers
.
push
(
a
.
constructor
);
// track reference to avoid circular references
parents
.
push
(
a
);
parentsB
.
push
(
b
);
for
(
i
in
a
)
{
// be strict: don't ensures hasOwnProperty
// and go deep
// be strict: don't ensure hasOwnProperty and go deep
for
(
i
in
a
)
{
loop
=
false
;
for
(
j
=
0
;
j
<
parents
.
length
;
j
++
)
{
if
(
parents
[
j
]
===
a
[
i
]
)
{
// don't go down the same path twice
aCircular
=
parents
[
j
]
===
a
[
i
];
bCircular
=
parentsB
[
j
]
===
b
[
i
];
if
(
aCircular
||
bCircular
)
{
if
(
a
[
i
]
===
b
[
i
]
||
aCircular
&&
bCircular
)
{
loop
=
true
;
}
else
{
eq
=
false
;
break
;
}
}
aProperties
.
push
(
i
);
// collect a's properties
if
(
!
loop
&&
!
innerEquiv
(
a
[
i
],
b
[
i
]
)
)
{
}
aProperties
.
push
(
i
);
if
(
!
loop
&&
!
innerEquiv
(
a
[
i
],
b
[
i
]
)
)
{
eq
=
false
;
break
;
}
}
callers
.
pop
();
// unstack, we are done
parents
.
pop
();
parentsB
.
pop
();
callers
.
pop
();
// unstack, we are done
for
(
i
in
b
)
{
bProperties
.
push
(
i
);
// collect b's properties
...
...
@@ -1743,7 +1803,7 @@ QUnit.equiv = (function() {
}
// apply transition with (1..n) arguments
}(
args
[
0
],
args
[
1
]
)
&&
arguments
.
callee
.
apply
(
this
,
args
.
splice
(
1
,
args
.
length
-
1
))
);
}(
args
[
0
],
args
[
1
]
)
&&
innerEquiv
.
apply
(
this
,
args
.
splice
(
1
,
args
.
length
-
1
))
);
};
return
innerEquiv
;
...
...
@@ -1761,7 +1821,7 @@ QUnit.equiv = (function() {
*/
QUnit
.
jsDump
=
(
function
()
{
function
quote
(
str
)
{
return
'
"
'
+
str
.
toString
().
replace
(
/"/g
,
'
\\
"
'
)
+
'
"
'
;
return
"
\"
"
+
str
.
toString
().
replace
(
/"/g
,
"
\\\"
"
)
+
"
\"
"
;
}
function
literal
(
o
)
{
return
o
+
""
;
...
...
@@ -1854,13 +1914,13 @@ QUnit.jsDump = (function() {
if
(
this
.
HTML
)
{
chr
=
chr
.
replace
(
/
\t
/g
,
"
"
).
replace
(
/ /g
,
"
"
);
}
return
new
Array
(
this
.
_depth_
+
(
extra
||
0
)
).
join
(
chr
);
return
new
Array
(
this
.
depth
+
(
extra
||
0
)
).
join
(
chr
);
},
up
:
function
(
a
)
{
this
.
_depth_
+=
a
||
1
;
this
.
depth
+=
a
||
1
;
},
down
:
function
(
a
)
{
this
.
_depth_
-=
a
||
1
;
this
.
depth
-=
a
||
1
;
},
setParser
:
function
(
name
,
parser
)
{
this
.
parsers
[
name
]
=
parser
;
...
...
@@ -1870,7 +1930,7 @@ QUnit.jsDump = (function() {
literal
:
literal
,
join
:
join
,
//
_depth_
:
1
,
depth
:
1
,
// This is the list of parsers, to modify them, use jsDump.setParser
parsers
:
{
window
:
"
[Window]
"
,
...
...
@@ -1898,6 +1958,7 @@ QUnit.jsDump = (function() {
nodelist
:
array
,
"
arguments
"
:
array
,
object
:
function
(
map
,
stack
)
{
/*jshint forin:false */
var
ret
=
[
],
keys
,
key
,
val
,
i
;
QUnit
.
jsDump
.
up
();
keys
=
[];
...
...
@@ -2036,9 +2097,7 @@ QUnit.diff = (function() {
}
for
(
i
in
ns
)
{
if
(
!
hasOwn
.
call
(
ns
,
i
)
)
{
continue
;
}
if
(
hasOwn
.
call
(
ns
,
i
)
)
{
if
(
ns
[
i
].
rows
.
length
===
1
&&
hasOwn
.
call
(
os
,
i
)
&&
os
[
i
].
rows
.
length
===
1
)
{
n
[
ns
[
i
].
rows
[
0
]
]
=
{
text
:
n
[
ns
[
i
].
rows
[
0
]
],
...
...
@@ -2050,6 +2109,7 @@ QUnit.diff = (function() {
};
}
}
}
for
(
i
=
0
;
i
<
n
.
length
-
1
;
i
++
)
{
if
(
n
[
i
].
text
!=
null
&&
n
[
i
+
1
].
text
==
null
&&
n
[
i
].
row
+
1
<
o
.
length
&&
o
[
n
[
i
].
row
+
1
].
text
==
null
&&
...
...
@@ -2143,9 +2203,9 @@ QUnit.diff = (function() {
};
}());
// for CommonJS enviroments, export everything
// for CommonJS enviro
n
ments, export everything
if
(
typeof
exports
!==
"
undefined
"
)
{
extend
(
exports
,
QUnit
);
extend
(
exports
,
QUnit
.
constructor
.
prototype
);
}
// get at whatever the global object is, like window in browsers
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment