34 lines
1.0 KiB
Rust
34 lines
1.0 KiB
Rust
|
|
use std::fs;
|
||
|
|
use std::process::Command;
|
||
|
|
|
||
|
|
use windows_bindgen::bindgen;
|
||
|
|
|
||
|
|
#[test]
|
||
|
|
fn gen_bindings() {
|
||
|
|
let output = "src/windows/bindings.rs";
|
||
|
|
let existing = fs::read_to_string(output).unwrap();
|
||
|
|
|
||
|
|
bindgen(["--no-deps", "--etc", "tests/bindings.txt"]).unwrap();
|
||
|
|
let out = Command::new("rustfmt")
|
||
|
|
.arg("--edition=2021")
|
||
|
|
.arg(output)
|
||
|
|
.output()
|
||
|
|
.unwrap();
|
||
|
|
|
||
|
|
dbg!(String::from_utf8(out.stdout).unwrap());
|
||
|
|
dbg!(String::from_utf8(out.stderr).unwrap());
|
||
|
|
assert!(out.status.success());
|
||
|
|
|
||
|
|
// Check the output is the same as before.
|
||
|
|
// Depending on the git configuration the file may have been checked out with `\r\n` newlines or
|
||
|
|
// with `\n`. Compare line-by-line to ignore this difference.
|
||
|
|
let mut new = fs::read_to_string(output).unwrap();
|
||
|
|
if existing.contains("\r\n") && !new.contains("\r\n") {
|
||
|
|
new = new.replace("\n", "\r\n");
|
||
|
|
} else if !existing.contains("\r\n") && new.contains("\r\n") {
|
||
|
|
new = new.replace("\r\n", "\n");
|
||
|
|
}
|
||
|
|
|
||
|
|
similar_asserts::assert_eq!(existing, new);
|
||
|
|
}
|