Commit Graph

3265 Commits

Author SHA1 Message Date
jugglinmike ac02aa57ff Relax linting rules for `esid` metadata (#1632)
The document fragments used by the ECMAScript specification do not
conform to any particular pattern beyond the grammar defined by the URL
standard [1]. Relax the linting rule to enforce a simplified version of
that grammar.

[1] https://url.spec.whatwg.org/#fragment-state
2018-07-09 12:29:43 -04:00
Mathias Bynens c7ac073e73 Update tests for RegExp Unicode property escapes (#1633)
62cbe2f1cb
2018-07-09 12:26:53 -04:00
Rick Waldron 23925f86a0
Merge pull request #1628 from Ms2ger/NumberFormat-negzero
Update the test for negative zero in NumberFormat.
2018-07-06 14:48:10 -04:00
Rick Waldron 2e007144ba
Merge pull request #1627 from Ms2ger/RelativeTimeFormat-options-proto
Add tests for objects created in the RelativeTimeFormat constructor.
2018-07-06 14:47:40 -04:00
Rick Waldron 47f9008bd3
Merge pull request #1626 from Ms2ger/RelativeTimeFormat-options
Add some more tests for the options argument to the  RelativeTimeForm…
2018-07-06 14:46:49 -04:00
Rick Waldron 7676b1b48e
Merge pull request #1625 from Ms2ger/Segmenter-@@toStringTag
Add a test for Intl.Segmenter.prototype[@@toStringTag].
2018-07-06 14:45:29 -04:00
Rick Waldron 221f212903
Merge pull request #1624 from Ms2ger/ListFormat-@@toStringTag
Add a test for Intl.ListFormat.prototype[@@toStringTag].
2018-07-06 14:44:51 -04:00
Rick Waldron ffeae548a5
Merge pull request #1623 from Ms2ger/RelativeTimeFormat-@@toStringTag
Update expectation for Intl.RelativeTimeFormat.prototype[@@toStringTag].
2018-07-06 14:43:20 -04:00
Ms2ger 65f2d5e8c2 Update the test for negative zero in NumberFormat.
The specification was updated in https://github.com/tc39/ecma402/pull/232.
2018-07-06 17:29:17 +02:00
Ms2ger df41a35c79 Add tests for objects created in the RelativeTimeFormat constructor.
The specification was changed in https://github.com/tc39/proposal-intl-relative-time/pull/79.
2018-07-06 16:46:28 +02:00
Ms2ger f8b6b929df Add some more tests for the options argument to the RelativeTimeFormat constructor. 2018-07-06 15:00:15 +02:00
Ms2ger b46778dc0f Add a test for Object.prototype.toString with Intl.ListFormat objects. 2018-07-06 12:31:16 +02:00
Ms2ger 02f20f4e11 Add a test for Object.prototype.toString with Intl.Segmenter objects. 2018-07-06 12:29:43 +02:00
Ms2ger aa7b3a5d02 Add a test for Object.prototype.toString with Intl.RelativeTimeFormat objects. 2018-07-06 12:27:48 +02:00
Ms2ger d258fcd3ba Add a test for Intl.Segmenter.prototype[@@toStringTag].
This was added to the specification in https://github.com/tc39/proposal-intl-segmenter/pull/29.
2018-07-06 12:23:39 +02:00
Ms2ger df1e9c626c Add the Intl.Segmenter feature. 2018-07-06 12:23:39 +02:00
Ms2ger 46a0ff6e41 Add a test for Intl.ListFormat.prototype[@@toStringTag].
The specification changed in https://github.com/tc39/proposal-intl-list-format/pull/13.
2018-07-06 12:06:38 +02:00
Ms2ger 91d22be781 Add the Intl.ListFormat feature. 2018-07-06 12:06:38 +02:00
Ms2ger 6092c08ade Update expectation for Intl.RelativeTimeFormat.prototype[@@toStringTag].
The specification changed in https://github.com/tc39/proposal-intl-relative-time/pull/77.
2018-07-06 11:45:20 +02:00
test262-automation e9a5a7f918 [javascriptcore-test262-automation] changes from git@github.com:WebKit/webkit.git at sha 949e26452cfa153a7f4afe593da97e2fe9e1b706 on Tue Jul 03 2018 14:35:15 GMT-0400 (Eastern Daylight Time) (#1620)
* [javascriptcore-test262-automation] changes from git@github.com:WebKit/webkit.git at sha 949e26452cfa153a7f4afe593da97e2fe9e1b706 on Tue Jul 03 2018 14:35:15 GMT-0400 (Eastern Daylight Time)
2018-07-03 15:59:58 -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
Amal Hussein ffdf418908 Quick fixes for the curation logs in the implementation directory (#1619) 2018-07-02 14:46:12 -04:00
Amal Hussein a8ac7bf78e added support for jsc curation log files (#1618) 2018-07-02 13:12:09 -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
Izhido 2ef4b205b4 Added URL for C++ test harness. (#1615) 2018-06-29 14:59:45 -04:00
Leo Balter e1d1c68b0e
fix typo for Atomics.wait test, not wake (#1613) 2018-06-28 16:28:03 -04:00
Valerie Young 2fa8fc40e4 Tests for `export * as ns from 'foo'` syntax (#1498) 2018-06-28 15:46:36 -04:00
Jeff Walden 358e5e8a0c Add a test covering the behavior of SingleLineHTMLCloseComment where the LineTerminatorSequence within is either Unicode separator code point. (#1612) 2018-06-27 17:48:24 -04:00
Leo Balter 56091a0c5f
Merge pull request #1533 from rwaldron/1527
Atomics: various corrections, nit-picking and BigInt variants
2018-06-27 13:49:18 -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 be21156542 Atomics: simplify harness/atomicsHelper.js: waitUntil 2018-06-27 10:30:46 -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 d9084b98e7 Atomics: fix documentation in atomicsHelper.js 2018-06-26 14:53:49 -04:00
Rick Waldron 9bf48e619d Atomics: fix typo "throwes" => "throws" 2018-06-26 14:51:45 -04:00
Ms2ger a6c1d05ac4 Add some additional tests for @@toStringTag on Intl.Locale. (#1604) 2018-06-26 14:43:05 -04:00
Rick Waldron 5c5dd5b286 Atomics: ensure all ArrayBuffer & SharedArrayBuffer sizes are uniform 2018-06-26 14:40:00 -04:00
Ms2ger b4efa8c938 Add tests for the shape of the Intl.RelativeTimeFormat API. (#1596)
* Add Intl.RelativeTimeFormat feature.

* Add tests for the shape of the Intl.RelativeTimeFormat API.

* fixup! Add tests for the shape of the Intl.RelativeTimeFormat API.
2018-06-26 14:02:29 -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
jugglinmike 330733eaf3 Correct licensing (#1608)
In order to satisfy the project's formatting rules, license information
was inserted into a number of files where it had been mistakenly omitted
by the original contributors [1]. In many cases, the license information
did not accurately describe the contributor or the time of contribution.
Update the information according to the information provided by the
contributors at the time each file was authored:

- atomicsHelper.js - a72ee6d912
- detachArrayBuffer.js - 70c7375be8
- nans.js - b17ffc0298
- nativeFunctionMatcher.js - 6b7cbb5035
- proxyTrapsHelper.js d530c87b41
- regexpUtils.js - 44b40e083e
- tcoHelper.js - 4dc81d3788

[1] 4ea2931f16
2018-06-25 10:30:11 -04:00
Leo Balter 9bddfaea22
Merge pull request #1572 from rwaldron/super-property-reference
SuperProperty evaluation order
2018-06-22 16:42:22 -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