mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-03 08:53:48 +00:00
139 lines
4.2 KiB
C
139 lines
4.2 KiB
C
#include "clar_libgit2.h"
|
|
|
|
void test_config_write__initialize(void)
|
|
{
|
|
cl_fixture_sandbox("config/config9");
|
|
}
|
|
|
|
void test_config_write__cleanup(void)
|
|
{
|
|
cl_fixture_cleanup("config9");
|
|
}
|
|
|
|
void test_config_write__replace_value(void)
|
|
{
|
|
git_config *cfg;
|
|
int i;
|
|
int64_t l, expected = +9223372036854775803;
|
|
|
|
/* By freeing the config, we make sure we flush the values */
|
|
cl_git_pass(git_config_open_ondisk(&cfg, "config9"));
|
|
cl_git_pass(git_config_set_int32(cfg, "core.dummy", 5));
|
|
git_config_free(cfg);
|
|
|
|
cl_git_pass(git_config_open_ondisk(&cfg, "config9"));
|
|
cl_git_pass(git_config_get_int32(&i, cfg, "core.dummy"));
|
|
cl_assert(i == 5);
|
|
git_config_free(cfg);
|
|
|
|
cl_git_pass(git_config_open_ondisk(&cfg, "config9"));
|
|
cl_git_pass(git_config_set_int32(cfg, "core.dummy", 1));
|
|
git_config_free(cfg);
|
|
|
|
cl_git_pass(git_config_open_ondisk(&cfg, "config9"));
|
|
cl_git_pass(git_config_set_int64(cfg, "core.verylong", expected));
|
|
git_config_free(cfg);
|
|
|
|
cl_git_pass(git_config_open_ondisk(&cfg, "config9"));
|
|
cl_git_pass(git_config_get_int64(&l, cfg, "core.verylong"));
|
|
cl_assert(l == expected);
|
|
git_config_free(cfg);
|
|
|
|
cl_git_pass(git_config_open_ondisk(&cfg, "config9"));
|
|
cl_must_fail(git_config_get_int32(&i, cfg, "core.verylong"));
|
|
git_config_free(cfg);
|
|
|
|
cl_git_pass(git_config_open_ondisk(&cfg, "config9"));
|
|
cl_git_pass(git_config_set_int64(cfg, "core.verylong", 1));
|
|
git_config_free(cfg);
|
|
}
|
|
|
|
void test_config_write__delete_value(void)
|
|
{
|
|
git_config *cfg;
|
|
int32_t i;
|
|
|
|
cl_git_pass(git_config_open_ondisk(&cfg, "config9"));
|
|
cl_git_pass(git_config_set_int32(cfg, "core.dummy", 5));
|
|
git_config_free(cfg);
|
|
|
|
cl_git_pass(git_config_open_ondisk(&cfg, "config9"));
|
|
cl_git_pass(git_config_delete(cfg, "core.dummy"));
|
|
git_config_free(cfg);
|
|
|
|
cl_git_pass(git_config_open_ondisk(&cfg, "config9"));
|
|
cl_assert(git_config_get_int32(&i, cfg, "core.dummy") == GIT_ENOTFOUND);
|
|
cl_git_pass(git_config_set_int32(cfg, "core.dummy", 1));
|
|
git_config_free(cfg);
|
|
}
|
|
|
|
void test_config_write__write_subsection(void)
|
|
{
|
|
git_config *cfg;
|
|
const char *str;
|
|
|
|
cl_git_pass(git_config_open_ondisk(&cfg, "config9"));
|
|
cl_git_pass(git_config_set_string(cfg, "my.own.var", "works"));
|
|
git_config_free(cfg);
|
|
|
|
cl_git_pass(git_config_open_ondisk(&cfg, "config9"));
|
|
cl_git_pass(git_config_get_string(&str, cfg, "my.own.var"));
|
|
cl_git_pass(strcmp(str, "works"));
|
|
git_config_free(cfg);
|
|
}
|
|
|
|
void test_config_write__delete_inexistent(void)
|
|
{
|
|
git_config *cfg;
|
|
|
|
cl_git_pass(git_config_open_ondisk(&cfg, "config9"));
|
|
cl_assert(git_config_delete(cfg, "core.imaginary") == GIT_ENOTFOUND);
|
|
git_config_free(cfg);
|
|
}
|
|
|
|
void test_config_write__value_containing_quotes(void)
|
|
{
|
|
git_config *cfg;
|
|
const char* str;
|
|
|
|
cl_git_pass(git_config_open_ondisk(&cfg, "config9"));
|
|
cl_git_pass(git_config_set_string(cfg, "core.somevar", "this \"has\" quotes"));
|
|
cl_git_pass(git_config_get_string(&str, cfg, "core.somevar"));
|
|
cl_assert_equal_s(str, "this \"has\" quotes");
|
|
git_config_free(cfg);
|
|
|
|
cl_git_pass(git_config_open_ondisk(&cfg, "config9"));
|
|
cl_git_pass(git_config_get_string(&str, cfg, "core.somevar"));
|
|
cl_assert_equal_s(str, "this \"has\" quotes");
|
|
git_config_free(cfg);
|
|
|
|
/* The code path for values that already exist is different, check that one as well */
|
|
cl_git_pass(git_config_open_ondisk(&cfg, "config9"));
|
|
cl_git_pass(git_config_set_string(cfg, "core.somevar", "this also \"has\" quotes"));
|
|
cl_git_pass(git_config_get_string(&str, cfg, "core.somevar"));
|
|
cl_assert_equal_s(str, "this also \"has\" quotes");
|
|
git_config_free(cfg);
|
|
|
|
cl_git_pass(git_config_open_ondisk(&cfg, "config9"));
|
|
cl_git_pass(git_config_get_string(&str, cfg, "core.somevar"));
|
|
cl_assert_equal_s(str, "this also \"has\" quotes");
|
|
git_config_free(cfg);
|
|
}
|
|
|
|
void test_config_write__escape_value(void)
|
|
{
|
|
git_config *cfg;
|
|
const char* str;
|
|
|
|
cl_git_pass(git_config_open_ondisk(&cfg, "config9"));
|
|
cl_git_pass(git_config_set_string(cfg, "core.somevar", "this \"has\" quotes and \t"));
|
|
cl_git_pass(git_config_get_string(&str, cfg, "core.somevar"));
|
|
cl_assert_equal_s(str, "this \"has\" quotes and \t");
|
|
git_config_free(cfg);
|
|
|
|
cl_git_pass(git_config_open_ondisk(&cfg, "config9"));
|
|
cl_git_pass(git_config_get_string(&str, cfg, "core.somevar"));
|
|
cl_assert_equal_s(str, "this \"has\" quotes and \t");
|
|
git_config_free(cfg);
|
|
}
|