[test] Remove promises-aplus test suite
Bug: Change-Id: I7d4152139548d8a24c0b444dfff3c363bf92680b Reviewed-on: https://chromium-review.googlesource.com/816836 Commit-Queue: Michael Achenbach <machenbach@chromium.org> Reviewed-by: Adam Klein <adamk@chromium.org> Cr-Commit-Position: refs/heads/master@{#50185}
This commit is contained in:
parent
352e4bf2e8
commit
d51df831d7
3
.gitignore
vendored
3
.gitignore
vendored
@ -51,9 +51,6 @@
|
||||
/test/fuzzer/wasm_corpus
|
||||
/test/fuzzer/wasm_corpus.tar.gz
|
||||
/test/mozilla/data
|
||||
/test/promises-aplus/promises-tests
|
||||
/test/promises-aplus/promises-tests.tar.gz
|
||||
/test/promises-aplus/sinon
|
||||
/test/test262/data
|
||||
/test/test262/data.tar
|
||||
/test/test262/harness
|
||||
|
@ -1,29 +0,0 @@
|
||||
This directory contains code for running Promise/A+ Compliance Test Suite[1].
|
||||
You can download the it from [1], or by specifying --download to
|
||||
tools/run-tests.py.
|
||||
Promise/A+ Compliance Test Suite requires Node environment and needs some
|
||||
libraries. To run it in d8 shell, we provides some emulation functions in the
|
||||
lib/ directory.
|
||||
|
||||
- lib/adapter.js
|
||||
- An adapter for harmony Promise used in Promise/A+ tests.
|
||||
- lib/assert.js
|
||||
- Emulates assert modules in Node.
|
||||
- lib/global.js
|
||||
- Provides global functions and variables.
|
||||
- lib/mocha.js
|
||||
- Emulates Mocha[2] test framework.
|
||||
- lib/require.j
|
||||
- Emulate require function in Node.
|
||||
- lib/run-tests.js
|
||||
- Run all describe tests.
|
||||
|
||||
The emulation is not complete. Upgrading Promise/A+ tests will require
|
||||
changing lib/ scripts.
|
||||
|
||||
Sinon.JS[3], required by Promise/A+ tests, is also downloaded by run-tests.py.
|
||||
|
||||
[1]: https://github.com/promises-aplus/promises-tests
|
||||
[2]: http://visionmedia.github.io/mocha/
|
||||
[3]: http://sinonjs.org/
|
||||
|
@ -1,41 +0,0 @@
|
||||
// Copyright 2014 the V8 project authors. All rights reserved.
|
||||
// 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.
|
||||
// * Neither the name of Google Inc. nor the names of its
|
||||
// contributors may be used to endorse or promote products derived
|
||||
// from this software without specific prior written permission.
|
||||
//
|
||||
// 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 THE COPYRIGHT
|
||||
// OWNER OR CONTRIBUTORS 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.
|
||||
|
||||
var global = this.global || {};
|
||||
|
||||
global.adapter = {
|
||||
resolved: function(value) { return Promise.resolve(value); },
|
||||
rejected: function(reason) { return Promise.reject(reason); },
|
||||
deferred: function() {
|
||||
var resolve, reject;
|
||||
var promise = new Promise(function(res, rej) {
|
||||
resolve = res;
|
||||
reject = rej;
|
||||
});
|
||||
return {promise: promise, resolve: resolve, reject: reject};
|
||||
}
|
||||
};
|
@ -1,97 +0,0 @@
|
||||
// Copyright 2014 the V8 project authors. All rights reserved.
|
||||
// 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.
|
||||
// * Neither the name of Google Inc. nor the names of its
|
||||
// contributors may be used to endorse or promote products derived
|
||||
// from this software without specific prior written permission.
|
||||
//
|
||||
// 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 THE COPYRIGHT
|
||||
// OWNER OR CONTRIBUTORS 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.
|
||||
|
||||
// Mimics assert module in node.
|
||||
|
||||
function compose(message1, message2) {
|
||||
return message2 ? message1 + ': ' + message2 : message1
|
||||
}
|
||||
|
||||
function fail(actual, expected, message, operator) {
|
||||
var e = Error(compose('FAIL', message) +
|
||||
': (' + actual + ' ' + operator + ' ' + expected + ') should hold');
|
||||
fails.push(e);
|
||||
throw e;
|
||||
}
|
||||
|
||||
function ok(value, message) {
|
||||
if (!value) {
|
||||
throw Error(compose('FAIL', + message) + ': value = ' + value);
|
||||
}
|
||||
}
|
||||
|
||||
function equal(actual, expected, message) {
|
||||
if (!(expected == actual)) {
|
||||
fail(actual, expected, message, '==');
|
||||
}
|
||||
}
|
||||
|
||||
function notEqual(actual, expected, message) {
|
||||
if (!(expected != actual)) {
|
||||
fail(actual, expected, message, '!=');
|
||||
}
|
||||
}
|
||||
|
||||
function strictEqual(actual, expected, message) {
|
||||
if (!(expected === actual)) {
|
||||
fail(actual, expected, message, '===');
|
||||
}
|
||||
}
|
||||
|
||||
function notStrictEqual(actual, expected, message) {
|
||||
if (!(expected !== actual)) {
|
||||
fail(actual, expected, message, '!==');
|
||||
}
|
||||
}
|
||||
|
||||
function assert(value, message) {
|
||||
return ok(value, message);
|
||||
}
|
||||
|
||||
function notImplemented() {
|
||||
throw Error('FAIL: This assertion function is not yet implemented.');
|
||||
}
|
||||
|
||||
function clear() {
|
||||
this.fails = [];
|
||||
}
|
||||
|
||||
assert.fail = fail;
|
||||
assert.ok = ok;
|
||||
assert.equal = equal;
|
||||
assert.notEqual = notEqual;
|
||||
assert.deepEqual = notImplemented;
|
||||
assert.notDeepEqual = notImplemented;
|
||||
assert.strictEqual = strictEqual;
|
||||
assert.notStrictEqual = notStrictEqual;
|
||||
assert.throws = notImplemented;
|
||||
assert.doesNotThrow = notImplemented;
|
||||
assert.ifError = notImplemented;
|
||||
|
||||
assert.clear = clear;
|
||||
|
||||
exports = assert;
|
@ -1,67 +0,0 @@
|
||||
// Copyright 2014 the V8 project authors. All rights reserved.
|
||||
// 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.
|
||||
// * Neither the name of Google Inc. nor the names of its
|
||||
// contributors may be used to endorse or promote products derived
|
||||
// from this software without specific prior written permission.
|
||||
//
|
||||
// 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 THE COPYRIGHT
|
||||
// OWNER OR CONTRIBUTORS 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.
|
||||
|
||||
var global = this.global || {};
|
||||
var setTimeout;
|
||||
var clearTimeout;
|
||||
|
||||
(function() {
|
||||
var timers = {};
|
||||
var currentId = 0;
|
||||
|
||||
setInterval = function(fn, delay) {
|
||||
var i = 0;
|
||||
var id = currentId++;
|
||||
function loop() {
|
||||
if (!timers[id]) {
|
||||
return;
|
||||
}
|
||||
if (i++ >= delay) {
|
||||
fn();
|
||||
}
|
||||
%EnqueueMicrotask(loop);
|
||||
}
|
||||
%EnqueueMicrotask(loop);
|
||||
timers[id] = true;
|
||||
return id;
|
||||
}
|
||||
|
||||
clearTimeout = function(id) {
|
||||
delete timers[id];
|
||||
}
|
||||
|
||||
clearInterval = clearTimeout;
|
||||
|
||||
setTimeout = function(fn, delay) {
|
||||
var id = setInterval(function() {
|
||||
fn();
|
||||
clearInterval(id);
|
||||
}, delay);
|
||||
return id;
|
||||
}
|
||||
|
||||
}());
|
@ -1,255 +0,0 @@
|
||||
// Copyright 2014 the V8 project authors. All rights reserved.
|
||||
// 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.
|
||||
// * Neither the name of Google Inc. nor the names of its
|
||||
// contributors may be used to endorse or promote products derived
|
||||
// from this software without specific prior written permission.
|
||||
//
|
||||
// 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 THE COPYRIGHT
|
||||
// OWNER OR CONTRIBUTORS 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.
|
||||
|
||||
// This file emulates Mocha test framework used in promises-aplus tests.
|
||||
|
||||
var describe;
|
||||
var it;
|
||||
var specify;
|
||||
var before;
|
||||
var after;
|
||||
var beforeEach;
|
||||
var afterEach;
|
||||
var RunAllTests;
|
||||
|
||||
var assert = require('assert');
|
||||
|
||||
(function() {
|
||||
var TIMEOUT = 1000;
|
||||
|
||||
var context = {
|
||||
beingDescribed: undefined,
|
||||
currentSuiteIndex: 0,
|
||||
suites: []
|
||||
};
|
||||
|
||||
function Run() {
|
||||
function current() {
|
||||
while (context.currentSuiteIndex < context.suites.length &&
|
||||
context.suites[context.currentSuiteIndex].hasRun) {
|
||||
++context.currentSuiteIndex;
|
||||
}
|
||||
if (context.suites.length == context.currentSuiteIndex) {
|
||||
return undefined;
|
||||
}
|
||||
return context.suites[context.currentSuiteIndex];
|
||||
}
|
||||
var suite = current();
|
||||
if (!suite) {
|
||||
// done
|
||||
print('All tests have run.');
|
||||
return;
|
||||
}
|
||||
suite.Run();
|
||||
}
|
||||
|
||||
RunAllTests = function() {
|
||||
context.currentSuiteIndex = 0;
|
||||
var numRegularTestCases = 0;
|
||||
for (var i = 0; i < context.suites.length; ++i) {
|
||||
numRegularTestCases += context.suites[i].numRegularTestCases();
|
||||
}
|
||||
print(context.suites.length + ' suites and ' + numRegularTestCases +
|
||||
' test cases are found');
|
||||
Run();
|
||||
};
|
||||
|
||||
function TestCase(name, before, fn, after, isRegular) {
|
||||
this.name = name;
|
||||
this.before = before;
|
||||
this.fn = fn;
|
||||
this.after = after;
|
||||
this.isRegular = isRegular;
|
||||
this.hasDone = false;
|
||||
}
|
||||
|
||||
TestCase.prototype.RunFunction = function(suite, fn, postAction) {
|
||||
if (!fn) {
|
||||
postAction();
|
||||
return;
|
||||
}
|
||||
try {
|
||||
if (fn.length === 0) {
|
||||
// synchronous
|
||||
fn();
|
||||
postAction();
|
||||
} else {
|
||||
// asynchronous
|
||||
fn(postAction);
|
||||
}
|
||||
} catch (e) {
|
||||
suite.ReportError(this, e);
|
||||
}
|
||||
}
|
||||
|
||||
TestCase.prototype.MarkAsDone = function() {
|
||||
this.hasDone = true;
|
||||
clearTimeout(this.timer);
|
||||
}
|
||||
|
||||
TestCase.prototype.Run = function(suite, postAction) {
|
||||
print('Running ' + suite.description + '#' + this.name + ' ...');
|
||||
assert.clear();
|
||||
|
||||
this.timer = setTimeout(function() {
|
||||
suite.ReportError(this, Error('timeout'));
|
||||
}.bind(this), TIMEOUT);
|
||||
|
||||
this.RunFunction(suite, this.before, function(e) {
|
||||
if (this.hasDone) {
|
||||
return;
|
||||
}
|
||||
if (e instanceof Error) {
|
||||
return suite.ReportError(this, e);
|
||||
}
|
||||
if (assert.fails.length > 0) {
|
||||
return suite.ReportError(this, assert.fails[0]);
|
||||
}
|
||||
this.RunFunction(suite, this.fn, function(e) {
|
||||
if (this.hasDone) {
|
||||
return;
|
||||
}
|
||||
if (e instanceof Error) {
|
||||
return suite.ReportError(this, e);
|
||||
}
|
||||
if (assert.fails.length > 0) {
|
||||
return suite.ReportError(this, assert.fails[0]);
|
||||
}
|
||||
this.RunFunction(suite, this.after, function(e) {
|
||||
if (this.hasDone) {
|
||||
return;
|
||||
}
|
||||
if (e instanceof Error) {
|
||||
return suite.ReportError(this, e);
|
||||
}
|
||||
if (assert.fails.length > 0) {
|
||||
return suite.ReportError(this, assert.fails[0]);
|
||||
}
|
||||
this.MarkAsDone();
|
||||
if (this.isRegular) {
|
||||
print('PASS: ' + suite.description + '#' + this.name);
|
||||
}
|
||||
%EnqueueMicrotask(postAction);
|
||||
}.bind(this));
|
||||
}.bind(this));
|
||||
}.bind(this));
|
||||
};
|
||||
|
||||
function TestSuite(described) {
|
||||
this.description = described.description;
|
||||
this.cases = [];
|
||||
this.currentIndex = 0;
|
||||
this.hasRun = false;
|
||||
|
||||
if (described.before) {
|
||||
this.cases.push(new TestCase(this.description + ' :before', undefined,
|
||||
described.before, undefined, false));
|
||||
}
|
||||
for (var i = 0; i < described.cases.length; ++i) {
|
||||
this.cases.push(new TestCase(described.cases[i].description,
|
||||
described.beforeEach,
|
||||
described.cases[i].fn,
|
||||
described.afterEach,
|
||||
true));
|
||||
}
|
||||
if (described.after) {
|
||||
this.cases.push(new TestCase(this.description + ' :after',
|
||||
undefined, described.after, undefined, false));
|
||||
}
|
||||
}
|
||||
|
||||
TestSuite.prototype.Run = function() {
|
||||
this.hasRun = this.currentIndex === this.cases.length;
|
||||
if (this.hasRun) {
|
||||
%EnqueueMicrotask(Run);
|
||||
return;
|
||||
}
|
||||
|
||||
// TestCase.prototype.Run cannot throw an exception.
|
||||
this.cases[this.currentIndex].Run(this, function() {
|
||||
++this.currentIndex;
|
||||
%EnqueueMicrotask(Run);
|
||||
}.bind(this));
|
||||
};
|
||||
|
||||
TestSuite.prototype.numRegularTestCases = function() {
|
||||
var n = 0;
|
||||
for (var i = 0; i < this.cases.length; ++i) {
|
||||
if (this.cases[i].isRegular) {
|
||||
++n;
|
||||
}
|
||||
}
|
||||
return n;
|
||||
}
|
||||
|
||||
TestSuite.prototype.ReportError = function(testCase, e) {
|
||||
if (testCase.hasDone) {
|
||||
return;
|
||||
}
|
||||
testCase.MarkAsDone();
|
||||
this.hasRun = this.currentIndex === this.cases.length;
|
||||
print('FAIL: ' + this.description + '#' + testCase.name + ': ' +
|
||||
e.name + ' (' + e.message + ')');
|
||||
++this.currentIndex;
|
||||
%EnqueueMicrotask(Run);
|
||||
};
|
||||
|
||||
describe = function(description, fn) {
|
||||
var parent = context.beingDescribed;
|
||||
var incomplete = {
|
||||
cases: [],
|
||||
description: parent ? parent.description + ' ' + description : description,
|
||||
parent: parent,
|
||||
};
|
||||
context.beingDescribed = incomplete;
|
||||
fn();
|
||||
context.beingDescribed = parent;
|
||||
|
||||
context.suites.push(new TestSuite(incomplete));
|
||||
}
|
||||
|
||||
specify = it = function(description, fn) {
|
||||
context.beingDescribed.cases.push({description: description, fn: fn});
|
||||
}
|
||||
|
||||
before = function(fn) {
|
||||
context.beingDescribed.before = fn;
|
||||
}
|
||||
|
||||
after = function(fn) {
|
||||
context.beingDescribed.after = fn;
|
||||
}
|
||||
|
||||
beforeEach = function(fn) {
|
||||
context.beingDescribed.beforeEach = fn;
|
||||
}
|
||||
|
||||
afterEach = function(fn) {
|
||||
context.beingDescribed.afterEach = fn;
|
||||
}
|
||||
|
||||
}());
|
@ -1,50 +0,0 @@
|
||||
// Copyright 2014 the V8 project authors. All rights reserved.
|
||||
// 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.
|
||||
// * Neither the name of Google Inc. nor the names of its
|
||||
// contributors may be used to endorse or promote products derived
|
||||
// from this software without specific prior written permission.
|
||||
//
|
||||
// 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 THE COPYRIGHT
|
||||
// OWNER OR CONTRIBUTORS 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.
|
||||
|
||||
var global = this.global || {};
|
||||
|
||||
// Emulates 'require' function in Node.
|
||||
// This is not a generic function: it only works for known modules.
|
||||
var require = function(name) {
|
||||
var exports = {};
|
||||
var path;
|
||||
var base = 'test/promises-aplus/'
|
||||
if (name.search('./helpers/') === 0) {
|
||||
path = base + 'promises-tests/lib/tests/' + name + '.js';
|
||||
} else if (name === 'assert') {
|
||||
path = base + 'lib/assert.js';
|
||||
} else if (name === 'sinon') {
|
||||
path = base + 'sinon/sinon.js';
|
||||
} else {
|
||||
throw Error('We cannot load the library: ' + name);
|
||||
}
|
||||
eval('(function() { ' + read(path) + '}())');
|
||||
if (name === 'sinon') {
|
||||
return this.sinon;
|
||||
}
|
||||
return exports;
|
||||
};
|
@ -1,29 +0,0 @@
|
||||
// Copyright 2014 the V8 project authors. All rights reserved.
|
||||
// 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.
|
||||
// * Neither the name of Google Inc. nor the names of its
|
||||
// contributors may be used to endorse or promote products derived
|
||||
// from this software without specific prior written permission.
|
||||
//
|
||||
// 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 THE COPYRIGHT
|
||||
// OWNER OR CONTRIBUTORS 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.
|
||||
|
||||
// Defined in lib/mocha.js
|
||||
RunAllTests();
|
@ -1,31 +0,0 @@
|
||||
# Copyright 2014 the V8 project authors. All rights reserved.
|
||||
# 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.
|
||||
# * Neither the name of Google Inc. nor the names of its
|
||||
# contributors may be used to endorse or promote products derived
|
||||
# from this software without specific prior written permission.
|
||||
#
|
||||
# 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 THE COPYRIGHT
|
||||
# OWNER OR CONTRIBUTORS 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.
|
||||
|
||||
[
|
||||
[ALWAYS, {
|
||||
}], # ALWAYS
|
||||
]
|
@ -1,109 +0,0 @@
|
||||
# Copyright 2014 the V8 project authors. All rights reserved.
|
||||
# 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.
|
||||
# * Neither the name of Google Inc. nor the names of its
|
||||
# contributors may be used to endorse or promote products derived
|
||||
# from this software without specific prior written permission.
|
||||
#
|
||||
# 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 THE COPYRIGHT
|
||||
# OWNER OR CONTRIBUTORS 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.
|
||||
|
||||
|
||||
import hashlib
|
||||
import os
|
||||
import shutil
|
||||
import sys
|
||||
import tarfile
|
||||
|
||||
from testrunner.local import testsuite
|
||||
from testrunner.local import utils
|
||||
from testrunner.objects import testcase
|
||||
|
||||
|
||||
"""
|
||||
Requirements for using this test suite:
|
||||
Download http://sinonjs.org/releases/sinon-1.7.3.js into
|
||||
test/promises-aplus/sinon.
|
||||
Download https://github.com/promises-aplus/promises-tests/tree/2.0.3 into
|
||||
test/promises-aplus/promises-tests.
|
||||
"""
|
||||
|
||||
TEST_NAME = 'promises-tests'
|
||||
|
||||
|
||||
class PromiseAplusTestSuite(testsuite.TestSuite):
|
||||
|
||||
def __init__(self, name, root):
|
||||
self.root = root
|
||||
self.test_files_root = os.path.join(self.root, TEST_NAME, 'lib', 'tests')
|
||||
self.name = name
|
||||
self.helper_files_pre = [
|
||||
os.path.join(root, 'lib', name) for name in
|
||||
['global.js', 'require.js', 'mocha.js', 'adapter.js']
|
||||
]
|
||||
self.helper_files_post = [
|
||||
os.path.join(root, 'lib', name) for name in
|
||||
['run-tests.js']
|
||||
]
|
||||
|
||||
def ListTests(self, context):
|
||||
return [self._create_test(fname[:-len('.js')]) for fname in
|
||||
os.listdir(os.path.join(self.root, TEST_NAME, 'lib', 'tests'))
|
||||
if fname.endswith('.js')]
|
||||
|
||||
def _get_cmd_params(self, test, ctx):
|
||||
return (
|
||||
self._get_files_params(test, ctx) +
|
||||
self._get_extra_flags(test, ctx) +
|
||||
self._get_user_flags(test) +
|
||||
self._get_statusfile_flags(test) +
|
||||
self._get_mode_flags(test, ctx) +
|
||||
self._get_source_flags(test) +
|
||||
['--allow-natives-syntax']
|
||||
)
|
||||
|
||||
def _get_files_params(self, test, ctx):
|
||||
return (
|
||||
self.helper_files_pre +
|
||||
[os.path.join(self.test_files_root, test.path + '.js')] +
|
||||
self.helper_files_post
|
||||
)
|
||||
|
||||
def GetSourceForTest(self, testcase):
|
||||
filename = os.path.join(self.root, TEST_NAME,
|
||||
'lib', 'tests', testcase.path + '.js')
|
||||
with open(filename) as f:
|
||||
return f.read()
|
||||
|
||||
def IsNegativeTest(self, testcase):
|
||||
return '@negative' in self.GetSourceForTest(testcase)
|
||||
|
||||
def IsFailureOutput(self, testcase):
|
||||
if testcase.output.exit_code != 0:
|
||||
return True
|
||||
return not 'All tests have run.' in testcase.output.stdout or \
|
||||
'FAIL:' in testcase.output.stdout
|
||||
|
||||
def _path_to_name(self, path):
|
||||
return path.split(os.path.sep)[-1]
|
||||
|
||||
|
||||
def GetSuite(name, root):
|
||||
return PromiseAplusTestSuite(name, root)
|
Loading…
Reference in New Issue
Block a user