gecko-dev/third_party/rust/scroll/tests
Markus Stange c6fc1caf62 Bug 1457481 - Run mach vendor rust. r=froydnj,erahm
Most importantly, this picks up "object" and "goblin" for ELF binary parsing.
We only use the ELF code from goblin, so the mach-O parsing code gets
eliminated by the linker. Overall, this increases the Android installer size
by 20KB.

Try pushes for reference:
before: https://treeherder.mozilla.org/#/jobs?repo=try&revision=834b56dc5ab3d63a43a32f740ee8212296ac726d&selectedJob=201600899
after: https://treeherder.mozilla.org/#/jobs?repo=try&revision=6983b27e8d3cb715d3b7e6cbd276683f6466e3cc&selectedJob=201600475

installer size: 34524820 -> 34542861 (34.52MB -> 34.54MB)

$ mach vendor rust
    Updating registry `https://github.com/rust-lang/crates.io-index`
      Adding goblin v0.0.17
      Adding memmap v0.6.2
      Adding miniz-sys v0.1.10
      Adding object v0.10.0
      Adding parity-wasm v0.31.3
      Adding plain v0.2.3
      Adding profiler_helper v0.1.0 (file:///Users/mstange/code/mozilla/tools/profiler/rust-helper)
      Adding scroll v0.9.1
      Adding scroll_derive v0.9.5
      Adding syn v0.15.5
      Adding thin-vec v0.1.0
      Adding uuid v0.6.5
 0:30.11 The following files exceed the filesize limit of 102400:

third_party/rust/miniz-sys/miniz.c
third_party/rust/syn-0.14.6/src/expr.rs
third_party/rust/syn-0.14.6/src/gen/fold.rs
third_party/rust/syn-0.14.6/src/gen/visit.rs
third_party/rust/syn-0.14.6/src/gen/visit_mut.rs

The syn dependency is not compiled for goblin, as far as I can tell - it's only
needed for the 'syn' feature of scroll_derive, and scroll does not ask for
scroll_derive/syn.

object -> goblin -> scroll -> scroll_derive -/-> syn

But it looks like other versions of syn were already in the tree.

Depends on D7021

Differential Revision: https://phabricator.services.mozilla.com/D7023

--HG--
rename : third_party/rust/syn/src/parsers.rs => third_party/rust/syn-0.14.6/src/parsers.rs
rename : third_party/rust/syn/src/verbatim.rs => third_party/rust/syn-0.14.6/src/verbatim.rs
rename : third_party/rust/uuid/.travis.yml => third_party/rust/uuid-0.5.1/.travis.yml
rename : third_party/rust/uuid/src/rustc_serialize.rs => third_party/rust/uuid-0.5.1/src/rustc_serialize.rs
rename : third_party/rust/uuid/src/serde.rs => third_party/rust/uuid-0.5.1/src/serde.rs
extra : moz-landing-system : lando
2018-10-02 01:50:56 +00:00
..
api.rs Bug 1457481 - Run mach vendor rust. r=froydnj,erahm 2018-10-02 01:50:56 +00:00
readme.rs Bug 1457481 - Run mach vendor rust. r=froydnj,erahm 2018-10-02 01:50:56 +00:00

use std::env;
use std::env::consts::EXE_EXTENSION;
use std::path::Path;
use std::process::Command;

#[test]
fn readme_test() {
    let rustdoc = Path::new("rustdoc").with_extension(EXE_EXTENSION);
    let readme = Path::new(file!()).parent().unwrap().parent().unwrap().join("README.md");
    let exe = env::current_exe().unwrap();
    let depdir = exe.parent().unwrap();
    let outdir = depdir.parent().unwrap();
    let extern_arg = format!("scroll={}", outdir.join("libscroll.rlib").to_string_lossy());
    let mut cmd = Command::new(rustdoc);
    cmd.args(&["--verbose", "--test", "-L"])
        .arg(&outdir)
        .arg("-L")
        .arg(&depdir)
        .arg("--extern")
        .arg(&extern_arg)
        .arg(&readme);
    println!("Running `{:?}`", cmd);
    let result = cmd.spawn()
        .expect("Failed to spawn process")
        .wait()
        .expect("Failed to run process");
    assert!(result.success(), "Failed to run rustdoc tests on README.md!");
}