The caches weren't being invalidated when the manifest itself
changed. To fix this the manifest itself has to be written before the
cache and the cache has to include data about the manifest that it's
associated with (the mtime and path are used for this purpose).
To make all this work requires a single method that can load the
manifest, update it, write the manifest and write the
caches. Therefore we introduce a single load_and_update method that is
intended to replace all previous use of the load() or update() methods
(and as a bonus handles manifest version mismatches in a single
place).
Depends on D8227
Differential Revision: https://phabricator.services.mozilla.com/D8228
--HG--
extra : moz-landing-system : lando
Compared to the normal os.walk this has a couple of differences:
* It returns lists of (name, stat) for filenames and directories,
allowing callers to reuse the stat data without going back to the
system to re-request it.
* Directories are always returned as paths relative to the root, and
the root itself is returned as the empty string.
* It is non-recursive.
There are also a few features missing that aren't required for our use
cases.
Depends on D8226
Differential Revision: https://phabricator.services.mozilla.com/D8227
--HG--
extra : moz-landing-system : lando
When processing the manifest using the worktree, instead of reading
all files to see if the content changed, instead only process files where
the mtime has been updated since the previous run. Also cache the
result of running gitignore, so we can save a couple of seconds
processing the gitignore rules.
Depends on D8225
Differential Revision: https://phabricator.services.mozilla.com/D8226
--HG--
extra : moz-landing-system : lando
This updates the gitignore implemenation to take input like os.walk
but with additional stat data for the files. It also makes several
useful optimistaions:
* Avoid using regex when just matching a literal
* Identify patterns that can only match the final component of a path
and run those against that component rather than the full path.
* Add the possibility of providing a dictionary of paths to gitignore
statuses as a cache.
This dramatically reduces the amount of time we spend in gitignore
processing when updating the manifest.
Depends on D8223
Differential Revision: https://phabricator.services.mozilla.com/D8224
--HG--
extra : moz-landing-system : lando
We end up with a lot of rules like (?:.*)/.*\.ext which are basically
trying to find the last component in a path and match against
that. These are rather slow to run so the easiest thing tdo is just
pass in the last component of the path when we know that's the only
thing the rule can match.
The changes to surrounding code to use this API will be made in future
commits.
Depends on D8222
Differential Revision: https://phabricator.services.mozilla.com/D8223
--HG--
extra : moz-landing-system : lando
This patch changes Marionette to only run the interactability test
on <input type=file> when the strictFileInteractability capability is set.
strictFileInteractability is not set by default which means
this changes WebDriver:SendElementKeys' behaviour to not run
interactability checks on <input type=file>. This aligns our
WebDriver implementation with the current behaviour in Chrome.
To make it legible what the input to interaction.sendKeysToElement
is, its API has changed to take an options dictionary instead of
three boolean arguments at the end.
Depends on D10274
Differential Revision: https://phabricator.services.mozilla.com/D10275
--HG--
extra : moz-landing-system : lando
The strictFileInteractability capability is always supported by
geckodriver.
Depends on D10273
Differential Revision: https://phabricator.services.mozilla.com/D10274
--HG--
extra : moz-landing-system : lando
The new strictFileInteractabilityTests capability takes a boolean and
can unconditionally be set to both true and false. It is permitted
to be undefined.
Depends on D10270
Differential Revision: https://phabricator.services.mozilla.com/D10271
--HG--
extra : moz-landing-system : lando
The WebDriver standard changed
in https://github.com/w3c/webdriver/pull/1325 to align with
chromedriver's behaviour of permitting interaction with hidden
<input type=file> elements.
DOM elements can be hidden, i.e. not rendered, in two ways: through
applying the "hidden" DOM attribute or by setting the "display:
none" CSS style.
Depends on D10269
Differential Revision: https://phabricator.services.mozilla.com/D10270
--HG--
extra : moz-landing-system : lando
Normally all interactability tests are centralised in interactability.py,
but the WebDriver standard recently changed to apply a special
set of interactability checks specifically for <input type=file>.
These tests ensure the special code paths are invoked for form controls.
Differential Revision: https://phabricator.services.mozilla.com/D10269
--HG--
extra : moz-landing-system : lando
As a backwards compatibility measure following bug 1388424 which
removed the ability to set the session ID, we duplicated the
capabilities dictionary in the request body.
Since this shipped through all the trees as part of Firefox 60,
we can now drop this compatibility measure.
Differential Revision: https://phabricator.services.mozilla.com/D10733
--HG--
extra : moz-landing-system : lando
The test_window_fullscreen.py test is not run because it is not
part of the test manifest. Since it is duplicated by WPT test,
we will not try to resurrect it by fixing the test.
Differential Revision: https://phabricator.services.mozilla.com/D10710
--HG--
extra : moz-landing-system : lando
For now, we keep supporting the prefixed version, since there are examples/instructions
on the Web that don't include an unprefixed value.
Differential Revision: https://phabricator.services.mozilla.com/D10451
--HG--
extra : moz-landing-system : lando