60 Commits

Author SHA1 Message Date
Peter Hoddie
e4f4abdcb2
Compatibility with Hardened JavaScript (#4088)
This PR proposes changes to existing test262 tests to allow them to pass under Hardened JavaScript (see Secure ECMAScript proposal and Hardened JavaScript). Moddable uses Hardened JavaScript for JavaScript runtimes on resource constrained embedded devices, including those targeted by ECMA-419.

The changes fall into four groups:

1. Replace use of new Date() with new Date(1970). Scripts running inside a Compartment cannot retrieve the current time, so new Date() throws but new Date(1970) succeeds. Very few tests need the current time, but instead simply need a Date instance.
2. Use Object.defineProperty instead of setting existing built-in properties directly, such as toString and toValue. In Hardened JavaScript, prototypes of built-in objects are frozen. Consequently, setting properties of an instance that exist on the prototype throw (Hardened JavaScript is always in strict mode).
3. Eliminate use of Math.random(). Scripts running inside a Compartment cannot generate random numbers. One test identified so far uses Math.random() in a way that can easily be replaced with a counter.
4. Narrow the scope of exception tests. Consider the following

assert.throws(TypeError, () => {
  var s1 = new Date();
  s1.toString = Boolean.prototype.toString;
  s1.toString();
});

This test passes, but only because new Date() fails by throwing a TypeError. If the invocation of the Date constructor is resolved by (1) above, then the assignment to toString fails as per (2) above. The script should be modified as below to ensure that assert.throws only tests the intended statement, s1.toString(). The modified script tests the intended functionality and passes under Hardened JavaScript

var s1 = new Date(1970);
Object.defineProperty(s1, "toString", {
  value: Boolean.prototype.toString
});
assert.throws(TypeError, () => {
  s1.toString();
});

This is an initial PR to begin the process of adapting test262 for use with Hardened JavaScript. Further changes are expected, with the vast majority likely to fall into the four groups described above.

Thank you to gibson042, kriskowal, and erights for their advice on this work.
2024-07-04 08:19:23 -07:00
Kevin Gibbons
961480ac61 remove some auto-generated error messages in "assert.throws" tests 2024-03-25 12:09:10 +01:00
Kevin Gibbons
5424d7e834 rewrite tests to use verifyProperty 2024-03-25 12:05:06 +01:00
rwaldron
2a385983b1 Transform legacy format to harness assertions: test/built-ins/P*/**/*.js 2021-09-02 11:34:18 -07:00
Rick Waldron
826b6ae16f
chore: migrate $ERROR -> throw new Test262Error in test/built-ins/Promise (#3091) 2021-07-21 12:48:13 -07:00
ExE Boss
8f904d8cc8 Set function length and name in CreateBuiltinFunction 2021-01-29 09:45:20 -05:00
Rick Waldron
d576baf73f Info: adds "sec-evaluatenew" step to info for all "not-a-constructor.js" tests. 2020-10-06 12:01:34 -04:00
Rick Waldron
c644ede430 Built-in function objects that are not identified as constructors must throw a TypeError exception when new'ed. Fixes gh-1739 2020-10-06 12:01:34 -04:00
Rick Waldron
e662428fb4 Replace all "valid" occurences of $ERROR with Test262Error.thrower 2020-09-16 17:36:54 -04:00
Rick Waldron
2f12ab71f8 Promise: use .then($DONE, $DONE) wherever possible 2020-06-24 15:47:48 -04:00
Rick Waldron
040eb5393a
Promises: whenever evaluating checkSequence(sequence), also assert length of sequence (#2672) 2020-06-24 12:18:35 -07:00
Rick Waldron
c4c978b7ed
Promise.all, Promise.allSettled: coverage updates (#2657) 2020-06-12 09:54:52 -07:00
Alexey Shvayka
cf37b039a8 Update Promise.all tests 2020-06-03 15:49:04 -04:00
Marja Hölttä
218edad632
Remove duplicate Promise.all tests (#2624)
1) Promise/all/S25.4.4.1_A6.1_T1.js is the same as
Promise/all/S25.4.4.1_A2.1_T1.js

2) Promise/all/S25.4.4.1_A6.1_T2.js is covered by
Promise/all/S25.4.4.1_A2.3_T1.js and
Promise/all/S25.4.4.1_A2.3_T2.js
2020-05-18 10:42:56 -07:00
Marja Hölttä
429c60ec38 fix 2020-05-06 10:48:38 -04:00
Marja Hölttä
4be59efd30 fix 2020-05-06 10:48:38 -04:00
Marja Hölttä
58dba42939 Add Promise/*/resolve-not-callable-close.js 2020-05-06 10:48:38 -04:00
Gus Caplan
4d9dccf443 Remove invalid feature, fix lint 2020-04-29 17:31:45 -04:00
jhnaldo
68205eb76c Fixed wrong esid and features in a Promise.all test 2020-04-18 13:26:27 -04:00
André Bargull
59a1a016b7 Assign "name" property to all anonymous functions (#2299)
Implements the changes from <https://github.com/tc39/ecma262/pull/1490>.
2019-08-15 10:58:40 -04:00
Leo Balter
ff9763729d Remove duplicated es[56]id if esid is present 2019-08-05 10:54:37 -04:00
Alexey Shvayka
d7c95efe66 Improve "name" tests of Promise built-in functions (#2179) 2019-06-26 15:03:14 -04:00
Gus Caplan
61ccff550e Fix invoke-resolve-get-error-close tests (#2210) 2019-06-21 14:26:57 -04:00
Leo Balter
24d1b6d59c Fix tests for new resolve lookup 2019-04-24 17:28:01 -04:00
Leo Balter
b646cf6365 Add tests for Promise.all|race resolve lookup
Ref tc39/ecma262#1506
2019-04-24 17:28:01 -04:00
Adrian Heine
fc6de76a0d Add missing mandatory Promise.{all,race} argument 2018-11-08 09:37:56 +01:00
André Bargull
500e48e6ce Fix various test bugs (#1502)
Fixes #1492
2018-03-22 16:36:57 -04:00
Rick Waldron
03f0f56961 Promise.all/race with non-iterable or invalid return from Symbol.iterator. (#1496)
Fixes gh-1490
2018-03-19 14:01:36 -04:00
Rick Waldron
133dfa8793 built-ins/Promise/*: make all indentation consistent (depth & character) (#1433) 2018-02-15 15:11:21 -05:00
André Bargull
f95b56ab28 Revert "js-beautify: make all indentation consistent (depth & character) (#1409)" (#1412)
This reverts commit a01de4a722d088055a7d84d8c691ddd7109edb34.
2018-02-09 12:09:47 -05:00
Rick Waldron
a01de4a722 js-beautify: make all indentation consistent (depth & character) (#1409) 2018-02-09 11:35:37 -05:00
André Bargull
f717982c94 Remove unused includes 2018-01-25 13:59:37 -05:00
Rick Waldron
92a2621901 Frontmatter: fixup "info: >" to "info: |" 2018-01-05 12:27:59 -05:00
Rick Waldron
86209d8fd9 Make all harness/* file names consistent; update occurrences in test
Signed-off-by: Rick Waldron <waldron.rick@gmail.com>
2017-06-28 11:53:58 -04:00
André Bargull
d59e30c95e Remove execute bit from files (#976) 2017-04-13 16:24:07 -04:00
Mike Pennisi
c62700c8ef Assert iterator protocol for Promise methods 2016-06-27 15:26:35 -04:00
Mike Pennisi
2b5efe135c Add test for abrupt completion during Promise.all 2016-06-27 15:19:48 -04:00
Mike Pennisi
23d566209a Make asynchronous test configuration explicit
For asynchronous tests, the contract between test file and test runner
is implicit: runners are expected to inspect the source code for
references to a global `$DONE` identifier.

Promote a more explicit contract between test file and test runner by
introducing a new frontmatter "tag", `async`. This brings asynchronous
test configuration in-line with other configuration mechanisms and also
provides a more natural means of test filtering.

The modifications to test files was made programatically using the
`grep` and `sed` utilities:

    $ grep "\$DONE" test/ -r --files-with-match --null | \
        xargs -0 sed -i 's/^\(flags:\s*\)\[/\1[async, /g'
    $ grep "\$DONE" test/ -rl --null | \
        xargs -0 grep -E '^flags:' --files-without-match --null | \
        xargs -0 sed -i 's/^---\*\//flags: [async]\n---*\//'
2016-02-12 13:03:19 -05:00
Gorkem Yakin
738a24b109 Merge pull request from jugglinmike/improve-promise-coverage-resolve (closes #463) 2016-01-19 16:33:23 -08:00
Mike Pennisi
b1b4f04494 Add tests for Promise Resolve Functions
Remove files that tested both PerformPromiseThen and
PromiseResolveFunction in favor of new tests that test
PromiseResolveFunction more directly and completely.
2016-01-19 16:32:36 -08:00
Gorkem Yakin
4a862fba95 Merge pull request #465 from jugglinmike/improve-promise-coverage-all-race
Improve Promise coverage: PerformPromiseAll & PeformPromiseRace
2016-01-15 16:19:18 -08:00
Gorkem Yakin
cd60a6d83a Merge pull request #464 from jugglinmike/improve-promise-coverage-cap
Improve Promise coverage: NewPromiseCapability
2016-01-13 16:49:47 -08:00
Mike Pennisi
7fab70bb21 Add tests for Promise Reject Functions 2016-01-07 13:24:42 -05:00
Mike Pennisi
615f42274d Extend coverage for NewPromiseCapability 2016-01-07 12:42:44 -05:00
Mike Pennisi
bb26beece2 Extend coverage for PerformPromiseAll 2016-01-07 12:42:21 -05:00
Gorkem Yakin
ca0e411870 Merge pull request #447 from anba/promise_coverage
Improve test coverage for various Promise methods
2015-12-10 08:29:38 -08:00
Rick Waldron
59dfae6311 Merge pull request #450 from cscott/promise-improvements
Remove unnecessary ES2015 syntax; add feature flags where appropriate.
2015-12-04 14:50:52 -05:00
C. Scott Ananian
bae004d531 Remove unnecessary ES2015 syntax; add feature flags where appropriate.
This allows these tests to be more easily reused to test Promise
implementations in isolation.
2015-12-03 17:34:17 -05:00
Gorkem Yakin
47d3eb1bfe Merge pull request #446 from anba/es2016_december_update
Updates for ES2016 Draft 2015-12-01
2015-12-03 13:15:34 -08:00
André Bargull
bd8c91e250 Updates for ES2016 Draft 2015-12-01
- RegExp.prototype[Symbol.split] calls ToUint32 (https://github.com/tc39/ecma262/issues/92)
- Species lookup removed from Promise.all and Promise.race (https://github.com/tc39/ecma262/issues/151)
- Generator functions are no longer constructors (https://github.com/tc39/ecma262/pull/171)

Fixes #444
2015-12-02 18:07:06 +01:00