1 #!/bin/sh 2 # *************************************************************************** 3 # * _ _ ____ _ 4 # * Project ___| | | | _ \| | 5 # * / __| | | | |_) | | 6 # * | (__| |_| | _ <| |___ 7 # * \___|\___/|_| \_\_____| 8 # * 9 # * Copyright (C) 2013, Daniel Stenberg, <daniel (at] haxx.se>, et al. 10 # * 11 # * This software is licensed as described in the file COPYING, which 12 # * you should have received as part of this distribution. The terms 13 # * are also available at https://curl.haxx.se/docs/copyright.html. 14 # * 15 # * You may opt to use, copy, modify, merge, publish, distribute and/or sell 16 # * copies of the Software, and permit persons to whom the Software is 17 # * furnished to do so, under the terms of the COPYING file. 18 # * 19 # * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY 20 # * KIND, either express or implied. 21 # * 22 # *************************************************************************** 23 24 # 25 # This Bourne shell script file is used by test case 1221 to do 26 # unit testing of curl_10char_object_name() shell function which 27 # is defined in file objnames.inc and sourced by this file and 28 # any other shell script that may use it. 29 # 30 31 # 32 # argument validation 33 # 34 35 if test $# -eq 1; then 36 : 37 else 38 echo "Usage: ${0} srcdir" 39 exit 1 40 fi 41 42 if test -f "${1}/runtests.pl"; then 43 : 44 else 45 echo "${0}: Wrong srcdir" 46 exit 1 47 fi 48 49 srcdir=${1} 50 51 if test -f "$srcdir/../lib/objnames.inc"; then 52 : 53 else 54 echo "$0: Missing objnames.inc" 55 exit 1 56 fi 57 58 # 59 # Some variables 60 # 61 62 logdir=log 63 tstnum=1221 64 65 list_c=$logdir/${tstnum}_list_c 66 list_obj=$logdir/${tstnum}_list_obj 67 list_obj_c=$logdir/${tstnum}_list_obj_c 68 list_obj_uniq=$logdir/${tstnum}_list_obj_uniq 69 70 71 # 72 # Source curl_10char_object_name() function definition 73 # 74 75 . $srcdir/../lib/objnames.inc 76 77 # 78 # Some curl_10char_object_name() unit tests 79 # 80 81 echo 'Testing curl_10char_object_name...' 82 echo "" 83 84 argstr=123__678__ABC__FGH__KLM__PQRSTUV 85 expect=16AFKPQRST 86 outstr=`curl_10char_object_name $argstr` 87 echo "result: $outstr expected: $expect input: $argstr" 88 89 argstr=123__678__ABC__FGH__KLM__PQ.S.UV 90 expect=16AFKPQ 91 outstr=`curl_10char_object_name $argstr` 92 echo "result: $outstr expected: $expect input: $argstr" 93 94 argstr=123__678__ABC..FGH..KLM..PQRSTUV 95 expect=16ABC 96 outstr=`curl_10char_object_name $argstr` 97 echo "result: $outstr expected: $expect input: $argstr" 98 99 argstr=123__678_.ABC._FGH__KLM__PQRSTUV 100 expect=16 101 outstr=`curl_10char_object_name $argstr` 102 echo "result: $outstr expected: $expect input: $argstr" 103 104 argstr=123.567.90ABCDEFGHIJKLMNOPQRSTUV 105 expect=123 106 outstr=`curl_10char_object_name $argstr` 107 echo "result: $outstr expected: $expect input: $argstr" 108 109 argstr=1234567.90A.CDEFGHIJKLMNOPQRSTUV 110 expect=1234567 111 outstr=`curl_10char_object_name $argstr` 112 echo "result: $outstr expected: $expect input: $argstr" 113 114 argstr=1234567890.BCD.FGHIJKLMNOPQRSTUV 115 expect=1234567890 116 outstr=`curl_10char_object_name $argstr` 117 echo "result: $outstr expected: $expect input: $argstr" 118 119 argstr=12=45-78+0AB.DE.GHIJKLMNOPQRSTUV 120 expect=1470AB 121 outstr=`curl_10char_object_name $argstr` 122 echo "result: $outstr expected: $expect input: $argstr" 123 124 argstr=1234567890ABCDEFGHIJKLMNOPQRSTUV 125 expect=1234567890 126 outstr=`curl_10char_object_name $argstr` 127 echo "result: $outstr expected: $expect input: $argstr" 128 129 argstr=123_567_90A_CDE_GHIJKLMNOPQRSTUV 130 expect=159CGHIJKL 131 outstr=`curl_10char_object_name $argstr` 132 echo "result: $outstr expected: $expect input: $argstr" 133 134 argstr=123_567_90A_CDEFGHIJKLMNOPQRSTUV 135 expect=159CDEFGHI 136 outstr=`curl_10char_object_name $argstr` 137 echo "result: $outstr expected: $expect input: $argstr" 138 139 argstr=123_567_90ABCDEFGHIJKLMNOPQRSTUV 140 expect=1590ABCDEF 141 outstr=`curl_10char_object_name $argstr` 142 echo "result: $outstr expected: $expect input: $argstr" 143 144 argstr=123_567890ABCDEFGHIJKLMNOPQRSTUV 145 expect=1567890ABC 146 outstr=`curl_10char_object_name $argstr` 147 echo "result: $outstr expected: $expect input: $argstr" 148 149 argstr=1234567890ABCDEFGHIJKLMNOPQRSTUV 150 expect=1234567890 151 outstr=`curl_10char_object_name $argstr` 152 echo "result: $outstr expected: $expect input: $argstr" 153 154 # 155 # Verify that generated object name is distinct for 156 # all *.c source files in lib and src subdirectories. 157 # 158 159 ls $srcdir/../lib/*.c > $list_c 160 ls $srcdir/../src/*.c >> $list_c 161 162 rm -f $list_obj 163 164 for c_fname in `cat $list_c`; do 165 obj_name=`curl_10char_object_name $c_fname` 166 echo "$obj_name" >> $list_obj 167 done 168 169 sort -u $list_obj > $list_obj_uniq 170 171 cnt_c=`cat $list_c | wc -l` 172 cnt_u=`cat $list_obj_uniq | wc -l` 173 174 echo "" 175 echo "" 176 echo "" 177 if test $cnt_c -eq $cnt_u; then 178 echo "10-characters-or-less generated object names are unique." 179 obj_name_clash="no" 180 else 181 echo "10-characters-or-less generated object names are clashing..." 182 obj_name_clash="yes" 183 fi 184 185 if test $obj_name_clash = "yes"; then 186 # 187 # Show clashing object names and respective source file names 188 # 189 echo "" 190 paste $list_obj $list_c | sort > $list_obj_c 191 prev_match="no" 192 prev_line="unknown" 193 prev_obj_name="unknown" 194 while read this_line; do 195 obj_name=`echo "$this_line" | cut -f1` 196 if test "x$obj_name" = "x$prev_obj_name"; then 197 if test "x$prev_match" != "xyes"; then 198 echo "$prev_line" 199 echo "$this_line" 200 prev_match="yes" 201 else 202 echo "$this_line" 203 fi 204 else 205 prev_match="no" 206 fi 207 prev_line=$this_line 208 prev_obj_name=$obj_name 209 done < $list_obj_c 210 fi 211 212 rm -f $list_c 213 rm -f $list_obj 214 rm -f $list_obj_c 215 rm -f $list_obj_uniq 216 217 # end of objnames-test10.sh 218