Commit Graph

87 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
Philip Chimento 8a1ec2f20b Test ISO strings with extended year -000000
In Date.parse() and new Date(), representations of the year 0 as -000000
must not be accepted. In the case of Date.parse(), they should yield NaN,
and in the case of new Date(), they should yield an invalid Date object,
whose valueOf() is NaN.
2022-04-25 11:34:52 -04:00
Kevin Gibbons 56a4cab76c Add tests: order of coercion of arguments vs NaN check in Date methods 2022-01-04 09:32:53 -05:00
Andreas Woess 2314b99bac
Fix incorrect tests: new Date(-0).valueOf() and new Date(-1.23e-15).valueOf() should return +0. (#3201) 2021-09-15 11:57:45 -04:00
rwaldron f1720c4a0c Mark with "TODO: Convert to verifyProperty() format." 2021-09-02 11:21:25 -07:00
rwaldron 1c24e4b915 Transform legacy format to harness assertions 2021-09-02 11:21:25 -07:00
Rick Waldron b0e791f4a6
chore: migrate $ERROR -> throw new Test262Error in test/built-ins/Date (#3079) 2021-07-21 14:14:06 -07: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 8aacff591c Standardize built-in constructor testing 2020-10-06 12:01:34 -04:00
Rick Waldron 12ed905003 Clean up some existing constructor checks; eliminate duplicate checks 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
Kevin Gibbons c911f71888 Coverage: Date arithmetic is floating point 2020-09-28 09:11:00 -04:00
Alexey Shvayka 7a56df1119 Test that Date.prototype has no [[DateValue]] slot 2020-09-10 15:27:34 -04:00
Alexey Shvayka 38f3014063 Test Date.prototype[@@toPrimitive] called as top-level function 2020-09-09 14:34:20 -04:00
Alexey Shvayka b15c3a5b79 Test Date.prototype.toJSON called as top-level function 2020-09-09 14:34:20 -04:00
Ross Kirsling 800870cbb8
Fix DST sensitivity in Date/parse/without-utc-offset.js. (#2523) 2020-03-10 18:07:44 -07:00
Ross Kirsling 01007880bc Add test verifying offsetless date-time string is local time. (#2461)
* Add test verifying offsetless date-time string is local time.

* Fix copyright year.
2020-01-08 15:32:28 -05:00
Leo Balter e2903e2648
Merge pull request #2366 from bocoup/unnecessary-includes
Remove unnecessary "includes" directives
2019-09-27 16:46:22 -04:00
Mike Pennisi 9cd62ffbd7 Improve coverage: ctor props of the global object
Prior to this commit, the descriptors of the constructor properties of
the global object were verified inconsistently, many independent
assertions occured in the same file, and that file test was poorly
located.

Restructure the relevant tests to improve coverage, follow convention,
and promote discoverability.
2019-09-27 15:39:10 -04:00
Mike Pennisi f26c2a11bd Remove unnecessary "includes" directives
The values defined by the referenced files are not used by these tests.
This makes their inclusion superfluous, which needlessly increases the
time to execute the tests and may confuse some readers.
2019-09-25 13:59:24 -04:00
Leo Balter ff9763729d Remove duplicated es[56]id if esid is present 2019-08-05 10:54:37 -04:00
Alexey Shvayka 74e0cae407 Add Date.prototype.toJSON coverage (#2190) 2019-06-12 14:59:54 -04:00
Richard Gibson d62318319f Add tests for string representations of Date objects with negative years (#2114)
* Add tests for string representations of Date objects with negative years

Ref https://github.com/tc39/ecma262/issues/1035
Ref https://github.com/tc39/ecma262/issues/1407
2019-04-02 14:02:35 -04:00
Rick Waldron f1e362d558 Fix typos; generate tests (#1907) 2018-10-26 17:11:05 -04:00
Andrew Paprocki cab89848ad Date.parse: Test maximum time value range per spec. 2018-03-22 15:42:56 +00:00
Andrew Paprocki 9db5005ac3 Date.parse: Add 0 (UTC epoch) test per spec. 2018-03-22 15:42:55 +00:00
Rick Waldron b59d956b3c built-ins/Date/*: make all indentation consistent (depth & character) (#1422) 2018-02-15 16:40:26 -05:00
André Bargull f95b56ab28 Revert "js-beautify: make all indentation consistent (depth & character) (#1409)" (#1412)
This reverts commit a01de4a722.
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
Viktor f9d8b29ae4 A fix for the copyright 2018-01-25 13:59:50 -05:00
Rick Waldron cc94370eb9 Frontmatter nits 2018-01-17 12:32:11 -05:00
Viktor 290cef061c Create non-integer-values.js 2018-01-17 12:02:19 -05:00
Rick Waldron 92a2621901 Frontmatter: fixup "info: >" to "info: |" 2018-01-05 12:27:59 -05:00
Leo Balter 7cbbe51216 Add cross-realm feature 2017-09-22 15:29:10 -04:00
Rick Waldron 33995100cd Remove duplicate frontmatter tags 2017-08-11 11:52:21 -04:00
Sue Lockwood 22dc5f99b2 fix valueof frontmatter under Date 2017-08-02 15:47:16 -04:00
deathbearbrown b7676e8f5f add esid to Date frontmatter 2017-08-02 15:47:16 -04:00
Daniel Ehrenberg 89be4ebff0 Merge pull request #924 from littledan/date-throw
Test that Date.prototype.toString throws for non-Date receiver
2017-06-29 10:33:17 +02: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
Rick Waldron e3fa66550f Merge pull request #930 from littledan/date-tostring-tests
Date toString tests
2017-06-22 16:22:08 -04:00
Daniel Ehrenberg 2f3787936b Fix typo from review 2017-06-15 06:25:17 +02:00
André Bargull d59e30c95e Remove execute bit from files (#976) 2017-04-13 16:24:07 -04:00
Daniel Ehrenberg 99fa2a6c9e Add tests for the formats of toString functions 2017-03-23 12:19:37 +01:00
Daniel Ehrenberg bd685e552c Tests for "Invalid Date" in more cases
Following the proposed specification in
https://github.com/tc39/ecma262/pull/848
2017-03-21 18:35:10 +01:00
Daniel Ehrenberg b3115654c1 Test toString() behavior of invalid Dates 2017-03-21 17:48:57 +01:00
Daniel Ehrenberg 1f065b5b71 Changes to Date test from review 2017-03-21 17:46:59 +01:00
Daniel Ehrenberg 7151f3247e Test that Date.prototype.toString throws for non-Date receiver
Pending discussion of https://github.com/tc39/ecma262/issues/849

Test passes in V8.
2017-03-21 10:51:53 +01:00
Leo Balter 9478a43ea7 Fix Date coercion tests (#906)
Fixes #767
2017-03-20 13:15:06 -04:00