From cc88e1aa82f35e9ad03d9d2dc0ebefae82080d0b Mon Sep 17 00:00:00 2001 From: Robert Hensing Date: Sat, 20 Dec 2025 02:10:37 +0100 Subject: [PATCH] libflake-c: improve input override error message clarity Make the C API error message more explicit about what went wrong and why it's invalid. The new message explains that a zero-length path was passed and clarifies that it would refer to the flake itself. Updates the unit test to match the new error message. --- src/libflake-c/nix_api_flake.cc | 3 ++- src/libflake-tests/nix_api_flake.cc | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/libflake-c/nix_api_flake.cc b/src/libflake-c/nix_api_flake.cc index d53b3f3e7..990aa66fc 100644 --- a/src/libflake-c/nix_api_flake.cc +++ b/src/libflake-c/nix_api_flake.cc @@ -164,7 +164,8 @@ nix_err nix_flake_lock_flags_add_input_override( try { auto path = nix::flake::NonEmptyInputAttrPath::parse(inputPath); if (!path) - throw nix::UsageError("input override path cannot be empty"); + throw nix::UsageError( + "input override path cannot be zero-length; it would refer to the flake itself, not an input"); flags->lockFlags->inputOverrides.emplace(std::move(*path), *flakeRef->flakeRef); if (flags->lockFlags->writeLockFile) { return nix_flake_lock_flags_set_mode_virtual(context, flags); diff --git a/src/libflake-tests/nix_api_flake.cc b/src/libflake-tests/nix_api_flake.cc index f75b35290..45f3d9b29 100644 --- a/src/libflake-tests/nix_api_flake.cc +++ b/src/libflake-tests/nix_api_flake.cc @@ -434,7 +434,7 @@ TEST_F(nix_api_store_test, nix_api_flake_lock_flags_add_input_override_empty_pat // Verify error message contains expected text const char * errMsg = nix_err_msg(nullptr, ctx, nullptr); ASSERT_NE(nullptr, errMsg); - ASSERT_NE(std::string(errMsg).find("input override path cannot be empty"), std::string::npos); + ASSERT_NE(std::string(errMsg).find("input override path cannot be zero-length"), std::string::npos); nix_flake_reference_free(flakeReference); nix_flake_reference_parse_flags_free(parseFlags);