146 Commits

Author SHA1 Message Date
Mike Pennisi
2915fe8527 Update test harness to support new negative format 2016-10-19 15:24:21 -04:00
Mike Pennisi
7f6e6d137d [generation] Parse and render new error format
Extend the test generation tool to emit the recently-modified format of
the "negative" meta-data. Update the effected test case files
accordingly.
2016-10-19 15:24:19 -04:00
jugglinmike
ba32580be5 Remove Python-based test runner (#748)
TC-39 agreed to remove this tool from the Test262 repository in May of
2016 [1]. It has since been re-published as a standalone project to
facilitate independent development by interested parties [2]. Remove it
from the Test262 repository.

[1] https://github.com/tc39/tc39-notes/blob/master/es7/2016-05/may-25.md
[2] https://github.com/test262-utils/test262-harness-py
2016-08-22 14:23:26 -07:00
Sam Saccone
cb4e1bcbe9 Switch to non-positional argument.
Since the argument is required, we mark it as so. Using this approach
gives the user a much nicer error message, as compared to just the "not
enough args" message.
2016-06-18 13:50:56 -07:00
jugglinmike
330cea98f5 [runner] Add support for "folding" block delimiter (#654) 2016-05-31 18:04:31 -04:00
Leo Balter
1e75730d5f Merge pull request #587 from bocoup/generation-annexb-fns
Add tests for Annex B "function in block" semantics (procedurally generated)
2016-05-31 17:45:48 -04:00
Mike Pennisi
eb1c382aa5 [generation] Preserve newlines in info tag 2016-04-26 16:13:30 -04:00
Mike Pennisi
3777273b5d [generation] Avoid generating trailing whitespace 2016-04-26 16:12:49 -04:00
Mike Pennisi
82051d8f6a [generation] Strip whitespace from generated YAML 2016-04-26 13:52:54 -04:00
jugglinmike
54fcbf7ae0 [generation] Support changing to existing files (#583)
When inspecting previously-generated files, a new `Test` instance should
be used. This avoids over-writing the in-memory representation of the
latest test, and allows previously-existing test files to be partially
updated according to subsequent changes in their respective source/case
files.
2016-04-25 12:20:23 -04:00
Mike Pennisi
613d33adbb [generation] Improve file creation heuristic
In expecting "case directories" to contain a sub-directory named
"default", the test generation tool is unable to generate tests for
features where a directory named "default" is not appropriate.

Modify the heuristic that identifies "case directories" to use a more
fundamental aspect (i.e. the existence of at least one "case" file).
2016-04-18 16:18:54 -04:00
Mike Pennisi
b0b41775e5 [generation] Expand "comments" in string literals
Extend test generation tool to recognize and expand interpolation
patterns within string literals.
2016-04-18 15:46:06 -04:00
Leo Balter
3723e7caeb Merge pull request #545 from bocoup/generation
Introduce test generation tool
2016-04-15 17:56:36 -04:00
Leo Balter
5357b1585b Merge pull request #504 from bocoup/explicit-async
Make asynchronous test configuration explicit
2016-03-17 15:28:08 -04:00
Mike Pennisi
c5b9716144 Introduce test generation tool 2016-03-16 14:39:44 -04:00
Mike Pennisi
b6a4910eb5 Console Runner: Formally Deprecate
Document the console runner's "deprecated" status. Move the
documentation to a less central location in the project's file hierarchy.
2016-02-19 10:49:15 -05:00
Mike Pennisi
3771cb3acc Revert "Enable parallel test execution in console runner"
This reverts commit 7ae29d49aedb82e9d13fca159057e4b37ce36f02.
2016-02-19 10:46:18 -05:00
Mike Pennisi
4dd257d7e6 Revert "Test runner: Avoid race condition"
This reverts commit 217812891cd63c20b25379b2cf73f3101416ffe4.
2016-02-19 10:46:17 -05:00
Mike Pennisi
ccf0adfc62 Revert "Runner: Re-use lock to share access to stdout"
This reverts commit b791cc4fbec459b2eef502502e44a3d00688e083.
2016-02-19 10:46:14 -05: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
Mike Pennisi
b791cc4fbe Runner: Re-use lock to share access to stdout
When executing multiple tests in parallel, each "child" thread would
write to the process's standard output buffer immediately upon test
completion. Because thread execution order and instruction interleaving
is non-deterministic, this made it possible for characters to be emitted
out-of-order.

When extended to support multiple concurrent threads, the runner was
outfitted with a "log lock" dedicated to sharing access to the output
file (when applicable). Re-use this lock when writing to standard out,
ensuring proper ordering of test result messages.
2016-02-10 17:15:49 -05:00
Mike Pennisi
217812891c Test runner: Avoid race condition
A recent extension to the test runner introduced support for running
tests in parallel using multi-threading. Following this, the runner
would incorrectly emit the "final report" before all individual test
results.

In order to emit the "final report" at the end of the output stream, the
parent thread would initialize all children and wait for availability of
a "log lock" shared by all children.

According to the documentation on the "threading" module's Lock object
[1]:

> When more than one thread is blocked in acquire() waiting for the state
> to turn to unlocked, only one thread proceeds when a release() call
> resets the state to unlocked; which one of the waiting threads proceeds
> is not defined, and may vary across implementations.

This means the primitive cannot be used by the parent thread to reliably
detect completion of all child threads.

Update the parent to maintain a reference for each child thread, and to
explicitly wait for every child thread to complete before emitting the
final result.

[1] https://docs.python.org/2/library/threading.html#lock-objects
2016-02-10 16:47:01 -05:00
Till Schneidereit
7ae29d49ae Enable parallel test execution in console runner
Adds a `-j`/`--workers-count` parameter to `tools/packaging/test262.py`, defaulting to `[number of cores] - 1`.

Speeds up running the test suite by about ~3x on my 4-core machine, with the SpiderMonkey shell. This could certainly be optimized more by just appending test results to per-thread lists and merging them at the end, but it's better than nothing.
2016-02-08 17:40:16 +01:00
André Bargull
d38de8dca7 Remove links to hg.ecmascript.org (non-license content) 2015-07-17 17:43:27 +02:00
André Bargull
a85f5039e0 Remove links to hg.ecmascript.org 2015-07-17 17:43:09 +02:00
Brian Terlson
d9f1758ef4 Merge pull request #340 from bocoup/raw
Implement `raw` flag
2015-07-07 14:35:11 -05:00
Mike Pennisi
ab7617dedd Implement raw flag
Some tests involving the directive prologue are invalidated by source
text transformations that insert executable code in the beginning of the
script. Implement a `raw` flag that allows these tests to opt-out of
this transformation. Update the relevant tests to use this flag (and
remove references to globals only available when code is injected).

Update the Python runner accordingly:

- Do not run tests marked as "raw" in strict mode
- Reject invalid test configurations

Update the browser runner accordingly:

- Do not modify the script body of tests marked as "raw"
2015-07-07 13:18:55 -04:00
Brian Terlson
284c30646c Merge pull request #351 from arv/fix-indentation
Unify indentation in test_monkeyYaml.py
2015-07-06 17:21:31 -05:00
Brian Terlson
26faeed5c7 Merge pull request #347 from bocoup/all-monkey-all-the-time
Use "monkeyYaml" in all environments
2015-07-06 16:51:00 -05:00
Erik Arvidsson
8dd6aa22dd Unify indentation in test_monkeyYaml.py 2015-07-06 10:09:26 -04:00
Mike Pennisi
1303ef0d05 Use "monkeyYaml" in all environments
The "monkeyYaml" parser is intended to serve as a lightweight fallback
to Python's standard YAML parser in contexts where the latter is not
available. Any intentionally-simplified implementation will necessarily
exhibit non-standard behavior for different input, so not all input
accepted by the standard parser will be accepted by "monkeyYaml". If
loaded exclusively in fallback situations, these edge cases can only be
identified (and debugged) in the environments that require the fallback.
This has allowed developers to unknowingly author tests that cause
errors.

Update the test runner to use "monkeyYaml" in all cases, ensuring more
consistent behavior across contexts and precluding this class of
regression.
2015-07-01 14:49:54 -04:00
Erik Arvidsson
37b1d7a7a8 monkeyYaml: Add support for line folding
Fixes #345
2015-07-01 11:09:08 -04:00
Mike Pennisi
b974c13751 Move website scripts to a dedicated directory
Some JavaScript source files are only relevant in the context of the
Test262 website. They should not be explicitly included by individual
tests, so their presence in the `harness/` directory alongside "include"
files is misleading.

Move the scripts to a location within the `website/` directory to
better-reflect their intended use. Update the relevant HTML templates
with the new locations.
2015-06-26 13:29:07 -04:00
Mike Pennisi
86c7e272a6 Remove support for legacy $INCLUDE syntax
Although test files once expressed dependencies on external files using
a global `$INCLUDE` function, that pattern was removed in favor of
declarative meta-data [1].

Remove the associated logic from the Python runner and the browser.

[1] See commit d4354d14d534abaf2bcb1f82b3daae0702f3b8ee.
2015-06-26 13:29:07 -04:00
Mike Pennisi
73aa06275a Update browser runner to inject assert.js
Since the Python runner was updated to include `assert.js` in all tests
unconditionally, a number of tests have been written that implicitly
rely on its presence. The browser runner does not currently provide this
file's contents to these tests, so they fail unconditionally.

Update the browser runner to inject that file's contents into every test
context.

Note: the existing approach to file retrieval (namely loading via
synchronous XHR requests) is inefficient and deprecated in some
browsers. It is honored here for the sake of consistency and to minimize
the changeset necessary to fix the browser runner.
2015-06-18 13:53:09 -04:00
Erik Arvidsson
be26179719 Fix monkey yaml's handling of carriage return
monkeyYaml didn't split lines correctly leading to \r in resulting
values.

Fixes #295
2015-06-10 10:45:23 -04:00
Mike Pennisi
7c4b2e9ef5 Update contribution information
Test262 now accepts community contributions. Update the copy on the
website to reflect this.
2015-05-25 17:41:13 -04:00
Brian Terlson
5ce9712be0 Python harness: run tests in both modes by default 2015-05-13 18:52:01 -07:00
smikes
107d786ec5 candidate fix for #215
additional test, tests should have unique names
improve python style thx to arv
2015-03-30 15:37:59 -06:00
Gregory Brail
41ed1257d7 Fix JUnit output so that it can be actually be parsed by JUnit and
Jenkins. Wrap XML output correctly and
post-process failure messages to avoid invalid XML characters.
2015-02-26 16:46:59 -08:00
Brian Terlson
b81b71eac2 Fix packager.py for updated locations 2014-12-09 14:52:12 -08:00
Brian Terlson
47821a8bd0 Update python scripts for new paths 2014-12-07 15:42:12 -08:00
Brian Terlson
3883a2e906 Merge pull request #127 from smikes/asserts
add "assert.js" to python, website runners too
2014-12-01 20:14:47 -08:00
smikes
e0fdc30078 add "assert.js" to python, website runners too 2014-12-01 20:04:35 -07:00
Domenic Denicola
2a01b54bb4 Fix whitespace for async test detection
Presumably since Python is whitespace-sensitive, this is actually quite important?
2014-12-01 15:53:27 -05:00
Domenic Denicola
dd243a757c Remove trailing whitespace from the Python 2014-12-01 15:52:19 -05:00
smikes
64093f79d3 add some unit tests
add test to repro #114
fix issue #114
factor out PercentFormat function
new fn write; start factoring summary output
fix tests to match
consolidate "Failed Tests" message
add test for successful run
consolidate all_succeeded message
consolidate summary line
consolidate ntests
failing negative tests
squeeze whitespace
2014-11-11 17:07:48 -07:00
Brian Terlson
1f2812adeb Merge pull request #104 from smikes/monkeyYaml-loadfix
load monkeyYaml without assuming it is on path
2014-10-24 14:41:40 -07:00
Sam Mikes
9dc29da897 load monkeyYaml without assuming it is on path
use imp to import monkeyYaml locally
make monkeyYaml the backup again
2014-10-24 22:36:03 +01:00
Sam Mikes
89d71f56b2 additional fixes suggested by @anba 2014-10-24 15:18:37 +01:00