diff --git a/static/jsunit/app/css/jsUnitStyle.css b/static/jsunit/app/css/jsUnitStyle.css deleted file mode 100644 index 358bffe..0000000 --- a/static/jsunit/app/css/jsUnitStyle.css +++ /dev/null @@ -1,50 +0,0 @@ -body { - margin-top: 0; - margin-bottom: 0; - font-family: Verdana, Arial, Helvetica, sans-serif; - color: #000; - font-size: 0.8em; - background-color: #fff; -} - -a:link, a:visited { - color: #00F; -} - -a:hover { - color: #F00; -} - -h1 { - font-size: 1.2em; - font-weight: bold; - color: #039; - font-family: Verdana, Arial, Helvetica, sans-serif; -} - -h2 { - font-weight: bold; - color: #039; - font-family: Verdana, Arial, Helvetica, sans-serif; -} - -h3 { - font-weight: bold; - color: #039; - text-decoration: underline; - font-family: Verdana, Arial, Helvetica, sans-serif; -} - -h4 { - font-weight: bold; - color: #039; - font-family: Verdana, Arial, Helvetica, sans-serif; -} - -.jsUnitTestResultSuccess { - color: #000; -} - -.jsUnitTestResultNotSuccess { - color: #F00; -} \ No newline at end of file diff --git a/static/jsunit/app/css/readme b/static/jsunit/app/css/readme deleted file mode 100644 index f722210..0000000 --- a/static/jsunit/app/css/readme +++ /dev/null @@ -1,10 +0,0 @@ -this file is required due to differences in behavior between Mozilla/Opera -and Internet Explorer. - -main-data.html calls kickOffTests() which calls top.testManager.start() -in the top most frame. top.testManager.start() initializes the output -frames using document.write and HTML containing a relative to the -jsUnitStyle.css file. In MSIE, the base href used to find the CSS file is -that of the top level frame however in Mozilla/Opera the base href is -that of main-data.html. This leads to not-found for the jsUnitStyle.css -in Mozilla/Opera. Creating app/css/jsUnitStyle.css works around this problem. diff --git a/static/jsunit/app/emptyPage.html b/static/jsunit/app/emptyPage.html deleted file mode 100644 index f9729dc..0000000 --- a/static/jsunit/app/emptyPage.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - emptyPage - - - - - - diff --git a/static/jsunit/app/jsUnitCore.js b/static/jsunit/app/jsUnitCore.js deleted file mode 100644 index 438513e..0000000 --- a/static/jsunit/app/jsUnitCore.js +++ /dev/null @@ -1,534 +0,0 @@ -var JSUNIT_UNDEFINED_VALUE; -var JSUNIT_VERSION = 2.2; -var isTestPageLoaded = false; - -//hack for NS62 bug -function jsUnitFixTop() { - var tempTop = top; - if (!tempTop) { - tempTop = window; - while (tempTop.parent) { - tempTop = tempTop.parent; - if (tempTop.top && tempTop.top.jsUnitTestSuite) { - tempTop = tempTop.top; - break; - } - } - } - try { - window.top = tempTop; - } catch (e) { - } -} - -jsUnitFixTop(); - -/** - + * A more functional typeof - + * @param Object o - + * @return String - + */ -function _trueTypeOf(something) { - var result = typeof something; - try { - switch (result) { - case 'string': - case 'boolean': - case 'number': - break; - case 'object': - case 'function': - switch (something.constructor) - { - case String: - result = 'String'; - break; - case Boolean: - result = 'Boolean'; - break; - case Number: - result = 'Number'; - break; - case Array: - result = 'Array'; - break; - case RegExp: - result = 'RegExp'; - break; - case Function: - result = 'Function'; - break; - default: - var m = something.constructor.toString().match(/function\s*([^( ]+)\(/); - if (m) - result = m[1]; - else - break; - } - break; - } - } - finally { - result = result.substr(0, 1).toUpperCase() + result.substr(1); - return result; - } -} - -function _displayStringForValue(aVar) { - var result = '<' + aVar + '>'; - if (!(aVar === null || aVar === top.JSUNIT_UNDEFINED_VALUE)) { - result += ' (' + _trueTypeOf(aVar) + ')'; - } - return result; -} - -function fail(failureMessage) { - throw new JsUnitException("Call to fail()", failureMessage); -} - -function error(errorMessage) { - var errorObject = new Object(); - errorObject.description = errorMessage; - errorObject.stackTrace = getStackTrace(); - throw errorObject; -} - -function argumentsIncludeComments(expectedNumberOfNonCommentArgs, args) { - return args.length == expectedNumberOfNonCommentArgs + 1; -} - -function commentArg(expectedNumberOfNonCommentArgs, args) { - if (argumentsIncludeComments(expectedNumberOfNonCommentArgs, args)) - return args[0]; - - return null; -} - -function nonCommentArg(desiredNonCommentArgIndex, expectedNumberOfNonCommentArgs, args) { - return argumentsIncludeComments(expectedNumberOfNonCommentArgs, args) ? - args[desiredNonCommentArgIndex] : - args[desiredNonCommentArgIndex - 1]; -} - -function _validateArguments(expectedNumberOfNonCommentArgs, args) { - if (!( args.length == expectedNumberOfNonCommentArgs || - (args.length == expectedNumberOfNonCommentArgs + 1 && typeof(args[0]) == 'string') )) - error('Incorrect arguments passed to assert function'); -} - -function _assert(comment, booleanValue, failureMessage) { - if (!booleanValue) - throw new JsUnitException(comment, failureMessage); -} - -function assert() { - _validateArguments(1, arguments); - var booleanValue = nonCommentArg(1, 1, arguments); - - if (typeof(booleanValue) != 'boolean') - error('Bad argument to assert(boolean)'); - - _assert(commentArg(1, arguments), booleanValue === true, 'Call to assert(boolean) with false'); -} - -function assertTrue() { - _validateArguments(1, arguments); - var booleanValue = nonCommentArg(1, 1, arguments); - - if (typeof(booleanValue) != 'boolean') - error('Bad argument to assertTrue(boolean)'); - - _assert(commentArg(1, arguments), booleanValue === true, 'Call to assertTrue(boolean) with false'); -} - -function assertFalse() { - _validateArguments(1, arguments); - var booleanValue = nonCommentArg(1, 1, arguments); - - if (typeof(booleanValue) != 'boolean') - error('Bad argument to assertFalse(boolean)'); - - _assert(commentArg(1, arguments), booleanValue === false, 'Call to assertFalse(boolean) with true'); -} - -function assertEquals() { - _validateArguments(2, arguments); - var var1 = nonCommentArg(1, 2, arguments); - var var2 = nonCommentArg(2, 2, arguments); - _assert(commentArg(2, arguments), var1 === var2, 'Expected ' + _displayStringForValue(var1) + ' but was ' + _displayStringForValue(var2)); -} - -function assertNotEquals() { - _validateArguments(2, arguments); - var var1 = nonCommentArg(1, 2, arguments); - var var2 = nonCommentArg(2, 2, arguments); - _assert(commentArg(2, arguments), var1 !== var2, 'Expected not to be ' + _displayStringForValue(var2)); -} - -function assertNull() { - _validateArguments(1, arguments); - var aVar = nonCommentArg(1, 1, arguments); - _assert(commentArg(1, arguments), aVar === null, 'Expected ' + _displayStringForValue(null) + ' but was ' + _displayStringForValue(aVar)); -} - -function assertNotNull() { - _validateArguments(1, arguments); - var aVar = nonCommentArg(1, 1, arguments); - _assert(commentArg(1, arguments), aVar !== null, 'Expected not to be ' + _displayStringForValue(null)); -} - -function assertUndefined() { - _validateArguments(1, arguments); - var aVar = nonCommentArg(1, 1, arguments); - _assert(commentArg(1, arguments), aVar === top.JSUNIT_UNDEFINED_VALUE, 'Expected ' + _displayStringForValue(top.JSUNIT_UNDEFINED_VALUE) + ' but was ' + _displayStringForValue(aVar)); -} - -function assertNotUndefined() { - _validateArguments(1, arguments); - var aVar = nonCommentArg(1, 1, arguments); - _assert(commentArg(1, arguments), aVar !== top.JSUNIT_UNDEFINED_VALUE, 'Expected not to be ' + _displayStringForValue(top.JSUNIT_UNDEFINED_VALUE)); -} - -function assertNaN() { - _validateArguments(1, arguments); - var aVar = nonCommentArg(1, 1, arguments); - _assert(commentArg(1, arguments), isNaN(aVar), 'Expected NaN'); -} - -function assertNotNaN() { - _validateArguments(1, arguments); - var aVar = nonCommentArg(1, 1, arguments); - _assert(commentArg(1, arguments), !isNaN(aVar), 'Expected not NaN'); -} - -function assertObjectEquals() { - _validateArguments(2, arguments); - var var1 = nonCommentArg(1, 2, arguments); - var var2 = nonCommentArg(2, 2, arguments); - var type; - var msg = commentArg(2, arguments)?commentArg(2, arguments):''; - var isSame = (var1 === var2); - //shortpath for references to same object - var isEqual = ( (type = _trueTypeOf(var1)) == _trueTypeOf(var2) ); - if (isEqual && !isSame) { - switch (type) { - case 'String': - case 'Number': - isEqual = (var1 == var2); - break; - case 'Boolean': - case 'Date': - isEqual = (var1 === var2); - break; - case 'RegExp': - case 'Function': - isEqual = (var1.toString() === var2.toString()); - break; - default: //Object | Array - var i; - if (isEqual = (var1.length === var2.length)) - for (i in var1) - assertObjectEquals(msg + ' found nested ' + type + '@' + i + '\n', var1[i], var2[i]); - } - _assert(msg, isEqual, 'Expected ' + _displayStringForValue(var1) + ' but was ' + _displayStringForValue(var2)); - } -} - -assertArrayEquals = assertObjectEquals; - -function assertEvaluatesToTrue() { - _validateArguments(1, arguments); - var value = nonCommentArg(1, 1, arguments); - if (!value) - fail(commentArg(1, arguments)); -} - -function assertEvaluatesToFalse() { - _validateArguments(1, arguments); - var value = nonCommentArg(1, 1, arguments); - if (value) - fail(commentArg(1, arguments)); -} - -function assertHTMLEquals() { - _validateArguments(2, arguments); - var var1 = nonCommentArg(1, 2, arguments); - var var2 = nonCommentArg(2, 2, arguments); - var var1Standardized = standardizeHTML(var1); - var var2Standardized = standardizeHTML(var2); - - _assert(commentArg(2, arguments), var1Standardized === var2Standardized, 'Expected ' + _displayStringForValue(var1Standardized) + ' but was ' + _displayStringForValue(var2Standardized)); -} - -function assertHashEquals() { - _validateArguments(2, arguments); - var var1 = nonCommentArg(1, 2, arguments); - var var2 = nonCommentArg(2, 2, arguments); - for (var key in var1) { - assertNotUndefined("Expected hash had key " + key + " that was not found", var2[key]); - assertEquals( - "Value for key " + key + " mismatch - expected = " + var1[key] + ", actual = " + var2[key], - var1[key], var2[key] - ); - } - for (var key in var2) { - assertNotUndefined("Actual hash had key " + key + " that was not expected", var1[key]); - } -} - -function assertRoughlyEquals() { - _validateArguments(3, arguments); - var expected = nonCommentArg(1, 3, arguments); - var actual = nonCommentArg(2, 3, arguments); - var tolerance = nonCommentArg(3, 3, arguments); - assertTrue( - "Expected " + expected + ", but got " + actual + " which was more than " + tolerance + " away", - Math.abs(expected - actual) < tolerance - ); -} - -function assertContains() { - _validateArguments(2, arguments); - var contained = nonCommentArg(1, 2, arguments); - var container = nonCommentArg(2, 2, arguments); - assertTrue( - "Expected '" + container + "' to contain '" + contained + "'", - container.indexOf(contained) != -1 - ); -} - -function standardizeHTML(html) { - var translator = document.createElement("DIV"); - translator.innerHTML = html; - return translator.innerHTML; -} - -function isLoaded() { - return isTestPageLoaded; -} - -function setUp() { -} - -function tearDown() { -} - -function getFunctionName(aFunction) { - var regexpResult = aFunction.toString().match(/function(\s*)(\w*)/); - if (regexpResult && regexpResult.length >= 2 && regexpResult[2]) { - return regexpResult[2]; - } - return 'anonymous'; -} - -function getStackTrace() { - var result = ''; - - if (typeof(arguments.caller) != 'undefined') { // IE, not ECMA - for (var a = arguments.caller; a != null; a = a.caller) { - result += '> ' + getFunctionName(a.callee) + '\n'; - if (a.caller == a) { - result += '*'; - break; - } - } - } - else { // Mozilla, not ECMA - // fake an exception so we can get Mozilla's error stack - var testExcp; - try - { - foo.bar; - } - catch(testExcp) - { - var stack = parseErrorStack(testExcp); - for (var i = 1; i < stack.length; i++) - { - result += '> ' + stack[i] + '\n'; - } - } - } - - return result; -} - -function parseErrorStack(excp) -{ - var stack = []; - var name; - - if (!excp || !excp.stack) - { - return stack; - } - - var stacklist = excp.stack.split('\n'); - - for (var i = 0; i < stacklist.length - 1; i++) - { - var framedata = stacklist[i]; - - name = framedata.match(/^(\w*)/)[1]; - if (!name) { - name = 'anonymous'; - } - - stack[stack.length] = name; - } - // remove top level anonymous functions to match IE - - while (stack.length && stack[stack.length - 1] == 'anonymous') - { - stack.length = stack.length - 1; - } - return stack; -} - -function JsUnitException(comment, message) { - this.isJsUnitException = true; - this.comment = comment; - this.jsUnitMessage = message; - this.stackTrace = getStackTrace(); -} - -function warn() { - if (top.tracer != null) - top.tracer.warn(arguments[0], arguments[1]); -} - -function inform() { - if (top.tracer != null) - top.tracer.inform(arguments[0], arguments[1]); -} - -function info() { - inform(arguments[0], arguments[1]); -} - -function debug() { - if (top.tracer != null) - top.tracer.debug(arguments[0], arguments[1]); -} - -function setJsUnitTracer(aJsUnitTracer) { - top.tracer = aJsUnitTracer; -} - -function trim(str) { - if (str == null) - return null; - - var startingIndex = 0; - var endingIndex = str.length - 1; - - while (str.substring(startingIndex, startingIndex + 1) == ' ') - startingIndex++; - - while (str.substring(endingIndex, endingIndex + 1) == ' ') - endingIndex--; - - if (endingIndex < startingIndex) - return ''; - - return str.substring(startingIndex, endingIndex + 1); -} - -function isBlank(str) { - return trim(str) == ''; -} - -// the functions push(anArray, anObject) and pop(anArray) -// exist because the JavaScript Array.push(anObject) and Array.pop() -// functions are not available in IE 5.0 - -function push(anArray, anObject) { - anArray[anArray.length] = anObject; -} -function pop(anArray) { - if (anArray.length >= 1) { - delete anArray[anArray.length - 1]; - anArray.length--; - } -} - -function jsUnitGetParm(name) -{ - if (typeof(top.jsUnitParmHash[name]) != 'undefined') - { - return top.jsUnitParmHash[name]; - } - return null; -} - -if (top && typeof(top.xbDEBUG) != 'undefined' && top.xbDEBUG.on && top.testManager) -{ - top.xbDebugTraceObject('top.testManager.containerTestFrame', 'JSUnitException'); - // asserts - top.xbDebugTraceFunction('top.testManager.containerTestFrame', '_displayStringForValue'); - top.xbDebugTraceFunction('top.testManager.containerTestFrame', 'error'); - top.xbDebugTraceFunction('top.testManager.containerTestFrame', 'argumentsIncludeComments'); - top.xbDebugTraceFunction('top.testManager.containerTestFrame', 'commentArg'); - top.xbDebugTraceFunction('top.testManager.containerTestFrame', 'nonCommentArg'); - top.xbDebugTraceFunction('top.testManager.containerTestFrame', '_validateArguments'); - top.xbDebugTraceFunction('top.testManager.containerTestFrame', '_assert'); - top.xbDebugTraceFunction('top.testManager.containerTestFrame', 'assert'); - top.xbDebugTraceFunction('top.testManager.containerTestFrame', 'assertTrue'); - top.xbDebugTraceFunction('top.testManager.containerTestFrame', 'assertEquals'); - top.xbDebugTraceFunction('top.testManager.containerTestFrame', 'assertNotEquals'); - top.xbDebugTraceFunction('top.testManager.containerTestFrame', 'assertNull'); - top.xbDebugTraceFunction('top.testManager.containerTestFrame', 'assertNotNull'); - top.xbDebugTraceFunction('top.testManager.containerTestFrame', 'assertUndefined'); - top.xbDebugTraceFunction('top.testManager.containerTestFrame', 'assertNotUndefined'); - top.xbDebugTraceFunction('top.testManager.containerTestFrame', 'assertNaN'); - top.xbDebugTraceFunction('top.testManager.containerTestFrame', 'assertNotNaN'); - top.xbDebugTraceFunction('top.testManager.containerTestFrame', 'isLoaded'); - top.xbDebugTraceFunction('top.testManager.containerTestFrame', 'setUp'); - top.xbDebugTraceFunction('top.testManager.containerTestFrame', 'tearDown'); - top.xbDebugTraceFunction('top.testManager.containerTestFrame', 'getFunctionName'); - top.xbDebugTraceFunction('top.testManager.containerTestFrame', 'getStackTrace'); - top.xbDebugTraceFunction('top.testManager.containerTestFrame', 'warn'); - top.xbDebugTraceFunction('top.testManager.containerTestFrame', 'inform'); - top.xbDebugTraceFunction('top.testManager.containerTestFrame', 'debug'); - top.xbDebugTraceFunction('top.testManager.containerTestFrame', 'setJsUnitTracer'); - top.xbDebugTraceFunction('top.testManager.containerTestFrame', 'trim'); - top.xbDebugTraceFunction('top.testManager.containerTestFrame', 'isBlank'); - top.xbDebugTraceFunction('top.testManager.containerTestFrame', 'newOnLoadEvent'); - top.xbDebugTraceFunction('top.testManager.containerTestFrame', 'push'); - top.xbDebugTraceFunction('top.testManager.containerTestFrame', 'pop'); -} - -function newOnLoadEvent() { - isTestPageLoaded = true; -} - -function jsUnitSetOnLoad(windowRef, onloadHandler) -{ - var isKonqueror = navigator.userAgent.indexOf('Konqueror/') != -1 || - navigator.userAgent.indexOf('Safari/') != -1; - - if (typeof(windowRef.attachEvent) != 'undefined') { - // Internet Explorer, Opera - windowRef.attachEvent("onload", onloadHandler); - } else if (typeof(windowRef.addEventListener) != 'undefined' && !isKonqueror) { - // Mozilla, Konqueror - // exclude Konqueror due to load issues - windowRef.addEventListener("load", onloadHandler, false); - } else if (typeof(windowRef.document.addEventListener) != 'undefined' && !isKonqueror) { - // DOM 2 Events - // exclude Mozilla, Konqueror due to load issues - windowRef.document.addEventListener("load", onloadHandler, false); - } else if (typeof(windowRef.onload) != 'undefined' && windowRef.onload) { - windowRef.jsunit_original_onload = windowRef.onload; - windowRef.onload = function() { - windowRef.jsunit_original_onload(); - onloadHandler(); - }; - } else { - // browsers that do not support windowRef.attachEvent or - // windowRef.addEventListener will override a page's own onload event - windowRef.onload = onloadHandler; - } -} - -jsUnitSetOnLoad(window, newOnLoadEvent); \ No newline at end of file diff --git a/static/jsunit/app/jsUnitMockTimeout.js b/static/jsunit/app/jsUnitMockTimeout.js deleted file mode 100644 index 99a4bf1..0000000 --- a/static/jsunit/app/jsUnitMockTimeout.js +++ /dev/null @@ -1,81 +0,0 @@ -// Mock setTimeout, clearTimeout -// Contributed by Pivotal Computer Systems, www.pivotalsf.com - -var Clock = { - timeoutsMade: 0, - scheduledFunctions: {}, - nowMillis: 0, - reset: function() { - this.scheduledFunctions = {}; - this.nowMillis = 0; - this.timeoutsMade = 0; - }, - tick: function(millis) { - var oldMillis = this.nowMillis; - var newMillis = oldMillis + millis; - this.runFunctionsWithinRange(oldMillis, newMillis); - this.nowMillis = newMillis; - }, - runFunctionsWithinRange: function(oldMillis, nowMillis) { - var scheduledFunc; - var funcsToRun = []; - for (var timeoutKey in this.scheduledFunctions) { - scheduledFunc = this.scheduledFunctions[timeoutKey]; - if (scheduledFunc != undefined && - scheduledFunc.runAtMillis >= oldMillis && - scheduledFunc.runAtMillis <= nowMillis) { - funcsToRun.push(scheduledFunc); - this.scheduledFunctions[timeoutKey] = undefined; - } - } - - if (funcsToRun.length > 0) { - funcsToRun.sort(function(a, b) { - return a.runAtMillis - b.runAtMillis; - }); - for (var i = 0; i < funcsToRun.length; ++i) { - try { - this.nowMillis = funcsToRun[i].runAtMillis; - funcsToRun[i].funcToCall(); - if (funcsToRun[i].recurring) { - Clock.scheduleFunction(funcsToRun[i].timeoutKey, - funcsToRun[i].funcToCall, - funcsToRun[i].millis, - true); - } - } catch(e) { - } - } - this.runFunctionsWithinRange(oldMillis, nowMillis); - } - }, - scheduleFunction: function(timeoutKey, funcToCall, millis, recurring) { - Clock.scheduledFunctions[timeoutKey] = { - runAtMillis: Clock.nowMillis + millis, - funcToCall: funcToCall, - recurring: recurring, - timeoutKey: timeoutKey, - millis: millis - }; - } -}; - -function setTimeout(funcToCall, millis) { - Clock.timeoutsMade = Clock.timeoutsMade + 1; - Clock.scheduleFunction(Clock.timeoutsMade, funcToCall, millis, false); - return Clock.timeoutsMade; -} - -function setInterval(funcToCall, millis) { - Clock.timeoutsMade = Clock.timeoutsMade + 1; - Clock.scheduleFunction(Clock.timeoutsMade, funcToCall, millis, true); - return Clock.timeoutsMade; -} - -function clearTimeout(timeoutKey) { - Clock.scheduledFunctions[timeoutKey] = undefined; -} - -function clearInterval(timeoutKey) { - Clock.scheduledFunctions[timeoutKey] = undefined; -} diff --git a/static/jsunit/app/jsUnitTestManager.js b/static/jsunit/app/jsUnitTestManager.js deleted file mode 100644 index 7d5bf0f..0000000 --- a/static/jsunit/app/jsUnitTestManager.js +++ /dev/null @@ -1,705 +0,0 @@ -function jsUnitTestManager() { - this._windowForAllProblemMessages = null; - - this.container = top.frames.testContainer - this.documentLoader = top.frames.documentLoader; - this.mainFrame = top.frames.mainFrame; - - this.containerController = this.container.frames.testContainerController; - this.containerTestFrame = this.container.frames.testFrame; - - var mainData = this.mainFrame.frames.mainData; - - // form elements on mainData frame - this.testFileName = mainData.document.testRunnerForm.testFileName; - this.runButton = mainData.document.testRunnerForm.runButton; - this.traceLevel = mainData.document.testRunnerForm.traceLevel; - this.closeTraceWindowOnNewRun = mainData.document.testRunnerForm.closeTraceWindowOnNewRun; - this.timeout = mainData.document.testRunnerForm.timeout; - this.setUpPageTimeout = mainData.document.testRunnerForm.setUpPageTimeout; - - // image output - this.progressBar = this.mainFrame.frames.mainProgress.document.progress; - - this.problemsListField = this.mainFrame.frames.mainErrors.document.testRunnerForm.problemsList; - this.testCaseResultsField = this.mainFrame.frames.mainResults.document.resultsForm.testCases; - this.resultsTimeField = this.mainFrame.frames.mainResults.document.resultsForm.time; - - // 'layer' output frames - this.uiFrames = new Object(); - this.uiFrames.mainStatus = this.mainFrame.frames.mainStatus; - - var mainCounts = this.mainFrame.frames.mainCounts; - - this.uiFrames.mainCountsErrors = mainCounts.frames.mainCountsErrors; - this.uiFrames.mainCountsFailures = mainCounts.frames.mainCountsFailures; - this.uiFrames.mainCountsRuns = mainCounts.frames.mainCountsRuns; - this._baseURL = ""; - - this.setup(); -} - -// seconds to wait for each test page to load -jsUnitTestManager.TESTPAGE_WAIT_SEC = 120; -jsUnitTestManager.TIMEOUT_LENGTH = 20; - -// seconds to wait for setUpPage to complete -jsUnitTestManager.SETUPPAGE_TIMEOUT = 120; - -// milliseconds to wait between polls on setUpPages -jsUnitTestManager.SETUPPAGE_INTERVAL = 100; - -jsUnitTestManager.RESTORED_HTML_DIV_ID = "jsUnitRestoredHTML"; - -jsUnitTestManager.prototype.setup = function () { - this.totalCount = 0; - this.errorCount = 0; - this.failureCount = 0; - this._suiteStack = Array(); - - var initialSuite = new top.jsUnitTestSuite(); - push(this._suiteStack, initialSuite); -} - -jsUnitTestManager.prototype.start = function () { - this._baseURL = this.resolveUserEnteredTestFileName(); - var firstQuery = this._baseURL.indexOf("?"); - if (firstQuery >= 0) { - this._baseURL = this._baseURL.substring(0, firstQuery); - } - var lastSlash = this._baseURL.lastIndexOf("/"); - var lastRevSlash = this._baseURL.lastIndexOf("\\"); - if (lastRevSlash > lastSlash) { - lastSlash = lastRevSlash; - } - if (lastSlash > 0) { - this._baseURL = this._baseURL.substring(0, lastSlash + 1); - } - - this._timeRunStarted = new Date(); - this.initialize(); - setTimeout('top.testManager._nextPage();', jsUnitTestManager.TIMEOUT_LENGTH); -} - -jsUnitTestManager.prototype.getBaseURL = function () { - return this._baseURL; -} - -jsUnitTestManager.prototype.doneLoadingPage = function (pageName) { - //this.containerTestFrame.setTracer(top.tracer); - this._testFileName = pageName; - if (this.isTestPageSuite()) - this._handleNewSuite(); - else - { - this._testIndex = 0; - this._testsInPage = this.getTestFunctionNames(); - this._numberOfTestsInPage = this._testsInPage.length; - this._runTest(); - } -} - -jsUnitTestManager.prototype._handleNewSuite = function () { - var allegedSuite = this.containerTestFrame.suite(); - if (allegedSuite.isjsUnitTestSuite) { - var newSuite = allegedSuite.clone(); - if (newSuite.containsTestPages()) - push(this._suiteStack, newSuite); - this._nextPage(); - } - else { - this.fatalError('Invalid test suite in file ' + this._testFileName); - this.abort(); - } -} - -jsUnitTestManager.prototype._runTest = function () { - if (this._testIndex + 1 > this._numberOfTestsInPage) - { - // execute tearDownPage *synchronously* - // (unlike setUpPage which is asynchronous) - if (typeof this.containerTestFrame.tearDownPage == 'function') { - this.containerTestFrame.tearDownPage(); - } - - this._nextPage(); - return; - } - - if (this._testIndex == 0) { - this.storeRestoredHTML(); - if (typeof(this.containerTestFrame.setUpPage) == 'function') { - // first test for this page and a setUpPage is defined - if (typeof(this.containerTestFrame.setUpPageStatus) == 'undefined') { - // setUpPage() not called yet, so call it - this.containerTestFrame.setUpPageStatus = false; - this.containerTestFrame.startTime = new Date(); - this.containerTestFrame.setUpPage(); - // try test again later - setTimeout('top.testManager._runTest()', jsUnitTestManager.SETUPPAGE_INTERVAL); - return; - } - - if (this.containerTestFrame.setUpPageStatus != 'complete') { - top.status = 'setUpPage not completed... ' + this.containerTestFrame.setUpPageStatus + ' ' + (new Date()); - if ((new Date() - this.containerTestFrame.startTime) / 1000 > this.getsetUpPageTimeout()) { - this.fatalError('setUpPage timed out without completing.'); - if (!this.userConfirm('Retry Test Run?')) { - this.abort(); - return; - } - this.containerTestFrame.startTime = (new Date()); - } - // try test again later - setTimeout('top.testManager._runTest()', jsUnitTestManager.SETUPPAGE_INTERVAL); - return; - } - } - } - - top.status = ''; - // either not first test, or no setUpPage defined, or setUpPage completed - this.executeTestFunction(this._testsInPage[this._testIndex]); - this.totalCount++; - this.updateProgressIndicators(); - this._testIndex++; - setTimeout('top.testManager._runTest()', jsUnitTestManager.TIMEOUT_LENGTH); -} - -jsUnitTestManager.prototype._done = function () { - var secondsSinceRunBegan = (new Date() - this._timeRunStarted) / 1000; - this.setStatus('Done (' + secondsSinceRunBegan + ' seconds)'); - this._cleanUp(); - if (top.shouldSubmitResults()) { - this.resultsTimeField.value = secondsSinceRunBegan; - top.submitResults(); - } -} - -jsUnitTestManager.prototype._nextPage = function () { - this._restoredHTML = null; - if (this._currentSuite().hasMorePages()) { - this.loadPage(this._currentSuite().nextPage()); - } - else { - pop(this._suiteStack); - if (this._currentSuite() == null) - this._done(); - else - this._nextPage(); - } -} - -jsUnitTestManager.prototype._currentSuite = function () { - var suite = null; - - if (this._suiteStack && this._suiteStack.length > 0) - suite = this._suiteStack[this._suiteStack.length - 1]; - - return suite; -} - -jsUnitTestManager.prototype.calculateProgressBarProportion = function () { - if (this.totalCount == 0) - return 0; - var currentDivisor = 1; - var result = 0; - - for (var i = 0; i < this._suiteStack.length; i++) { - var aSuite = this._suiteStack[i]; - currentDivisor *= aSuite.testPages.length; - result += (aSuite.pageIndex - 1) / currentDivisor; - } - result += (this._testIndex + 1) / (this._numberOfTestsInPage * currentDivisor); - return result; -} - -jsUnitTestManager.prototype._cleanUp = function () { - this.containerController.setTestPage('./app/emptyPage.html'); - this.finalize(); - top.tracer.finalize(); -} - -jsUnitTestManager.prototype.abort = function () { - this.setStatus('Aborted'); - this._cleanUp(); -} - -jsUnitTestManager.prototype.getTimeout = function () { - var result = jsUnitTestManager.TESTPAGE_WAIT_SEC; - try { - result = eval(this.timeout.value); - } - catch (e) { - } - return result; -} - -jsUnitTestManager.prototype.getsetUpPageTimeout = function () { - var result = jsUnitTestManager.SETUPPAGE_TIMEOUT; - try { - result = eval(this.setUpPageTimeout.value); - } - catch (e) { - } - return result; -} - -jsUnitTestManager.prototype.isTestPageSuite = function () { - var result = false; - if (typeof(this.containerTestFrame.suite) == 'function') - { - result = true; - } - return result; -} - -jsUnitTestManager.prototype.getTestFunctionNames = function () { - var testFrame = this.containerTestFrame; - var testFunctionNames = new Array(); - var i; - - if (testFrame && typeof(testFrame.exposeTestFunctionNames) == 'function') - return testFrame.exposeTestFunctionNames(); - - if (testFrame && - testFrame.document && - typeof(testFrame.document.scripts) != 'undefined' && - testFrame.document.scripts.length > 0) { // IE5 and up - var scriptsInTestFrame = testFrame.document.scripts; - - for (i = 0; i < scriptsInTestFrame.length; i++) { - var someNames = this._extractTestFunctionNamesFromScript(scriptsInTestFrame[i]); - if (someNames) - testFunctionNames = testFunctionNames.concat(someNames); - } - } - else { - for (i in testFrame) { - if (i.substring(0, 4) == 'test' && typeof(testFrame[i]) == 'function') - push(testFunctionNames, i); - } - } - return testFunctionNames; -} - -jsUnitTestManager.prototype._extractTestFunctionNamesFromScript = function (aScript) { - var result; - var remainingScriptToInspect = aScript.text; - var currentIndex = this._indexOfTestFunctionIn(remainingScriptToInspect); - while (currentIndex != -1) { - if (!result) - result = new Array(); - - var fragment = remainingScriptToInspect.substring(currentIndex, remainingScriptToInspect.length); - result = result.concat(fragment.substring('function '.length, fragment.indexOf('('))); - remainingScriptToInspect = remainingScriptToInspect.substring(currentIndex + 12, remainingScriptToInspect.length); - currentIndex = this._indexOfTestFunctionIn(remainingScriptToInspect); - } - return result; -} - -jsUnitTestManager.prototype._indexOfTestFunctionIn = function (string) { - return string.indexOf('function test'); -} - -jsUnitTestManager.prototype.loadPage = function (testFileName) { - this._testFileName = testFileName; - this._loadAttemptStartTime = new Date(); - this.setStatus('Opening Test Page "' + this._testFileName + '"'); - this.containerController.setTestPage(this._testFileName); - this._callBackWhenPageIsLoaded(); -} - -jsUnitTestManager.prototype._callBackWhenPageIsLoaded = function () { - if ((new Date() - this._loadAttemptStartTime) / 1000 > this.getTimeout()) { - this.fatalError('Reading Test Page ' + this._testFileName + ' timed out.\nMake sure that the file exists and is a Test Page.'); - if (this.userConfirm('Retry Test Run?')) { - this.loadPage(this._testFileName); - return; - } else { - this.abort(); - return; - } - } - if (!this._isTestFrameLoaded()) { - setTimeout('top.testManager._callBackWhenPageIsLoaded();', jsUnitTestManager.TIMEOUT_LENGTH); - return; - } - this.doneLoadingPage(this._testFileName); -} - -jsUnitTestManager.prototype._isTestFrameLoaded = function () { - try { - return this.containerController.isPageLoaded(); - } - catch (e) { - } - return false; -} - -jsUnitTestManager.prototype.executeTestFunction = function (functionName) { - this._testFunctionName = functionName; - this.setStatus('Running test "' + this._testFunctionName + '"'); - var excep = null; - var timeBefore = new Date(); - try { - if (this._restoredHTML) - top.testContainer.testFrame.document.getElementById(jsUnitTestManager.RESTORED_HTML_DIV_ID).innerHTML = this._restoredHTML; - if (this.containerTestFrame.setUp !== JSUNIT_UNDEFINED_VALUE) - this.containerTestFrame.setUp(); - this.containerTestFrame[this._testFunctionName](); - } - catch (e1) { - excep = e1; - } - finally { - try { - if (this.containerTestFrame.tearDown !== JSUNIT_UNDEFINED_VALUE) - this.containerTestFrame.tearDown(); - } - catch (e2) { - //Unlike JUnit, only assign a tearDown exception to excep if there is not already an exception from the test body - if (excep == null) - excep = e2; - } - } - var timeTaken = (new Date() - timeBefore) / 1000; - if (excep != null) - this._handleTestException(excep); - var serializedTestCaseString = this._currentTestFunctionNameWithTestPageName(true) + "|" + timeTaken + "|"; - if (excep == null) - serializedTestCaseString += "S||"; - else { - if (typeof(excep.isJsUnitException) != 'undefined' && excep.isJsUnitException) - serializedTestCaseString += "F|"; - else { - serializedTestCaseString += "E|"; - } - serializedTestCaseString += this._problemDetailMessageFor(excep); - } - this._addOption(this.testCaseResultsField, - serializedTestCaseString, - serializedTestCaseString); -} - -jsUnitTestManager.prototype._currentTestFunctionNameWithTestPageName = function(useFullyQualifiedTestPageName) { - var testURL = this.containerTestFrame.location.href; - var testQuery = testURL.indexOf("?"); - if (testQuery >= 0) { - testURL = testURL.substring(0, testQuery); - } - if (!useFullyQualifiedTestPageName) { - if (testURL.substring(0, this._baseURL.length) == this._baseURL) - testURL = testURL.substring(this._baseURL.length); - } - return testURL + ':' + this._testFunctionName; -} - -jsUnitTestManager.prototype._addOption = function(listField, problemValue, problemMessage) { - if (typeof(listField.ownerDocument) != 'undefined' - && typeof(listField.ownerDocument.createElement) != 'undefined') { - // DOM Level 2 HTML method. - // this is required for Opera 7 since appending to the end of the - // options array does not work, and adding an Option created by new Option() - // and appended by listField.options.add() fails due to WRONG_DOCUMENT_ERR - var problemDocument = listField.ownerDocument; - var errOption = problemDocument.createElement('option'); - errOption.setAttribute('value', problemValue); - errOption.appendChild(problemDocument.createTextNode(problemMessage)); - listField.appendChild(errOption); - } - else { - // new Option() is DOM 0 - errOption = new Option(problemMessage, problemValue); - if (typeof(listField.add) != 'undefined') { - // DOM 2 HTML - listField.add(errOption, null); - } - else if (typeof(listField.options.add) != 'undefined') { - // DOM 0 - listField.options.add(errOption, null); - } - else { - // DOM 0 - listField.options[listField.length] = errOption; - } - } -} - -jsUnitTestManager.prototype._handleTestException = function (excep) { - var problemMessage = this._currentTestFunctionNameWithTestPageName(false) + ' '; - var errOption; - if (typeof(excep.isJsUnitException) == 'undefined' || !excep.isJsUnitException) { - problemMessage += 'had an error'; - this.errorCount++; - } - else { - problemMessage += 'failed'; - this.failureCount++; - } - var listField = this.problemsListField; - this._addOption(listField, - this._problemDetailMessageFor(excep), - problemMessage); -} - -jsUnitTestManager.prototype._problemDetailMessageFor = function (excep) { - var result = null; - if (typeof(excep.isJsUnitException) != 'undefined' && excep.isJsUnitException) { - result = ''; - if (excep.comment != null) - result += ('"' + excep.comment + '"\n'); - - result += excep.jsUnitMessage; - - if (excep.stackTrace) - result += '\n\nStack trace follows:\n' + excep.stackTrace; - } - else { - result = 'Error message is:\n"'; - result += - (typeof(excep.description) == 'undefined') ? - excep : - excep.description; - result += '"'; - if (typeof(excep.stack) != 'undefined') // Mozilla only - result += '\n\nStack trace follows:\n' + excep.stack; - } - return result; -} - -jsUnitTestManager.prototype._setTextOnLayer = function (layerName, str) { - try { - var content; - if (content = this.uiFrames[layerName].document.getElementById('content')) - content.innerHTML = str; - else - throw 'No content div found.'; - } - catch (e) { - var html = ''; - html += ''; - html += '<\/head>'; - html += '
'; - html += str; - html += '<\/div><\/body>'; - html += '<\/html>'; - this.uiFrames[layerName].document.write(html); - this.uiFrames[layerName].document.close(); - } -} - -jsUnitTestManager.prototype.setStatus = function (str) { - this._setTextOnLayer('mainStatus', 'Status:<\/b> ' + str); -} - -jsUnitTestManager.prototype._setErrors = function (n) { - this._setTextOnLayer('mainCountsErrors', 'Errors: <\/b>' + n); -} - -jsUnitTestManager.prototype._setFailures = function (n) { - this._setTextOnLayer('mainCountsFailures', 'Failures:<\/b> ' + n); -} - -jsUnitTestManager.prototype._setTotal = function (n) { - this._setTextOnLayer('mainCountsRuns', 'Runs:<\/b> ' + n); -} - -jsUnitTestManager.prototype._setProgressBarImage = function (imgName) { - this.progressBar.src = imgName; -} - -jsUnitTestManager.prototype._setProgressBarWidth = function (w) { - this.progressBar.width = w; -} - -jsUnitTestManager.prototype.updateProgressIndicators = function () { - this._setTotal(this.totalCount); - this._setErrors(this.errorCount); - this._setFailures(this.failureCount); - this._setProgressBarWidth(300 * this.calculateProgressBarProportion()); - - if (this.errorCount > 0 || this.failureCount > 0) - this._setProgressBarImage('../images/red.gif'); - else - this._setProgressBarImage('../images/green.gif'); -} - -jsUnitTestManager.prototype.showMessageForSelectedProblemTest = function () { - var problemTestIndex = this.problemsListField.selectedIndex; - if (problemTestIndex != -1) - this.fatalError(this.problemsListField[problemTestIndex].value); -} - -jsUnitTestManager.prototype.showMessagesForAllProblemTests = function () { - if (this.problemsListField.length == 0) - return; - - try { - if (this._windowForAllProblemMessages && !this._windowForAllProblemMessages.closed) - this._windowForAllProblemMessages.close(); - } - catch(e) { - } - - this._windowForAllProblemMessages = window.open('', '', 'width=600, height=350,status=no,resizable=yes,scrollbars=yes'); - var resDoc = this._windowForAllProblemMessages.document; - resDoc.write('Tests with problems - JsUnit<\/title><head><body>'); - resDoc.write('<p class="jsUnitSubHeading">Tests with problems (' + this.problemsListField.length + ' total) - JsUnit<\/p>'); - resDoc.write('<p class="jsUnitSubSubHeading"><i>Running on ' + navigator.userAgent + '</i></p>'); - for (var i = 0; i < this.problemsListField.length; i++) - { - resDoc.write('<p class="jsUnitDefault">'); - resDoc.write('<b>' + (i + 1) + '. '); - resDoc.write(this.problemsListField[i].text); - resDoc.write('<\/b><\/p><p><pre>'); - resDoc.write(this._makeHTMLSafe(this.problemsListField[i].value)); - resDoc.write('<\/pre><\/p>'); - } - - resDoc.write('<\/body><\/html>'); - resDoc.close(); -} - -jsUnitTestManager.prototype._makeHTMLSafe = function (string) { - string = string.replace(/&/g, '&'); - string = string.replace(/</g, '<'); - string = string.replace(/>/g, '>'); - return string; -} - -jsUnitTestManager.prototype._clearProblemsList = function () { - var listField = this.problemsListField; - var initialLength = listField.options.length; - - for (var i = 0; i < initialLength; i++) - listField.remove(0); -} - -jsUnitTestManager.prototype.initialize = function () { - this.setStatus('Initializing...'); - this._setRunButtonEnabled(false); - this._clearProblemsList(); - this.updateProgressIndicators(); - this.setStatus('Done initializing'); -} - -jsUnitTestManager.prototype.finalize = function () { - this._setRunButtonEnabled(true); -} - -jsUnitTestManager.prototype._setRunButtonEnabled = function (b) { - this.runButton.disabled = !b; -} - -jsUnitTestManager.prototype.getTestFileName = function () { - var rawEnteredFileName = this.testFileName.value; - var result = rawEnteredFileName; - - while (result.indexOf('\\') != -1) - result = result.replace('\\', '/'); - - return result; -} - -jsUnitTestManager.prototype.getTestFunctionName = function () { - return this._testFunctionName; -} - -jsUnitTestManager.prototype.resolveUserEnteredTestFileName = function (rawText) { - var userEnteredTestFileName = top.testManager.getTestFileName(); - - // only test for file:// since Opera uses a different format - if (userEnteredTestFileName.indexOf('http://') == 0 || userEnteredTestFileName.indexOf('https://') == 0 || userEnteredTestFileName.indexOf('file://') == 0) - return userEnteredTestFileName; - - return getTestFileProtocol() + this.getTestFileName(); -} - -jsUnitTestManager.prototype.storeRestoredHTML = function () { - if (document.getElementById && top.testContainer.testFrame.document.getElementById(jsUnitTestManager.RESTORED_HTML_DIV_ID)) - this._restoredHTML = top.testContainer.testFrame.document.getElementById(jsUnitTestManager.RESTORED_HTML_DIV_ID).innerHTML; -} - -jsUnitTestManager.prototype.fatalError = function(aMessage) { - if (top.shouldSubmitResults()) - this.setStatus(aMessage); - else - alert(aMessage); -} - -jsUnitTestManager.prototype.userConfirm = function(aMessage) { - if (top.shouldSubmitResults()) - return false; - else - return confirm(aMessage); -} - -function getTestFileProtocol() { - return getDocumentProtocol(); -} - -function getDocumentProtocol() { - var protocol = top.document.location.protocol; - - if (protocol == "file:") - return "file:///"; - - if (protocol == "http:") - return "http://"; - - if (protocol == 'https:') - return 'https://'; - - if (protocol == "chrome:") - return "chrome://"; - - return null; -} - -function browserSupportsReadingFullPathFromFileField() { - return !isOpera() && !isIE7(); -} - -function isOpera() { - return navigator.userAgent.toLowerCase().indexOf("opera") != -1; -} - -function isIE7() { - return navigator.userAgent.toLowerCase().indexOf("msie 7") != -1; -} - -function isBeingRunOverHTTP() { - return getDocumentProtocol() == "http://"; -} - -function getWebserver() { - if (isBeingRunOverHTTP()) { - var myUrl = location.href; - var myUrlWithProtocolStripped = myUrl.substring(myUrl.indexOf("/") + 2); - return myUrlWithProtocolStripped.substring(0, myUrlWithProtocolStripped.indexOf("/")); - } - return null; -} - -// the functions push(anArray, anObject) and pop(anArray) -// exist because the JavaScript Array.push(anObject) and Array.pop() -// functions are not available in IE 5.0 - -function push(anArray, anObject) { - anArray[anArray.length] = anObject; -} - -function pop(anArray) { - if (anArray.length >= 1) { - delete anArray[anArray.length - 1]; - anArray.length--; - } -} - -if (xbDEBUG.on) { - xbDebugTraceObject('window', 'jsUnitTestManager'); - xbDebugTraceFunction('window', 'getTestFileProtocol'); - xbDebugTraceFunction('window', 'getDocumentProtocol'); -} diff --git a/static/jsunit/app/jsUnitTestSuite.js b/static/jsunit/app/jsUnitTestSuite.js deleted file mode 100644 index 3f3eb8c..0000000 --- a/static/jsunit/app/jsUnitTestSuite.js +++ /dev/null @@ -1,44 +0,0 @@ -function jsUnitTestSuite() { - this.isjsUnitTestSuite = true; - this.testPages = Array(); - this.pageIndex = 0; -} - -jsUnitTestSuite.prototype.addTestPage = function (pageName) -{ - this.testPages[this.testPages.length] = pageName; -} - -jsUnitTestSuite.prototype.addTestSuite = function (suite) -{ - for (var i = 0; i < suite.testPages.length; i++) - this.addTestPage(suite.testPages[i]); -} - -jsUnitTestSuite.prototype.containsTestPages = function () -{ - return this.testPages.length > 0; -} - -jsUnitTestSuite.prototype.nextPage = function () -{ - return this.testPages[this.pageIndex++]; -} - -jsUnitTestSuite.prototype.hasMorePages = function () -{ - return this.pageIndex < this.testPages.length; -} - -jsUnitTestSuite.prototype.clone = function () -{ - var clone = new jsUnitTestSuite(); - clone.testPages = this.testPages; - return clone; -} - -if (xbDEBUG.on) -{ - xbDebugTraceObject('window', 'jsUnitTestSuite'); -} - diff --git a/static/jsunit/app/jsUnitTracer.js b/static/jsunit/app/jsUnitTracer.js deleted file mode 100644 index b120e39..0000000 --- a/static/jsunit/app/jsUnitTracer.js +++ /dev/null @@ -1,102 +0,0 @@ -var TRACE_LEVEL_NONE = new JsUnitTraceLevel(0, null); -var TRACE_LEVEL_WARNING = new JsUnitTraceLevel(1, "#FF0000"); -var TRACE_LEVEL_INFO = new JsUnitTraceLevel(2, "#009966"); -var TRACE_LEVEL_DEBUG = new JsUnitTraceLevel(3, "#0000FF"); - -function JsUnitTracer(testManager) { - this._testManager = testManager; - this._traceWindow = null; - this.popupWindowsBlocked = false; -} - -JsUnitTracer.prototype.initialize = function() { - if (this._traceWindow != null && top.testManager.closeTraceWindowOnNewRun.checked) - this._traceWindow.close(); - this._traceWindow = null; -} - -JsUnitTracer.prototype.finalize = function() { - if (this._traceWindow != null) { - this._traceWindow.document.write('<\/body>\n<\/html>'); - this._traceWindow.document.close(); - } -} - -JsUnitTracer.prototype.warn = function() { - this._trace(arguments[0], arguments[1], TRACE_LEVEL_WARNING); -} - -JsUnitTracer.prototype.inform = function() { - this._trace(arguments[0], arguments[1], TRACE_LEVEL_INFO); -} - -JsUnitTracer.prototype.debug = function() { - this._trace(arguments[0], arguments[1], TRACE_LEVEL_DEBUG); -} - -JsUnitTracer.prototype._trace = function(message, value, traceLevel) { - if (!top.shouldSubmitResults() && this._getChosenTraceLevel().matches(traceLevel)) { - var traceString = message; - if (value) - traceString += ': ' + value; - var prefix = this._testManager.getTestFileName() + ":" + - this._testManager.getTestFunctionName() + " - "; - this._writeToTraceWindow(prefix, traceString, traceLevel); - } -} - -JsUnitTracer.prototype._getChosenTraceLevel = function() { - var levelNumber = eval(top.testManager.traceLevel.value); - return traceLevelByLevelNumber(levelNumber); -} - -JsUnitTracer.prototype._writeToTraceWindow = function(prefix, traceString, traceLevel) { - var htmlToAppend = '<p class="jsUnitDefault">' + prefix + '<font color="' + traceLevel.getColor() + '">' + traceString + '</font><\/p>\n'; - this._getTraceWindow().document.write(htmlToAppend); -} - -JsUnitTracer.prototype._getTraceWindow = function() { - if (this._traceWindow == null && !top.shouldSubmitResults() && !this.popupWindowsBlocked) { - this._traceWindow = window.open('', '', 'width=600, height=350,status=no,resizable=yes,scrollbars=yes'); - if (!this._traceWindow) - this.popupWindowsBlocked = true; - else { - var resDoc = this._traceWindow.document; - resDoc.write('<html>\n<head>\n<link rel="stylesheet" href="css/jsUnitStyle.css">\n<title>Tracing - JsUnit<\/title>\n<head>\n<body>'); - resDoc.write('<h2>Tracing - JsUnit<\/h2>\n'); - resDoc.write('<p class="jsUnitDefault"><i>(Traces are color coded: '); - resDoc.write('<font color="' + TRACE_LEVEL_WARNING.getColor() + '">Warning</font> - '); - resDoc.write('<font color="' + TRACE_LEVEL_INFO.getColor() + '">Information</font> - '); - resDoc.write('<font color="' + TRACE_LEVEL_DEBUG.getColor() + '">Debug</font>'); - resDoc.write(')</i></p>'); - } - } - return this._traceWindow; -} - -if (xbDEBUG.on) { - xbDebugTraceObject('window', 'JsUnitTracer'); -} - -function JsUnitTraceLevel(levelNumber, color) { - this._levelNumber = levelNumber; - this._color = color; -} - -JsUnitTraceLevel.prototype.matches = function(anotherTraceLevel) { - return this._levelNumber >= anotherTraceLevel._levelNumber; -} - -JsUnitTraceLevel.prototype.getColor = function() { - return this._color; -} - -function traceLevelByLevelNumber(levelNumber) { - switch (levelNumber) { - case 0: return TRACE_LEVEL_NONE; - case 1: return TRACE_LEVEL_WARNING; - case 2: return TRACE_LEVEL_INFO; - case 3: return TRACE_LEVEL_DEBUG; - } - return null; -} \ No newline at end of file diff --git a/static/jsunit/app/jsUnitVersionCheck.js b/static/jsunit/app/jsUnitVersionCheck.js deleted file mode 100644 index 41c8862..0000000 --- a/static/jsunit/app/jsUnitVersionCheck.js +++ /dev/null @@ -1,59 +0,0 @@ -var versionRequest; - -function isOutOfDate(newVersionNumber) { - return JSUNIT_VERSION < newVersionNumber; -} - -function sendRequestForLatestVersion(url) { - versionRequest = createXmlHttpRequest(); - if (versionRequest) { - versionRequest.onreadystatechange = requestStateChanged; - versionRequest.open("GET", url, true); - versionRequest.send(null); - } -} - -function createXmlHttpRequest() { - if (window.XMLHttpRequest) - return new XMLHttpRequest(); - else if (window.ActiveXObject) - return new ActiveXObject("Microsoft.XMLHTTP"); -} - -function requestStateChanged() { - if (versionRequest && versionRequest.readyState == 4) { - if (versionRequest.status == 200) { - var latestVersion = versionRequest.responseText; - if (isOutOfDate(latestVersion)) - versionNotLatest(latestVersion); - else - versionLatest(); - } else - versionCheckError(); - } -} - -function checkForLatestVersion(url) { - setLatestVersionDivHTML("Checking for newer version..."); - try { - sendRequestForLatestVersion(url); - } catch (e) { - setLatestVersionDivHTML("An error occurred while checking for a newer version: " + e.message); - } -} - -function versionNotLatest(latestVersion) { - setLatestVersionDivHTML('<font color="red">A newer version of JsUnit, version ' + latestVersion + ', is available.</font>'); -} - -function versionLatest() { - setLatestVersionDivHTML("You are running the latest version of JsUnit."); -} - -function setLatestVersionDivHTML(string) { - document.getElementById("versionCheckDiv").innerHTML = string; -} - -function versionCheckError() { - setLatestVersionDivHTML("An error occurred while checking for a newer version."); -} \ No newline at end of file diff --git a/static/jsunit/app/main-counts-errors.html b/static/jsunit/app/main-counts-errors.html deleted file mode 100644 index ca726b5..0000000 --- a/static/jsunit/app/main-counts-errors.html +++ /dev/null @@ -1,12 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> - <title> - - - - -
Errors: 0
- - \ No newline at end of file diff --git a/static/jsunit/app/main-counts-failures.html b/static/jsunit/app/main-counts-failures.html deleted file mode 100644 index 861c78b..0000000 --- a/static/jsunit/app/main-counts-failures.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - -
Failures: 0
- - - diff --git a/static/jsunit/app/main-counts-runs.html b/static/jsunit/app/main-counts-runs.html deleted file mode 100644 index 5429f8f..0000000 --- a/static/jsunit/app/main-counts-runs.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - -
Runs: 0
- - - diff --git a/static/jsunit/app/main-counts.html b/static/jsunit/app/main-counts.html deleted file mode 100644 index 0431eae..0000000 --- a/static/jsunit/app/main-counts.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - <body> - <p>jsUnit uses frames in order to remove dependencies upon a browser's implementation of document.getElementById - and HTMLElement.innerHTML.</p> - </body> - - - - diff --git a/static/jsunit/app/main-data.html b/static/jsunit/app/main-data.html deleted file mode 100644 index 34e279f..0000000 --- a/static/jsunit/app/main-data.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - - JsUnit main-data.html - - - - - - - - - - - - - - - -
JsUnit  -

JsUnit TestRunner

- Running on - -
- - www.jsunit.net  
-
- - Powered By Pivotal - -
- -
- - - - - - - - -
- - -   - - -
-
-
- - - - - - - - - - - - - - - - - - - - - - -
Trace level:   Close old trace window on new run      Page load timeout:  - -       Setup page timeout:  - -
-
-
- - diff --git a/static/jsunit/app/main-errors.html b/static/jsunit/app/main-errors.html deleted file mode 100644 index cc76ff0..0000000 --- a/static/jsunit/app/main-errors.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - JsUnit main-errors.html - - - - -
- -
-

Errors and failures: 

- -
- -     - -
- - diff --git a/static/jsunit/app/main-frame.html b/static/jsunit/app/main-frame.html deleted file mode 100644 index af0dc7a..0000000 --- a/static/jsunit/app/main-frame.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - jsUnit Main Frame - -> - - - - - - - - <body> - <p>Sorry, JsUnit requires frames.</p> - </body> - - - diff --git a/static/jsunit/app/main-loader.html b/static/jsunit/app/main-loader.html deleted file mode 100644 index 302c084..0000000 --- a/static/jsunit/app/main-loader.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - jsUnit External Data Document loader - - - - - - - diff --git a/static/jsunit/app/main-progress.html b/static/jsunit/app/main-progress.html deleted file mode 100644 index 5ca52f6..0000000 --- a/static/jsunit/app/main-progress.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - JsUnit main-progress.html - - - - - - - - - - -
Progress: - - - - -
progress image
-
- - diff --git a/static/jsunit/app/main-results.html b/static/jsunit/app/main-results.html deleted file mode 100644 index 5a904cd..0000000 --- a/static/jsunit/app/main-results.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - JsUnit main-results.html - - - - - - - - - - - - - - - - diff --git a/static/jsunit/app/main-status.html b/static/jsunit/app/main-status.html deleted file mode 100644 index 1053f5d..0000000 --- a/static/jsunit/app/main-status.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - JsUnit main-status.html - - - - -
Status: (Idle)
- - - diff --git a/static/jsunit/app/testContainer.html b/static/jsunit/app/testContainer.html deleted file mode 100644 index df6a997..0000000 --- a/static/jsunit/app/testContainer.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - JsUnit Test Container - - - - - - <body> - <p>Sorry, JsUnit requires frames.</p> - </body> - - - diff --git a/static/jsunit/app/testContainerController.html b/static/jsunit/app/testContainerController.html deleted file mode 100644 index 3130d76..0000000 --- a/static/jsunit/app/testContainerController.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - - JsUnit Test Container Controller - - - - -Test Container Controller - - \ No newline at end of file diff --git a/static/jsunit/app/xbDebug.js b/static/jsunit/app/xbDebug.js deleted file mode 100644 index b7167ec..0000000 --- a/static/jsunit/app/xbDebug.js +++ /dev/null @@ -1,306 +0,0 @@ -// xbDebug.js revision: 0.003 2002-02-26 - -/* ***** BEGIN LICENSE BLOCK ***** - * Licensed under Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * Full Terms at /xbProjects-srce/license/mpl-tri-license.txt - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is Netscape code. - * - * The Initial Developer of the Original Code is - * Netscape Corporation. - * Portions created by the Initial Developer are Copyright (C) 2001 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): Bob Clary - * - * ***** END LICENSE BLOCK ***** */ - -/* -ChangeLog: - -2002-02-25: bclary - modified xbDebugTraceOject to make sure - that original versions of wrapped functions were not - rewrapped. This had caused an infinite loop in IE. - -2002-02-07: bclary - modified xbDebug.prototype.close to not null - the debug window reference. This can cause problems with - Internet Explorer if the page is refreshed. These issues will - be addressed at a later date. -*/ - -function xbDebug() -{ - this.on = false; - this.stack = new Array(); - this.debugwindow = null; - this.execprofile = new Object(); -} - -xbDebug.prototype.push = function () -{ - this.stack[this.stack.length] = this.on; - this.on = true; -} - -xbDebug.prototype.pop = function () -{ - this.on = this.stack[this.stack.length - 1]; - --this.stack.length; -} - -xbDebug.prototype.open = function () -{ - if (this.debugwindow && !this.debugwindow.closed) - this.close(); - - this.debugwindow = window.open('about:blank', 'DEBUGWINDOW', 'height=400,width=600,resizable=yes,scrollbars=yes'); - - this.debugwindow.title = 'xbDebug Window'; - this.debugwindow.document.write('xbDebug Window

Javascript Debug Window

'); - this.debugwindow.focus(); -} - -xbDebug.prototype.close = function () -{ - if (!this.debugwindow) - return; - - if (!this.debugwindow.closed) - this.debugwindow.close(); - - // bc 2002-02-07, other windows may still hold a reference to this: this.debugwindow = null; -} - -xbDebug.prototype.dump = function (msg) -{ - if (!this.on) - return; - - if (!this.debugwindow || this.debugwindow.closed) - this.open(); - - this.debugwindow.document.write(msg + '
'); - - return; -} - -var xbDEBUG = new xbDebug(); - -window.onunload = function () { - xbDEBUG.close(); -} - -function xbDebugGetFunctionName(funcref) -{ - - if (!funcref) - { - return ''; - } - - if (funcref.name) - return funcref.name; - - var name = funcref + ''; - name = name.substring(name.indexOf(' ') + 1, name.indexOf('(')); - funcref.name = name; - - if (!name) alert('name not defined'); - return name; -} - -// emulate functionref.apply for IE mac and IE win < 5.5 -function xbDebugApplyFunction(funcname, funcref, thisref, argumentsref) -{ - var rv; - - if (!funcref) - { - alert('xbDebugApplyFunction: funcref is null'); - } - - if (typeof(funcref.apply) != 'undefined') - return funcref.apply(thisref, argumentsref); - - var applyexpr = 'thisref.xbDebug_orig_' + funcname + '('; - var i; - - for (i = 0; i < argumentsref.length; i++) - { - applyexpr += 'argumentsref[' + i + '],'; - } - - if (argumentsref.length > 0) - { - applyexpr = applyexpr.substring(0, applyexpr.length - 1); - } - - applyexpr += ')'; - - return eval(applyexpr); -} - -function xbDebugCreateFunctionWrapper(scopename, funcname, precall, postcall) -{ - var wrappedfunc; - var scopeobject = eval(scopename); - var funcref = scopeobject[funcname]; - - scopeobject['xbDebug_orig_' + funcname] = funcref; - - wrappedfunc = function () - { - var rv; - - precall(scopename, funcname, arguments); - rv = xbDebugApplyFunction(funcname, funcref, scopeobject, arguments); - postcall(scopename, funcname, arguments, rv); - return rv; - }; - - if (typeof(funcref.constructor) != 'undefined') - wrappedfunc.constructor = funcref.constuctor; - - if (typeof(funcref.prototype) != 'undefined') - wrappedfunc.prototype = funcref.prototype; - - scopeobject[funcname] = wrappedfunc; -} - -function xbDebugCreateMethodWrapper(contextname, classname, methodname, precall, postcall) -{ - var context = eval(contextname); - var methodref = context[classname].prototype[methodname]; - - context[classname].prototype['xbDebug_orig_' + methodname] = methodref; - - var wrappedmethod = function () - { - var rv; - // eval 'this' at method run time to pick up reference to the object's instance - var thisref = eval('this'); - // eval 'arguments' at method run time to pick up method's arguments - var argsref = arguments; - - precall(contextname + '.' + classname, methodname, argsref); - rv = xbDebugApplyFunction(methodname, methodref, thisref, argsref); - postcall(contextname + '.' + classname, methodname, argsref, rv); - return rv; - }; - - return wrappedmethod; -} - -function xbDebugPersistToString(obj) -{ - var s = ''; - var p; - - if (obj == null) - return 'null'; - - switch (typeof(obj)) - { - case 'number': - return obj; - case 'string': - return '"' + obj + '"'; - case 'undefined': - return 'undefined'; - case 'boolean': - return obj + ''; - } - - if (obj.constructor) - return '[' + xbDebugGetFunctionName(obj.constructor) + ']'; - - return null; -} - -function xbDebugTraceBefore(scopename, funcname, funcarguments) -{ - var i; - var s = ''; - var execprofile = xbDEBUG.execprofile[scopename + '.' + funcname]; - if (!execprofile) - execprofile = xbDEBUG.execprofile[scopename + '.' + funcname] = { started: 0, time: 0, count: 0 }; - - for (i = 0; i < funcarguments.length; i++) - { - s += xbDebugPersistToString(funcarguments[i]); - if (i < funcarguments.length - 1) - s += ', '; - } - - xbDEBUG.dump('enter ' + scopename + '.' + funcname + '(' + s + ')'); - execprofile.started = (new Date()).getTime(); -} - -function xbDebugTraceAfter(scopename, funcname, funcarguments, rv) -{ - var i; - var s = ''; - var execprofile = xbDEBUG.execprofile[scopename + '.' + funcname]; - if (!execprofile) - xbDEBUG.dump('xbDebugTraceAfter: execprofile not created for ' + scopename + '.' + funcname); - else if (execprofile.started == 0) - xbDEBUG.dump('xbDebugTraceAfter: execprofile.started == 0 for ' + scopename + '.' + funcname); - else - { - execprofile.time += (new Date()).getTime() - execprofile.started; - execprofile.count++; - execprofile.started = 0; - } - - for (i = 0; i < funcarguments.length; i++) - { - s += xbDebugPersistToString(funcarguments[i]); - if (i < funcarguments.length - 1) - s += ', '; - } - - xbDEBUG.dump('exit ' + scopename + '.' + funcname + '(' + s + ')==' + xbDebugPersistToString(rv)); -} - -function xbDebugTraceFunction(scopename, funcname) -{ - xbDebugCreateFunctionWrapper(scopename, funcname, xbDebugTraceBefore, xbDebugTraceAfter); -} - -function xbDebugTraceObject(contextname, classname) -{ - var classref = eval(contextname + '.' + classname); - var p; - var sp; - - if (!classref || !classref.prototype) - return; - - for (p in classref.prototype) - { - sp = p + ''; - if (typeof(classref.prototype[sp]) == 'function' && (sp).indexOf('xbDebug_orig') == -1) - { - classref.prototype[sp] = xbDebugCreateMethodWrapper(contextname, classname, sp, xbDebugTraceBefore, xbDebugTraceAfter); - } - } -} - -function xbDebugDumpProfile() -{ - var p; - var execprofile; - var avg; - - for (p in xbDEBUG.execprofile) - { - execprofile = xbDEBUG.execprofile[p]; - avg = Math.round(100 * execprofile.time / execprofile.count) / 100; - xbDEBUG.dump('Execution profile ' + p + ' called ' + execprofile.count + ' times. Total time=' + execprofile.time + 'ms. Avg Time=' + avg + 'ms.'); - } -} diff --git a/static/jsunit/changelog.txt b/static/jsunit/changelog.txt deleted file mode 100644 index c3b520f..0000000 --- a/static/jsunit/changelog.txt +++ /dev/null @@ -1,60 +0,0 @@ -TRACING -- Tracing is now color coded by trace level -- Traces are now prefixed with the Test Page and Test Function from which the trace is made - -ASSERTION FUNCTIONS -- assertArrayEquals(array1, array2) introduced -- assertObjectEquals(object1, object2) introduced -- assertHTMLEquals function introduced -- assertEvaluatesToTrue and assertEvaluatesToFalse introduced -- assertHashEquals } -- assertRoughlyEquals } Pivotal functions -- assertContains } - -- changed expected/actual values display strings to use angle brackets, rather than square brackets - -- CLIENT-SIDE -- HTML in result output is now correctly escaped -- page load timeout changed to 120 seconds by default -- setup page timeout change to 120 seconds by default -- cache-buster for testpage retrieval & results submission -- jsUnitRestoredHTMLDiv -- turn off tracing, alerts, confirms when submitting -- testPage parameter should be URL-encoded (only opera cares though) -- Speed-up of Firefox/Mozilla (thanks to Chris Wesseling) -- jsUnitMockTimeout.js (thanks to Pivotal, especially Nathan Wilmes) - -SERVER -- start-browser scripts in bin -- Migration of Java code to require Java 5.0 -- JSPs require a JDK -- StandaloneTest and DistributedTest continue on after a failure in a particular browser or remote server respectively -- StandaloneTest has a suite() method that makes the test run have multiple JUnit tests, one per browser -- DistribuedTest has a suite() method that makes the test run have multiple JUnit tests, one per remote machine URL -- Change to XML output format of test runs to include more information and be more hierarchical (machine->browser->test page->test case) -- Logs are now prefixed with "JSTEST-" in order to match JUnit's "TEST-" -- Logs now contain the browser ID (e.g. JSTEST-12345.5.xml means browser with ID 5); displayer servlet now takes an id and a browserId parameter -- added support for launching the default system browser on Windows and UNIX (see the constant on net.jsunit.StandaloneTest) -- StandaloneTest now runs tests in all specified browsers, even after an earlier browser failed -- New "config" servlet that shows the configuration as XML of the server -- Distributed Tests now send back an XML document that includes the XML for browser results as opposed to just a "success"/"failure" node -- runner servlet takes a "url" querystring parameter that overrides the server's url property -- test run requests to the JsUnitServer and the FarmServer are queued up and in serial so that different clients don't step on eachother -- addition of new configuration parameter, "closeBrowsersAfterTestRuns", for whether to attempt to close browsers after test runs -- addition of new configuration property, "timeoutSeconds", for how long to time browsers out -- addition of new configuration property, "ignoreUnresponsiveRemoteMachines", for whether to care that remote machines don't uccessfully run the tests -- addition of new configuration property, "description", which contains a human-readable description of the server -- new index.jsp ("/") page -- jsunit.org registered; redirects to edwardh.com/jsunit - -BUGS -- fix for "retry test run" bug -- bug 1070436 fixed -- bug with multiple browsers and resultId specified fixed -- Bug 1281427 fixed (test submission for Opera) -- Safari fix -- Bug 1431040 fixed - -ECLIPSE PLUGIN -- Eclipse plugin version 1.0 - diff --git a/static/jsunit/css/jsUnitStyle.css b/static/jsunit/css/jsUnitStyle.css deleted file mode 100644 index cee6849..0000000 --- a/static/jsunit/css/jsUnitStyle.css +++ /dev/null @@ -1,83 +0,0 @@ -body { - margin-top: 0; - margin-bottom: 0; - font-family: Verdana, Arial, Helvetica, sans-serif; - color: #000; - font-size: 0.8em; - background-color: #fff; -} - -a:link, a:visited { - color: #00F; -} - -a:hover { - color: #F00; -} - -h1 { - font-size: 1.2em; - font-weight: bold; - color: #039; - font-family: Verdana, Arial, Helvetica, sans-serif; -} - -h2 { - font-weight: bold; - color: #039; - font-family: Verdana, Arial, Helvetica, sans-serif; -} - -h3 { - font-weight: bold; - color: #039; - text-decoration: underline; - font-family: Verdana, Arial, Helvetica, sans-serif; -} - -h4 { - font-weight: bold; - color: #039; - font-family: Verdana, Arial, Helvetica, sans-serif; -} - -.jsUnitTestResultSuccess { - color: #000; -} - -.jsUnitTestResultNotSuccess { - color: #F00; -} - -.unselectedTab { - font-family: Verdana, Arial, Helvetica, sans-serif; - height: 26px; - background: #FFFFFF; - border-style: solid; - border-bottom-width: 1px; - border-top-width: 1px; - border-left-width: 1px; - border-right-width: 1px; -} - -.selectedTab { - font-family: Verdana, Arial, Helvetica, sans-serif; - height: 26px; - background: #DDDDDD; - font-weight: bold; - border-style: solid; - border-bottom-width: 0px; - border-top-width: 1px; - border-left-width: 1px; - border-right-width: 1px; -} - -.tabHeaderSeparator { - height: 26px; - background: #FFFFFF; - border-style: solid; - border-bottom-width: 1px; - border-top-width: 0px; - border-left-width: 0px; - border-right-width: 0px; -} \ No newline at end of file diff --git a/static/jsunit/images/green.gif b/static/jsunit/images/green.gif deleted file mode 100644 index b57ca34..0000000 Binary files a/static/jsunit/images/green.gif and /dev/null differ diff --git a/static/jsunit/images/logo_jsunit.gif b/static/jsunit/images/logo_jsunit.gif deleted file mode 100644 index 65b4bda..0000000 Binary files a/static/jsunit/images/logo_jsunit.gif and /dev/null differ diff --git a/static/jsunit/images/powerby-transparent.gif b/static/jsunit/images/powerby-transparent.gif deleted file mode 100644 index 69c7d9d..0000000 Binary files a/static/jsunit/images/powerby-transparent.gif and /dev/null differ diff --git a/static/jsunit/images/red.gif b/static/jsunit/images/red.gif deleted file mode 100644 index 262550d..0000000 Binary files a/static/jsunit/images/red.gif and /dev/null differ diff --git a/static/jsunit/licenses/MPL-1.1.txt b/static/jsunit/licenses/MPL-1.1.txt deleted file mode 100644 index 7a45bfe..0000000 --- a/static/jsunit/licenses/MPL-1.1.txt +++ /dev/null @@ -1,470 +0,0 @@ - MOZILLA PUBLIC LICENSE - Version 1.1 - - --------------- - -1. Definitions. - - 1.0.1. "Commercial Use" means distribution or otherwise making the - Covered Code available to a third party. - - 1.1. "Contributor" means each entity that creates or contributes to - the creation of Modifications. - - 1.2. "Contributor Version" means the combination of the Original - Code, prior Modifications used by a Contributor, and the Modifications - made by that particular Contributor. - - 1.3. "Covered Code" means the Original Code or Modifications or the - combination of the Original Code and Modifications, in each case - including portions thereof. - - 1.4. "Electronic Distribution Mechanism" means a mechanism generally - accepted in the software development community for the electronic - transfer of data. - - 1.5. "Executable" means Covered Code in any form other than Source - Code. - - 1.6. "Initial Developer" means the individual or entity identified - as the Initial Developer in the Source Code notice required by Exhibit - A. - - 1.7. "Larger Work" means a work which combines Covered Code or - portions thereof with code not governed by the terms of this License. - - 1.8. "License" means this document. - - 1.8.1. "Licensable" means having the right to grant, to the maximum - extent possible, whether at the time of the initial grant or - subsequently acquired, any and all of the rights conveyed herein. - - 1.9. "Modifications" means any addition to or deletion from the - substance or structure of either the Original Code or any previous - Modifications. When Covered Code is released as a series of files, a - Modification is: - A. Any addition to or deletion from the contents of a file - containing Original Code or previous Modifications. - - B. Any new file that contains any part of the Original Code or - previous Modifications. - - 1.10. "Original Code" means Source Code of computer software code - which is described in the Source Code notice required by Exhibit A as - Original Code, and which, at the time of its release under this - License is not already Covered Code governed by this License. - - 1.10.1. "Patent Claims" means any patent claim(s), now owned or - hereafter acquired, including without limitation, method, process, - and apparatus claims, in any patent Licensable by grantor. - - 1.11. "Source Code" means the preferred form of the Covered Code for - making modifications to it, including all modules it contains, plus - any associated interface definition files, scripts used to control - compilation and installation of an Executable, or source code - differential comparisons against either the Original Code or another - well known, available Covered Code of the Contributor's choice. The - Source Code can be in a compressed or archival form, provided the - appropriate decompression or de-archiving software is widely available - for no charge. - - 1.12. "You" (or "Your") means an individual or a legal entity - exercising rights under, and complying with all of the terms of, this - License or a future version of this License issued under Section 6.1. - For legal entities, "You" includes any entity which controls, is - controlled by, or is under common control with You. For purposes of - this definition, "control" means (a) the power, direct or indirect, - to cause the direction or management of such entity, whether by - contract or otherwise, or (b) ownership of more than fifty percent - (50%) of the outstanding shares or beneficial ownership of such - entity. - -2. Source Code License. - - 2.1. The Initial Developer Grant. - The Initial Developer hereby grants You a world-wide, royalty-free, - non-exclusive license, subject to third party intellectual property - claims: - (a) under intellectual property rights (other than patent or - trademark) Licensable by Initial Developer to use, reproduce, - modify, display, perform, sublicense and distribute the Original - Code (or portions thereof) with or without Modifications, and/or - as part of a Larger Work; and - - (b) under Patents Claims infringed by the making, using or - selling of Original Code, to make, have made, use, practice, - sell, and offer for sale, and/or otherwise dispose of the - Original Code (or portions thereof). - - (c) the licenses granted in this Section 2.1(a) and (b) are - effective on the date Initial Developer first distributes - Original Code under the terms of this License. - - (d) Notwithstanding Section 2.1(b) above, no patent license is - granted: 1) for code that You delete from the Original Code; 2) - separate from the Original Code; or 3) for infringements caused - by: i) the modification of the Original Code or ii) the - combination of the Original Code with other software or devices. - - 2.2. Contributor Grant. - Subject to third party intellectual property claims, each Contributor - hereby grants You a world-wide, royalty-free, non-exclusive license - - (a) under intellectual property rights (other than patent or - trademark) Licensable by Contributor, to use, reproduce, modify, - display, perform, sublicense and distribute the Modifications - created by such Contributor (or portions thereof) either on an - unmodified basis, with other Modifications, as Covered Code - and/or as part of a Larger Work; and - - (b) under Patent Claims infringed by the making, using, or - selling of Modifications made by that Contributor either alone - and/or in combination with its Contributor Version (or portions - of such combination), to make, use, sell, offer for sale, have - made, and/or otherwise dispose of: 1) Modifications made by that - Contributor (or portions thereof); and 2) the combination of - Modifications made by that Contributor with its Contributor - Version (or portions of such combination). - - (c) the licenses granted in Sections 2.2(a) and 2.2(b) are - effective on the date Contributor first makes Commercial Use of - the Covered Code. - - (d) Notwithstanding Section 2.2(b) above, no patent license is - granted: 1) for any code that Contributor has deleted from the - Contributor Version; 2) separate from the Contributor Version; - 3) for infringements caused by: i) third party modifications of - Contributor Version or ii) the combination of Modifications made - by that Contributor with other software (except as part of the - Contributor Version) or other devices; or 4) under Patent Claims - infringed by Covered Code in the absence of Modifications made by - that Contributor. - -3. Distribution Obligations. - - 3.1. Application of License. - The Modifications which You create or to which You contribute are - governed by the terms of this License, including without limitation - Section 2.2. The Source Code version of Covered Code may be - distributed only under the terms of this License or a future version - of this License released under Section 6.1, and You must include a - copy of this License with every copy of the Source Code You - distribute. You may not offer or impose any terms on any Source Code - version that alters or restricts the applicable version of this - License or the recipients' rights hereunder. However, You may include - an additional document offering the additional rights described in - Section 3.5. - - 3.2. Availability of Source Code. - Any Modification which You create or to which You contribute must be - made available in Source Code form under the terms of this License - either on the same media as an Executable version or via an accepted - Electronic Distribution Mechanism to anyone to whom you made an - Executable version available; and if made available via Electronic - Distribution Mechanism, must remain available for at least twelve (12) - months after the date it initially became available, or at least six - (6) months after a subsequent version of that particular Modification - has been made available to such recipients. You are responsible for - ensuring that the Source Code version remains available even if the - Electronic Distribution Mechanism is maintained by a third party. - - 3.3. Description of Modifications. - You must cause all Covered Code to which You contribute to contain a - file documenting the changes You made to create that Covered Code and - the date of any change. You must include a prominent statement that - the Modification is derived, directly or indirectly, from Original - Code provided by the Initial Developer and including the name of the - Initial Developer in (a) the Source Code, and (b) in any notice in an - Executable version or related documentation in which You describe the - origin or ownership of the Covered Code. - - 3.4. Intellectual Property Matters - (a) Third Party Claims. - If Contributor has knowledge that a license under a third party's - intellectual property rights is required to exercise the rights - granted by such Contributor under Sections 2.1 or 2.2, - Contributor must include a text file with the Source Code - distribution titled "LEGAL" which describes the claim and the - party making the claim in sufficient detail that a recipient will - know whom to contact. If Contributor obtains such knowledge after - the Modification is made available as described in Section 3.2, - Contributor shall promptly modify the LEGAL file in all copies - Contributor makes available thereafter and shall take other steps - (such as notifying appropriate mailing lists or newsgroups) - reasonably calculated to inform those who received the Covered - Code that new knowledge has been obtained. - - (b) Contributor APIs. - If Contributor's Modifications include an application programming - interface and Contributor has knowledge of patent licenses which - are reasonably necessary to implement that API, Contributor must - also include this information in the LEGAL file. - - (c) Representations. - Contributor represents that, except as disclosed pursuant to - Section 3.4(a) above, Contributor believes that Contributor's - Modifications are Contributor's original creation(s) and/or - Contributor has sufficient rights to grant the rights conveyed by - this License. - - 3.5. Required Notices. - You must duplicate the notice in Exhibit A in each file of the Source - Code. If it is not possible to put such notice in a particular Source - Code file due to its structure, then You must include such notice in a - location (such as a relevant directory) where a user would be likely - to look for such a notice. If You created one or more Modification(s) - You may add your name as a Contributor to the notice described in - Exhibit A. You must also duplicate this License in any documentation - for the Source Code where You describe recipients' rights or ownership - rights relating to Covered Code. You may choose to offer, and to - charge a fee for, warranty, support, indemnity or liability - obligations to one or more recipients of Covered Code. However, You - may do so only on Your own behalf, and not on behalf of the Initial - Developer or any Contributor. You must make it absolutely clear than - any such warranty, support, indemnity or liability obligation is - offered by You alone, and You hereby agree to indemnify the Initial - Developer and every Contributor for any liability incurred by the - Initial Developer or such Contributor as a result of warranty, - support, indemnity or liability terms You offer. - - 3.6. Distribution of Executable Versions. - You may distribute Covered Code in Executable form only if the - requirements of Section 3.1-3.5 have been met for that Covered Code, - and if You include a notice stating that the Source Code version of - the Covered Code is available under the terms of this License, - including a description of how and where You have fulfilled the - obligations of Section 3.2. The notice must be conspicuously included - in any notice in an Executable version, related documentation or - collateral in which You describe recipients' rights relating to the - Covered Code. You may distribute the Executable version of Covered - Code or ownership rights under a license of Your choice, which may - contain terms different from this License, provided that You are in - compliance with the terms of this License and that the license for the - Executable version does not attempt to limit or alter the recipient's - rights in the Source Code version from the rights set forth in this - License. If You distribute the Executable version under a different - license You must make it absolutely clear that any terms which differ - from this License are offered by You alone, not by the Initial - Developer or any Contributor. You hereby agree to indemnify the - Initial Developer and every Contributor for any liability incurred by - the Initial Developer or such Contributor as a result of any such - terms You offer. - - 3.7. Larger Works. - You may create a Larger Work by combining Covered Code with other code - not governed by the terms of this License and distribute the Larger - Work as a single product. In such a case, You must make sure the - requirements of this License are fulfilled for the Covered Code. - -4. Inability to Comply Due to Statute or Regulation. - - If it is impossible for You to comply with any of the terms of this - License with respect to some or all of the Covered Code due to - statute, judicial order, or regulation then You must: (a) comply with - the terms of this License to the maximum extent possible; and (b) - describe the limitations and the code they affect. Such description - must be included in the LEGAL file described in Section 3.4 and must - be included with all distributions of the Source Code. Except to the - extent prohibited by statute or regulation, such description must be - sufficiently detailed for a recipient of ordinary skill to be able to - understand it. - -5. Application of this License. - - This License applies to code to which the Initial Developer has - attached the notice in Exhibit A and to related Covered Code. - -6. Versions of the License. - - 6.1. New Versions. - Netscape Communications Corporation ("Netscape") may publish revised - and/or new versions of the License from time to time. Each version - will be given a distinguishing version number. - - 6.2. Effect of New Versions. - Once Covered Code has been published under a particular version of the - License, You may always continue to use it under the terms of that - version. You may also choose to use such Covered Code under the terms - of any subsequent version of the License published by Netscape. No one - other than Netscape has the right to modify the terms applicable to - Covered Code created under this License. - - 6.3. Derivative Works. - If You create or use a modified version of this License (which you may - only do in order to apply it to code which is not already Covered Code - governed by this License), You must (a) rename Your license so that - the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape", - "MPL", "NPL" or any confusingly similar phrase do not appear in your - license (except to note that your license differs from this License) - and (b) otherwise make it clear that Your version of the license - contains terms which differ from the Mozilla Public License and - Netscape Public License. (Filling in the name of the Initial - Developer, Original Code or Contributor in the notice described in - Exhibit A shall not of themselves be deemed to be modifications of - this License.) - -7. DISCLAIMER OF WARRANTY. - - COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, - WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF - DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. - THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE - IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, - YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE - COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER - OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF - ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. - -8. TERMINATION. - - 8.1. This License and the rights granted hereunder will terminate - automatically if You fail to comply with terms herein and fail to cure - such breach within 30 days of becoming aware of the breach. All - sublicenses to the Covered Code which are properly granted shall - survive any termination of this License. Provisions which, by their - nature, must remain in effect beyond the termination of this License - shall survive. - - 8.2. If You initiate litigation by asserting a patent infringement - claim (excluding declatory judgment actions) against Initial Developer - or a Contributor (the Initial Developer or Contributor against whom - You file such action is referred to as "Participant") alleging that: - - (a) such Participant's Contributor Version directly or indirectly - infringes any patent, then any and all rights granted by such - Participant to You under Sections 2.1 and/or 2.2 of this License - shall, upon 60 days notice from Participant terminate prospectively, - unless if within 60 days after receipt of notice You either: (i) - agree in writing to pay Participant a mutually agreeable reasonable - royalty for Your past and future use of Modifications made by such - Participant, or (ii) withdraw Your litigation claim with respect to - the Contributor Version against such Participant. If within 60 days - of notice, a reasonable royalty and payment arrangement are not - mutually agreed upon in writing by the parties or the litigation claim - is not withdrawn, the rights granted by Participant to You under - Sections 2.1 and/or 2.2 automatically terminate at the expiration of - the 60 day notice period specified above. - - (b) any software, hardware, or device, other than such Participant's - Contributor Version, directly or indirectly infringes any patent, then - any rights granted to You by such Participant under Sections 2.1(b) - and 2.2(b) are revoked effective as of the date You first made, used, - sold, distributed, or had made, Modifications made by that - Participant. - - 8.3. If You assert a patent infringement claim against Participant - alleging that such Participant's Contributor Version directly or - indirectly infringes any patent where such claim is resolved (such as - by license or settlement) prior to the initiation of patent - infringement litigation, then the reasonable value of the licenses - granted by such Participant under Sections 2.1 or 2.2 shall be taken - into account in determining the amount or value of any payment or - license. - - 8.4. In the event of termination under Sections 8.1 or 8.2 above, - all end user license agreements (excluding distributors and resellers) - which have been validly granted by You or any distributor hereunder - prior to termination shall survive termination. - -9. LIMITATION OF LIABILITY. - - UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT - (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL - DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, - OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR - ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY - CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, - WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER - COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN - INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF - LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY - RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW - PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE - EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO - THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. - -10. U.S. GOVERNMENT END USERS. - - The Covered Code is a "commercial item," as that term is defined in - 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer - software" and "commercial computer software documentation," as such - terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 - C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), - all U.S. Government End Users acquire Covered Code with only those - rights set forth herein. - -11. MISCELLANEOUS. - - This License represents the complete agreement concerning subject - matter hereof. If any provision of this License is held to be - unenforceable, such provision shall be reformed only to the extent - necessary to make it enforceable. This License shall be governed by - California law provisions (except to the extent applicable law, if - any, provides otherwise), excluding its conflict-of-law provisions. - With respect to disputes in which at least one party is a citizen of, - or an entity chartered or registered to do business in the United - States of America, any litigation relating to this License shall be - subject to the jurisdiction of the Federal Courts of the Northern - District of California, with venue lying in Santa Clara County, - California, with the losing party responsible for costs, including - without limitation, court costs and reasonable attorneys' fees and - expenses. The application of the United Nations Convention on - Contracts for the International Sale of Goods is expressly excluded. - Any law or regulation which provides that the language of a contract - shall be construed against the drafter shall not apply to this - License. - -12. RESPONSIBILITY FOR CLAIMS. - - As between Initial Developer and the Contributors, each party is - responsible for claims and damages arising, directly or indirectly, - out of its utilization of rights under this License and You agree to - work with Initial Developer and Contributors to distribute such - responsibility on an equitable basis. Nothing herein is intended or - shall be deemed to constitute any admission of liability. - -13. MULTIPLE-LICENSED CODE. - - Initial Developer may designate portions of the Covered Code as - "Multiple-Licensed". "Multiple-Licensed" means that the Initial - Developer permits you to utilize portions of the Covered Code under - Your choice of the NPL or the alternative licenses, if any, specified - by the Initial Developer in the file described in Exhibit A. - -EXHIBIT A -Mozilla Public License. - - ``The contents of this file are subject to the Mozilla Public License - Version 1.1 (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.mozilla.org/MPL/ - - Software distributed under the License is distributed on an "AS IS" - basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the - License for the specific language governing rights and limitations - under the License. - - The Original Code is ______________________________________. - - The Initial Developer of the Original Code is ________________________. - Portions created by ______________________ are Copyright (C) ______ - _______________________. All Rights Reserved. - - Contributor(s): ______________________________________. - - Alternatively, the contents of this file may be used under the terms - of the _____ license (the "[___] License"), in which case the - provisions of [______] License are applicable instead of those - above. If you wish to allow use of your version of this file only - under the terms of the [____] License and not to allow others to use - your version of this file under the MPL, indicate your decision by - deleting the provisions above and replace them with the notice and - other provisions required by the [___] License. If you do not delete - the provisions above, a recipient may use your version of this file - under either the MPL or the [___] License." - - [NOTE: The text of this Exhibit A may differ slightly from the text of - the notices in the Source Code files of the Original Code. You should - use the text of this Exhibit A rather than the text found in the - Original Code Source Code for Your Modifications.] - diff --git a/static/jsunit/licenses/gpl-2.txt b/static/jsunit/licenses/gpl-2.txt deleted file mode 100644 index 45645b4..0000000 --- a/static/jsunit/licenses/gpl-2.txt +++ /dev/null @@ -1,340 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. diff --git a/static/jsunit/licenses/lgpl-2.1.txt b/static/jsunit/licenses/lgpl-2.1.txt deleted file mode 100644 index cbee875..0000000 --- a/static/jsunit/licenses/lgpl-2.1.txt +++ /dev/null @@ -1,504 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! - - diff --git a/static/jsunit/licenses/mpl-tri-license-c.txt b/static/jsunit/licenses/mpl-tri-license-c.txt deleted file mode 100644 index bd3ad22..0000000 --- a/static/jsunit/licenses/mpl-tri-license-c.txt +++ /dev/null @@ -1,35 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (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.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is __________________________________________. - * - * The Initial Developer of the Original Code is - * ____________________________________________. - * Portions created by the Initial Developer are Copyright (C) 2___ - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ diff --git a/static/jsunit/licenses/mpl-tri-license-html.txt b/static/jsunit/licenses/mpl-tri-license-html.txt deleted file mode 100644 index 33f0980..0000000 --- a/static/jsunit/licenses/mpl-tri-license-html.txt +++ /dev/null @@ -1,35 +0,0 @@ - diff --git a/static/jsunit/readme.txt b/static/jsunit/readme.txt deleted file mode 100644 index d260774..0000000 --- a/static/jsunit/readme.txt +++ /dev/null @@ -1,19 +0,0 @@ -JsUnit -Copyright (C) 2001-6 Edward Hieatt, edward@jsunit.net - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -Please see http://www.jsunit.net/ for JsUnit documentation and -the "licenses" directory for license information. \ No newline at end of file diff --git a/static/jsunit/testRunner.html b/static/jsunit/testRunner.html deleted file mode 100644 index 71a0c1a..0000000 --- a/static/jsunit/testRunner.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - - -JsUnit Test Runner - - - - - - - - - - - - - - - - - - <body> - <p>Sorry, JsUnit requires support for frames.</p> - </body> - - - - \ No newline at end of file diff --git a/static/jsunit/tests/data/data.html b/static/jsunit/tests/data/data.html deleted file mode 100644 index f872420..0000000 --- a/static/jsunit/tests/data/data.html +++ /dev/null @@ -1,218 +0,0 @@ - - - - - test - - - -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- -

foo

- - diff --git a/static/jsunit/tests/data/staff.css b/static/jsunit/tests/data/staff.css deleted file mode 100644 index ae8e2eb..0000000 --- a/static/jsunit/tests/data/staff.css +++ /dev/null @@ -1,30 +0,0 @@ -staff { - display: table; - color: black; - background-color: white; - border: solid 1px black; -} - -employee { - display: table-row; - border: solid 1px black; - padding: 1px; -} - -employeeId, name, position, salary, gender, address { - display: table-cell; - border: solid 1px black; - padding: 1px; -} - -address[domestic="Yes"] { - background-color: silver; -} - -address[street="Yes"] { - color: green; -} - -address[street="No"] { - color: red; -} diff --git a/static/jsunit/tests/data/staff.dtd b/static/jsunit/tests/data/staff.dtd deleted file mode 100644 index d6c24a0..0000000 --- a/static/jsunit/tests/data/staff.dtd +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - diff --git a/static/jsunit/tests/data/staff.xml b/static/jsunit/tests/data/staff.xml deleted file mode 100644 index c0ca1d6..0000000 --- a/static/jsunit/tests/data/staff.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - Element data"> - - - - - ]> - - - - EMP0001 - Margaret Martin - Accountant - 56,000 - Female -
1230 North Ave. Dallas, Texas 98551
-
- - EMP0002 - Martha Raynolds - - Secretary - 35,000 - Female -
&ent2; Dallas, &ent3; - 98554
-
- - EMP0003 - Roger - Jones - Department Manager - 100,000 - &ent4; - -
PO Box 27 Irving, texas 98553
-
- - EMP0004 - Jeny Oconnor - Personnel Director - 95,000 - Female -
27 South Road. Dallas, Texas 98556
-
- - EMP0005 - Robert Myers - Computer Specialist - 90,000 - male -
1821 Nordic. Road, Irving Texas 98558
-
-
diff --git a/static/jsunit/tests/jsUnitAssertionTests.html b/static/jsunit/tests/jsUnitAssertionTests.html deleted file mode 100644 index c9652e8..0000000 --- a/static/jsunit/tests/jsUnitAssertionTests.html +++ /dev/null @@ -1,405 +0,0 @@ - - - - - - -JsUnit Assertion Tests - - - - - - -

JsUnit Assertion Tests

- -

This page contains tests for the JsUnit Assertion - functions. To see them, take a look at the source.

- - diff --git a/static/jsunit/tests/jsUnitFrameworkUtilityTests.html b/static/jsunit/tests/jsUnitFrameworkUtilityTests.html deleted file mode 100644 index 1d50a23..0000000 --- a/static/jsunit/tests/jsUnitFrameworkUtilityTests.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - JsUnit StackTrace Tests - - - - - - - -

JsUnit Utility Tests

- -

This page contains tests for the JsUnit framework uses. To see them, take a look at the source.

- - diff --git a/static/jsunit/tests/jsUnitMockTimeoutTest.html b/static/jsunit/tests/jsUnitMockTimeoutTest.html deleted file mode 100644 index 48242ba..0000000 --- a/static/jsunit/tests/jsUnitMockTimeoutTest.html +++ /dev/null @@ -1,180 +0,0 @@ - - -Tests for jsUnitMockTimeout.js - - - - - - - - - \ No newline at end of file diff --git a/static/jsunit/tests/jsUnitOnLoadTests.html b/static/jsunit/tests/jsUnitOnLoadTests.html deleted file mode 100644 index 00a5595..0000000 --- a/static/jsunit/tests/jsUnitOnLoadTests.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - JsUnit OnLoad Tests - - - - - - -

JsUnit OnLoad Tests

- -

This page contains tests for the JsUnit Framework. To see them, take a look at the source.

- - diff --git a/static/jsunit/tests/jsUnitRestoredHTMLDivTests.html b/static/jsunit/tests/jsUnitRestoredHTMLDivTests.html deleted file mode 100644 index ca5834d..0000000 --- a/static/jsunit/tests/jsUnitRestoredHTMLDivTests.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - JsUnit Framework tests - - - - - - -

JsUnit Framework tests

- -

This page contains tests for the JsUnit setUp and tearDown framework. To see them, take a look at the source.

- -
foo
- - - diff --git a/static/jsunit/tests/jsUnitSetUpTearDownTests.html b/static/jsunit/tests/jsUnitSetUpTearDownTests.html deleted file mode 100644 index 6950eb8..0000000 --- a/static/jsunit/tests/jsUnitSetUpTearDownTests.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - JsUnit Framework tests - - - - - - -

JsUnit Framework tests

- -

This page contains tests for the JsUnit setUp and tearDown framework. To see them, take a look at the source.

- - diff --git a/static/jsunit/tests/jsUnitTestLoadData.html b/static/jsunit/tests/jsUnitTestLoadData.html deleted file mode 100644 index 86711a3..0000000 --- a/static/jsunit/tests/jsUnitTestLoadData.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - Test loading a local HTML Document - - - - - - -

JsUnit Asynchronous Load Tests

- -

This page tests loading data documents asynchronously. To see them, take a look at the source.

- - diff --git a/static/jsunit/tests/jsUnitTestLoadStaff.html b/static/jsunit/tests/jsUnitTestLoadStaff.html deleted file mode 100644 index a2452c5..0000000 --- a/static/jsunit/tests/jsUnitTestLoadStaff.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - Test loading a local XML Document - - - - - - -

JsUnit Load XML

- -

This page tests loading XML. To see them, take a look at the source.

- - diff --git a/static/jsunit/tests/jsUnitTestSetUpPages.html b/static/jsunit/tests/jsUnitTestSetUpPages.html deleted file mode 100644 index 2767381..0000000 --- a/static/jsunit/tests/jsUnitTestSetUpPages.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - Test loading a local HTML Document - - - - - - -

JsUnit Asynchronous setUpPages

- -

This page tests asynchronoush pre tests. To see them, take a look at the source.

- - - diff --git a/static/jsunit/tests/jsUnitTestSetUpPagesSuite.html b/static/jsunit/tests/jsUnitTestSetUpPagesSuite.html deleted file mode 100644 index df30797..0000000 --- a/static/jsunit/tests/jsUnitTestSetUpPagesSuite.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - JsUnit Test Suite - - - - - - -

JsUnit Test Suite

- -

This page contains a suite of tests for testing JsUnit's setUpPages functionality.

- - diff --git a/static/jsunit/tests/jsUnitTestSuite.html b/static/jsunit/tests/jsUnitTestSuite.html deleted file mode 100644 index d35483d..0000000 --- a/static/jsunit/tests/jsUnitTestSuite.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - JsUnit Test Suite - - - - - - -

JsUnit Test Suite

- -

This page contains a suite of tests for testing JsUnit.

- - diff --git a/static/jsunit/tests/jsUnitUtilityTests.html b/static/jsunit/tests/jsUnitUtilityTests.html deleted file mode 100644 index 1b0067b..0000000 --- a/static/jsunit/tests/jsUnitUtilityTests.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - JsUnit Utility Tests - - - - - - -

JsUnit Utility Tests

- -

This page contains tests for the utility functions - that JsUnit uses. To see them, take a look at the source.

- - diff --git a/static/jsunit/tests/jsUnitVersionCheckTests.html b/static/jsunit/tests/jsUnitVersionCheckTests.html deleted file mode 100644 index 7f6d767..0000000 --- a/static/jsunit/tests/jsUnitVersionCheckTests.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - -JsUnit Version Check Tests - - - - - - - -

JsUnit Version Check Tests

- -

This page contains tests for the version checking code in JsUnit that looks to see whether a newer version of JsUnit - is available. To see them, take a look at the source.

- -