fix: Uncrash the tests by keeping fetchers_settings around
This is arguably a partial fix. This should either be modeled with lifetimes, or be addressed in Nix itself.
This commit is contained in:
parent
18da552952
commit
510ba4abe2
1 changed files with 18 additions and 11 deletions
|
|
@ -267,6 +267,7 @@ mod tests {
|
||||||
// Only set experimental-features once to minimize the window where
|
// Only set experimental-features once to minimize the window where
|
||||||
// concurrent Nix operations might read the setting while it's being modified
|
// concurrent Nix operations might read the setting while it's being modified
|
||||||
INIT.call_once(|| {
|
INIT.call_once(|| {
|
||||||
|
nix_bindings_expr::eval_state::init().unwrap();
|
||||||
nix_bindings_util::settings::set("experimental-features", "flakes").unwrap();
|
nix_bindings_util::settings::set("experimental-features", "flakes").unwrap();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
@ -299,6 +300,7 @@ mod tests {
|
||||||
init();
|
init();
|
||||||
let gc_registration = gc_register_my_thread();
|
let gc_registration = gc_register_my_thread();
|
||||||
let store = Store::open(None, []).unwrap();
|
let store = Store::open(None, []).unwrap();
|
||||||
|
let fetchers_settings = FetchersSettings::new().unwrap();
|
||||||
let flake_settings = FlakeSettings::new().unwrap();
|
let flake_settings = FlakeSettings::new().unwrap();
|
||||||
let mut eval_state = EvalStateBuilder::new(store)
|
let mut eval_state = EvalStateBuilder::new(store)
|
||||||
.unwrap()
|
.unwrap()
|
||||||
|
|
@ -326,7 +328,7 @@ mod tests {
|
||||||
let flake_lock_flags = FlakeLockFlags::new(&flake_settings).unwrap();
|
let flake_lock_flags = FlakeLockFlags::new(&flake_settings).unwrap();
|
||||||
|
|
||||||
let (flake_ref, fragment) = FlakeReference::parse_with_fragment(
|
let (flake_ref, fragment) = FlakeReference::parse_with_fragment(
|
||||||
&FetchersSettings::new().unwrap(),
|
&fetchers_settings,
|
||||||
&flake_settings,
|
&flake_settings,
|
||||||
&FlakeReferenceParseFlags::new(&flake_settings).unwrap(),
|
&FlakeReferenceParseFlags::new(&flake_settings).unwrap(),
|
||||||
&format!("path:{}#subthing", tmp_dir.path().display()),
|
&format!("path:{}#subthing", tmp_dir.path().display()),
|
||||||
|
|
@ -336,7 +338,7 @@ mod tests {
|
||||||
assert_eq!(fragment, "subthing");
|
assert_eq!(fragment, "subthing");
|
||||||
|
|
||||||
let locked_flake = LockedFlake::lock(
|
let locked_flake = LockedFlake::lock(
|
||||||
&FetchersSettings::new().unwrap(),
|
&fetchers_settings,
|
||||||
&flake_settings,
|
&flake_settings,
|
||||||
&eval_state,
|
&eval_state,
|
||||||
&flake_lock_flags,
|
&flake_lock_flags,
|
||||||
|
|
@ -353,6 +355,7 @@ mod tests {
|
||||||
|
|
||||||
assert_eq!(hello, "potato");
|
assert_eq!(hello, "potato");
|
||||||
|
|
||||||
|
drop(fetchers_settings);
|
||||||
drop(tmp_dir);
|
drop(tmp_dir);
|
||||||
drop(gc_registration);
|
drop(gc_registration);
|
||||||
}
|
}
|
||||||
|
|
@ -362,6 +365,7 @@ mod tests {
|
||||||
init();
|
init();
|
||||||
let gc_registration = gc_register_my_thread();
|
let gc_registration = gc_register_my_thread();
|
||||||
let store = Store::open(None, []).unwrap();
|
let store = Store::open(None, []).unwrap();
|
||||||
|
let fetchers_settings = FetchersSettings::new().unwrap();
|
||||||
let flake_settings = FlakeSettings::new().unwrap();
|
let flake_settings = FlakeSettings::new().unwrap();
|
||||||
let mut eval_state = EvalStateBuilder::new(store)
|
let mut eval_state = EvalStateBuilder::new(store)
|
||||||
.unwrap()
|
.unwrap()
|
||||||
|
|
@ -382,6 +386,8 @@ mod tests {
|
||||||
|
|
||||||
let flake_dir_a_str = flake_dir_a.to_str().unwrap();
|
let flake_dir_a_str = flake_dir_a.to_str().unwrap();
|
||||||
let flake_dir_c_str = flake_dir_c.to_str().unwrap();
|
let flake_dir_c_str = flake_dir_c.to_str().unwrap();
|
||||||
|
assert!(!flake_dir_a_str.is_empty());
|
||||||
|
assert!(!flake_dir_c_str.is_empty());
|
||||||
|
|
||||||
// a
|
// a
|
||||||
std::fs::write(
|
std::fs::write(
|
||||||
|
|
@ -434,7 +440,7 @@ mod tests {
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
let (flake_ref_a, fragment) = FlakeReference::parse_with_fragment(
|
let (flake_ref_a, fragment) = FlakeReference::parse_with_fragment(
|
||||||
&FetchersSettings::new().unwrap(),
|
&fetchers_settings,
|
||||||
&flake_settings,
|
&flake_settings,
|
||||||
&flake_reference_parse_flags,
|
&flake_reference_parse_flags,
|
||||||
&format!("path:{}", &flake_dir_a_str),
|
&format!("path:{}", &flake_dir_a_str),
|
||||||
|
|
@ -448,7 +454,7 @@ mod tests {
|
||||||
flake_lock_flags.set_mode_check().unwrap();
|
flake_lock_flags.set_mode_check().unwrap();
|
||||||
|
|
||||||
let locked_flake = LockedFlake::lock(
|
let locked_flake = LockedFlake::lock(
|
||||||
&FetchersSettings::new().unwrap(),
|
&fetchers_settings,
|
||||||
&flake_settings,
|
&flake_settings,
|
||||||
&eval_state,
|
&eval_state,
|
||||||
&flake_lock_flags,
|
&flake_lock_flags,
|
||||||
|
|
@ -465,7 +471,7 @@ mod tests {
|
||||||
flake_lock_flags.set_mode_virtual().unwrap();
|
flake_lock_flags.set_mode_virtual().unwrap();
|
||||||
|
|
||||||
let locked_flake = LockedFlake::lock(
|
let locked_flake = LockedFlake::lock(
|
||||||
&FetchersSettings::new().unwrap(),
|
&fetchers_settings,
|
||||||
&flake_settings,
|
&flake_settings,
|
||||||
&eval_state,
|
&eval_state,
|
||||||
&flake_lock_flags,
|
&flake_lock_flags,
|
||||||
|
|
@ -487,7 +493,7 @@ mod tests {
|
||||||
flake_lock_flags.set_mode_check().unwrap();
|
flake_lock_flags.set_mode_check().unwrap();
|
||||||
|
|
||||||
let locked_flake = LockedFlake::lock(
|
let locked_flake = LockedFlake::lock(
|
||||||
&FetchersSettings::new().unwrap(),
|
&fetchers_settings,
|
||||||
&flake_settings,
|
&flake_settings,
|
||||||
&eval_state,
|
&eval_state,
|
||||||
&flake_lock_flags,
|
&flake_lock_flags,
|
||||||
|
|
@ -507,7 +513,7 @@ mod tests {
|
||||||
flake_lock_flags.set_mode_write_as_needed().unwrap();
|
flake_lock_flags.set_mode_write_as_needed().unwrap();
|
||||||
|
|
||||||
let locked_flake = LockedFlake::lock(
|
let locked_flake = LockedFlake::lock(
|
||||||
&FetchersSettings::new().unwrap(),
|
&fetchers_settings,
|
||||||
&flake_settings,
|
&flake_settings,
|
||||||
&eval_state,
|
&eval_state,
|
||||||
&flake_lock_flags,
|
&flake_lock_flags,
|
||||||
|
|
@ -527,7 +533,7 @@ mod tests {
|
||||||
flake_lock_flags.set_mode_check().unwrap();
|
flake_lock_flags.set_mode_check().unwrap();
|
||||||
|
|
||||||
let locked_flake = LockedFlake::lock(
|
let locked_flake = LockedFlake::lock(
|
||||||
&FetchersSettings::new().unwrap(),
|
&fetchers_settings,
|
||||||
&flake_settings,
|
&flake_settings,
|
||||||
&eval_state,
|
&eval_state,
|
||||||
&flake_lock_flags,
|
&flake_lock_flags,
|
||||||
|
|
@ -548,7 +554,7 @@ mod tests {
|
||||||
flake_lock_flags.set_mode_write_as_needed().unwrap();
|
flake_lock_flags.set_mode_write_as_needed().unwrap();
|
||||||
|
|
||||||
let (flake_ref_c, fragment) = FlakeReference::parse_with_fragment(
|
let (flake_ref_c, fragment) = FlakeReference::parse_with_fragment(
|
||||||
&FetchersSettings::new().unwrap(),
|
&fetchers_settings,
|
||||||
&flake_settings,
|
&flake_settings,
|
||||||
&flake_reference_parse_flags,
|
&flake_reference_parse_flags,
|
||||||
&format!("path:{}", &flake_dir_c_str),
|
&format!("path:{}", &flake_dir_c_str),
|
||||||
|
|
@ -561,7 +567,7 @@ mod tests {
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
let locked_flake = LockedFlake::lock(
|
let locked_flake = LockedFlake::lock(
|
||||||
&FetchersSettings::new().unwrap(),
|
&fetchers_settings,
|
||||||
&flake_settings,
|
&flake_settings,
|
||||||
&eval_state,
|
&eval_state,
|
||||||
&flake_lock_flags,
|
&flake_lock_flags,
|
||||||
|
|
@ -584,7 +590,7 @@ mod tests {
|
||||||
flake_lock_flags.set_mode_check().unwrap();
|
flake_lock_flags.set_mode_check().unwrap();
|
||||||
|
|
||||||
let locked_flake = LockedFlake::lock(
|
let locked_flake = LockedFlake::lock(
|
||||||
&FetchersSettings::new().unwrap(),
|
&fetchers_settings,
|
||||||
&flake_settings,
|
&flake_settings,
|
||||||
&eval_state,
|
&eval_state,
|
||||||
&flake_lock_flags,
|
&flake_lock_flags,
|
||||||
|
|
@ -599,6 +605,7 @@ mod tests {
|
||||||
let hello = eval_state.require_string(&hello).unwrap();
|
let hello = eval_state.require_string(&hello).unwrap();
|
||||||
assert_eq!(hello, "BOB");
|
assert_eq!(hello, "BOB");
|
||||||
|
|
||||||
|
drop(fetchers_settings);
|
||||||
drop(tmp_dir);
|
drop(tmp_dir);
|
||||||
drop(gc_registration);
|
drop(gc_registration);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue