fork of https://github.com/rustwasm/wasm-pack for the needs of NextGraph.org
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
109 lines
3.8 KiB
109 lines
3.8 KiB
use wasm_pack::install::{self, Arch, Os, Tool};
|
|
|
|
#[test]
|
|
#[cfg(any(
|
|
all(target_os = "linux", target_arch = "x86_64"),
|
|
all(target_os = "macos", target_arch = "x86_64"),
|
|
all(windows, target_arch = "x86_64"),
|
|
))]
|
|
fn can_download_prebuilt_wasm_bindgen() {
|
|
let dir = tempfile::TempDir::new().unwrap();
|
|
let cache = binary_install::Cache::at(dir.path());
|
|
if let install::Status::Found(dl) =
|
|
install::download_prebuilt(&Tool::WasmBindgen, &cache, "0.2.74", true).unwrap()
|
|
{
|
|
assert!(dl.binary("wasm-bindgen").unwrap().is_file());
|
|
assert!(dl.binary("wasm-bindgen-test-runner").unwrap().is_file())
|
|
} else {
|
|
assert!(false, "Download failed")
|
|
}
|
|
}
|
|
|
|
#[test]
|
|
#[cfg(any(
|
|
all(target_os = "linux", target_arch = "x86_64"),
|
|
all(target_os = "macos", target_arch = "x86_64"),
|
|
all(windows, target_arch = "x86_64"),
|
|
))]
|
|
fn downloading_prebuilt_wasm_bindgen_handles_http_errors() {
|
|
let dir = tempfile::TempDir::new().unwrap();
|
|
let bad_version = "0.2.74-some-trailing-version-stuff-that-does-not-exist";
|
|
let cache = binary_install::Cache::at(dir.path());
|
|
let result = install::download_prebuilt(&Tool::WasmBindgen, &cache, bad_version, true);
|
|
assert!(result.is_err());
|
|
let error = result.err().unwrap();
|
|
|
|
assert!(error.chain().any(|e| e.to_string().contains("404")));
|
|
assert!(error.chain().any(|e| e.to_string().contains(bad_version)));
|
|
}
|
|
|
|
#[test]
|
|
#[cfg(any(
|
|
all(target_os = "linux", target_arch = "x86_64"),
|
|
all(target_os = "macos", target_arch = "x86_64"),
|
|
all(windows, target_arch = "x86_64"),
|
|
))]
|
|
fn can_download_prebuilt_cargo_generate() {
|
|
let dir = tempfile::TempDir::new().unwrap();
|
|
let cache = binary_install::Cache::at(dir.path());
|
|
if let install::Status::Found(dl) =
|
|
install::download_prebuilt(&Tool::CargoGenerate, &cache, "latest", true).unwrap()
|
|
{
|
|
assert!(dl.binary("cargo-generate").unwrap().is_file());
|
|
} else {
|
|
assert!(false, "Download Failed");
|
|
}
|
|
}
|
|
|
|
#[test]
|
|
#[cfg(any(
|
|
all(target_os = "linux", target_arch = "x86_64"),
|
|
all(target_os = "macos", target_arch = "x86_64"),
|
|
all(target_os = "macos", target_arch = "aarch64"),
|
|
all(windows, target_arch = "x86_64"),
|
|
))]
|
|
fn can_download_prebuilt_wasm_opt() {
|
|
let dir = tempfile::TempDir::new().unwrap();
|
|
let cache = binary_install::Cache::at(dir.path());
|
|
if let install::Status::Found(dl) =
|
|
install::download_prebuilt(&Tool::WasmOpt, &cache, "latest", true).unwrap()
|
|
{
|
|
assert!(dl.binary("bin/wasm-opt").unwrap().is_file());
|
|
} else {
|
|
assert!(false, "Download Failed");
|
|
}
|
|
}
|
|
|
|
#[test]
|
|
fn all_latest_tool_download_urls_valid() {
|
|
let mut errors = Vec::new();
|
|
|
|
for tool in [Tool::CargoGenerate, Tool::WasmBindgen, Tool::WasmOpt] {
|
|
for arch in [Arch::X86_64, Arch::X86, Arch::AArch64] {
|
|
for os in [Os::Linux, Os::MacOS, Os::Windows] {
|
|
// For all valid tool, arch & os combinations,
|
|
// error out when any of them is a 404 or similar
|
|
if let Ok(url) = install::prebuilt_url_for(&tool, "0.2.82", &arch, &os) {
|
|
// Use HTTP HEAD instead of GET to avoid fetching lots of stuff
|
|
let res = ureq::head(&url).call().unwrap();
|
|
let status = res.status();
|
|
if 500 > status && status >= 400 {
|
|
errors.push(format!(
|
|
"Can't download URL {} for {} on {}: {}",
|
|
url,
|
|
arch,
|
|
os,
|
|
res.status()
|
|
));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if !errors.is_empty() {
|
|
panic!(
|
|
"Some URLs for prebuild tools were unavailable:\n{}",
|
|
errors.join("\n")
|
|
);
|
|
}
|
|
}
|
|
|