Annotation of embedaddon/curl/tests/objnames-test08.sh, revision 1.1.1.1

1.1       misho       1: #!/bin/sh
                      2: # ***************************************************************************
                      3: # *                                  _   _ ____  _
                      4: # *  Project                     ___| | | |  _ \| |
                      5: # *                             / __| | | | |_) | |
                      6: # *                            | (__| |_| |  _ <| |___
                      7: # *                             \___|\___/|_| \_\_____|
                      8: # *
                      9: # * Copyright (C) 2013 - 2019, 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
                     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 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/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/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

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>