New issue
Advanced search Search tips

Issue 703837 link

Starred by 5 users

Issue metadata

Status: Fixed
Owner:
Closed: Jul 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 2
Type: Feature

Blocked on:
issue 730250

Blocking:
issue 653514



Sign in to add a comment

Support tests that do not correspond to files in wpt (e.g. foo.any.worker.html).

Project Member Reported by qyears...@chromium.org, Mar 21 2017

Issue description

In web-platform-tests, a test doesn't necessarily need to correspond to a file; there are some files that correspond to multiple tests. So for example, MANIFEST.json contains entries like these:

{
 "items": {
  "testharness": {
   "encoding/textdecoder-copy.any.js": [
    ["/encoding/textdecoder-copy.any.html", {}],
    ["/encoding/textdecoder-copy.any.worker.html", {}]
   ], 
   ...
   "html/syntax/parsing/html5lib_adoption01.html": [
    ["/html/syntax/parsing/html5lib_adoption01.html?run_type=uri", {"timeout": "long"}],
    ["/html/syntax/parsing/html5lib_adoption01.html?run_type=write", {"timeout": "long"}],
    ["/html/syntax/parsing/html5lib_adoption01.html?run_type=write_single", {"timeout": "long"}],
   ],
   ...
  }
 }
}

In order enable running these tests, and treating them like other tests (finding them, running them, and supporting entries in TestExpectations), we may have to change Port.tests and Port.is_test_file (https://chromium.googlesource.com/chromium/src/+/a0a1b3df67b6a958b8dd7007cc8edcae18a4d9bb/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/port/base.py#690).
 

Comment 1 by jsb...@chromium.org, Mar 23 2017

Status: Available (was: Unconfirmed)
Possible fix: make base.py's test_exists() have similar logic to is_test_file() - maybe factor out is_manifest_entry()

How urgent is this? I did some work recently fiddling with MANIFEST.json so I can take this bug if nobody else wants it.
I think that taking this bug now would be helpful, since it would enable us to enable a bunch of wpt tests that we currently ignore -- feel free to take it :-)

As Joshua suggests in #1, I think this will involve changing Port.test_exists and Port.is_test_file, although those names are a bit confusing. It seems like maybe there should be a function to tell whether a given string is a valid test (which may not be a file in wpt, and should be a single test, not a directory), and another function to tell whether a given string is a test directory.
Owner: jeffcarp@chromium.org
Status: Assigned (was: Available)

Comment 5 by jsb...@chromium.org, Mar 24 2017

Cool - I started working on this but didn't get very far. FWIW, I ended up lazily populating a set of urls in wpt_manifest by iterating the manifest items, and exposing an is_wpt_url() method but didn't have time to get everything working.


Comment 6 by jsb...@chromium.org, Mar 24 2017

FYI, I added my partial impl to https://codereview.chromium.org/2767673002 in case it's helpful. No tests though. :(

Labels: -Pri-3 Pri-1
Blockedon: 730250
Status: Started (was: Assigned)
Components: Blink>Infra>Ecosystem
Labels: -Pri-1 Pri-2
Labels: -Type-Bug Type-Feature
Project Member

Comment 13 by bugdroid1@chromium.org, Jul 11 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/0cbeffaef490b679c65e1f212a9c4922678e6002

commit 0cbeffaef490b679c65e1f212a9c4922678e6002
Author: Jeff Carpenter <jeffcarp@chromium.org>
Date: Tue Jul 11 00:42:05 2017

Add 4 TestExpecations from WebKit Linux Trusty Leak

After landing the CL enabling WPT tests that don't necessarily
correspond to real files (crrev.com/c/461722/), 4 Timeout 
TestExpectations from that CL turned up as Failures on WebKit Linux 
Trusty Leak. 

Bug:  703837 
TBR: qyearsley@chromium.org
Change-Id: Ideb2d49c866f04d5105c0ad30446b6c92124f0f2
Reviewed-on: https://chromium-review.googlesource.com/566019
Commit-Queue: Jeff Carpenter <jeffcarp@chromium.org>
Reviewed-by: Quinten Yearsley <qyearsley@chromium.org>
Reviewed-by: Bret Sepulveda <bsep@chromium.org>
Cr-Commit-Position: refs/heads/master@{#485464}
[modify] https://crrev.com/0cbeffaef490b679c65e1f212a9c4922678e6002/third_party/WebKit/LayoutTests/TestExpectations

I landed this yesterday (crrev.com/c/461722/) along with a follow-up TestExpectations CL (above, crrev.com/c/566019/). However, it was reverted (crrev.com/c/566980/) in an attempt to diagnose  bug 740802 . It does not appear that the original CL caused  bug 740802 . Once that is resolved, I will attempt to re-land this CL.
Cc: qyears...@chromium.org domenic@chromium.org
 Issue 653514  has been merged into this issue.
There are a few ongoing issues causing flakiness in layout test land ( bug 741804 ,  bug 740802 ). I'm waiting until things cool down to re-land.
Project Member

Comment 17 by bugdroid1@chromium.org, Jul 18 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/8d5218e690aad4bc8a45d7f11979f02a730f63ea

commit 8d5218e690aad4bc8a45d7f11979f02a730f63ea
Author: Jeff Carpenter <jeffcarp@chromium.org>
Date: Tue Jul 18 00:10:05 2017

Run WPT .any.js and .worker.js variations in run-webkit-tests

When .any.js and .worker.js files are seen during MANIFEST generation
they are mapped to .any.html, .any.worker.html, and .worker.html files
as appropriate which WPTServe will generate on-the-fly. This allows
for easy testing of [Exposed=(Window,Worker)] APIs and tests that are
simply script with no boilerplate HTML. These are now supported in
run-webkit-tests.

When specifying tests to run, the source name should be specified,
for example:

  $ run-webkit-test external/wpt/storage/interfaces.worker.js

But expectations will use the generated name, e.g.:

  external/wpt/storage/interfaces.worker-expected.txt

And failures will be reported under the generated name:

  external/wpt/storage/interfaces.worker.html

This change is based on jsbell's crrev.com/2767673002.

Bug:  703837 
Change-Id: I063b18f44e0460932c3fe8114420a327f1b1e088
Reviewed-on: https://chromium-review.googlesource.com/574645
Commit-Queue: Jeff Carpenter <jeffcarp@chromium.org>
Reviewed-by: Quinten Yearsley <qyearsley@chromium.org>
Reviewed-by: Jeff Carpenter <jeffcarp@chromium.org>
Reviewed-by: Joshua Bell <jsbell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#487304}
[modify] https://crrev.com/8d5218e690aad4bc8a45d7f11979f02a730f63ea/third_party/WebKit/LayoutTests/TestExpectations
[modify] https://crrev.com/8d5218e690aad4bc8a45d7f11979f02a730f63ea/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/controllers/test_result_writer.py
[modify] https://crrev.com/8d5218e690aad4bc8a45d7f11979f02a730f63ea/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/lint_test_expectations.py
[modify] https://crrev.com/8d5218e690aad4bc8a45d7f11979f02a730f63ea/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/port/base.py
[modify] https://crrev.com/8d5218e690aad4bc8a45d7f11979f02a730f63ea/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/port/base_unittest.py
[modify] https://crrev.com/8d5218e690aad4bc8a45d7f11979f02a730f63ea/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/port/test.py
[modify] https://crrev.com/8d5218e690aad4bc8a45d7f11979f02a730f63ea/third_party/WebKit/Tools/Scripts/webkitpy/tool/commands/rebaseline_cl_unittest.py
[modify] https://crrev.com/8d5218e690aad4bc8a45d7f11979f02a730f63ea/third_party/WebKit/Tools/Scripts/webkitpy/w3c/wpt_manifest.py

Project Member

Comment 18 by bugdroid1@chromium.org, Jul 18 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/def8eab23c6425d654d0cbe8ced1b41680c6e98e

commit def8eab23c6425d654d0cbe8ced1b41680c6e98e
Author: Jeff Carpenter <jeffcarp@chromium.org>
Date: Tue Jul 18 02:55:05 2017

Reland "Add 4 TestExpecations from WebKit Linux Trusty Leak"

This is a reland of 0cbeffaef490b679c65e1f212a9c4922678e6002
Original change's description:
> Add 4 TestExpecations from WebKit Linux Trusty Leak
> 
> After landing the CL enabling WPT tests that don't necessarily
> correspond to real files (crrev.com/c/461722/), 4 Timeout 
> TestExpectations from that CL turned up as Failures on WebKit Linux 
> Trusty Leak. 
> 
> Bug:  703837 
> TBR: qyearsley@chromium.org
> Change-Id: Ideb2d49c866f04d5105c0ad30446b6c92124f0f2
> Reviewed-on: https://chromium-review.googlesource.com/566019
> Commit-Queue: Jeff Carpenter <jeffcarp@chromium.org>
> Reviewed-by: Quinten Yearsley <qyearsley@chromium.org>
> Reviewed-by: Bret Sepulveda <bsep@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#485464}

TBR: qyearsley@chromium.org
Bug:  703837 
Change-Id: I23f301716c62c67976b5ff9b4d26bfc80f57bc66
Reviewed-on: https://chromium-review.googlesource.com/575590
Reviewed-by: Jeff Carpenter <jeffcarp@chromium.org>
Commit-Queue: Jeff Carpenter <jeffcarp@chromium.org>
Cr-Commit-Position: refs/heads/master@{#487359}
[modify] https://crrev.com/def8eab23c6425d654d0cbe8ced1b41680c6e98e/third_party/WebKit/LayoutTests/TestExpectations

Status: Fixed (was: Started)
Aside from a few new TestExpectations that had to be added, the most recent attempt to land this (crrev.com/c/574645) looks like it's stable!!

These types of tests now work on Chromium master:
./run-webkit-tests external/wpt/encoding/textdecoder-copy.any.worker.html -> Found 1 test
./run-webkit-tests external/wpt/encoding/textdecoder-copy.any.js -> Found 2 tests

I want to apologize for this change taking so long to land, I was stumped for longer than I should have been by a logic error in my CL. Let me know if the change is working out for you and please re-open this bug if anything comes up!
Yay! Excellent, just confirmed that those two example invocations work.

Note though, that currently blob matching doesn't work for wpt tests the way it works for other tests, e.g.

  ./run-webkit-tests 'external/wpt/encoding*' -> Found 0 tests
  ./run-webkit-tests 'fast/forms/validation*' -> Found 5 tests

For consistency, it would be nice to either make blob matching work, or remove support for it entirely. Any thoughts?

Sign in to add a comment