Commit Graph

72 Commits

Author SHA1 Message Date
André Bargull 92b592547d Ensure NaN time values are correctly handled in various Date setters
Related PR: https://github.com/tc39/ecma262/pull/2136
2024-10-11 12:19:13 -07:00
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
Philip Chimento d77d9b2b85 Duplicate named capture groups: Syntax tests
Parse-time syntax for RegExp literals is already tested. These two files
test runtime RegExp compilation, with respect to duplicate named capture
groups.

See: #3704
2022-11-02 15:22:58 +01:00
André Bargull c335322537 Add exhaustive test for String.prototype.substr with various number inputs
Also see: https://github.com/tc39/ecma262/pull/2844
2022-09-20 09:57:12 -07:00
Jan Štola 71a0bb9e7f RegExp.prototype.compile from other realm should throw TypeError from other realm. 2021-09-10 15:04:11 -04:00
Rick Waldron 2bb2256877
chore: migrate $ERROR -> throw new Test262Error in test/annexB (#3121) 2021-07-29 11:03:18 -07:00
Gus Caplan 881c9e3ba5 move __proto__ tests 2020-10-08 18:05:00 -04:00
Gus Caplan 14788fee59 move define/lookup tests 2020-10-08 18:05:00 -04: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
ExE Boss 9c754bc3ce Add tests for cross‑realm and subclass calls of legacy static accessors 2020-09-10 16:07:17 -04:00
ExE Boss 391f799152 Add tests for cross‑realm and subclass `RegExp.prototype.compile` calls 2020-09-10 16:07:17 -04:00
ExE Boss d06c21c03a Add tests for property descriptors of legacy RegExp accessors 2020-09-10 16:07:17 -04:00
Alexey Shvayka f95e9d3f85 Add Object.is test 2020-08-12 14:06:34 -04:00
QuXing9 19653bdfc8
Additional tests for escape and unescape methods (#2695)
Co-authored-by: Leo Balter <leonardo.balter@gmail.com>
2020-07-09 10:16:18 -07:00
QuXing9 91a9abff4e
Add three testcases for test262 suite. (#2692)
* Add tests for escape function when parameter is not a string.

Fixes #2687
Fixes #2637

* Add test for indirect eval calls  when script is a for statement.

When for statement doesn't have a body, it should throw a SyntaxError.

Fixes #2661

* Add tests for Function Constructor when body contains usestrict.

Fixes #2688
Fixes #2638
2020-07-09 09:57:55 -07:00
Leo Balter 5908ed29ac
Fix tests for HTML comments in function body evaluation (#2109)
Ref tc39/ecma262#1479
2020-06-19 15:06:16 -07:00
Alexey Shvayka 5f1e61e427 Fix [[IsHTMLDDA]] Symbol.replaceAll test 2020-05-20 13:38:32 -04:00
Alexey Shvayka 35a31d157b Add String.prototype.split test 2020-05-13 10:52:57 -04:00
Alexey Shvayka fd74f97067 Add String.prototype.search test 2020-05-13 10:52:57 -04:00
Alexey Shvayka 825dd31d27 Add String.prototype.replaceAll test 2020-05-13 10:52:57 -04:00
Alexey Shvayka 6cce955d6d Add String.prototype.replace test 2020-05-13 10:52:57 -04:00
Alexey Shvayka a66fe41259 Add String.prototype.matchAll test 2020-05-13 10:52:57 -04:00
Alexey Shvayka 3abf511728 Add String.prototype.match test 2020-05-13 10:52:57 -04:00
Alexey Shvayka 5498ab79a1 Add %TypedArray%.from test 2020-05-13 10:52:57 -04:00
Alexey Shvayka 2dac38815f Add Array.from test 2020-05-13 10:52:57 -04:00
Alexey Shvayka c2f0a3ced9 Bring back accidentally removed __proto__ test 2020-04-23 10:44:37 -04:00
Gus Caplan 30542f3e4c Update groups-object.js 2020-04-18 17:04:51 -04:00
Gus Caplan 97bd6fd12d Update indices-groups-object.js 2020-04-18 17:04:51 -04:00
Gus Caplan a799a4ac23 Sort out __proto__ occurances outside of annexB 2020-04-18 17:04:51 -04:00
Alexey Shvayka 27a41b6321
Improve malformed RegExp named groups coverage (#2568) 2020-04-10 15:07:50 -07:00
Leo Balter 14c3a6e839
Add new tests to observe required leading line terminator (#2102)
* Add new tests to observe required leading line terminator

Ref #2095
2019-03-14 14:51:02 -04:00
Leo Balter 1ce8166433 Use a line terminator for HTMLCloseComments 2019-03-14 13:33:48 -04:00
Ross Kirsling d0f57bff72 Ensure test file YAML blocks don't have a trailing space. (#2018) 2019-01-07 11:40:39 -02:00
Peter Marshall b3efcd2f3f Consistently use spaces in features lists (#2000) 2018-12-17 17:00:04 -02:00
Rick Waldron f1e362d558 Fix typos; generate tests (#1907) 2018-10-26 17:11:05 -04:00
Rick Waldron 6f59ddc457 Fix annex B tests 2018-01-25 14:37:36 -05:00
Valerie R Young 524f545f3d Add reference tests for trimLeft and trimRight 2018-01-25 14:10:40 -05:00
Valerie R Young 2905e6a293 fixup: Add initial tests for trim(Start/End/Left/Right) 2018-01-25 14:10:14 -05:00
Valerie R Young 5931e313fc Add initial tests for trim(Start/End/Left/Right) 2018-01-25 14:10:14 -05:00
Rick Waldron 92a2621901 Frontmatter: fixup "info: >" to "info: |" 2018-01-05 12:27:59 -05:00
André Bargull 9b54779018 Add tests for recompilation in @@split 2017-12-19 15:42:56 -05:00
André Bargull eecf0fd06b Add tests for html-comments in Function constructor call 2017-12-19 15:42:56 -05:00
André Bargull 2d6a356699 Move incomplete_hex_unicode_escape.js to annexB
Fixes #1313
2017-11-01 08:23:43 -07:00
Leo Balter f8f5a7a1e7
Add missing generators flags 2017-10-26 19:04:57 -04:00
André Bargull 804e008310 Split Annex-B parts of non-unicode-malformed.js into annexB folder 2017-09-18 14:39:32 -04:00
Leo Balter 358a295db0 Use verifyProperty on test/annexB/ files 2017-09-08 10:13:36 -04:00
Rick Waldron d0ba3251d2 Restore migration to assert.sameValue
Signed-off-by: Rick Waldron <waldron.rick@gmail.com>
2017-06-26 14:36:51 -04:00
Daniel Ehrenberg a2f44c7151 Additional test for range case pointed out by @anba 2017-06-23 12:16:28 -04:00