commit
f24b749c4a
8 changed files with 79 additions and 107 deletions
|
|
@ -6,6 +6,7 @@
|
||||||
imports = [
|
imports = [
|
||||||
inputs.pre-commit-hooks-nix.flakeModule
|
inputs.pre-commit-hooks-nix.flakeModule
|
||||||
inputs.hercules-ci-effects.flakeModule
|
inputs.hercules-ci-effects.flakeModule
|
||||||
|
inputs.treefmt-nix.flakeModule
|
||||||
];
|
];
|
||||||
perSystem =
|
perSystem =
|
||||||
{
|
{
|
||||||
|
|
@ -17,7 +18,20 @@
|
||||||
{
|
{
|
||||||
nix-bindings-rust.nixPackage = inputs'.nix.packages.default;
|
nix-bindings-rust.nixPackage = inputs'.nix.packages.default;
|
||||||
|
|
||||||
pre-commit.settings.hooks.nixfmt-rfc-style.enable = true;
|
treefmt = {
|
||||||
|
# Used to find the project root
|
||||||
|
projectRootFile = "flake.lock";
|
||||||
|
|
||||||
|
programs.rustfmt = {
|
||||||
|
enable = true;
|
||||||
|
edition = "2021";
|
||||||
|
};
|
||||||
|
programs.nixfmt.enable = true;
|
||||||
|
programs.deadnix.enable = true;
|
||||||
|
#programs.clang-format.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
pre-commit.settings.hooks.treefmt.enable = true;
|
||||||
# Temporarily disable rustfmt due to configuration issues
|
# Temporarily disable rustfmt due to configuration issues
|
||||||
# pre-commit.settings.hooks.rustfmt.enable = true;
|
# pre-commit.settings.hooks.rustfmt.enable = true;
|
||||||
pre-commit.settings.settings.rust.cargoManifestPath = "./Cargo.toml";
|
pre-commit.settings.settings.rust.cargoManifestPath = "./Cargo.toml";
|
||||||
|
|
@ -90,7 +104,7 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
herculesCI =
|
herculesCI =
|
||||||
{ config, ... }:
|
{ ... }:
|
||||||
{
|
{
|
||||||
ciSystems = [ "x86_64-linux" ];
|
ciSystems = [ "x86_64-linux" ];
|
||||||
};
|
};
|
||||||
|
|
|
||||||
72
dev/flake.lock
generated
72
dev/flake.lock
generated
|
|
@ -36,27 +36,6 @@
|
||||||
"type": "indirect"
|
"type": "indirect"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-parts_2": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs-lib": [
|
|
||||||
"nix-unit",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1754487366,
|
|
||||||
"narHash": "sha256-pHYj8gUBapuUzKV/kN/tR3Zvqc7o6gdFB9XKXIp1SQ8=",
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "flake-parts",
|
|
||||||
"rev": "af66ad14b28a127c5c0f3bbb298218fc63528a18",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "flake-parts",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"gitignore": {
|
"gitignore": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
|
|
@ -97,26 +76,6 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nix-unit": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-parts": "flake-parts_2",
|
|
||||||
"nixpkgs": "nixpkgs_2",
|
|
||||||
"treefmt-nix": "treefmt-nix"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1754985033,
|
|
||||||
"narHash": "sha256-OLaoMtlNL5AvYuaQ5P4p7riy7M9J8XpFdWKpD5RzQfU=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "nix-unit",
|
|
||||||
"rev": "388045c7bee5a2617cca8e94444bea1862df19ac",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "nix-unit",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1755027561,
|
"lastModified": 1755027561,
|
||||||
|
|
@ -133,22 +92,6 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1754800730,
|
|
||||||
"narHash": "sha256-HfVZCXic9XLBgybP0318ym3cDnGwBs/+H5MgxFVYF4I=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "641d909c4a7538f1539da9240dedb1755c907e40",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"ref": "nixpkgs-unstable",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"pre-commit-hooks-nix": {
|
"pre-commit-hooks-nix": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-compat": "flake-compat",
|
"flake-compat": "flake-compat",
|
||||||
|
|
@ -172,23 +115,20 @@
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"hercules-ci-effects": "hercules-ci-effects",
|
"hercules-ci-effects": "hercules-ci-effects",
|
||||||
"nix-unit": "nix-unit",
|
"pre-commit-hooks-nix": "pre-commit-hooks-nix",
|
||||||
"pre-commit-hooks-nix": "pre-commit-hooks-nix"
|
"treefmt-nix": "treefmt-nix"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"treefmt-nix": {
|
"treefmt-nix": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": []
|
||||||
"nix-unit",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1754847726,
|
"lastModified": 1762938485,
|
||||||
"narHash": "sha256-2vX8QjO5lRsDbNYvN9hVHXLU6oMl+V/PsmIiJREG4rE=",
|
"narHash": "sha256-AlEObg0syDl+Spi4LsZIBrjw+snSVU4T8MOeuZJUJjM=",
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"repo": "treefmt-nix",
|
"repo": "treefmt-nix",
|
||||||
"rev": "7d81f6fb2e19bf84f1c65135d1060d829fae2408",
|
"rev": "5b4ee75aeefd1e2d5a1cc43cf6ba65eba75e83e4",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,8 @@
|
||||||
pre-commit-hooks-nix.url = "github:cachix/pre-commit-hooks.nix";
|
pre-commit-hooks-nix.url = "github:cachix/pre-commit-hooks.nix";
|
||||||
pre-commit-hooks-nix.inputs.nixpkgs.follows = "";
|
pre-commit-hooks-nix.inputs.nixpkgs.follows = "";
|
||||||
hercules-ci-effects.url = "github:hercules-ci/hercules-ci-effects";
|
hercules-ci-effects.url = "github:hercules-ci/hercules-ci-effects";
|
||||||
|
treefmt-nix.url = "github:numtide/treefmt-nix";
|
||||||
|
treefmt-nix.inputs.nixpkgs.follows = "";
|
||||||
};
|
};
|
||||||
outputs = { ... }: { };
|
outputs = { ... }: { };
|
||||||
}
|
}
|
||||||
|
|
|
||||||
10
flake.nix
10
flake.nix
|
|
@ -11,11 +11,10 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs =
|
outputs =
|
||||||
inputs@{ self, flake-parts, ... }:
|
inputs@{ flake-parts, ... }:
|
||||||
flake-parts.lib.mkFlake { inherit inputs; } (
|
flake-parts.lib.mkFlake { inherit inputs; } (
|
||||||
toplevel@{
|
toplevel@{
|
||||||
lib,
|
lib,
|
||||||
withSystem,
|
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
|
|
@ -24,9 +23,7 @@
|
||||||
*/
|
*/
|
||||||
flake-parts-modules.basic =
|
flake-parts-modules.basic =
|
||||||
{
|
{
|
||||||
config,
|
|
||||||
flake-parts-lib,
|
flake-parts-lib,
|
||||||
withSystem,
|
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
|
|
@ -114,7 +111,7 @@
|
||||||
*/
|
*/
|
||||||
flake-parts-modules.tested =
|
flake-parts-modules.tested =
|
||||||
# Consumer toplevel
|
# Consumer toplevel
|
||||||
{ options, config, ... }:
|
{ config, ... }:
|
||||||
{
|
{
|
||||||
_file = ./flake.nix;
|
_file = ./flake.nix;
|
||||||
imports = [ flake-parts-modules.basic ];
|
imports = [ flake-parts-modules.basic ];
|
||||||
|
|
@ -177,10 +174,7 @@
|
||||||
];
|
];
|
||||||
perSystem =
|
perSystem =
|
||||||
{
|
{
|
||||||
config,
|
|
||||||
self',
|
|
||||||
inputs',
|
inputs',
|
||||||
pkgs,
|
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
|
|
|
||||||
2
nci.nix
2
nci.nix
|
|
@ -1,9 +1,7 @@
|
||||||
{
|
{
|
||||||
perSystem =
|
perSystem =
|
||||||
{
|
{
|
||||||
lib,
|
|
||||||
config,
|
config,
|
||||||
pkgs,
|
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -138,7 +138,9 @@ use nix_bindings_bindgen_raw as raw;
|
||||||
use nix_bindings_store::path::StorePath;
|
use nix_bindings_store::path::StorePath;
|
||||||
use nix_bindings_store::store::{Store, StoreWeak};
|
use nix_bindings_store::store::{Store, StoreWeak};
|
||||||
use nix_bindings_util::context::Context;
|
use nix_bindings_util::context::Context;
|
||||||
use nix_bindings_util::string_return::{callback_get_result_string, callback_get_result_string_data};
|
use nix_bindings_util::string_return::{
|
||||||
|
callback_get_result_string, callback_get_result_string_data,
|
||||||
|
};
|
||||||
use nix_bindings_util::{check_call, check_call_opt_key, result_string_init};
|
use nix_bindings_util::{check_call, check_call_opt_key, result_string_init};
|
||||||
use std::ffi::{c_char, CString};
|
use std::ffi::{c_char, CString};
|
||||||
use std::iter::FromIterator;
|
use std::iter::FromIterator;
|
||||||
|
|
@ -1217,7 +1219,8 @@ pub fn test_init() {
|
||||||
// which causes an error. So we set a custom build dir here.
|
// which causes an error. So we set a custom build dir here.
|
||||||
// Only available on linux
|
// Only available on linux
|
||||||
if cfg!(target_os = "linux") {
|
if cfg!(target_os = "linux") {
|
||||||
nix_bindings_util::settings::set("sandbox-build-dir", "/custom-build-dir-for-test").unwrap();
|
nix_bindings_util::settings::set("sandbox-build-dir", "/custom-build-dir-for-test")
|
||||||
|
.unwrap();
|
||||||
}
|
}
|
||||||
std::env::set_var("_NIX_TEST_NO_SANDBOX", "1");
|
std::env::set_var("_NIX_TEST_NO_SANDBOX", "1");
|
||||||
|
|
||||||
|
|
@ -1784,9 +1787,7 @@ mod tests {
|
||||||
gc_registering_current_thread(|| {
|
gc_registering_current_thread(|| {
|
||||||
let store = Store::open(None, HashMap::new()).unwrap();
|
let store = Store::open(None, HashMap::new()).unwrap();
|
||||||
let mut es = EvalState::new(store, []).unwrap();
|
let mut es = EvalState::new(store, []).unwrap();
|
||||||
let v = es
|
let v = es.eval_from_string("[ ]", "<test>").unwrap();
|
||||||
.eval_from_string("[ ]", "<test>")
|
|
||||||
.unwrap();
|
|
||||||
es.force(&v).unwrap();
|
es.force(&v).unwrap();
|
||||||
let t = es.value_type_unforced(&v);
|
let t = es.value_type_unforced(&v);
|
||||||
assert!(t == Some(ValueType::List));
|
assert!(t == Some(ValueType::List));
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,10 @@ impl FlakeSettings {
|
||||||
|
|
||||||
pub trait EvalStateBuilderExt {
|
pub trait EvalStateBuilderExt {
|
||||||
/// Configures the eval state to provide flakes features such as `builtins.getFlake`.
|
/// Configures the eval state to provide flakes features such as `builtins.getFlake`.
|
||||||
fn flakes(self, settings: &FlakeSettings) -> Result<nix_bindings_expr::eval_state::EvalStateBuilder>;
|
fn flakes(
|
||||||
|
self,
|
||||||
|
settings: &FlakeSettings,
|
||||||
|
) -> Result<nix_bindings_expr::eval_state::EvalStateBuilder>;
|
||||||
}
|
}
|
||||||
impl EvalStateBuilderExt for nix_bindings_expr::eval_state::EvalStateBuilder {
|
impl EvalStateBuilderExt for nix_bindings_expr::eval_state::EvalStateBuilder {
|
||||||
/// Configures the eval state to provide flakes features such as `builtins.getFlake`.
|
/// Configures the eval state to provide flakes features such as `builtins.getFlake`.
|
||||||
|
|
|
||||||
|
|
@ -2,11 +2,13 @@ use anyhow::{bail, Error, Result};
|
||||||
use lazy_static::lazy_static;
|
use lazy_static::lazy_static;
|
||||||
use nix_bindings_bindgen_raw as raw;
|
use nix_bindings_bindgen_raw as raw;
|
||||||
use nix_bindings_util::context::Context;
|
use nix_bindings_util::context::Context;
|
||||||
use nix_bindings_util::string_return::{callback_get_result_string, callback_get_result_string_data};
|
use nix_bindings_util::string_return::{
|
||||||
|
callback_get_result_string, callback_get_result_string_data,
|
||||||
|
};
|
||||||
use nix_bindings_util::{check_call, result_string_init};
|
use nix_bindings_util::{check_call, result_string_init};
|
||||||
use std::collections::HashMap;
|
|
||||||
#[cfg(nix_at_least = "2.33")]
|
#[cfg(nix_at_least = "2.33")]
|
||||||
use std::collections::BTreeMap;
|
use std::collections::BTreeMap;
|
||||||
|
use std::collections::HashMap;
|
||||||
use std::ffi::{c_char, CString};
|
use std::ffi::{c_char, CString};
|
||||||
use std::ptr::null_mut;
|
use std::ptr::null_mut;
|
||||||
use std::ptr::NonNull;
|
use std::ptr::NonNull;
|
||||||
|
|
@ -309,8 +311,8 @@ impl Store {
|
||||||
self.inner.ptr(),
|
self.inner.ptr(),
|
||||||
drv.inner.as_ptr()
|
drv.inner.as_ptr()
|
||||||
))?;
|
))?;
|
||||||
let path = NonNull::new(path)
|
let path =
|
||||||
.ok_or_else(|| Error::msg("add_derivation returned null"))?;
|
NonNull::new(path).ok_or_else(|| Error::msg("add_derivation returned null"))?;
|
||||||
Ok(StorePath::new_raw(path))
|
Ok(StorePath::new_raw(path))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -333,7 +335,8 @@ impl Store {
|
||||||
#[doc(alias = "nix_store_realise")]
|
#[doc(alias = "nix_store_realise")]
|
||||||
pub fn realise(&mut self, path: &StorePath) -> Result<BTreeMap<String, StorePath>> {
|
pub fn realise(&mut self, path: &StorePath) -> Result<BTreeMap<String, StorePath>> {
|
||||||
let mut outputs = BTreeMap::new();
|
let mut outputs = BTreeMap::new();
|
||||||
let userdata = &mut outputs as *mut BTreeMap<String, StorePath> as *mut std::os::raw::c_void;
|
let userdata =
|
||||||
|
&mut outputs as *mut BTreeMap<String, StorePath> as *mut std::os::raw::c_void;
|
||||||
|
|
||||||
unsafe extern "C" fn callback(
|
unsafe extern "C" fn callback(
|
||||||
userdata: *mut std::os::raw::c_void,
|
userdata: *mut std::os::raw::c_void,
|
||||||
|
|
@ -428,8 +431,8 @@ impl Clone for Store {
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use std::collections::HashMap;
|
|
||||||
use ctor::ctor;
|
use ctor::ctor;
|
||||||
|
use std::collections::HashMap;
|
||||||
|
|
||||||
use super::*;
|
use super::*;
|
||||||
|
|
||||||
|
|
@ -446,7 +449,8 @@ mod tests {
|
||||||
|
|
||||||
// Set custom build dir for sandbox
|
// Set custom build dir for sandbox
|
||||||
if cfg!(target_os = "linux") {
|
if cfg!(target_os = "linux") {
|
||||||
nix_bindings_util::settings::set("sandbox-build-dir", "/custom-build-dir-for-test").ok();
|
nix_bindings_util::settings::set("sandbox-build-dir", "/custom-build-dir-for-test")
|
||||||
|
.ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
std::env::set_var("_NIX_TEST_NO_SANDBOX", "1");
|
std::env::set_var("_NIX_TEST_NO_SANDBOX", "1");
|
||||||
|
|
@ -660,9 +664,8 @@ mod tests {
|
||||||
|
|
||||||
#[cfg(nix_at_least = "2.33")]
|
#[cfg(nix_at_least = "2.33")]
|
||||||
fn create_multi_output_derivation_json() -> String {
|
fn create_multi_output_derivation_json() -> String {
|
||||||
let system = current_system().unwrap_or_else(|_| {
|
let system = current_system()
|
||||||
format!("{}-{}", std::env::consts::ARCH, std::env::consts::OS)
|
.unwrap_or_else(|_| format!("{}-{}", std::env::consts::ARCH, std::env::consts::OS));
|
||||||
});
|
|
||||||
|
|
||||||
format!(
|
format!(
|
||||||
r#"{{
|
r#"{{
|
||||||
|
|
@ -720,7 +723,9 @@ mod tests {
|
||||||
|
|
||||||
// Verify outputs are complete (BTreeMap guarantees ordering)
|
// Verify outputs are complete (BTreeMap guarantees ordering)
|
||||||
let output_names: Vec<&String> = outputs.keys().collect();
|
let output_names: Vec<&String> = outputs.keys().collect();
|
||||||
let expected_order = vec!["outa", "outb", "outc", "outd", "oute", "outf", "outg", "outh", "outi", "outj"];
|
let expected_order = vec![
|
||||||
|
"outa", "outb", "outc", "outd", "oute", "outf", "outg", "outh", "outi", "outj",
|
||||||
|
];
|
||||||
assert_eq!(output_names, expected_order);
|
assert_eq!(output_names, expected_order);
|
||||||
|
|
||||||
drop(store);
|
drop(store);
|
||||||
|
|
@ -785,9 +790,8 @@ mod tests {
|
||||||
fn realise_builder_fails() {
|
fn realise_builder_fails() {
|
||||||
let (mut store, temp_dir) = create_temp_store();
|
let (mut store, temp_dir) = create_temp_store();
|
||||||
|
|
||||||
let system = current_system().unwrap_or_else(|_| {
|
let system = current_system()
|
||||||
format!("{}-{}", std::env::consts::ARCH, std::env::consts::OS)
|
.unwrap_or_else(|_| format!("{}-{}", std::env::consts::ARCH, std::env::consts::OS));
|
||||||
});
|
|
||||||
|
|
||||||
// Create a derivation where the builder exits with error
|
// Create a derivation where the builder exits with error
|
||||||
let drv_json = format!(
|
let drv_json = format!(
|
||||||
|
|
@ -841,9 +845,8 @@ mod tests {
|
||||||
fn realise_builder_no_output() {
|
fn realise_builder_no_output() {
|
||||||
let (mut store, temp_dir) = create_temp_store();
|
let (mut store, temp_dir) = create_temp_store();
|
||||||
|
|
||||||
let system = current_system().unwrap_or_else(|_| {
|
let system = current_system()
|
||||||
format!("{}-{}", std::env::consts::ARCH, std::env::consts::OS)
|
.unwrap_or_else(|_| format!("{}-{}", std::env::consts::ARCH, std::env::consts::OS));
|
||||||
});
|
|
||||||
|
|
||||||
// Create a derivation where the builder succeeds but produces no output
|
// Create a derivation where the builder succeeds but produces no output
|
||||||
let drv_json = format!(
|
let drv_json = format!(
|
||||||
|
|
@ -909,11 +912,17 @@ mod tests {
|
||||||
let closure = store.get_fs_closure(&drv_path, false, true, false).unwrap();
|
let closure = store.get_fs_closure(&drv_path, false, true, false).unwrap();
|
||||||
|
|
||||||
// The closure should contain at least the derivation and its output
|
// The closure should contain at least the derivation and its output
|
||||||
assert!(closure.len() >= 2, "Closure should contain at least drv and output");
|
assert!(
|
||||||
|
closure.len() >= 2,
|
||||||
|
"Closure should contain at least drv and output"
|
||||||
|
);
|
||||||
|
|
||||||
// Verify the output path is in the closure
|
// Verify the output path is in the closure
|
||||||
let out_in_closure = closure.iter().any(|p| p.name().unwrap() == out_path_name);
|
let out_in_closure = closure.iter().any(|p| p.name().unwrap() == out_path_name);
|
||||||
assert!(out_in_closure, "Output path should be in closure when include_outputs=true");
|
assert!(
|
||||||
|
out_in_closure,
|
||||||
|
"Output path should be in closure when include_outputs=true"
|
||||||
|
);
|
||||||
|
|
||||||
drop(store);
|
drop(store);
|
||||||
drop(temp_dir);
|
drop(temp_dir);
|
||||||
|
|
@ -933,11 +942,16 @@ mod tests {
|
||||||
let out_path_name = out_path.name().unwrap();
|
let out_path_name = out_path.name().unwrap();
|
||||||
|
|
||||||
// Get closure with include_outputs=false
|
// Get closure with include_outputs=false
|
||||||
let closure = store.get_fs_closure(&drv_path, false, false, false).unwrap();
|
let closure = store
|
||||||
|
.get_fs_closure(&drv_path, false, false, false)
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
// Verify the output path is NOT in the closure
|
// Verify the output path is NOT in the closure
|
||||||
let out_in_closure = closure.iter().any(|p| p.name().unwrap() == out_path_name);
|
let out_in_closure = closure.iter().any(|p| p.name().unwrap() == out_path_name);
|
||||||
assert!(!out_in_closure, "Output path should not be in closure when include_outputs=false");
|
assert!(
|
||||||
|
!out_in_closure,
|
||||||
|
"Output path should not be in closure when include_outputs=false"
|
||||||
|
);
|
||||||
|
|
||||||
drop(store);
|
drop(store);
|
||||||
drop(temp_dir);
|
drop(temp_dir);
|
||||||
|
|
@ -961,7 +975,10 @@ mod tests {
|
||||||
|
|
||||||
// Verify the output path is NOT in the closure when direction is flipped
|
// Verify the output path is NOT in the closure when direction is flipped
|
||||||
let out_in_closure = closure.iter().any(|p| p.name().unwrap() == out_path_name);
|
let out_in_closure = closure.iter().any(|p| p.name().unwrap() == out_path_name);
|
||||||
assert!(!out_in_closure, "Output path should not be in closure when flip_direction=true");
|
assert!(
|
||||||
|
!out_in_closure,
|
||||||
|
"Output path should not be in closure when flip_direction=true"
|
||||||
|
);
|
||||||
|
|
||||||
drop(store);
|
drop(store);
|
||||||
drop(temp_dir);
|
drop(temp_dir);
|
||||||
|
|
@ -985,7 +1002,10 @@ mod tests {
|
||||||
|
|
||||||
// Verify the derivation path is in the closure
|
// Verify the derivation path is in the closure
|
||||||
let drv_in_closure = closure.iter().any(|p| p.name().unwrap() == drv_path_name);
|
let drv_in_closure = closure.iter().any(|p| p.name().unwrap() == drv_path_name);
|
||||||
assert!(drv_in_closure, "Derivation should be in closure when include_derivers=true");
|
assert!(
|
||||||
|
drv_in_closure,
|
||||||
|
"Derivation should be in closure when include_derivers=true"
|
||||||
|
);
|
||||||
|
|
||||||
drop(store);
|
drop(store);
|
||||||
drop(temp_dir);
|
drop(temp_dir);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue