diff options
author | Lorry Tar Creator <lorry-tar-importer@baserock.org> | 2015-03-18 13:33:26 +0000 |
---|---|---|
committer | <> | 2015-07-08 14:41:01 +0000 |
commit | bb0ef45f7c46b0ae221b26265ef98a768c33f820 (patch) | |
tree | 98bae10dde41c746c51ae97ec4f879e330415aa7 /subversion/tests/libsvn_subr/target-test.c | |
parent | 239dfafe71711b2f4c43d7b90a1228d7bdc5195e (diff) | |
download | subversion-tarball-subversion-1.8.13.tar.gz |
Imported from /home/lorry/working-area/delta_subversion-tarball/subversion-1.8.13.tar.gz.subversion-1.8.13
Diffstat (limited to 'subversion/tests/libsvn_subr/target-test.c')
-rw-r--r-- | subversion/tests/libsvn_subr/target-test.c | 201 |
1 files changed, 0 insertions, 201 deletions
diff --git a/subversion/tests/libsvn_subr/target-test.c b/subversion/tests/libsvn_subr/target-test.c deleted file mode 100644 index 9ab42c1..0000000 --- a/subversion/tests/libsvn_subr/target-test.c +++ /dev/null @@ -1,201 +0,0 @@ -/* - * target-test.c: test the condense_targets functions - * - * ==================================================================== - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * ==================================================================== - */ - -#include <apr_general.h> - - -#ifdef _MSC_VER -#include <direct.h> -#define getcwd _getcwd -#else -#include <unistd.h> /* for getcwd() */ -#endif - -#define SVN_DEPRECATED - -#include "svn_pools.h" -#include "svn_path.h" - -#include "../svn_test.h" - -typedef svn_error_t *(*condense_targets_func_t) - (const char **pcommon, - apr_array_header_t **pcondensed_targets, - const apr_array_header_t *targets, - svn_boolean_t remove_redundancies, - apr_pool_t *pool); - -/** Executes function CONDENSE_TARGETS twice - with and without requesting the - * condensed targets list - on TEST_TARGETS (comma sep. string) and compares - * the results with EXP_COMMON and EXP_TARGETS (comma sep. string). - * - * @note: a '%' character at the beginning of EXP_COMMON or EXP_TARGETS will - * be replaced by the current working directory. - * - * Returns an error if any of the comparisons fail. - */ -static svn_error_t * -condense_targets_tests_helper(const char* title, - const char* test_targets, - const char* exp_common, - const char* exp_targets, - const char* func_name, - condense_targets_func_t condense_targets, - apr_pool_t *pool) -{ - apr_array_header_t *targets; - apr_array_header_t *condensed_targets; - const char *common_path, *common_path2, *curdir; - char *token, *iter; - const char *exp_common_abs = exp_common; - int i; - char buf[8192]; - - if (! getcwd(buf, sizeof(buf))) - return svn_error_create(SVN_ERR_BASE, NULL, "getcwd() failed"); - curdir = svn_path_internal_style(buf, pool); - - /* Create the target array */ - targets = apr_array_make(pool, sizeof(test_targets), sizeof(const char *)); - token = apr_strtok(apr_pstrdup(pool, test_targets), ",", &iter); - while (token) - { - APR_ARRAY_PUSH(targets, const char *) = - svn_path_internal_style(token, pool); - token = apr_strtok(NULL, ",", &iter); - }; - - /* Call the function */ - SVN_ERR(condense_targets(&common_path, &condensed_targets, targets, - TRUE, pool)); - - /* Verify the common part with the expected (prefix with cwd). */ - if (*exp_common == '%') - exp_common_abs = apr_pstrcat(pool, curdir, exp_common + 1, (char *)NULL); - - if (strcmp(common_path, exp_common_abs) != 0) - { - return svn_error_createf - (SVN_ERR_TEST_FAILED, NULL, - "%s (test %s) returned %s instead of %s", - func_name, title, - common_path, exp_common_abs); - } - - /* Verify the condensed targets */ - token = apr_strtok(apr_pstrdup(pool, exp_targets), ",", &iter); - for (i = 0; i < condensed_targets->nelts; i++) - { - const char * target = APR_ARRAY_IDX(condensed_targets, i, const char*); - if (token && (*token == '%')) - token = apr_pstrcat(pool, curdir, token + 1, (char *)NULL); - if (! token || - (target && (strcmp(target, token) != 0))) - { - return svn_error_createf - (SVN_ERR_TEST_FAILED, NULL, - "%s (test %s) couldn't find %s in expected targets list", - func_name, title, - target); - } - token = apr_strtok(NULL, ",", &iter); - } - - /* Now ensure it works without the pbasename */ - SVN_ERR(condense_targets(&common_path2, NULL, targets, TRUE, pool)); - - /* Verify the common part again */ - if (strcmp(common_path, common_path2) != 0) - { - return svn_error_createf - (SVN_ERR_TEST_FAILED, NULL, - "%s (test %s): Common path without getting targets %s does not match" \ - "common path with targets %s", - func_name, title, - common_path2, common_path); - } - - return SVN_NO_ERROR; -} - - -static svn_error_t * -test_path_condense_targets(apr_pool_t *pool) -{ - int i; - struct { - const char* title; - const char* targets; - const char* exp_common; - const char* exp_targets; - } tests[] = { - { "normal use", "z/A/B,z/A,z/A/C,z/D/E,z/D/F,z/D,z/G,z/G/H,z/G/I", - "%/z", "A,D,G" }, - {"identical dirs", "z/A,z/A,z/A,z/A", - "%/z/A", "" }, - {"identical files", "z/A/file,z/A/file,z/A/file,z/A/file", - "%/z/A/file", "" }, - {"single dir", "z/A", - "%/z/A", "" }, - {"single file", "z/A/file", - "%/z/A/file", "" }, - {"URLs", "http://host/A/C,http://host/A/C/D,http://host/A/B/D", - "http://host/A", "C,B/D" }, - {"URLs with no common prefix", - "http://host1/A/C,http://host2/A/C/D,http://host3/A/B/D", - "", "http://host1/A/C,http://host2/A/C/D,http://host3/A/B/D" }, - {"file URLs with no common prefix", "file:///A/C,file:///B/D", - "", "file:///A/C,file:///B/D" }, - {"URLs with mixed protocols", - "http://host/A/C,file:///B/D,gopher://host/A", - "", "http://host/A/C,file:///B/D,gopher://host/A" }, - {"mixed paths and URLs", - "z/A/B,z/A,http://host/A/C/D,http://host/A/C", - "", "%/z/A,http://host/A/C" }, - }; - - for (i = 0; i < sizeof(tests) / sizeof(tests[0]); i++) - { - SVN_ERR(condense_targets_tests_helper(tests[i].title, - tests[i].targets, - tests[i].exp_common, - tests[i].exp_targets, - "svn_path_condense_targets", - svn_path_condense_targets, - pool)); - } - - return SVN_NO_ERROR; -} - - - -/* The test table. */ - -struct svn_test_descriptor_t test_funcs[] = - { - SVN_TEST_NULL, - SVN_TEST_PASS2(test_path_condense_targets, - "test svn_path_condense_targets"), - SVN_TEST_NULL - }; |