Bertrand SIMONNET | e6cd738 | 2015-07-01 15:39:44 -0700 | [diff] [blame] | 1 | #!/bin/sh |
| 2 | # *************************************************************************** |
| 3 | # * _ _ ____ _ |
| 4 | # * Project ___| | | | _ \| | |
| 5 | # * / __| | | | |_) | | |
| 6 | # * | (__| |_| | _ <| |___ |
| 7 | # * \___|\___/|_| \_\_____| |
| 8 | # * |
| 9 | # * Copyright (C) 2013, Daniel Stenberg, <daniel@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 |
Alex Deymo | 8f1a214 | 2016-06-28 14:49:26 -0700 | [diff] [blame] | 13 | # * are also available at https://curl.haxx.se/docs/copyright.html. |
Bertrand SIMONNET | e6cd738 | 2015-07-01 15:39:44 -0700 | [diff] [blame] | 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 1222 to do |
| 26 | # unit testing of curl_8char_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=1222 |
| 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_8char_object_name() function definition |
| 73 | # |
| 74 | |
| 75 | . $srcdir/../lib/objnames.inc |
| 76 | |
| 77 | # |
| 78 | # Some curl_8char_object_name() unit tests |
| 79 | # |
| 80 | |
| 81 | echo 'Testing curl_8char_object_name...' |
| 82 | echo "" |
| 83 | |
| 84 | argstr=123__678__ABC__FGH__KLM__PQRSTUV |
| 85 | expect=16AFKPQR |
| 86 | outstr=`curl_8char_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_8char_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_8char_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_8char_object_name $argstr` |
| 102 | echo "result: $outstr expected: $expect input: $argstr" |
| 103 | |
| 104 | argstr=123.567.90ABCDEFGHIJKLMNOPQRSTUV |
| 105 | expect=123 |
| 106 | outstr=`curl_8char_object_name $argstr` |
| 107 | echo "result: $outstr expected: $expect input: $argstr" |
| 108 | |
| 109 | argstr=1234567.90A.CDEFGHIJKLMNOPQRSTUV |
| 110 | expect=1234567 |
| 111 | outstr=`curl_8char_object_name $argstr` |
| 112 | echo "result: $outstr expected: $expect input: $argstr" |
| 113 | |
| 114 | argstr=1234567890.BCD.FGHIJKLMNOPQRSTUV |
| 115 | expect=12345678 |
| 116 | outstr=`curl_8char_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_8char_object_name $argstr` |
| 122 | echo "result: $outstr expected: $expect input: $argstr" |
| 123 | |
| 124 | argstr=1234567890ABCDEFGHIJKLMNOPQRSTUV |
| 125 | expect=12345678 |
| 126 | outstr=`curl_8char_object_name $argstr` |
| 127 | echo "result: $outstr expected: $expect input: $argstr" |
| 128 | |
| 129 | argstr=123_567_90A_CDE_GHIJKLMNOPQRSTUV |
| 130 | expect=159CGHIJ |
| 131 | outstr=`curl_8char_object_name $argstr` |
| 132 | echo "result: $outstr expected: $expect input: $argstr" |
| 133 | |
| 134 | argstr=123_567_90A_CDEFGHIJKLMNOPQRSTUV |
| 135 | expect=159CDEFG |
| 136 | outstr=`curl_8char_object_name $argstr` |
| 137 | echo "result: $outstr expected: $expect input: $argstr" |
| 138 | |
| 139 | argstr=123_567_90ABCDEFGHIJKLMNOPQRSTUV |
| 140 | expect=1590ABCD |
| 141 | outstr=`curl_8char_object_name $argstr` |
| 142 | echo "result: $outstr expected: $expect input: $argstr" |
| 143 | |
| 144 | argstr=123_567890ABCDEFGHIJKLMNOPQRSTUV |
| 145 | expect=1567890A |
| 146 | outstr=`curl_8char_object_name $argstr` |
| 147 | echo "result: $outstr expected: $expect input: $argstr" |
| 148 | |
| 149 | argstr=1234567890ABCDEFGHIJKLMNOPQRSTUV |
| 150 | expect=12345678 |
| 151 | outstr=`curl_8char_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_8char_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 "8-characters-or-less generated object names are unique." |
| 179 | obj_name_clash="no" |
| 180 | else |
| 181 | echo "8-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-test.sh |