#include "nix/util/config-global.hh" #include "nix/util/args.hh" #include "nix_api_util.h" #include "nix/util/tests/nix_api_util.hh" #include "nix/util/tests/string_callback.hh" #include #include #include "util-tests-config.hh" namespace nixC { TEST(nix_api_util, nix_version_get) { ASSERT_EQ(std::string(nix_version_get()), PACKAGE_VERSION); } struct MySettings : nix::Config { nix::Setting settingSet{this, "empty", "setting-name", "Description"}; }; MySettings mySettings; static nix::GlobalConfig::Register rs(&mySettings); TEST_F(nix_api_util_context, nix_setting_get) { ASSERT_EQ(nix_err_code(ctx), NIX_OK); std::string setting_value; nix_err result = nix_setting_get(ctx, "invalid-key", OBSERVE_STRING(setting_value)); ASSERT_EQ(result, NIX_ERR_KEY); result = nix_setting_get(ctx, "setting-name", OBSERVE_STRING(setting_value)); ASSERT_EQ(result, NIX_OK); ASSERT_STREQ("empty", setting_value.c_str()); } TEST_F(nix_api_util_context, nix_setting_set) { nix_err result = nix_setting_set(ctx, "invalid-key", "new-value"); ASSERT_EQ(result, NIX_ERR_KEY); result = nix_setting_set(ctx, "setting-name", "new-value"); ASSERT_EQ(result, NIX_OK); std::string setting_value; result = nix_setting_get(ctx, "setting-name", OBSERVE_STRING(setting_value)); ASSERT_EQ(result, NIX_OK); ASSERT_STREQ("new-value", setting_value.c_str()); } TEST_F(nix_api_util_context, nix_err_msg) { // no error EXPECT_THROW(nix_err_msg(nullptr, ctx, NULL), nix::Error); // set error nix_set_err_msg(ctx, NIX_ERR_UNKNOWN, "unknown test error"); // basic usage std::string err_msg = nix_err_msg(NULL, ctx, NULL); ASSERT_EQ(err_msg, "unknown test error"); // advanced usage unsigned int sz; auto new_ctx = createOwnedNixContext(); err_msg = nix_err_msg(new_ctx.get(), ctx, &sz); ASSERT_EQ(sz, err_msg.size()); } TEST_F(nix_api_util_context, nix_err_code) { ASSERT_EQ(nix_err_code(ctx), NIX_OK); nix_set_err_msg(ctx, NIX_ERR_UNKNOWN, "unknown test error"); ASSERT_EQ(nix_err_code(ctx), NIX_ERR_UNKNOWN); } } // namespace nixC