[testsuite] Improved `match_items()' sorting

`match_items()' now uses bash sort instead of tcl lsort.
The difference in sorting happens because bash and tcl use a different sorting order:
* bash sort uses the current locale's collating sequence and character set
* tcl lsort uses a C-like sort order where each character is sorted according to its numeric value
See also: http://fvue.nl/wiki/Tcl:_Lsort_output_differs_from_bash_sort

This fix allows the `dpkg -L' test to compare all packages.  To run the test:

   ./runCompletion dpkg.exp
This commit is contained in:
Freddy Vulto 2009-07-10 23:08:11 +02:00
parent 3fe193f81a
commit 262c91b486
2 changed files with 7 additions and 9 deletions

View File

@ -21,14 +21,12 @@ sync_after_int
# NOTE: If an argument is passed to `--get-selections', `dpkg' also returns
# packages with status "purged". Be sure to add `| grep install$' to
# pipeline before 'cut' in that case. -- FVu, Sun Feb 22 10:08:34 CET 2009
# TODO: Fix sorting in `match_items' in lib/library.exp. Sorting in tcl appears
# to be different from sorting in bash.
#if {[assert_exec {dpkg --get-selections | cut -f1 | sort} packages]} {
# assert_complete $packages "dpkg -L "
#}; # if
#
#
#sync_after_int
if {[assert_exec {dpkg --get-selections | cut -f1} packages]} {
assert_complete $packages "dpkg -L "
}; # if
sync_after_int
teardown

View File

@ -231,7 +231,7 @@ proc get_hosts {} {
# @param integer $size Chunk size
# @result boolean True if successful, False if not
proc match_items {items test {size 20}} {
set items [lsort -ascii $items]
set items [exec sort << [join $items "\n"]]
set result false
for {set i 0} {$i < [llength $items]} {set i [expr {$i + $size}]} {
set expected ""