text: #include "clar_libgit2.h"
  #include "config_helpers.h"
  #include "repository.h"
  
  void assert_config_entry_existence(
  	git_repository *repo,
  	const char *name,
  	bool is_supposed_to_exist)
  {
  	git_config *config;
  	const char *out;
  	int result;
  
  	cl_git_pass(git_repository_config__weakptr(&config, repo));
  	
  	result = git_config_get_string(&out, config, name);
  
  	if (is_supposed_to_exist)
  		cl_git_pass(result);
  	else
  		cl_assert_equal_i(GIT_ENOTFOUND, result);
  }
  
  void assert_config_entry_value(
  	git_repository *repo,
  	const char *name,
  	const char *expected_value)
  {
  	git_config *config;
  	const char *out;
  
  	cl_git_pass(git_repository_config__weakptr(&config, repo));
  
  	cl_git_pass(git_config_get_string(&out, config, name));
  
  	cl_assert_equal_s(expected_value, out);
  }
  
  static int count_config_entries_cb(
  	const git_config_entry *entry,
  	void *payload)
  {
  	int *how_many = (int *)payload;
  
  	GIT_UNUSED(entry);
  
  	(*how_many)++;
  
  	return 0;
  }
  
  int count_config_entries_match(git_repository *repo, const char *pattern)
  {
  	git_config *config;
  	int how_many = 0;
  
  	cl_git_pass(git_repository_config(&config, repo));
  
  	cl_assert_equal_i(0, git_config_foreach_match(
  		config,	pattern, count_config_entries_cb, &how_many));
  
  	git_config_free(config);
  
  	return how_many;
  }
  