| 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 : */
 | 
| 
 |