Roland Mainz wrote:
> Vladimir Kotal wrote:
>> Vladimir Kotal wrote:
>>
>> <snip>
>>
>>> ok, I will rewrite the tests in nc test suite to use double brackets.
>> After reading the shell style document I made the following changes:
>>    - used double square brackets for if tests
>>    - converted escape characters to $( )
>>    - converted function definitions to 'function { }'
>>    - fixed if/for style
>>      - then/do on the same line as the check
>>      - semicolon separated by space from ']]'
>>
>> new webrev is here:
>>
>> http://cr.opensolaris.org/~vkotal/nc-tet.onnv-stc2-restructured-ksh_style/
> 
> Quick 5min race over
> http://cr.opensolaris.org/~vkotal/nc-tet.onnv-stc2-restructured-ksh_style/nc-tet.onnv-stc2.patch
> (patch code is quoted with '> ')
> 
>> +++ new/src/suites/net/nc/src/lib/ksh/common_funcs.ksh
> 
> General: What about using FPATH (function path) to load these common
> functions on demand ?

Any example of how to do that properly ?


>> +       if [[ $? -ne 0 ]] ; then
> 
> Please use 
> -- snip --
> if (( $? != 0 )) ; then
> -- snip --

Again, this still has the space between semicolon and '))'. It seems the 
majority uses similar constructions without the space.

> (since $? is an integer variable - see
> http://www.opensolaris.org/os/project/shell/shellstyle/#compare_exit_code_using_math)

I have fixed all occurrences of those, including -eq, -lt, -gt, -le and -ge.

>> +function common_cleanup
>> +{
>> +       debug "Cleanup"
>> +       stop_nc $@
>> +}
> 
> AFAIK you want:
> -- snip --
> stop_nc "$@"
> -- snip --
> (http://www.opensolaris.org/os/project/shell/shellstyle/#store_lists_in_arrays
> has a note about the difference between "$*" vs. "$@") ...

Fixed.

>> +function finish_test
>> +{
>> +       common_cleanup $@
>> +}
> 
> See above...

fixed.

> +function debug
> +{
> +       [ $STC2_NC_DEBUG -gt 0 ] && tet_infoline "$*"
> +}
> 
> AFAIK you want 
> -- snip --
>  (( STC2_NC_DEBUG > 0 )) && tet_infoline "$*"
> -- snip --

fixed.

> ... I'm not sure about the "$*" - does the script wants to pass all
> arguments to the "debug" function as _single_ string to "tet_infoline" ?

yes.

> 
> BTW: It may be usefull to replace the values "0" and "1" with "true" and
> "false" - it would allow you to do this:
> -- snip --
> $STC2_NC_DEBUG && tet_infoline "$*"
> -- snip --

ok, leaving this as is for now.

>> +function debug_printfile
>> +{
>> +       if [[ $STC2_NC_DEBUG -eq 1 ]] ; then
> 
> Please use (( STC2_NC_DEBUG == 1 )) ...

this got fixed together with all the arithmetics.

>> +               if [[ -r "$1" ]] ; then
>> +                       tet_printfile "$1"
>> +               else
>> +                       tet_infoline "cannot print file '$1' (not readable)"
>> +               fi
>> +       fi
>> +}
> 
>> +function print_test_case
>> +{
>> +       unset ptc_short_info
>> +       typeset tc_id="$1"
>> +       typeset tc_descr="$2"
>> +       typeset ptc_info="Test case $tc_id - $tc_descr"
>> +       typeset -ir columns=60
> 
> Please use "integer -r columns=60".

all occurences of 'typeset -i','typeset -ri' were substituted with 
'integer' or 'integer -r', respectively.

>> +
>> +       tet_infoline 
>> "======================================================="
>> +
>> +       if [[ $( echo $ptc_info | $WC -c ) -gt $columns ]] ; then
> 
> 1. "echo" will interpret backslash characters in "$ptc_info" ... is that
> wanted ?

most probably not.

> 2. "echo" is not portable
> 3. "wc -c" counts in _bytes_, not _characters_ (see
> http://www.opensolaris.org/os/project/shell/shellstyle/#shell_uses_charatcers_not_bytes)
> 4. Please don't use string operators to compare numbers
> 
> AFAIK it may be better to write (ksh88+ksh93):
> -- snip --
> if (( $( printf "%s\n" "$ptc_info" | $WC -C ) > columns )) ; then
> -- snip --

fixed. This still does not solve the 'bytes vs. characters' potential 
problem. Any idea how to approach this in correct way ?

> or (ksh93-only)
> if (( $( $WC -C <<<"$ptc_info" ) > columns )) ; then
> 
>> +               #
>> +               # Split the line
>> +               #
>> +               typeset -i ptc_ltrcnt=0
> 
> Please use "integer" instead of "typeset -i" ("integer" refers to the
> largest integer datatype supported by the shell interpreter, e.g. 32bit
> for ksh88 until Solaris 10 and then 64bit for ksh88 on Solaris 10 and
> 64bit for ksh93 (may grow in the future)).

fixed with all integer substitutions.

>> +               for ptc_word in $ptc_info; do
>> +                       ptc_wordsz=$( echo $ptc_word | $WC -c )
> 
> See above...

fixed.

>> +                       ptc_ltrcnt=$(($ptc_ltrcnt + $ptc_wordsz + 1))
> 
> Plese use:
> -- snip --
> (( ptc_ltrcnt=ptc_ltrcnt + ptc_wordsz + 1))
> -- snip --

this construction looks a bit weird to me because IMHO it makes the 
script less readable. It defines the variable and assigns the value into 
it. If it was something like (( i = i + 1 )) then it would be ok but in 
this case I cannot say I like it.

What's wrong with the original version ?

>> +                       if [[ $ptc_ltrcnt -gt $columns ]] ; then
> 
> Please use:
> -- snip --
> if (( ptc_ltrcnt > columns )) ; then
> -- snip --

fixed.

>> +                               tet_infoline "$ptc_short_info"
>> +                               ptc_short_info=" $ptc_word"
>> +                               ptc_ltrcnt="$ptc_wordsz"
>> +                       else
>> +                               ptc_short_info="$ptc_short_info $ptc_word"
>> +                       fi
>> +               done
>> +               if [[ $ptc_ltrcnt -gt 0 ]] ; then
> 
> Please use:
> -- snip --
> if (( ptc_ltrcnt > 0 )) ; then
> -- snip --

fixed.

>> +                       tet_infoline "$ptc_short_info"
>> +               fi
>> +       else
>> +               tet_infoline "$ptc_info"
>> +       fi
>> +
>> +       tet_infoline 
>> "======================================================="
>> +}
> 
> AFAIK the rest of the patch just repeats the issues above over and over
> again...

okay. Thanks. These were very valuable comments.

webrev has been refreshed:
   http://tessier.czech.sun.com/nc-tet.onnv-stc2/

here's incremental webrev against previous revision:
   http://cr.opensolaris.org/~vkotal/nc-tet.onnv-stc2.rolands_comments/


v.

Reply via email to