85 lines
2.2 KiB
Rust
85 lines
2.2 KiB
Rust
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
|
|
use serde_json::{self, Value};
|
|
use std::env;
|
|
use std::fs::{remove_file, File};
|
|
use std::path::Path;
|
|
use std::process::Command;
|
|
|
|
#[test]
|
|
fn properties_list_json() {
|
|
let top = Path::new(&env::var("CARGO_MANIFEST_DIR").unwrap())
|
|
.join("..")
|
|
.join("..")
|
|
.join("..");
|
|
let json = top
|
|
.join("target")
|
|
.join("doc")
|
|
.join("servo")
|
|
.join("css-properties.json");
|
|
if json.exists() {
|
|
remove_file(&json).unwrap()
|
|
}
|
|
let python = env::var("PYTHON").ok().unwrap_or_else(find_python);
|
|
let script = top
|
|
.join("components")
|
|
.join("style")
|
|
.join("properties")
|
|
.join("build.py");
|
|
let status = Command::new(python)
|
|
.arg(&script)
|
|
.arg("servo")
|
|
.arg("html")
|
|
.arg("regular")
|
|
.status()
|
|
.unwrap();
|
|
assert!(status.success(), "{:?}", status);
|
|
|
|
let properties: Value = serde_json::from_reader(File::open(json).unwrap()).unwrap();
|
|
assert!(properties.as_object().unwrap().len() > 100);
|
|
assert!(properties.as_object().unwrap().contains_key("margin"));
|
|
assert!(properties.as_object().unwrap().contains_key("margin-top"));
|
|
}
|
|
|
|
#[cfg(windows)]
|
|
fn find_python() -> String {
|
|
if Command::new("python2.7.exe")
|
|
.arg("--version")
|
|
.output()
|
|
.is_ok()
|
|
{
|
|
return "python2.7.exe".to_owned();
|
|
}
|
|
|
|
if Command::new("python27.exe")
|
|
.arg("--version")
|
|
.output()
|
|
.is_ok()
|
|
{
|
|
return "python27.exe".to_owned();
|
|
}
|
|
|
|
if Command::new("python.exe").arg("--version").output().is_ok() {
|
|
return "python.exe".to_owned();
|
|
}
|
|
|
|
panic!("Can't find python (tried python27.exe and python.exe)! Try fixing PATH or setting the PYTHON env var");
|
|
}
|
|
|
|
#[cfg(not(windows))]
|
|
fn find_python() -> String {
|
|
if Command::new("python2.7")
|
|
.arg("--version")
|
|
.output()
|
|
.unwrap()
|
|
.status
|
|
.success()
|
|
{
|
|
"python2.7"
|
|
} else {
|
|
"python"
|
|
}
|
|
.to_owned()
|
|
}
|