Commit Graph

1250 Commits

Author SHA1 Message Date
Rick Waldron 86deb370e7 Eliminate false positives: BigInt64Array, BigUint64Array 2018-11-30 11:37:28 -05:00
Rick Waldron 6e836cea56 Eliminate false positives: BigInt 2018-11-30 11:34:13 -05:00
Rick Waldron d98f3f4d63 Eliminate false positives: String.prototype.trimEnd, String.prototype.trimStart 2018-11-30 09:37:16 -05:00
Rick Waldron 6d2288fe79 Eliminate false positives: Promise.prototype.finally 2018-11-30 09:34:25 -05:00
Rick Waldron 628faa5e06 Eliminate false positives: Object.fromEntries 2018-11-30 09:31:54 -05:00
Rick Waldron 2e18327af2 Eliminate false positives: Array.prototype.flat, Array.prototype.flatMap 2018-11-30 09:27:07 -05:00
Gus Caplan 1df8797a6b add WeakSet to feature list where its used in Set tests 2018-11-28 10:26:57 -05:00
Gus Caplan 2aacb28bb9 Fix some proxy tests (#1966)
- `Proxy/getOwnPropertyDescriptor/call-parameters.js`
  Fixes a call to `Object.getOwnPropertyDescriptor` without the prop
  param. Not actually a huge problem, as the test wasn't depending on
  it.

- `Proxy/getOwnPropertyDescriptor/result-type-is-not-object-nor-undefined`
  This test asserted that `function() {}` should throw with the
  following spec step, which is incorrect, as functions are typed as
  `Object` in the spec.
  """
  1. If Type(trapResultObj) is neither Object nor Undefined, throw a
    TypeError exception.
  """
2018-11-26 13:41:13 -05:00
Rick Waldron e91645c812 Atomics: (bigint) initialize BigInt64Array before calling $262.agent.start(string-of-program-code) 2018-11-20 15:57:39 -05:00
Rick Waldron 8793bf5d57 Atomics: fix running index in notify-with-no-matching-agents-waiting.js
Migrating all tests to this API is necessary to prevent tests from hanging indefinitely when a SAB is sent to a worker but the code in the worker attempts to create a non-sharable TypedArray (something that is not Int32Array or BigInt64Array). When that scenario occurs, an exception is thrown and the agent worker can no longer communicate with any other threads that control the SAB. If the main thread happens to be spinning in the $262.agent.waitUntil() while loop, it will never meet its termination condition and the test will hang indefinitely.

Because we've defined $262.agent.broadcast(SAB) in https://github.com/tc39/test262/blob/master/INTERPRETING.md, there are host implementations that assume compatibility, which must be maintained.
2018-11-20 15:18:14 -05:00
Rick Waldron e4883091b9 Introduce $262.agent.safeBroadcast and migrate Atomics tests.
Migrating all tests to this API is necessary to prevent tests from hanging indefinitely when a SAB is sent to a worker but the code in the worker attempts to create a non-sharable TypedArray (something that is not Int32Array or BigInt64Array). When that scenario occurs, an exception is thrown and the agent worker can no longer communicate with any other threads that control the SAB. If the main thread happens to be spinning in the $262.agent.waitUntil() while loop, it will never meet its termination condition and the test will hang indefinitely.

Because we've defined $262.agent.broadcast(SAB) in https://github.com/tc39/test262/blob/master/INTERPRETING.md, there are host implementations that assume compatibility, which must be maintained.
2018-11-20 15:17:47 -05:00
Leo Balter dec4e5df74
Merge pull request #1801 from mathiasbynens/issue-1634
Move `throw "…"` for negative parsing errors to a helper function
2018-11-13 17:23:09 -05:00
Kevin Gibbons 8ed9947df1 add async-iteration flag (#1942) 2018-11-08 15:32:40 -05:00
Rick Waldron 87202773fd
Merge pull request #1938 from adrianheine/promise
Add missing mandatory Promise.{all,race} argument
2018-11-08 09:32:25 -05:00
Rick Waldron b1e15cd326
Merge pull request #1923 from bakkot/less-regex-eval
Reduce uses of `eval` for regex literal syntax
2018-11-08 09:18:48 -05:00
Adrian Heine fc6de76a0d Add missing mandatory Promise.{all,race} argument 2018-11-08 09:37:56 +01:00
Adrian Heine né Lang 0475c127c4 Fix some generators feature flags (#1933) 2018-11-07 17:51:23 -05:00
Kevin Gibbons 0160cab518 fix missing/duplicate tests 2018-11-07 13:52:44 -08:00
Mathias Bynens e558b29b69
Optimize character class escape tests
Previously, these tests simply compared against an equivalent regular expression pattern by generating a large string containing either all code points up to U+FFFF or U+10FFFF, depending on the `u` flag, and then performing:

    str.replace(re, '') === str.replace(otherRe, '');

These two `String#replace` calls can be optimized into a single `RegExp#test` call by following the pattern used in the property escapes tests at https://github.com/mathiasbynens/unicode-property-escapes-tests.
2018-11-06 16:14:14 -08:00
Mathias Bynens 01550ab13a
Sync with https://github.com/bocoup/test262-regexp-generator/pull/1 2018-11-06 15:24:07 -08:00
Kevin Gibbons e80d8a184a split unicode-property-names.js 2018-11-05 15:34:03 -08:00
Kevin Gibbons 9bc9116656 split unicode-malformed.js 2018-11-05 15:23:03 -08:00
Kevin Gibbons 296f47a008 split non-unicode-property-names.js 2018-11-05 15:12:23 -08:00
Kevin Gibbons de339e98d6 split non-unicode-malformed.js 2018-11-05 14:58:03 -08:00
Richard Gibson 5b3d429e28 Move cross-realm tests into their own files 2018-11-02 14:39:23 -04:00
Richard Gibson 6da621f161 Assert error when invoking any %RegExpPrototype%-aware getter on cross-realm RegExp.prototype 2018-11-02 14:39:23 -04:00
Richard Gibson 9e0410814a Test cross-realm use of RegExp source getter in both directions 2018-11-02 14:39:23 -04:00
Richard Gibson 823af01575 Assert error when invoking RegExp source getter on cross-realm RegExp.prototype
RegExp.prototype is not a RegExp, and the algorithm only special-cases
(same-realm) %RegExpPrototype%.
2018-11-02 14:39:23 -04:00
Rick Waldron f1e362d558 Fix typos; generate tests (#1907) 2018-10-26 17:11:05 -04:00
Mathias Bynens b9daa57dcb Rename to $DONOTEVALUATE per @leobalter's suggestion 2018-10-23 13:51:17 +02:00
Mathias Bynens e3feffb01e Move `throw "…"` for negative parsing errors to a helper function
Closes #1634.
2018-10-23 13:51:16 +02:00
André Bargull faed4fb089 Fix various test issues 2018-10-17 07:45:33 -07:00
Richard Gibson e064fcd7ce Remove redundant JSON test 2018-10-03 11:06:32 -04:00
Richard Gibson 58e308753c Fix grammar in JSON.stringify tests 2018-10-03 11:06:32 -04:00
Richard Gibson d961fcc905 Add feature for well-formed-stringify tests 2018-10-03 11:06:32 -04:00
Richard Gibson ce967f7a86 Add tests for proposal-well-formed-stringify
* unpaired surrogate escape sequences
2018-10-03 11:06:32 -04:00
Richard Gibson 783fc5d8bb Remove redundant test 2018-10-03 11:06:32 -04:00
Richard Gibson d6e83453b2 Simplify and improve control character escaping tests 2018-10-03 11:06:32 -04:00
Richard Gibson 61fdc701fa Remove duplicate test 2018-10-03 11:06:32 -04:00
Richard Gibson 950d58a7ca Improve test description grammar 2018-10-03 11:06:32 -04:00
Leo Balter d544eacedf
assert calls order for Symbol.match on matchAll usage (#1795)
Fix #1794
2018-09-26 11:37:19 -04:00
André Bargull 3febd4c536 Update matchAll tests to reflect latest spec proposal 2018-09-26 10:38:35 -04:00
Kevin Gibbons 89ec038cf2 remove some trailing commas in calls 2018-09-21 10:04:33 -04:00
Kevin Gibbons 92a96f068e Remove bigint feature flag for built-ins/Atomics/wait/was-woken-before-timeout.js 2018-09-19 10:58:34 -04:00
Kevin Gibbons 05cbb5f8ae Fix feature flag in TypedArrayConstructors/Float32Array/length.js 2018-09-19 10:58:34 -04:00
Leo Balter 3166523832 Add basic coverage for Symbol.asyncIterator 2018-09-17 10:50:33 -04:00
Andrew McCreight c278f59416
Fix typo in test message 2018-09-14 12:05:16 -07:00
Leo Balter 93635ca3b2 Assert extensibility of dataview objects 2018-09-10 11:13:11 -04:00
Ashley Hauck 835c85c26e TypedArray.prototype.sort: check result of compareFn is immediately converted ToNumber (#1694) 2018-08-27 14:27:27 -04:00
Leo Balter 1307fa8f44 some quick fixes for Array.prototype.{flat,flatMap} tests 2018-08-20 11:16:54 -04:00
Leo Balter d263e2ccc9
Merge pull request #1686 from rhuanjl/proxyFlat
Array.prototype.{flat,flatMap} property access count
2018-08-20 10:44:16 -04:00
rhuanjl 1bffb14efb Array.prototype.flat and Array.prototype.flatMap property access count 2018-08-20 06:31:04 +01:00
André Bargull d7d154b3bc Remove requirement that ToNumber(value) completes in less than $262.agent.MAX_TIME_EPSILON
$262.agent.MAX_TIME_EPSILON was intended to be used for callers like `Atomics.wait(typedArray, indexNumber, valueNumber, timeoutNumber)` where all parameters with the `Number` suffix denote values which are already Number values. It should not be used for `Atomics.wait(typedArray, indexObject, valueObject, timeoutObject)` where all parameters with the `Object` suffix denote values which are Object values, because in that case we'd require that `ToNumber(objectValue)` (potentially invoked multiple times) completes in less than 100 milliseconds (the default value for MAX_TIME_EPSILON).

Also removes $262.agent.MAX_TIME_EPSILON because it is now no longer used.
2018-08-19 10:29:29 -04:00
Leo Balter ab436c4651
Merge pull request #1677 from tc39/ofe-use-verifyproperty
Object.fromEntries: use verifyProperty; add specification details
2018-08-17 18:06:19 -04:00
André Bargull 0aa1f70c14 Fix typo: nofity -> notify 2018-08-17 07:48:44 -07:00
André Bargull 8879820a8f Make RegExp/CharacterClassEscapes tests faster across all engines 2018-08-17 07:48:42 -07:00
Rick Waldron ff475fce11 Object.fromEntries: use verifyProperty; add specification details 2018-08-13 15:15:02 -04:00
Rick Waldron 55ffeaf5cf Object.fromEntries: fix file names 2018-08-13 12:24:57 -04:00
Kevin Gibbons 60b9467630 Two more simple tests 2018-08-13 10:25:09 -04:00
Kevin Gibbons 7f694d4718 Object.fromEntries: add basic tests 2018-08-13 10:25:09 -04:00
Jordan Harband 765de9136d
`global`: update property name 2018-07-25 17:11:53 -07:00
Rick Waldron 64f219b666 Features: run feature detector to verify newly added feature flags 2018-07-25 12:16:49 -04:00
Rick Waldron c6d7d66dfa Merge branch 'feature-new.target' of https://github.com/IgnoredAmbience/test262 into IgnoredAmbience-feature-new.target
* 'feature-new.target' of https://github.com/IgnoredAmbience/test262:
  Add feature flags for `new.target`
2018-07-25 11:54:58 -04:00
Thomas Wood 2d4ac25fa0 Add feature flags for `new.target`
Additionally removed the `arrow-function` feature for
test/language/eval-code/direct/new.target-fn.js as it is not testing
arrow-functions, but they are mentioned in the preamble.
2018-07-24 20:31:35 +01:00
Leo Balter 6335c39ade fixes after rebase 2018-07-24 15:03:54 -04:00
Leo Balter 1452a22a02 more s/wake/notify 2018-07-24 15:03:54 -04:00
Leo Balter d8bbc281dd First renaming for wake to notify in the wait folder 2018-07-24 15:03:54 -04:00
Leo Balter 4911c6e77a Last renamings in the Atomics/wake folder 2018-07-24 15:03:54 -04:00
Leo Balter 6533378823 Atomics.wake to Atomics.notify 2018-07-24 15:03:54 -04:00
Leo Balter 003388e36e Replace esid 2018-07-24 15:03:54 -04:00
Leo Balter cdfc67cd9d Move Atomics/wake to Atomics/notify 2018-07-24 15:03:54 -04:00
Rick Waldron 2d27462e70 Features: Proxy, Reflect (See pull/1643) (#1646)
Follow up to https://github.com/tc39/test262/pull/1643
2018-07-20 18:42:39 -04:00
Thomas Wood d817076ddb Make Proxy/ownKeys tests ES5-parsable. (#1644)
All other Proxy tests use the syntax `attr: function() {...}` for
defining traps, ownKeys was unique in using the shorthand syntax. Change
to longhand syntax for back-compat for partial implementations.
2018-07-20 18:40:10 -04:00
Thomas Wood 4f3cbc756d Add a missing Reflect feature flag.
Proxy/deleteProperty/boolean-trap-result-boolean-true.js was missing a
feature flag for the Reflect library.
2018-07-20 15:04:21 -04:00
Ivan Vyshnevskyi 56e0ef70a5 Fix the ranges of non-HexDigits in decodeURI and decodeURIComponent tests 2018-07-20 14:59:31 -04:00
Leo Balter 0fde488bb4
Update tests for CharacterClassEscapes in RegExps (#1611) 2018-07-09 12:30:33 -04:00
Mathias Bynens c7ac073e73 Update tests for RegExp Unicode property escapes (#1633)
62cbe2f1cb
2018-07-09 12:26:53 -04:00
André Bargull 8bc4e38a48 Make Atomics tests more resilient against intermittent failures (#1617)
Also fixes multiple issues and bugs in various Atomics tests.

CONTRIBUTING.md and INTERPRETING.md:
- Add missing description for `CanBlockIsFalse` flag and also introduce `CanBlockIsTrue` flag which is needed for some tests (see below).

harness/atomicsHelper.js:
- Updated `$262.agent.waitUntil` to clarify it can also be called with BigInt64Array objects.
- Added `$262.agent.timeouts` constants to unify the various, inconsistently used timeouts in the Atomics tests. Each timeout constant has a brief description and a usage example to clarify when it should or should not be used. The default values were tested in SpiderMonkey (locally and CI) under various system load levels and should hopefully also be valid for other engines. 
- Added `$262.agent.tryYield` to yield control from the main thread. The default implementation simply calls `$262.agent.sleep`, but test262 hosts could theoretically provide a different implementation.
- Added `$262.agent.trySleep` to replace direct calls to `$262.agent.sleep` from the main thread. Motivation for this function: Some test262 hosts (like browsers) may be able to pause and sleep on the main thread, so they could provide their implementation for `trySleep` which performs a busy-wait or something do nothing.

harness/testAtomics.js:
- Replace `let`, `arrow-functions`, and `for-of` loops to avoid creating extremely long `features` lists in tests using this helper. Removed `Map`, `WeakMap`, `Set`, and `WeakSet` (these weren't even listed in features.yaml) for the same reason and added the missing `Symbol` entry for this file to features.yaml.
- Updated all files including "harness/testAtomics.js" to match the new feature requirements.


test/built-ins/Atomics/store/good-views.js and test/built-ins/Atomics/store/bigint/good-views.js:
- Replace `arrow-functions` and `for-of` loops with ES5 alternatives.


test/built-ins/Atomics/wait/bigint/*.js and test/built-ins/Atomics/wake/bigint/*.js
- Some tests were using `BigInt64Array.BYTES_PER_ELEMENT * 8` for the SharedArrayBuffer length, but their non-BigInt counterparts are using `Int32Array.BYTES_PER_ELEMENT * 4`. For consistency and to make it easier to compare the BigInt against the non-BigInt versions, I've changed it to `BigInt64Array.BYTES_PER_ELEMENT * 4`.
- Also aligned formatting and statement placement when they differed between the non-BigInt and the BigInt version of a test file. (I've diffed some of the non-BigInt and BigInt files against each other and different formatting was a nuisance.)

Test files using `$262.agent.monotonicNow()`:
- Moved `$262.agent.report()` calls outside of the block of code measured `$262.agent.monotonicNow()` to avoid measuring how long it takes to execute `$262.agent.report()`. 
- Without this change some tests failed intermittently in certain test configurations in SpiderMonkey. For example with the flags `--ion-eager -- ion-offthread-compile=off` which forces early Ion compilation on the main thread. The `$262.agent.report()` implementation in the SpiderMonkey test262 host embedding uses a for-loop which was forcefully Ion compiled under these settings. And because Ion compilation can take some time, the test case ran longer than `$262.agent.MAX_TIME_EPSILON` which lead to intermittent failures.

Test files using `CanBlockIsFalse` / `CanBlockIsTrue`:
- Some of these tests actually expected that the main thread can wait and [[CanBlock]] is `true` for the agent record executing the test. Therefore I've added a new `CanBlockIsTrue` flag and replaced the flags where needed.

test/built-ins/Atomics/wait/**/*.js and test/built-ins/Atomics/wake/**/*.js:
- Use an atomic counter `RUNNING` in more tests to have better control when a worker agent was actually started.
- Replace the various `$262.agent.sleep(/* Sleep X ms to ensure worker actually sleeps */)` calls with the new `$262.agent.tryYield()` function. This `X` was sometimes as low as 10 milliseconds, which is definitely too short for CI systems under heavy load (observed by intermittent CI failures for SpiderMonkey) and sometimes as high as 500 milliseconds, which is probably much longer than needed even when the system is under heavy load. 
- Removed duplicate strings in assertion messages, presumably from copy-pasting the messages between different files.
- Removed extra empty lines at the end of multiple files.

test/built-ins/Atomics/wake/bad-range.js, test/built-ins/Atomics/wake/bigint/bad-range.js, and test/built-ins/Atomics/wait/bigint/non-bigint64-typedarray-throws.js:
- Removed unnecessary `features` and `includes` from this file.

test/built-ins/Atomics/wait/waiterlist-order-of-operations-is-fifo.js and test/built-ins/Atomics/wait/bigint/waiterlist-order-of-operations-is-fifo.js:
- The test was actually broken and didn't test what it said it does. This probably explains #1530.
- The test wants to ensure the waiterlist is implemented as a FIFO structure. This requires that the waiting agents all wait on the same index position, because the waiterlists are defined by each index. But if the agents wait on different indices, each agent is inserted into a different FIFO structure and therefore we can't observe any FIFO ordering between the agents when they're woken up.
- All this requires a bit of synchronization between the main agent and the waiting agent, I hope the added comments help to review these changes.

test/built-ins/Atomics/wait/good-views.js:
- The agent sends multiple reports to the main agent, but only the first one was read.
- This error was introduced during previous refactorings. I've changed it to back to use a while-loop as used in the first version of this file.

test/built-ins/Atomics/wait/no-spurious-wakeup-no-operation.js:
- Only the BigInt version of this test was present, copied it so we also get code coverage for the non-BigInt case.

test/built-ins/Atomics/wait/waiterlist-block-indexedposition-wake.js:
- Added extra while loops to avoid intermittent failures when the agent worker haven't started to wait.
- This should help to avoid some of the intermittent failures we saw for SpiderMonkey.

test/built-ins/Atomics/wake/wake-all-on-loc.js and test/built-ins/Atomics/wake/bigint/wake-all-on-loc.js:
- This test was also no longer after previous refactoring sessions.
- The "B" agent only waited for 10 milliseconds, which made it likely that it already timed out before the main agent was able to call `Atomics.wake`, which in turn rendered the test useless, because the test case wants to ensure that `Atomics.wake` cannot wake "B". But if "B" was already timed out, it can trivially not be woken by `Atomics.wake`.
- Added some safety measure to catch the case when "B" timed out before `Atomics.wake` was called and made it a test error if that happens.

test/built-ins/Atomics/wake/count-defaults-to-infinity-missing.js, test/built-ins/Atomics/wake/count-defaults-to-infinity-undefined.js, and test/built-ins/Atomics/wake/undefined-index-defaults-to-zero.js:
- Changed the `$262.agent.start()` calls to use a for-loop to avoid code duplication.
- (Forgot to undo the code formatting around `assert.sameValue`, still need to change it back.)
- Also more while-loops around `Atomics.wake`.
- These changes should fix #1529 and #1566.

test/built-ins/Atomics/wake/wake-all.js:
- Removed "B" worker agent.
- Without this removal the test case would be exactly equal to test/built-ins/Atomics/wake/wake-all-on-loc.js.

test/built-ins/Atomics/wake/wake-in-order-one-time.js:
- Add for-loops to avoid code duplication and make the test more readable.
- Make the `Atomics.wake` assertion messages unique by adding the current loop counter.
- Add `$262.agent.tryYield()` to give the worker agents enough time to actually start waiting.

test/built-ins/Atomics/wake/wake-in-order.js:
- Removed the outer loop `attempt < 10` because it uses `$262.agent` in a way currently not required to work. And which actually also doesn't work in SpiderMonkey's implementation of `$262.agent`.
- According to INTERPRETING.md `$262.agent.broadcast()` broadcasts its message to all agents ever started by `$262.agent.start()` and then blocks until all agents received the broadcast. It is not required that the agents started by the first `$262.agent.broadcast()` call will all be disabled/destroyed/whatever when the second `$262.agent.broadcast()` call occurs, which then means the second `$262.agent.broadcast()` call still tries to reach the agents started in the first loop iteration, but these may no longer accept broadcasts and therefore won't acknowledge they've received the broadcast. Which then means the second `$262.agent.broadcast()` call waits forever.
2018-07-03 12:34:54 -04:00
André Bargull 06c2f01901 Fix multiple test bugs and remove incomplete or no longer valid tests (#1616) 2018-06-29 18:52:53 -04:00
Leo Balter e1d1c68b0e
fix typo for Atomics.wait test, not wake (#1613) 2018-06-28 16:28:03 -04:00
Rick Waldron e164657a2b Atomics: fixes to bigint variants; updated assertion messages 2018-06-27 12:58:02 -04:00
Rick Waldron c29ae8effb Atomics: refactor atomicsHelper.js to extend $262.agent.* 2018-06-27 11:13:23 -04:00
Rick Waldron a1ff358a06 Atomics: fix invalid index; print error 2018-06-27 10:31:13 -04:00
Rick Waldron 64be6186be Atomics: fix Atomics.xor for BigInt64Array and BigUint64Array 2018-06-26 15:34:55 -04:00
Rick Waldron feab96e601 Atomics: ensure all SharedArrayBuffer sizes are uniform (r3) 2018-06-26 15:05:58 -04:00
Rick Waldron 9bf48e619d Atomics: fix typo "throwes" => "throws" 2018-06-26 14:51:45 -04:00
Rick Waldron 5c5dd5b286 Atomics: ensure all ArrayBuffer & SharedArrayBuffer sizes are uniform 2018-06-26 14:40:00 -04:00
Rick Waldron a93262428f Atomics: improvements to wake-*.js tests 2018-06-26 13:39:09 -04:00
Rick Waldron 236473769a Atomics: reduce startup time allowance 2018-06-25 17:02:58 -04:00
Rick Waldron 73be21272d Atomics: wake/wake-in-order.js, capture waiterlist order for wake comparison 2018-06-25 17:02:40 -04:00
Rick Waldron fc4a6f12cb Atomics: ensure all SharedArrayBuffer sizes are uniform 2018-06-25 15:17:45 -04:00
Rick Waldron 7ec0cdba6c Atomics: more fixes for review 2018-06-25 14:54:44 -04:00
Rick Waldron 84f448f060 Atomics: fix buffer sizes 2018-06-22 16:35:15 -04:00
Rick Waldron 5ebd632d8f Atomics: features fixes, harness features, etc. 2018-06-22 15:14:12 -04:00
Rick Waldron c5527b6d16 Atomics: Atomics.wake cleanup pass 2018-06-22 15:14:12 -04:00
Rick Waldron 695e1babd5 Atomics: remove non-sense test file 2018-06-22 15:14:11 -04:00
Rick Waldron 7f3a1c1be9 Atomics: moves getReport and waitUntil into atomicsHelper.js; broad updates to all Atomics.wait tests 2018-06-22 15:14:11 -04:00
Rick Waldron daa9af846d Atomics: wait/bigint cleanup 2018-06-22 15:14:11 -04:00
Rick Waldron ab72a55748 Atomics: spurious wakeup tests 2018-06-22 15:14:11 -04:00
Rick Waldron 22d3877a2a Atomics: further nit picking 2018-06-22 15:14:11 -04:00