Skip to content

Commit

Permalink
Unrolled build for rust-lang#120172
Browse files Browse the repository at this point in the history
Rollup merge of rust-lang#120172 - onur-ozkan:add-more-tests, r=Mark-Simulacrum

bootstrap: add more unit tests

self-explanatory
  • Loading branch information
rust-timer authored Jan 30, 2024
2 parents c401f09 + d6a974d commit 5304932
Show file tree
Hide file tree
Showing 11 changed files with 63 additions and 11 deletions.
1 change: 0 additions & 1 deletion src/bootstrap/src/core/build_steps/setup.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ use std::str::FromStr;
use std::{fmt, fs, io};

#[cfg(test)]
#[path = "../../tests/setup.rs"]
mod tests;

#[derive(Clone, Copy, Debug, Eq, PartialEq, Hash)]
Expand Down
File renamed without changes.
1 change: 0 additions & 1 deletion src/bootstrap/src/core/builder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ use clap::ValueEnum;
use once_cell::sync::Lazy;

#[cfg(test)]
#[path = "../tests/builder.rs"]
mod tests;

pub struct Builder<'a> {
Expand Down
File renamed without changes.
6 changes: 1 addition & 5 deletions src/bootstrap/src/core/config/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,6 @@
//! This module implements parsing `config.toml` configuration files to tweak
//! how the build runs.

#[cfg(test)]
#[path = "../../tests/config.rs"]
mod tests;

use std::cell::{Cell, RefCell};
use std::cmp;
use std::collections::{HashMap, HashSet};
Expand Down Expand Up @@ -1203,7 +1199,7 @@ impl Config {
Self::parse_inner(args, get_toml)
}

fn parse_inner(args: &[String], get_toml: impl Fn(&Path) -> TomlConfig) -> Config {
pub(crate) fn parse_inner(args: &[String], get_toml: impl Fn(&Path) -> TomlConfig) -> Config {
let mut flags = Flags::parse(&args);
let mut config = Config::default_opts();

Expand Down
2 changes: 2 additions & 0 deletions src/bootstrap/src/core/config/mod.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
pub(crate) mod config;
pub(crate) mod flags;
#[cfg(test)]
mod tests;

pub use config::*;
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use super::{Config, Flags};
use super::{flags::Flags, Config};
use crate::core::config::{LldMode, TomlConfig};

use clap::CommandFactory;
Expand Down
3 changes: 3 additions & 0 deletions src/bootstrap/src/utils/change_tracker.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@
//! with the goal of keeping developers synchronized with important modifications in
//! the bootstrap.

#[cfg(test)]
mod tests;

#[derive(Clone, Debug)]
pub struct ChangeInfo {
/// Represents the ID of PR caused major change on bootstrap.
Expand Down
10 changes: 10 additions & 0 deletions src/bootstrap/src/utils/change_tracker/tests.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
use crate::{find_recent_config_change_ids, CONFIG_CHANGE_HISTORY};

#[test]
fn test_find_recent_config_change_ids() {
// If change-id is greater than the most recent one, result should be empty.
assert!(find_recent_config_change_ids(usize::MAX).is_empty());

// There is no change-id equal to or less than 0, result should include the entire change history.
assert_eq!(find_recent_config_change_ids(0).len(), CONFIG_CHANGE_HISTORY.len());
}
1 change: 0 additions & 1 deletion src/bootstrap/src/utils/helpers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ use crate::LldMode;
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:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,14 @@
use crate::utils::helpers::{check_cfg_arg, extract_beta_rev, hex_encode, make};
use std::path::PathBuf;
use crate::{
utils::helpers::{
check_cfg_arg, extract_beta_rev, hex_encode, make, program_out_of_date, symlink_dir,
},
Config,
};
use std::{
fs::{self, remove_file, File},
io::Write,
path::PathBuf,
};

#[test]
fn test_make() {
Expand Down Expand Up @@ -70,3 +79,38 @@ fn test_check_cfg_arg() {
"--check-cfg=cfg(target_os,values(\"nixos\",\"nix2\"))"
);
}

#[test]
fn test_program_out_of_date() {
let config = Config::parse(&["check".to_owned(), "--config=/does/not/exist".to_owned()]);
let tempfile = config.tempdir().join(".tmp-stamp-file");
File::create(&tempfile).unwrap().write_all(b"dummy value").unwrap();
assert!(tempfile.exists());

// up-to-date
assert!(!program_out_of_date(&tempfile, "dummy value"));
// out-of-date
assert!(program_out_of_date(&tempfile, ""));

remove_file(tempfile).unwrap();
}

#[test]
fn test_symlink_dir() {
let config = Config::parse(&["check".to_owned(), "--config=/does/not/exist".to_owned()]);
let tempdir = config.tempdir().join(".tmp-dir");
let link_path = config.tempdir().join(".tmp-link");

fs::create_dir_all(&tempdir).unwrap();
symlink_dir(&config, &tempdir, &link_path).unwrap();

let link_source = fs::read_link(&link_path).unwrap();
assert_eq!(link_source, tempdir);

fs::remove_dir(tempdir).unwrap();

#[cfg(windows)]
fs::remove_dir(link_path).unwrap();
#[cfg(not(windows))]
fs::remove_file(link_path).unwrap();
}

0 comments on commit 5304932

Please sign in to comment.