Prior to this commit:
* Our Python dependency story was a bit of a mess. We had complete
Python packages (wheels and directories) living in-tree, despite
not having any changes from upstream. This is particularly bad because
`setup.py` never gets run on these packages which could (sometimes
silently) unintended breakage.
* Python virtual environments (virtualenv) were only utilized for
testing web-platform tests
After this commit:
* A single virtualenv (`python/_virtualenv`) is activated upon *every*
call to mach
* A requirements file (`python/requirements.txt`) is added to describe
the dependencies needed by Python modules in `python/`. The child
commit immediately following this will remove all the dependencies
no longer needed in-tree (for the sake of keeping this commit
readable).
Relevant to https://github.com/servo/servo/issues/861
Fixes https://github.com/servo/servo/issues/6999
For consistency with Cargo params, and related mach commands like
`mach update-cargo`. The `-c` version is still available as an alias for
compatibility with old scripts.
`./mach test tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/security_location_0.sub.htm` is still failing with the same message as reported in #3219.
This is a quick and dirty workaround for issue #3928. Basically, `cargo test` is deleting `./target/servo`, which is clearly not ideal if we want to do anything with servo after running the unit tests. This PR makes sure to rebuild after running `./mach test-unit`.
I'm not familiar enough with cargo yet to know why it's doing this or what better alternatives there are to fixing this. Having to rebuild afterwards feels pretty ugly to me, but my rationalization right now is that the time it takes to build is negligible in comparison to the time it takes to run the tests. Ideally, this should be something we could take care of in Cargo.toml, but again, I'm new to this (and the documentation seems less than helpful from what I can tell so far).
I won't be available for the rest of the day, so if anyone has suggestions, or wants to wait for a better solution, I'll get back to it tomorrow probably. Otherwise, this PR at least makes `./mach test` work properly, so there's that.
When running commands through Registrar.dispatch, mach does not behave
in the same way it would as if it were running through the command line.
Defaults normally provided through a combination of @CommandArgument and
argparse magic are ignored.
I have some ideas as to how to fix this, but until then, this will allow
`./mach test` to run through test-unit properly.
There are none, but the contenttest program fails with:
```
task '<main>' panicked at 'Required option 'source-dir' missing.', ../../tests/contenttest.rs:48
```
Minor change, added unit test filter to components so that ./mach test-unit [test-filter] works in line with documentation.
I'd personally like to also make filters on the components as well as the tests. This would change the interface (probably to ./mach test-unit [component-filter] [test-filter]), but change is NOT in this pull request.