You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by iv...@apache.org on 2011/12/16 12:05:22 UTC
svn commit: r1215089 - in /subversion/trunk/subversion: libsvn_subr/config.c
tests/libsvn_subr/config-test.c tests/libsvn_subr/config-test.cfg
Author: ivan
Date: Fri Dec 16 11:05:22 2011
New Revision: 1215089
URL: http://svn.apache.org/viewvc?rev=1215089&view=rev
Log:
Fix bug in svn_config_has_section with handling case insensitive config.
* subversion/libsvn_subr/config.c
(svn_config_has_section): Canonicalize the hash key.
* subversion/tests/libsvn_subr/config-test.c
(test_has_section): Rename to test_has_section_case_insensitive().
(test_has_section_case_insensitive, test_has_section_case_sensitive):
Expand to test different cases.
* subversion/tests/libsvn_subr/config-test.cfg
(UpperCaseSection): Add new test section with capital letters.
Modified:
subversion/trunk/subversion/libsvn_subr/config.c
subversion/trunk/subversion/tests/libsvn_subr/config-test.c
subversion/trunk/subversion/tests/libsvn_subr/config-test.cfg
Modified: subversion/trunk/subversion/libsvn_subr/config.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/config.c?rev=1215089&r1=1215088&r2=1215089&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_subr/config.c (original)
+++ subversion/trunk/subversion/libsvn_subr/config.c Fri Dec 16 11:05:22 2011
@@ -974,5 +974,13 @@ svn_config_get_server_setting_bool(svn_c
svn_boolean_t
svn_config_has_section(svn_config_t *cfg, const char *section)
{
- return apr_hash_get(cfg->sections, section, APR_HASH_KEY_STRING) != NULL;
+ cfg_section_t *sec;
+
+ /* Canonicalize the hash key */
+ svn_stringbuf_set(cfg->tmp_key, section);
+ if (! cfg->section_names_case_sensitive)
+ make_hash_key(cfg->tmp_key->data);
+
+ sec = apr_hash_get(cfg->sections, cfg->tmp_key->data, APR_HASH_KEY_STRING);
+ return sec != NULL;
}
Modified: subversion/trunk/subversion/tests/libsvn_subr/config-test.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/libsvn_subr/config-test.c?rev=1215089&r1=1215088&r2=1215089&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/libsvn_subr/config-test.c (original)
+++ subversion/trunk/subversion/tests/libsvn_subr/config-test.c Fri Dec 16 11:05:22 2011
@@ -211,7 +211,7 @@ test_boolean_retrieval(apr_pool_t *pool)
}
static svn_error_t *
-test_has_section(apr_pool_t *pool)
+test_has_section_case_insensitive(apr_pool_t *pool)
{
svn_config_t *cfg;
const char *cfg_file;
@@ -225,12 +225,50 @@ test_has_section(apr_pool_t *pool)
if (! svn_config_has_section(cfg, "section1"))
return fail(pool, "Failed to find section1");
+ if (! svn_config_has_section(cfg, "SECTION1"))
+ return fail(pool, "Failed to find SECTION1");
+
+ if (! svn_config_has_section(cfg, "UpperCaseSection"))
+ return fail(pool, "Failed to find UpperCaseSection");
+
+ if (! svn_config_has_section(cfg, "uppercasesection"))
+ return fail(pool, "Failed to find UpperCaseSection");
+
if (svn_config_has_section(cfg, "notthere"))
return fail(pool, "Returned true on missing section");
return SVN_NO_ERROR;
}
+static svn_error_t *
+test_has_section_case_sensitive(apr_pool_t *pool)
+{
+ svn_config_t *cfg;
+ const char *cfg_file;
+
+ if (!srcdir)
+ SVN_ERR(init_params(pool));
+
+ cfg_file = apr_pstrcat(pool, srcdir, "/", "config-test.cfg", (char *)NULL);
+ SVN_ERR(svn_config_read2(&cfg, cfg_file, TRUE, TRUE, pool));
+
+ if (! svn_config_has_section(cfg, "section1"))
+ return fail(pool, "Failed to find section1");
+
+ if (svn_config_has_section(cfg, "SECTION1"))
+ return fail(pool, "Returned true on missing section");
+
+ if (! svn_config_has_section(cfg, "UpperCaseSection"))
+ return fail(pool, "Failed to find UpperCaseSection");
+
+ if (svn_config_has_section(cfg, "uppercasesection"))
+ return fail(pool, "Returned true on missing section");
+
+ if (svn_config_has_section(cfg, "notthere"))
+ return fail(pool, "Returned true on missing section");
+
+ return SVN_NO_ERROR;
+}
/*
====================================================================
If you add a new test to this file, update this array.
@@ -246,7 +284,9 @@ struct svn_test_descriptor_t test_funcs[
"test svn_config"),
SVN_TEST_PASS2(test_boolean_retrieval,
"test svn_config boolean conversion"),
- SVN_TEST_PASS2(test_has_section,
- "test svn_config_has_section"),
+ SVN_TEST_PASS2(test_has_section_case_insensitive,
+ "test svn_config_has_section (case insensitive)"),
+ SVN_TEST_PASS2(test_has_section_case_sensitive,
+ "test svn_config_has_section (case sensitive)"),
SVN_TEST_NULL
};
Modified: subversion/trunk/subversion/tests/libsvn_subr/config-test.cfg
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/libsvn_subr/config-test.cfg?rev=1215089&r1=1215088&r2=1215089&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/libsvn_subr/config-test.cfg (original)
+++ subversion/trunk/subversion/tests/libsvn_subr/config-test.cfg Fri Dec 16 11:05:22 2011
@@ -41,6 +41,9 @@ h= %(unterminated
# Multiple expansions
i=%(a)s %(b)s
+[UpperCaseSection]
+a=Aa
+
[booleans]
true1 = true
true2 = Yes