Auto merge of #119020 - onur-ozkan:remove-hex, r=albertlarsan68
remove `hex` dependency in bootstrap First commit removes the `hex` dependency, as we can achieve the same output with the added function, which is very small and simple. Second commit creates a test module for the helpers util and adds unit tests for multiple helper functions, including `hex_encode`.
This commit is contained in:
commit
3a2aa5854c
@ -55,7 +55,6 @@ dependencies = [
|
|||||||
"cmake",
|
"cmake",
|
||||||
"fd-lock",
|
"fd-lock",
|
||||||
"filetime",
|
"filetime",
|
||||||
"hex",
|
|
||||||
"home",
|
"home",
|
||||||
"ignore",
|
"ignore",
|
||||||
"junction",
|
"junction",
|
||||||
@ -313,12 +312,6 @@ version = "0.4.1"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
|
checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "hex"
|
|
||||||
version = "0.4.3"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "home"
|
name = "home"
|
||||||
version = "0.5.4"
|
version = "0.5.4"
|
||||||
|
@ -39,7 +39,6 @@ clap = { version = "4.4.7", default-features = false, features = ["std", "usage"
|
|||||||
clap_complete = "4.4.3"
|
clap_complete = "4.4.3"
|
||||||
cmake = "0.1.38"
|
cmake = "0.1.38"
|
||||||
filetime = "0.2"
|
filetime = "0.2"
|
||||||
hex = "0.4"
|
|
||||||
home = "0.5.4"
|
home = "0.5.4"
|
||||||
ignore = "0.4.10"
|
ignore = "0.4.10"
|
||||||
libc = "0.2.150"
|
libc = "0.2.150"
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
use crate::core::builder::{Builder, RunConfig, ShouldRun, Step};
|
use crate::core::builder::{Builder, RunConfig, ShouldRun, Step};
|
||||||
use crate::t;
|
use crate::t;
|
||||||
use crate::utils::change_tracker::CONFIG_CHANGE_HISTORY;
|
use crate::utils::change_tracker::CONFIG_CHANGE_HISTORY;
|
||||||
|
use crate::utils::helpers::hex_encode;
|
||||||
use crate::Config;
|
use crate::Config;
|
||||||
use sha2::Digest;
|
use sha2::Digest;
|
||||||
use std::env::consts::EXE_SUFFIX;
|
use std::env::consts::EXE_SUFFIX;
|
||||||
@ -566,7 +567,7 @@ fn create_vscode_settings_maybe(config: &Config) -> io::Result<bool> {
|
|||||||
if let Ok(current) = fs::read_to_string(&vscode_settings) {
|
if let Ok(current) = fs::read_to_string(&vscode_settings) {
|
||||||
let mut hasher = sha2::Sha256::new();
|
let mut hasher = sha2::Sha256::new();
|
||||||
hasher.update(¤t);
|
hasher.update(¤t);
|
||||||
let hash = hex::encode(hasher.finalize().as_slice());
|
let hash = hex_encode(hasher.finalize().as_slice());
|
||||||
if hash == *current_hash {
|
if hash == *current_hash {
|
||||||
return Ok(true);
|
return Ok(true);
|
||||||
} else if historical_hashes.contains(&hash.as_str()) {
|
} else if historical_hashes.contains(&hash.as_str()) {
|
||||||
|
@ -11,9 +11,9 @@
|
|||||||
use build_helper::ci::CiEnv;
|
use build_helper::ci::CiEnv;
|
||||||
use xz2::bufread::XzDecoder;
|
use xz2::bufread::XzDecoder;
|
||||||
|
|
||||||
use crate::core::build_steps::llvm::detect_llvm_sha;
|
|
||||||
use crate::core::config::RustfmtMetadata;
|
use crate::core::config::RustfmtMetadata;
|
||||||
use crate::utils::helpers::{check_run, exe, program_out_of_date};
|
use crate::utils::helpers::{check_run, exe, program_out_of_date};
|
||||||
|
use crate::{core::build_steps::llvm::detect_llvm_sha, utils::helpers::hex_encode};
|
||||||
use crate::{t, Config};
|
use crate::{t, Config};
|
||||||
|
|
||||||
static SHOULD_FIX_BINS_AND_DYLIBS: OnceLock<bool> = OnceLock::new();
|
static SHOULD_FIX_BINS_AND_DYLIBS: OnceLock<bool> = OnceLock::new();
|
||||||
@ -345,7 +345,7 @@ pub(crate) fn verify(&self, path: &Path, expected: &str) -> bool {
|
|||||||
reader.consume(l);
|
reader.consume(l);
|
||||||
}
|
}
|
||||||
|
|
||||||
let checksum = hex::encode(hasher.finalize().as_slice());
|
let checksum = hex_encode(hasher.finalize().as_slice());
|
||||||
let verified = checksum == expected;
|
let verified = checksum == expected;
|
||||||
|
|
||||||
if !verified {
|
if !verified {
|
||||||
|
@ -34,6 +34,7 @@
|
|||||||
use sha2::digest::Digest;
|
use sha2::digest::Digest;
|
||||||
use termcolor::{ColorChoice, StandardStream, WriteColor};
|
use termcolor::{ColorChoice, StandardStream, WriteColor};
|
||||||
use utils::channel::GitInfo;
|
use utils::channel::GitInfo;
|
||||||
|
use utils::helpers::hex_encode;
|
||||||
|
|
||||||
use crate::core::builder;
|
use crate::core::builder;
|
||||||
use crate::core::builder::Kind;
|
use crate::core::builder::Kind;
|
||||||
@ -1871,7 +1872,7 @@ pub fn generate_smart_stamp_hash(dir: &Path, additional_input: &str) -> String {
|
|||||||
hasher.update(status);
|
hasher.update(status);
|
||||||
hasher.update(additional_input);
|
hasher.update(additional_input);
|
||||||
|
|
||||||
hex::encode(hasher.finalize().as_slice())
|
hex_encode(hasher.finalize().as_slice())
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Ensures that the behavior dump directory is properly initialized.
|
/// Ensures that the behavior dump directory is properly initialized.
|
||||||
|
@ -156,22 +156,6 @@ fn alias_and_path_for_library() {
|
|||||||
assert_eq!(first(cache.all::<doc::Std>()), &[doc_std!(A => A, stage = 0)]);
|
assert_eq!(first(cache.all::<doc::Std>()), &[doc_std!(A => A, stage = 0)]);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn test_beta_rev_parsing() {
|
|
||||||
use crate::utils::helpers::extract_beta_rev;
|
|
||||||
|
|
||||||
// single digit revision
|
|
||||||
assert_eq!(extract_beta_rev("1.99.9-beta.7 (xxxxxx)"), Some("7".to_string()));
|
|
||||||
// multiple digits
|
|
||||||
assert_eq!(extract_beta_rev("1.99.9-beta.777 (xxxxxx)"), Some("777".to_string()));
|
|
||||||
// nightly channel (no beta revision)
|
|
||||||
assert_eq!(extract_beta_rev("1.99.9-nightly (xxxxxx)"), None);
|
|
||||||
// stable channel (no beta revision)
|
|
||||||
assert_eq!(extract_beta_rev("1.99.9 (xxxxxxx)"), None);
|
|
||||||
// invalid string
|
|
||||||
assert_eq!(extract_beta_rev("invalid"), None);
|
|
||||||
}
|
|
||||||
|
|
||||||
mod defaults {
|
mod defaults {
|
||||||
use super::{configure, first, run_build};
|
use super::{configure, first, run_build};
|
||||||
use crate::core::builder::*;
|
use crate::core::builder::*;
|
||||||
|
59
src/bootstrap/src/tests/helpers.rs
Normal file
59
src/bootstrap/src/tests/helpers.rs
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
use crate::utils::helpers::{extract_beta_rev, hex_encode, make};
|
||||||
|
use std::path::PathBuf;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_make() {
|
||||||
|
for (host, make_path) in vec![
|
||||||
|
("dragonfly", PathBuf::from("gmake")),
|
||||||
|
("netbsd", PathBuf::from("gmake")),
|
||||||
|
("freebsd", PathBuf::from("gmake")),
|
||||||
|
("openbsd", PathBuf::from("gmake")),
|
||||||
|
("linux", PathBuf::from("make")),
|
||||||
|
// for checking the default
|
||||||
|
("_", PathBuf::from("make")),
|
||||||
|
] {
|
||||||
|
assert_eq!(make(host), make_path);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(unix)]
|
||||||
|
#[test]
|
||||||
|
fn test_absolute_unix() {
|
||||||
|
use crate::utils::helpers::absolute_unix;
|
||||||
|
|
||||||
|
// Test an absolute path
|
||||||
|
let path = PathBuf::from("/home/user/file.txt");
|
||||||
|
assert_eq!(absolute_unix(&path).unwrap(), PathBuf::from("/home/user/file.txt"));
|
||||||
|
|
||||||
|
// Test an absolute path with double leading slashes
|
||||||
|
let path = PathBuf::from("//root//file.txt");
|
||||||
|
assert_eq!(absolute_unix(&path).unwrap(), PathBuf::from("//root/file.txt"));
|
||||||
|
|
||||||
|
// Test a relative path
|
||||||
|
let path = PathBuf::from("relative/path");
|
||||||
|
assert_eq!(
|
||||||
|
absolute_unix(&path).unwrap(),
|
||||||
|
std::env::current_dir().unwrap().join("relative/path")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_beta_rev_parsing() {
|
||||||
|
// single digit revision
|
||||||
|
assert_eq!(extract_beta_rev("1.99.9-beta.7 (xxxxxx)"), Some("7".to_string()));
|
||||||
|
// multiple digits
|
||||||
|
assert_eq!(extract_beta_rev("1.99.9-beta.777 (xxxxxx)"), Some("777".to_string()));
|
||||||
|
// nightly channel (no beta revision)
|
||||||
|
assert_eq!(extract_beta_rev("1.99.9-nightly (xxxxxx)"), None);
|
||||||
|
// stable channel (no beta revision)
|
||||||
|
assert_eq!(extract_beta_rev("1.99.9 (xxxxxxx)"), None);
|
||||||
|
// invalid string
|
||||||
|
assert_eq!(extract_beta_rev("invalid"), None);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_string_to_hex_encode() {
|
||||||
|
let input_string = "Hello, World!";
|
||||||
|
let hex_string = hex_encode(input_string);
|
||||||
|
assert_eq!(hex_string, "48656c6c6f2c20576f726c6421");
|
||||||
|
}
|
@ -1,11 +1,12 @@
|
|||||||
use super::{RUST_ANALYZER_SETTINGS, SETTINGS_HASHES};
|
use super::{RUST_ANALYZER_SETTINGS, SETTINGS_HASHES};
|
||||||
|
use crate::utils::helpers::hex_encode;
|
||||||
use sha2::Digest;
|
use sha2::Digest;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn check_matching_settings_hash() {
|
fn check_matching_settings_hash() {
|
||||||
let mut hasher = sha2::Sha256::new();
|
let mut hasher = sha2::Sha256::new();
|
||||||
hasher.update(&RUST_ANALYZER_SETTINGS);
|
hasher.update(&RUST_ANALYZER_SETTINGS);
|
||||||
let hash = hex::encode(hasher.finalize().as_slice());
|
let hash = hex_encode(hasher.finalize().as_slice());
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
&hash,
|
&hash,
|
||||||
SETTINGS_HASHES.last().unwrap(),
|
SETTINGS_HASHES.last().unwrap(),
|
||||||
|
@ -20,6 +20,10 @@
|
|||||||
|
|
||||||
pub use crate::utils::dylib::{dylib_path, dylib_path_var};
|
pub use crate::utils::dylib::{dylib_path, dylib_path_var};
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
#[path = "../tests/helpers.rs"]
|
||||||
|
mod tests;
|
||||||
|
|
||||||
/// A helper macro to `unwrap` a result except also print out details like:
|
/// A helper macro to `unwrap` a result except also print out details like:
|
||||||
///
|
///
|
||||||
/// * The file/line of the panic
|
/// * The file/line of the panic
|
||||||
@ -540,3 +544,11 @@ pub fn add_rustdoc_cargo_linker_args(
|
|||||||
cmd.env("RUSTDOCFLAGS", flags);
|
cmd.env("RUSTDOCFLAGS", flags);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Converts `T` into a hexadecimal `String`.
|
||||||
|
pub fn hex_encode<T>(input: T) -> String
|
||||||
|
where
|
||||||
|
T: AsRef<[u8]>,
|
||||||
|
{
|
||||||
|
input.as_ref().iter().map(|x| format!("{:02x}", x)).collect()
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user