| //! A small test binary for ensuring the version of the rules matches the binary version |
| |
| use std::fs::File; |
| use std::io::{BufRead, BufReader}; |
| use std::path::PathBuf; |
| |
| #[test] |
| fn test_cargo_and_bazel_versions() { |
| // Parse the version field from the `cargo-bazel` Cargo.toml file |
| let cargo_version = { |
| let cargo_path = PathBuf::from(env!("CARGO_TOML")); |
| let file = File::open(cargo_path).expect("Failed to load Cargo.toml file"); |
| BufReader::new(file) |
| .lines() |
| .map_while(Result::ok) |
| .find(|line| line.contains("version = ")) |
| .map(|line| { |
| line.trim() |
| .replace("version = ", "") |
| .trim_matches('\"') |
| .to_owned() |
| }) |
| .expect("The version.bzl file should have a line with `version = `") |
| }; |
| |
| // Parse the version global from the Bazel module |
| let bazel_version = { |
| let bazel_path = PathBuf::from(env!("VERSION_BZL")); |
| let file = File::open(bazel_path).expect("Failed to load versions.bzl file"); |
| BufReader::new(file) |
| .lines() |
| .map_while(Result::ok) |
| .find(|line| line.contains("VERSION = ")) |
| .map(|line| { |
| line.trim() |
| .replace("VERSION = ", "") |
| .trim_matches('\"') |
| .to_owned() |
| }) |
| .expect("The version.bzl file should have a line with `VERSION = `") |
| }; |
| |
| assert_eq!(cargo_version, bazel_version, "make sure `//crate_universe:version.bzl` and `//crate_universe:Cargo.toml` have matching versions."); |
| } |