79 lines
2.1 KiB
Rust
79 lines
2.1 KiB
Rust
#![cfg(feature = "nix-flake-c")]
|
|
#![cfg(test)]
|
|
|
|
use std::ptr;
|
|
|
|
use serial_test::serial;
|
|
|
|
use nixide_sys::*;
|
|
|
|
#[test]
|
|
#[serial]
|
|
fn flake_settings_new_and_free() {
|
|
unsafe {
|
|
let ctx = nix_c_context_create();
|
|
assert!(!ctx.is_null());
|
|
|
|
// Create new flake settings
|
|
let settings = nix_flake_settings_new(ctx);
|
|
assert!(!settings.is_null(), "nix_flake_settings_new returned null");
|
|
|
|
// Free flake settings (should not crash)
|
|
nix_flake_settings_free(settings);
|
|
|
|
nix_c_context_free(ctx);
|
|
}
|
|
}
|
|
|
|
#[test]
|
|
#[serial]
|
|
fn flake_settings_add_to_eval_state_builder() {
|
|
unsafe {
|
|
let ctx = nix_c_context_create();
|
|
assert!(!ctx.is_null());
|
|
|
|
let err = nix_libutil_init(ctx);
|
|
assert_eq!(err, NixErr::Ok);
|
|
|
|
let err = nix_libstore_init(ctx);
|
|
assert_eq!(err, NixErr::Ok);
|
|
|
|
let err = nix_libexpr_init(ctx);
|
|
assert_eq!(err, NixErr::Ok);
|
|
|
|
let store = nix_store_open(ctx, ptr::null(), ptr::null_mut());
|
|
assert!(!store.is_null());
|
|
|
|
let builder = nix_eval_state_builder_new(ctx, store);
|
|
assert!(!builder.is_null());
|
|
|
|
let settings = nix_flake_settings_new(ctx);
|
|
assert!(!settings.is_null(), "nix_flake_settings_new returned null");
|
|
|
|
// Add flake settings to eval state builder
|
|
let err = nix_flake_settings_add_to_eval_state_builder(ctx, settings, builder);
|
|
// Accept OK or ERR_UNKNOWN (depends on Nix build/config)
|
|
assert!(
|
|
err == NixErr::Ok || err == NixErr::Unknown,
|
|
"nix_flake_settings_add_to_eval_state_builder returned unexpected error code: {err}"
|
|
);
|
|
|
|
nix_flake_settings_free(settings);
|
|
nix_eval_state_builder_free(builder);
|
|
nix_store_free(store);
|
|
nix_c_context_free(ctx);
|
|
}
|
|
}
|
|
|
|
#[test]
|
|
#[serial]
|
|
fn flake_settings_null_context() {
|
|
// Passing NULL context should not crash, but may error
|
|
unsafe {
|
|
let settings = nix_flake_settings_new(ptr::null_mut());
|
|
// May return null if context is required
|
|
if !settings.is_null() {
|
|
nix_flake_settings_free(settings);
|
|
}
|
|
}
|
|
}
|