summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdward Thomson <ethomson@edwardthomson.com>2019-11-06 06:04:55 -0500
committerGitHub <noreply@github.com>2019-11-06 06:04:55 -0500
commit01ea911b9e14a38f94a0018c13e5f308719aced6 (patch)
tree21ac8c90e47861aae567f7b2f1377ddd0a8ad766
parenta3d8a43755dae7292857a0afa847601d2a85a1af (diff)
parent146e5bf7b1740c0881057d1ca0233ca0852451ab (diff)
downloadlibgit2-01ea911b9e14a38f94a0018c13e5f308719aced6.tar.gz
Merge pull request #5299 from pks-t/pks/config-mem-snapshots
config_mem: implement support for snapshots
-rw-r--r--src/config_mem.c10
-rw-r--r--tests/config/snapshot.c17
2 files changed, 18 insertions, 9 deletions
diff --git a/src/config_mem.c b/src/config_mem.c
index e4006db32..5b573a995 100644
--- a/src/config_mem.c
+++ b/src/config_mem.c
@@ -170,14 +170,6 @@ static int config_memory_unlock(git_config_backend *backend, int success)
return config_error_readonly();
}
-static int config_memory_snapshot(git_config_backend **out, git_config_backend *backend)
-{
- GIT_UNUSED(out);
- GIT_UNUSED(backend);
- git_error_set(GIT_ERROR_CONFIG, "this backend does not support snapshots");
- return -1;
-}
-
static void config_memory_free(git_config_backend *_backend)
{
config_memory_backend *backend = (config_memory_backend *)_backend;
@@ -219,7 +211,7 @@ int git_config_backend_from_string(git_config_backend **out, const char *cfg, si
backend->parent.iterator = config_memory_iterator;
backend->parent.lock = config_memory_lock;
backend->parent.unlock = config_memory_unlock;
- backend->parent.snapshot = config_memory_snapshot;
+ backend->parent.snapshot = git_config_backend_snapshot;
backend->parent.free = config_memory_free;
*out = (git_config_backend *)backend;
diff --git a/tests/config/snapshot.c b/tests/config/snapshot.c
index 3b90cfe49..5cc08a721 100644
--- a/tests/config/snapshot.c
+++ b/tests/config/snapshot.c
@@ -1,5 +1,7 @@
#include "clar_libgit2.h"
+#include "config_backend.h"
+
static git_config *cfg;
static git_config *snapshot;
@@ -120,3 +122,18 @@ void test_config_snapshot__snapshot(void)
cl_git_pass(p_unlink("configfile"));
}
+
+void test_config_snapshot__snapshot_from_in_memony(void)
+{
+ const char *configuration = "[section]\nkey = 1\n";
+ git_config_backend *backend;
+ int i;
+
+ cl_git_pass(git_config_new(&cfg));
+ cl_git_pass(git_config_backend_from_string(&backend, configuration, strlen(configuration)));
+ cl_git_pass(git_config_add_backend(cfg, backend, 0, NULL, 0));
+
+ cl_git_pass(git_config_snapshot(&snapshot, cfg));
+ cl_git_pass(git_config_get_int32(&i, snapshot, "section.key"));
+ cl_assert_equal_i(i, 1);
+}