Tk Library Source Code

View Ticket
Login
Ticket UUID: 554062
Title: tcllib test suite failures for stoop
Type: Bug Version: None
Submitter: lvirden Created on: 2002-05-09 11:02:40
Subsystem: stooop Assigned To: jfontain
Priority: 5 Medium Severity:
Status: Closed Last Modified: 2003-02-17 18:36:03
Resolution: None Closed By: jfontain
    Closed on: 2003-02-17 11:36:03
Description:
With the latest Tcl cvs head (well, as of at least the
past day or two), the tcllib test suite has begun
showing 8 failures.  I don't know whether this is a
fundamental change in tcltest, tcl, or tcllib, or the
tcllib test suite.

Platform SPARC Solaris 2.6, Sun C compiler, Tcl 8.4a5
from May 8:

$ make test
/usr/tcl84/bin/tclsh8.4 `echo
/vol/tclsrcsol/tcl84/tcllib/all.tcl` -modules "base64
calendar cmdline comm control crc csv counter doctools
dns exif struct fileutil ftp ftpd javascript html irc
math md5 mime ncgi nntp pop3 pop3d profiler smtpd
textutil uri log htmlparse report sha1 stooop"
tcllib tests
Tests running in working dir: 
/vol/tclsrcsol/tcl84/tcllib
Only sourcing test files that match:  *.test
Tests began at Thu May 09 06:56:21 EDT 2002
Module: base64
modules/base64/base64.test
base64 2.2 (pure Tcl)
modules/base64/uuencode.test
notice    invalid uuencoded string: padding string to a
multiple of 4.
notice    invalid uuencoded string: padding string to a
multiple of 4.
modules/base64/yencode.test

==== yencode-1.0 yencode yEnc test file FAILED
==== Contents of test case:

    set enc [yencode::yencode -file $datafile]
    set dec [yencode::ydecode $d]
    set chk [yencode::loaddata $datafile]
    string match $dec $chk

---- Result was:
couldn't open "yencode.test.data": no such file or
directory
---- Result should have been (exact matching):
0
---- Test generated error; Return code was: 1
---- Return code should have been one of: 0 2
==== yencode-1.0 FAILED


Module: calendar
modules/calendar/gregorian.test

Module: cmdline
modules/cmdline/cmdline.test
modules/cmdline/typedCmdline.test

Module: comm
modules/comm/comm.test
comm 4.0
self @ 55116
Waiting for spawned comm system to boot
Slave @ 55117
Running tests

Module: control
modules/control/do.test
modules/control/no-op.test

Module: crc
modules/crc/cksum.test
modules/crc/crc32.test
modules/crc/sum.test

Module: csv
modules/csv/csv.test
csv 0.3
- struct 1.2.1

Module: counter
modules/counter/counter.test
incr scaler 12 microseconds per iteration
incr array 16 microseconds per iteration
rawcount 32 microseconds per iteration
simple 72 microseconds per iteration
lastn 153 microseconds per iteration
lastn 154 microseconds per iteration
hist 186 microseconds per iteration
hist2x 282 microseconds per iteration
Pausing during timehist tests
timehist 259 microseconds per iteration

Module: doctools
Error:  No test files remain after applying your match
and skip patterns!

Module: dns
Error:  No test files remain after applying your match
and skip patterns!

Module: exif
Error:  No test files remain after applying your match
and skip patterns!

Module: struct
modules/struct/graph.test
modules/struct/matrix.test
modules/struct/queue.test
modules/struct/stack.test
modules/struct/tree.test

Module: fileutil
modules/fileutil/fileutil.test
fileutil 1.4

Module: ftp
Error:  No test files remain after applying your match
and skip patterns!

Module: ftpd
Error:  No test files remain after applying your match
and skip patterns!

Module: javascript
Error:  No test files remain after applying your match
and skip patterns!

Module: html
modules/html/html.test

Module: irc
Error:  No test files remain after applying your match
and skip patterns!

Module: math
modules/math/calculus.test
Method: eulerStep
Result (0.0): 1.0
Result (1.0): 2.0
Result (2.0): 3.0
Result (3.0): 4.0
Result (4.0): 5.0
Result (5.0): 6.0
Result (6.0): 7.0
Result (7.0): 8.0
Result (8.0): 9.0
Result (9.0): 10.0
Result (0.0): 1.0 -0.1
Result (0.1): 0.99 -0.19
Result (0.2): 0.971 -0.27
Result (0.3): 0.944 -0.3401
Result (0.4): 0.90999 -0.40049
Result (0.5): 0.869941 -0.45144
Result (0.6): 0.824797 -0.4932901
Result (0.7): 0.77546799 -0.52644079
Result (0.8): 0.722823911 -0.55134351
Result (0.9): 0.66768956 -0.5684915501
Result (1.0): 0.61084040499 -0.57841135109
Result (1.1): 0.552999269881 -0.58165425648
Result (1.2): 0.494833844233 -0.57878875782
Result (1.3): 0.436954968451 -0.570393266461
Result (1.4): 0.379915641805 -0.55704943666
Result (1.5): 0.324210698139 -0.539336057175
Result (1.6): 0.270277092421 -0.517823521271
Result (1.7): 0.218494740294 -0.493068878386
Result (1.8): 0.169187852456 -0.465611464577
Result (1.9): 0.122626705998 -0.435969103365
Method: heunStep
Result (0.0): 1.0
Result (1.0): 2.0
Result (2.0): 3.0
Result (3.0): 4.0
Result (4.0): 5.0
Result (5.0): 6.0
Result (6.0): 7.0
Result (7.0): 8.0
Result (8.0): 9.0
Result (9.0): 10.0
Result (0.0): 0.995 -0.095
Result (0.1): 0.981 -0.180025
Result (0.2): 0.958992625 -0.2552175
Result (0.3): 0.929951999375 -0.320800049375
Result (0.4): 0.894826234687 -0.377065484378
Result (0.5): 0.854530882498 -0.424367428236
Result (0.6): 0.809943322403 -0.463111119249
Result (0.7): 0.761898049463 -0.493744622953
Result (0.8): 0.711182820035 -0.516750475356
Result (0.9): 0.658535610776 -0.532637795724
Result (1.0): 0.604642342128 -0.541934899175
Result (1.1): 0.550135314996 -0.54518243176
Result (1.2): 0.495592307404 -0.542927043509
Result (1.3): 0.441536276733 -0.535715608361
Result (1.4): 0.388435612555 -0.524089993815
Result (1.5): 0.33670488508 -0.508582377626
Result (1.6): 0.28670603478 -0.489711103946
Result (1.7): 0.238749949731 -0.467977066855
Result (1.8): 0.193098378632 -0.443860605394
Result (1.9): 0.149966129226 -0.417818890825
Method: rungeKuttaStep
Result (0.0): 1.0
Result (1.0): 2.0
Result (2.0): 3.0
Result (3.0): 4.0
Result (4.0): 5.0
Result (5.0): 6.0
Result (6.0): 7.0
Result (7.0): 8.0
Result (8.0): 9.0
Result (9.0): 10.0
Result (0.0): 0.995958333333 -0.0958354166667
Result (0.1): 0.982748574648 -0.181711736628
Result (0.2): 0.9613622125 -0.257745017496
Result (0.3): 0.932775605745 -0.324134745107
Result (0.4): 0.897942049319 -0.381154050992
Result (0.5): 0.857784809578 -0.429140146517
Result (0.6): 0.813191104556 -0.468485044978
Result (0.7): 0.765006997688 -0.499626633435
Result (0.8): 0.714033167813 -0.523040146908
Result (0.9): 0.661021513347 -0.53923008872
Result (1.0): 0.606672544499 -0.54872263237
Result (1.1): 0.55163351419 -0.552058532372
Result (1.2): 0.49649723593 -0.54978656401
Result (1.3): 0.441801535162 -0.54245750502
Result (1.4): 0.388029279606 -0.530618665792
Result (1.5): 0.335608933674 -0.514808968781
Result (1.6): 0.284915582207 -0.495554572501
Result (1.7): 0.236272369459 -0.473365030702
Result (1.8): 0.189952300346 -0.448729973058
Result (1.9): 0.146180352526 -0.422116289995
5.0 0.909090909091 15.0 0.818181818182 25.0
0.727272727273 35.0 0.636363636364 45.0 0.545454545455
55.0 0.454545454545 65.0 0.363636363636 75.0
0.272727272727 85.0 0.181818181818 95.0 0.0909090909091
5.0 0.0909090909091 15.0 0.181818181818 25.0
0.272727272727 35.0 0.363636363636 45.0 0.454545454545
55.0 0.545454545455 65.0 0.636363636364 75.0
0.727272727273 85.0 0.818181818182 95.0 0.909090909091
modules/math/combinatorics.test
modules/math/geometry.test
modules/math/math.test

Module: md5
modules/md5/md5.test
md5 1.4.2 (pure Tcl)

Module: mime
modules/mime/mime.test

Module: ncgi
modules/ncgi/ncgi.test
NO
NO
DELIM
env array elements created:     SERVER_PORT REQUEST_URI
QUERY_STRING CONTENT_TYPE CONTENT_LENGTH SERVER_NAME
HTTPS REQUEST_METHOD

Module: nntp
Error:  No test files remain after applying your match
and skip patterns!

Module: pop3
Error:  No test files remain after applying your match
and skip patterns!

Module: pop3d
Error:  No test files remain after applying your match
and skip patterns!

Module: profiler
modules/profiler/profiler.test

Module: smtpd
Error:  No test files remain after applying your match
and skip patterns!

Module: textutil
modules/textutil/adjust.test
modules/textutil/expander.test
modules/textutil/repeat.test
modules/textutil/split.test
modules/textutil/tabify.test
modules/textutil/textutil.test
modules/textutil/trim.test

Module: uri
modules/uri/uri.test
modules/uri/urn.test

Module: log
modules/log/log.test
log 1.0.1

Module: htmlparse
modules/htmlparse/htmlparse.test
htmlparse 0.2

Module: report
modules/report/report.test
report 0.3
- struct  1.2.1

Module: sha1
modules/sha1/sha1.test
sha1 1.0.2 (pure Tcl)

Module: stooop
modules/stooop/stooop.test

==== stooop-86 verify member writing and unsetting
within class procedures in member data
    checking mode
    (it seems that unset tracing prevents error
reporting at this time (bug?)) FAILED
==== Contents of test case:

    set interpreter [interp create]
    $interpreter eval {
        # reset any existing environment variables:
        foreach name [array names env STOOOP*] {unset
env($name)}
        set env(STOOOPCHECKDATA) 1
    }
    $interpreter eval "source $source; namespace import
stooop::*"
    set result [$interpreter eval {
        class a {}
        proc a::a {this} {}
        proc a::~a {this} {}
        proc a::p {this} {
            set b::($this,m) 0
        }
        proc a::q {this} {
            set b::(n) 0
        }
        proc a::r {this} {
            unset b::($this,m)
        }
        proc a::s {this} {
            unset b::(n)
        }
        set o [new a]
        class b {}
        set b::($o,m) 0
        set b::(n) 0
        catch {a::p $o} message; lappend ::result
$message
        catch {a::q $o} message; lappend ::result
$message
        catch {a::r $o} message; lappend ::result bug
        catch {a::s $o} message; lappend ::result bug
        delete $o

        class A {
            proc A {this} {}
            proc ~A {this} {}
            proc p {this} {
                set B::($this,m) 0
            }
            proc q {this} {
                set B::(n) 0
            }
            proc r {this} {
                unset B::($this,m)
            }
            proc s {this} {
                unset B::(n)
            }
        }
        set o [new A]
        class B {
            set ($o,m) 0
            set (n) 0
        }
        class A {
            catch {p $o} message; lappend ::result
$message
            catch {q $o} message; lappend ::result
$message
            catch {r $o} message; lappend ::result bug
            catch {s $o} message; lappend ::result bug
        }
        delete $o

        class c {}
        class c::d {}
        proc c::d::d {this} {}
        proc c::d::~d {this} {}
        proc c::d::p {this} {
            set c::e::($this,m) 0
        }
        proc c::d::q {this} {
            set c::e::(n) 0
        }
        proc c::d::r {this} {
            unset c::e::($this,m)
        }
        proc c::d::s {this} {
            unset c::e::(n)
        }
        class c::e {}
        set o [new c::d]
        set c::e::($o,m) 0
        set c::e::(n) 0
        catch {c::d::p $o} message; lappend ::result
$message
        catch {c::d::q $o} message; lappend ::result
$message
        catch {c::d::r $o} message; lappend ::result
bug
        catch {c::d::s $o} message; lappend ::result
bug
        delete $o

        class C {
            class D {
                proc D {this} {}
                proc ~D {this} {}
                proc p {this} {
                    set C::E::($this,m) 0
                }
                proc q {this} {
                    set C::E::(n) 0
                }
                proc r {this} {
                    unset C::E::($this,m)
                }
                proc s {this} {
                    unset C::E::(n)
                }
            }
            set ::o [new D]
            class E {
                set ($o,m) 0
                set (n) 0
            }
            class D {
                catch {p $o} message; lappend ::result
$message
                catch {q $o} message; lappend ::result
$message
                catch {r $o} message; lappend ::result
bug
                catch {s $o} message; lappend ::result
bug
            }
        }
        catch {C::D::p $o} message; lappend ::result
$message
        catch {C::D::q $o} message; lappend ::result
$message
        catch {C::D::r $o} message; lappend ::result
bug
        catch {C::D::s $o} message; lappend ::result
bug
        delete $o

        set ::result
    }]
    interp delete $interpreter
    set result

---- Result was:
can't set "(2,m)": "::namespace" isn't a procedure
---- Result should have been (exact matching):
{can't set "b::(1,m)": class access violation in
procedure ::a::p} {can't set "b::(n)": class access
violation in procedure ::a::q} bug bug {can't set
"B::(2,m)": class access violation in procedure ::A::p}
{can't set "B::(n)": class access violation in
procedure ::A::q} bug bug {can't set "c::e::(3,m)":
class access violation in procedure ::c::d::p} {can't
set "c::e::(n)": class access violation in procedure
::c::d::q} bug bug {can't set "C::E::(4,m)": class
access violation in procedure ::C::D::p} {can't set
"C::E::(n)": class access violation in procedure
::C::D::q} bug bug {can't set "C::E::(4,m)": class
access violation in procedure ::C::D::p} {can't set
"C::E::(n)": class access violation in procedure
::C::D::q} bug bug
---- Test generated error; Return code was: 1
---- Return code should have been one of: 0 2
==== stooop-86 FAILED


==== stooop-87 verify member writing and unsetting
within class namespaces in member data
    checking mode
    (it seems that unset tracing prevents error
reporting at this time (bug?)) FAILED
==== Contents of test case:

    set interpreter [interp create]
    $interpreter eval {
        # reset any existing environment variables:
        foreach name [array names env STOOOP*] {unset
env($name)}
        set env(STOOOPCHECKDATA) 1
    }
    $interpreter eval "source $source; namespace import
stooop::*"
    set result [$interpreter eval {
        class a {
            set (m) 0
        }
        proc a::a {this} {
            set ($this,n) 0
        }
        proc a::~a {this} {}
        set o [new a]
        catch {class b {incr a::(m)}} message; lappend
::result $message
        catch {class b {incr a::($o,n)}} message;
lappend ::result $message
        catch {class b {unset a::(m)}} message; lappend
::result bug
        catch {class b {unset a::($o,n)}} message;
lappend ::result bug
        delete $o

        class A {
            set (m) 0
            proc A {this} {
                set ($this,n) 0
            }
            proc ~A {this} {}
        }
        set o [new A]
        class B {
            catch {incr A::(m)} message; lappend
::result $message
            catch {incr A::($o,n)} message; lappend
::result $message
            catch {unset A::(m)} message; lappend
::result bug
            catch {unset A::($o,n)} message; lappend
::result bug
        }
        delete $o

        class c {}
        class c::d {
            set (m) 0
        }
        proc c::d::d {this} {
            set ($this,n) 0
        }
        proc c::d::~d {this} {}
        set o [new c::d]
        catch {class c::e {incr c::d::(m)}} message;
lappend ::result $message
        catch {class c::e {incr c::d::($o,n)}} message;
lappend ::result $message
        catch {class c::e {unset c::d::(m)}} message;
lappend ::result bug
        catch {class c::e {unset c::d::($o,n)}}
message; lappend ::result bug
        delete $o

        class C {
            class D {
                set (m) 0
                proc D {this} {
                    set ($this,n) 0
                }
                proc ~D {this} {}
            }
            set ::o [new D]
            class B {
                catch {incr C::D::(m)} message; lappend
::result $message
                catch {incr C::D::($o,n)} message;
lappend ::result $message
                catch {unset C::D::(m)} message;
lappend ::result bug
                catch {unset C::D::($o,n)} message;
lappend ::result bug
            }
        }
        catch {incr C::D::(m)} message; lappend
::result $message
        catch {incr C::D::($o,n)} message; lappend
::result $message
        catch {unset C::D::(m)} message; lappend
::result bug
        catch {unset C::D::($o,n)} message; lappend
::result bug
        delete $o

        set ::result
    }]
    interp delete $interpreter
    set result

---- Result was:
can't set "(m)": "::namespace" isn't a procedure
---- Result should have been (exact matching):
{can't set "a::(m)": class access violation in class b
namespace} {can't set "a::(1,n)": class access
violation in class b namespace} bug bug {can't set
"A::(m)": class access violation in class B namespace}
{can't set "A::(2,n)": class access violation in class
B namespace} bug bug {can't set "c::d::(m)": class
access violation in class c::e namespace} {can't set
"c::d::(3,n)": class access violation in class c::e
namespace} bug bug {can't set "C::D::(m)": class access
violation in class C::B namespace} {can't set
"C::D::(4,n)": class access violation in class C::B
namespace} bug bug {can't read "C::D::(m)": no such
element in array} {can't read "C::D::(4,n)": no such
element in array} bug bug
---- Test generated error; Return code was: 1
---- Return code should have been one of: 0 2
==== stooop-87 FAILED


==== stooop-89 verify both data and procedure static
access in member data checking mode FAILED
==== Contents of test case:

    set interpreter [interp create]
    $interpreter eval {
        # reset any existing environment variables:
        foreach name [array names env STOOOP*] {unset
env($name)}
        set env(STOOOPCHECKDATA) 1
    }
    $interpreter eval "source $source; namespace import
stooop::*"
    set result [$interpreter eval {
        class a {
            set (m) 0
        }
        proc a::a {this} {
            set ($this,n) 0
        }
        proc a::~a {this} {}
        proc a::p {this} {
            incr (m)
            incr b::(o)
        }
        proc a::q {object} {
            incr ($object,n)
            incr b::($object,p)
        }
        class b {
            set (o) 0
        }
        proc b::b {this} a {} {
            set ($this,p) 0
        }
        proc b::~b {this} {}
        proc b::r {this} {
            incr (o)
            incr a::(m)
        }
        proc b::s {object} {
            incr ($object,p)
            incr a::($object,n)
        }
        set o [new b]
        catch {a::p $o} message; lappend ::result
$message
        catch {a::q $o} message; lappend ::result
$message
        catch {b::r $o} message; lappend ::result
$message
        catch {b::s $o} message; lappend ::result
$message
        delete $o

        class A {
            set (m) 0
            proc A {this} {
                set ($this,n) 0
            }
            proc ~A {this} {}
            proc p {this} {
                incr (m)
                incr B::(o)
            }
            proc q {object} {
                incr ($object,n)
                incr B::($object,p)
            }
        }
        class B {
            set (o) 0
            proc B {this} A {} {
                set ($this,p) 0
            }
            proc ~B {this} {}
            proc r {this} {
                incr (o)
                incr A::(m)
            }
            proc s {object} {
                incr ($object,p)
                incr A::($object,n)
            }
        }
        set o [new B]
        catch {A::p $o} message; lappend ::result
$message
        catch {A::q $o} message; lappend ::result
$message
        catch {B::r $o} message; lappend ::result
$message
        catch {B::s $o} message; lappend ::result
$message
        delete $o

        class c {}
        class c::d {
            set (m) 0
        }
        proc c::d::d {this} {
            set ($this,n) 0
        }
        proc c::d::~d {this} {}
        proc c::d::p {this} {
            incr (m)
            incr c::e::(o)
        }
        proc c::d::q {object} {
            incr ($object,n)
            incr c::e::($object,p)
        }
        class c::e {
            set (o) 0
        }
        proc c::e::e {this} c::d {} {
            set ($this,p) 0
        }
        proc c::e::~e {this} {}
        proc c::e::r {this} {
            incr (o)
            incr c::d::(m)
        }
        proc c::e::s {object} {
            incr ($object,p)
            incr c::d::($object,n)
        }
        set o [new c::e]
        catch {c::d::p $o} message; lappend ::result
$message
        catch {c::d::q $o} message; lappend ::result
$message
        catch {c::e::r $o} message; lappend ::result
$message
        catch {c::e::s $o} message; lappend ::result
$message
        delete $o

        class C {
            class D {
                set (m) 0
                proc D {this} {
                    set ($this,n) 0
                }
                proc ~D {this} {}
                proc p {this} {
                    incr (m)
                    incr C::E::(o)
                }
                proc q {object} {
                    incr ($object,n)
                    incr C::E::($object,p)
                }
            }
            class E {
                set (o) 0
                proc E {this} C::D {} {
                    set ($this,p) 0
                }
                proc ~E {this} {}
                proc r {this} {
                    incr (o)
                    incr C::D::(m)
                }
                proc s {object} {
                    incr ($object,p)
                    incr C::D::($object,n)
                }
            }
            set ::o [new E]
            catch {D::p $o} message; lappend ::result
$message
            catch {D::q $o} message; lappend ::result
$message
            catch {E::r $o} message; lappend ::result
$message
            catch {E::s $o} message; lappend ::result
$message
        }
        catch {C::D::p $o} message; lappend ::result
$message
        catch {C::D::q $o} message; lappend ::result
$message
        catch {C::E::r $o} message; lappend ::result
$message
        catch {C::E::s $o} message; lappend ::result
$message
        delete $o

        set ::result
    }]
    interp delete $interpreter
    set result

---- Result was:
can't set "(m)": "::namespace" isn't a procedure
---- Result should have been (exact matching):
{can't set "b::(o)": class access violation in
procedure ::a::p} {can't set "b::(1,p)": class access
violation in procedure ::a::q} {can't set "a::(m)":
class access violation in procedure ::b::r} {can't set
"a::(1,n)": class access violation in procedure ::b::s}
{can't set "B::(o)": class access violation in
procedure ::A::p} {can't set "B::(2,p)": class access
violation in procedure ::A::q} {can't set "A::(m)":
class access violation in procedure ::B::r} {can't set
"A::(2,n)": class access violation in procedure ::B::s}
{can't set "c::e::(o)": class access violation in
procedure ::c::d::p} {can't set "c::e::(3,p)": class
access violation in procedure ::c::d::q} {can't set
"c::d::(m)": class access violation in procedure
::c::e::r} {can't set "c::d::(3,n)": class access
violation in procedure ::c::e::s} {can't set
"C::E::(o)": class access violation in procedure
::C::D::p} {can't set "C::E::(4,p)": class access
violation in procedure ::C::D::q} {can't set
"C::D::(m)": class access violation in procedure
::C::E::r} {can't set "C::D::(4,n)": class access
violation in procedure ::C::E::s} {can't set
"C::E::(o)": class access violation in procedure
::C::D::p} {can't set "C::E::(4,p)": class access
violation in procedure ::C::D::q} {can't set
"C::D::(m)": class access violation in procedure
::C::E::r} {can't set "C::D::(4,n)": class access
violation in procedure ::C::E::s}
---- Test generated error; Return code was: 1
---- Return code should have been one of: 0 2
==== stooop-89 FAILED


==== stooop-90 verify member data checking when "array
set" is used FAILED
==== Contents of test case:

    set interpreter [interp create]
    $interpreter eval {
        # reset any existing environment variables:
        foreach name [array names env STOOOP*] {unset
env($name)}
        set env(STOOOPCHECKDATA) 1
    }
    $interpreter eval "source $source; namespace import
stooop::*"
    set result [$interpreter eval {
        class a {}
        proc a::a {this} {}
        proc a::~a {this} {}
        proc a::p {this} {
            array set b:: "$this,m 0"
        }
        proc a::q {this} {
            array set b:: {n 0}
        }
        set o [new a]
        class b {}
        array set b:: "$o,m 0 n 0"
        catch {a::p $o} message; lappend ::result
$message
        catch {a::q $o} message; lappend ::result
$message
        delete $o

        class A {
            proc A {this} {}
            proc ~A {this} {}
            proc p {this} {
                array set B:: "$this,m 0"
            }
            proc q {this} {
                array set B:: {n 0}
            }
        }
        set o [new A]
        class B {
            array set B:: "$o,m 0 n 0"
        }
        class A {
            catch {p $o} message; lappend ::result
$message
            catch {q $o} message; lappend ::result
$message
        }
        delete $o

        class c {}
        class c::d {}
        proc c::d::d {this} {}
        proc c::d::~d {this} {}
        proc c::d::p {this} {
            array set c::e:: "$this,m 0"
        }
        proc c::d::q {this} {
            array set c::e:: {n 0}
        }
        class c::e {}
        set o [new c::d]
        array set c::e:: "$o,m 0 n 0"
        catch {c::d::p $o} message; lappend ::result
$message
        catch {c::d::q $o} message; lappend ::result
$message
        delete $o

        class C {
            class D {
                proc D {this} {}
                proc ~D {this} {}
                proc p {this} {
                    array set C::E:: "$this,m 0"
                }
                proc q {this} {
                    array set C::E:: {n 0}
                }
            }
            set ::o [new D]
            class E {
                array set C::E:: "$o,m 0 n 0"
            }
            class D {
                catch {p $o} message; lappend ::result
$message
                catch {q $o} message; lappend ::result
$message
            }
        }
        catch {C::D::p $o} message; lappend ::result
$message
        catch {C::D::q $o} message; lappend ::result
$message
        delete $o

        set ::result
    }]
    interp delete $interpreter
    set result

---- Result was:
can't set "B::(2,m)": "::namespace" isn't a procedure
---- Result should have been (exact matching):
{can't set "b::(1,m)": class access violation in
procedure ::a::p} {can't set "b::(n)": class access
violation in procedure ::a::q} {can't set "B::(2,m)":
class access violation in procedure ::A::p} {can't set
"B::(n)": class access violation in procedure ::A::q}
{can't set "c::e::(3,m)": class access violation in
procedure ::c::d::p} {can't set "c::e::(n)": class
access violation in procedure ::c::d::q} {can't set
"C::E::(4,m)": class access violation in procedure
::C::D::p} {can't set "C::E::(n)": class access
violation in procedure ::C::D::q} {can't set
"C::E::(4,m)": class access violation in procedure
::C::D::p} {can't set "C::E::(n)": class access
violation in procedure ::C::D::q}
---- Test generated error; Return code was: 1
---- Return code should have been one of: 0 2
==== stooop-90 FAILED


==== stooop-95 objects checking from namespace body and
namespace procedure FAILED
==== Contents of test case:

    set interpreter [interp create]
    $interpreter eval {
        # reset any existing environment variables:
        foreach name [array names env STOOOP*] {unset
env($name)}
        set env(STOOOPCHECKOBJECTS) 1
    }
    $interpreter eval "source $source; namespace import
stooop::*"
    # alias puts to be able to collect standard output
data:
    proc appendResult {string} {lappend ::result
$string}
    $interpreter alias puts appendResult
    set result {}
    $interpreter eval {
        class a {
            proc a {this} {}
            proc ~a {this} {}
        }
        namespace eval n {
            proc p {} {
                new a
            }
            namespace eval m {
                proc q {} {
                    new a
                }
            }
        }
        stooop::record
        namespace eval n {
            new a
        }
        stooop::report
        n::p
        stooop::report
        namespace eval n::m {
            new a
        }
        stooop::report
        n::m::q
        stooop::report
        delete 1 2 3 4
    }
    interp delete $interpreter
    set result

---- Result was:
{stooop::record invoked from top level} {stooop::report
invoked from top level:} {+ ::a(1) + ::namespace}
{stooop::report invoked from top level:} {+ ::a(1) +
::namespace} {+ ::a(2) + ::n::p} {stooop::report
invoked from top level:} {+ ::a(1) + ::namespace} {+
::a(2) + ::n::p} {+ ::a(3) + ::namespace}
{stooop::report invoked from top level:} {+ ::a(1) +
::namespace} {+ ::a(2) + ::n::p} {+ ::a(3) +
::namespace} {+ ::a(4) + ::n::m::q}
---- Result should have been (exact matching):
{stooop::record invoked from top level} {stooop::report
invoked from top level:} {+ ::a(1) + namespace ::n}
{stooop::report invoked from top level:} {+ ::a(1) +
namespace ::n} {+ ::a(2) + ::n::p} {stooop::report
invoked from top level:} {+ ::a(1) + namespace ::n} {+
::a(2) + ::n::p} {+ ::a(3) + namespace ::n::m}
{stooop::report invoked from top level:} {+ ::a(1) +
namespace ::n} {+ ::a(2) + ::n::p} {+ ::a(3) +
namespace ::n::m} {+ ::a(4) + ::n::m::q}
==== stooop-95 FAILED


==== stooop-96 objects checking from within derived
class constructor FAILED
==== Contents of test case:

    set interpreter [interp create]
    $interpreter eval {
        # reset any existing environment variables:
        foreach name [array names env STOOOP*] {unset
env($name)}
        set env(STOOOPCHECKOBJECTS) 1
    }
    $interpreter eval "source $source; namespace import
stooop::*"
    # alias puts to be able to collect standard output
data:
    proc appendResult {string} {lappend ::result
$string}
    $interpreter alias puts appendResult
    set result {}
    $interpreter eval {
        class a {
            proc a {this i} {}
            proc ~a {this} {}
        }
        class b {
            proc b {this} a {[new c]} {}
            proc ~b {this} {}
        }
        class c {
            proc c {this} {}
            proc ~c {this} {}
        }
        stooop::record
        new b
        stooop::report

        class A {
            class a {
                proc a {this i} {}
                proc ~a {this} {}
            }
            class b {
                proc b {this} a {[new c]} {}
                proc ~b {this} {}
            }
            class c {
                proc c {this} {}
                proc ~c {this} {}
            }
            stooop::record
            new b
            stooop::report
        }

    }
    interp delete $interpreter
    set result

---- Result was:
{stooop::record invoked from top level} {stooop::report
invoked from top level:} {+ ::b(1) + top level} {+
::c(2) + ::b::b} {stooop::record invoked from
::namespace} {stooop::report invoked from ::namespace:}
{+ ::A::b(3) + ::namespace} {+ ::c(4) + ::A::b::b}
---- Result should have been (exact matching):
{stooop::record invoked from top level} {stooop::report
invoked from top level:} {+ ::b(1) + top level} {+
::c(2) + ::b::b} {stooop::record invoked from namespace
::A} {stooop::report invoked from namespace ::A:} {+
::A::b(3) + namespace ::A} {+ ::c(4) + ::A::b::b}
==== stooop-96 FAILED


==== stooop-97 objects checking with debugging
procedures invocation from namespace body
    and namespace procedure FAILED
==== Contents of test case:

    set interpreter [interp create]
    $interpreter eval {
        # reset any existing environment variables:
        foreach name [array names env STOOOP*] {unset
env($name)}
        set env(STOOOPCHECKOBJECTS) 1
    }
    $interpreter eval "source $source; namespace import
stooop::*"
    # alias puts to be able to collect standard output
data:
    proc appendResult {string} {lappend ::result
$string}
    $interpreter alias puts appendResult
    set result {}
    $interpreter eval {
        class a {
            proc a {this} {}
            proc ~a {this} {}
        }
        namespace eval n {
            proc p {} {
                stooop::record
                new a
                stooop::report
            }
            namespace eval m {
                proc q {} {
                    stooop::record
                    new a
                    stooop::report
                }
            }
        }
        n::p
        n::m::q
        namespace eval n {
            stooop::record
            new a
            stooop::report
        }

    }
    interp delete $interpreter
    set result

---- Result was:
{stooop::record invoked from ::n::p} {stooop::report
invoked from ::n::p:} {+ ::a(1) + ::n::p}
{stooop::record invoked from ::n::m::q} {stooop::report
invoked from ::n::m::q:} {+ ::a(2) + ::n::m::q}
{stooop::record invoked from ::namespace}
{stooop::report invoked from ::namespace:} {+ ::a(3) +
::namespace}
---- Result should have been (exact matching):
{stooop::record invoked from ::n::p} {stooop::report
invoked from ::n::p:} {+ ::a(1) + ::n::p}
{stooop::record invoked from ::n::m::q} {stooop::report
invoked from ::n::m::q:} {+ ::a(2) + ::n::m::q}
{stooop::record invoked from namespace ::n}
{stooop::report invoked from namespace ::n:} {+ ::a(3)
+ namespace ::n}
==== stooop-97 FAILED

env array elements created:     STOOOPCHECKOBJECTS


Tests ended at Thu May 09 07:00:07 EDT 2002
all.tcl:        Total   2012    Passed  1996    Skipped
8       Failed  8
Sourced 36 Test Files.
Files with failing tests: base64/yencode.test
stooop/stooop.test
Number of tests skipped for each constraint:
        3       badTest
        5       pcOnly
User Comments: nobody added on 2002-05-21 14:10:42:
Logged In: NO 

stooop fixed in CVS.

Jean-Luc

lvirden added on 2002-05-16 17:38:06:

File Added - 23186: pat.yencode.test

Logged In: YES 
user_id=15949

I am attaching a patch to yencode.test that fixes its test
suite error.  There were two problems.  First was that
tcllib test runs from the top level directory, but
yencode.test expects it is being run from the modules/base64
directory where its datafile is located.

The second problem was a wrong variable, which I have fixed
as well.

Can someone fix this in the cvs?

dgp added on 2002-05-15 22:32:56:
Logged In: YES 
user_id=80530

The stooop failures are a duplicate of Bug 553848.

nobody added on 2002-05-15 22:01:37:
Logged In: NO 

I would very much like to fix that.

Unfortunately, I do not have a fast enough cvs access from home, and from work the firewall prevents 
cvs.

Is there somewhere a 8.4a5 snapshot tarball that I could download via http or ftp?

Thanks.

Jean-Luc

andreas_kupries added on 2002-05-15 03:41:02:
Logged In: YES 
user_id=75003

Please do not inline such large files in the comment 
section. Attaching them as files is much better.

Anyway

The uuencode errors seem to be a duplicate of #553732
"uuencode.test warnings: 64 bit"

The yenc warnings seem to be a duplicate of #548354
"yenc testsuite trouble".

For the stooop messages I have no duplicate report.
I am passing this to jfountain as author of stooop.

Attachments: