Index: node_modules/vulcanize/node_modules/update-notifier/node_modules/configstore/node_modules/js-yaml/node_modules/esprima/test/compat.js |
diff --git a/node_modules/vulcanize/node_modules/update-notifier/node_modules/configstore/node_modules/js-yaml/node_modules/esprima/test/compat.js b/node_modules/vulcanize/node_modules/update-notifier/node_modules/configstore/node_modules/js-yaml/node_modules/esprima/test/compat.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..ee3a6295eba7ae81536b8f57a99b26a43207e7ff |
--- /dev/null |
+++ b/node_modules/vulcanize/node_modules/update-notifier/node_modules/configstore/node_modules/js-yaml/node_modules/esprima/test/compat.js |
@@ -0,0 +1,239 @@ |
+/* |
+ Copyright (C) 2012 Joost-Wim Boekesteijn <joost-wim@boekesteijn.nl> |
+ Copyright (C) 2011 Ariya Hidayat <ariya.hidayat@gmail.com> |
+ |
+ Redistribution and use in source and binary forms, with or without |
+ modification, are permitted provided that the following conditions are met: |
+ |
+ * Redistributions of source code must retain the above copyright |
+ notice, this list of conditions and the following disclaimer. |
+ * Redistributions in binary form must reproduce the above copyright |
+ notice, this list of conditions and the following disclaimer in the |
+ documentation and/or other materials provided with the distribution. |
+ |
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
+ ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY |
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND |
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
+*/ |
+ |
+/*jslint node: true */ |
+/*global document: true, window:true, esprima: true, testReflect: true */ |
+ |
+var runTests; |
+ |
+function getContext(esprima, reportCase, reportFailure) { |
+ 'use strict'; |
+ |
+ var Reflect, Pattern; |
+ |
+ // Maps Mozilla Reflect object to our Esprima parser. |
+ Reflect = { |
+ parse: function (code) { |
+ var result; |
+ |
+ reportCase(code); |
+ |
+ try { |
+ result = esprima.parse(code); |
+ } catch (error) { |
+ result = error; |
+ } |
+ |
+ return result; |
+ } |
+ }; |
+ |
+ // This is used by Reflect test suite to match a syntax tree. |
+ Pattern = function (obj) { |
+ var pattern; |
+ |
+ // Poor man's deep object cloning. |
+ pattern = JSON.parse(JSON.stringify(obj)); |
+ |
+ // Special handling for regular expression literal since we need to |
+ // convert it to a string literal, otherwise it will be decoded |
+ // as object "{}" and the regular expression would be lost. |
+ if (obj.type && obj.type === 'Literal') { |
+ if (obj.value instanceof RegExp) { |
+ pattern = { |
+ type: obj.type, |
+ value: obj.value.toString() |
+ }; |
+ } |
+ } |
+ |
+ // Special handling for branch statement because SpiderMonkey |
+ // prefers to put the 'alternate' property before 'consequent'. |
+ if (obj.type && obj.type === 'IfStatement') { |
+ pattern = { |
+ type: pattern.type, |
+ test: pattern.test, |
+ consequent: pattern.consequent, |
+ alternate: pattern.alternate |
+ }; |
+ } |
+ |
+ // Special handling for do while statement because SpiderMonkey |
+ // prefers to put the 'test' property before 'body'. |
+ if (obj.type && obj.type === 'DoWhileStatement') { |
+ pattern = { |
+ type: pattern.type, |
+ body: pattern.body, |
+ test: pattern.test |
+ }; |
+ } |
+ |
+ function adjustRegexLiteralAndRaw(key, value) { |
+ if (key === 'value' && value instanceof RegExp) { |
+ value = value.toString(); |
+ } else if (key === 'raw' && typeof value === "string") { |
+ // Ignore Esprima-specific 'raw' property. |
+ return undefined; |
+ } |
+ return value; |
+ } |
+ |
+ if (obj.type && (obj.type === 'Program')) { |
+ pattern.assert = function (tree) { |
+ var actual, expected; |
+ actual = JSON.stringify(tree, adjustRegexLiteralAndRaw, 4); |
+ expected = JSON.stringify(obj, null, 4); |
+ |
+ if (expected !== actual) { |
+ reportFailure(expected, actual); |
+ } |
+ }; |
+ } |
+ |
+ return pattern; |
+ }; |
+ |
+ return { |
+ Reflect: Reflect, |
+ Pattern: Pattern |
+ }; |
+} |
+ |
+if (typeof window !== 'undefined') { |
+ // Run all tests in a browser environment. |
+ runTests = function () { |
+ 'use strict'; |
+ |
+ var total = 0, |
+ failures = 0; |
+ |
+ function setText(el, str) { |
+ if (typeof el.innerText === 'string') { |
+ el.innerText = str; |
+ } else { |
+ el.textContent = str; |
+ } |
+ } |
+ |
+ function reportCase(code) { |
+ var report, e; |
+ report = document.getElementById('report'); |
+ e = document.createElement('pre'); |
+ e.setAttribute('class', 'code'); |
+ setText(e, code); |
+ report.appendChild(e); |
+ total += 1; |
+ } |
+ |
+ function reportFailure(expected, actual) { |
+ var report, e; |
+ |
+ failures += 1; |
+ |
+ report = document.getElementById('report'); |
+ |
+ e = document.createElement('p'); |
+ setText(e, 'Expected'); |
+ report.appendChild(e); |
+ |
+ e = document.createElement('pre'); |
+ e.setAttribute('class', 'expected'); |
+ setText(e, expected); |
+ report.appendChild(e); |
+ |
+ e = document.createElement('p'); |
+ setText(e, 'Actual'); |
+ report.appendChild(e); |
+ |
+ e = document.createElement('pre'); |
+ e.setAttribute('class', 'actual'); |
+ setText(e, actual); |
+ report.appendChild(e); |
+ } |
+ |
+ setText(document.getElementById('version'), esprima.version); |
+ |
+ window.setTimeout(function () { |
+ var tick, context = getContext(esprima, reportCase, reportFailure); |
+ |
+ tick = new Date(); |
+ testReflect(context.Reflect, context.Pattern); |
+ tick = (new Date()) - tick; |
+ |
+ if (failures > 0) { |
+ setText(document.getElementById('status'), total + ' tests. ' + |
+ 'Failures: ' + failures + '. ' + tick + ' ms'); |
+ } else { |
+ setText(document.getElementById('status'), total + ' tests. ' + |
+ 'No failure. ' + tick + ' ms'); |
+ } |
+ }, 513); |
+ }; |
+} else { |
+ (function (global) { |
+ 'use strict'; |
+ var esprima = require('../esprima'), |
+ tick, |
+ total = 0, |
+ failures = [], |
+ header, |
+ current, |
+ context; |
+ |
+ function reportCase(code) { |
+ total += 1; |
+ current = code; |
+ } |
+ |
+ function reportFailure(expected, actual) { |
+ failures.push({ |
+ source: current, |
+ expected: expected.toString(), |
+ actual: actual.toString() |
+ }); |
+ } |
+ |
+ context = getContext(esprima, reportCase, reportFailure); |
+ |
+ tick = new Date(); |
+ require('./reflect').testReflect(context.Reflect, context.Pattern); |
+ tick = (new Date()) - tick; |
+ |
+ header = total + ' tests. ' + failures.length + ' failures. ' + |
+ tick + ' ms'; |
+ if (failures.length) { |
+ console.error(header); |
+ failures.forEach(function (failure) { |
+ console.error(failure.source + ': Expected\n ' + |
+ failure.expected.split('\n').join('\n ') + |
+ '\nto match\n ' + failure.actual); |
+ }); |
+ } else { |
+ console.log(header); |
+ } |
+ process.exit(failures.length === 0 ? 0 : 1); |
+ }(this)); |
+} |
+/* vim: set sw=4 ts=4 et tw=80 : */ |