0000: 23 20 54 68 69 73 20 66 69 6c 65 20 63 6f 6e 74 # This file cont
0010: 61 69 6e 73 20 61 20 63 6f 6c 6c 65 63 74 69 6f ains a collectio
0020: 6e 20 6f 66 20 74 65 73 74 73 20 66 6f 72 20 74 n of tests for t
0030: 68 65 20 6d 73 67 63 61 74 20 70 61 63 6b 61 67 he msgcat packag
0040: 65 2e 0a 23 20 53 6f 75 72 63 69 6e 67 20 74 68 e..# Sourcing th
0050: 69 73 20 66 69 6c 65 20 69 6e 74 6f 20 54 63 6c is file into Tcl
0060: 20 72 75 6e 73 20 74 68 65 20 74 65 73 74 73 20 runs the tests
0070: 61 6e 64 0a 23 20 67 65 6e 65 72 61 74 65 73 20 and.# generates
0080: 6f 75 74 70 75 74 20 66 6f 72 20 65 72 72 6f 72 output for error
0090: 73 2e 20 20 4e 6f 20 6f 75 74 70 75 74 20 6d 65 s. No output me
00a0: 61 6e 73 20 6e 6f 20 65 72 72 6f 72 73 20 77 65 ans no errors we
00b0: 72 65 20 66 6f 75 6e 64 2e 0a 23 0a 23 20 43 6f re found..#.# Co
00c0: 70 79 72 69 67 68 74 20 c2 a9 20 31 39 39 38 20 pyright © 1998
00d0: 4d 61 72 6b 20 48 61 72 72 69 73 6f 6e 2e 0a 23 Mark Harrison..#
00e0: 20 43 6f 70 79 72 69 67 68 74 20 c2 a9 20 31 39 Copyright © 19
00f0: 39 38 2d 31 39 39 39 20 53 63 72 69 70 74 69 63 98-1999 Scriptic
0100: 73 20 43 6f 72 70 6f 72 61 74 69 6f 6e 2e 0a 23 s Corporation..#
0110: 20 43 6f 6e 74 72 69 62 75 74 69 6f 6e 73 20 66 Contributions f
0120: 72 6f 6d 20 44 6f 6e 20 50 6f 72 74 65 72 2c 20 rom Don Porter,
0130: 4e 49 53 54 2c 20 32 30 30 32 2e 20 20 28 6e 6f NIST, 2002. (no
0140: 74 20 73 75 62 6a 65 63 74 20 74 6f 20 55 53 20 t subject to US
0150: 63 6f 70 79 72 69 67 68 74 29 0a 23 0a 23 20 53 copyright).#.# S
0160: 65 65 20 74 68 65 20 66 69 6c 65 20 22 6c 69 63 ee the file "lic
0170: 65 6e 73 65 2e 74 65 72 6d 73 22 20 66 6f 72 20 ense.terms" for
0180: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 6f 6e 20 75 information on u
0190: 73 61 67 65 20 61 6e 64 20 72 65 64 69 73 74 72 sage and redistr
01a0: 69 62 75 74 69 6f 6e 0a 23 20 6f 66 20 74 68 69 ibution.# of thi
01b0: 73 20 66 69 6c 65 2c 20 61 6e 64 20 66 6f 72 20 s file, and for
01c0: 61 20 44 49 53 43 4c 41 49 4d 45 52 20 4f 46 20 a DISCLAIMER OF
01d0: 41 4c 4c 20 57 41 52 52 41 4e 54 49 45 53 2e 0a ALL WARRANTIES..
01e0: 23 0a 23 20 4e 6f 74 65 20 74 68 61 74 20 61 66 #.# Note that af
01f0: 74 65 72 20 72 75 6e 6e 69 6e 67 20 74 68 65 73 ter running thes
0200: 65 20 74 65 73 74 73 2c 20 65 6e 74 72 69 65 73 e tests, entries
0210: 20 77 69 6c 6c 20 62 65 20 6c 65 66 74 20 62 65 will be left be
0220: 68 69 6e 64 20 69 6e 20 74 68 65 0a 23 20 6d 65 hind in the.# me
0230: 73 73 61 67 65 20 63 61 74 61 6c 6f 67 73 20 66 ssage catalogs f
0240: 6f 72 20 6c 6f 63 61 6c 65 73 20 66 6f 6f 2c 20 or locales foo,
0250: 66 6f 6f 5f 42 41 52 2c 20 61 6e 64 20 66 6f 6f foo_BAR, and foo
0260: 5f 42 41 52 5f 62 61 7a 2e 0a 0a 69 66 20 7b 22 _BAR_baz...if {"
0270: 3a 3a 74 63 6c 74 65 73 74 22 20 6e 69 20 5b 6e ::tcltest" ni [n
0280: 61 6d 65 73 70 61 63 65 20 63 68 69 6c 64 72 65 amespace childre
0290: 6e 5d 7d 20 7b 0a 20 20 20 20 70 61 63 6b 61 67 n]} {. packag
02a0: 65 20 72 65 71 75 69 72 65 20 74 63 6c 74 65 73 e require tcltes
02b0: 74 20 32 2e 35 0a 20 20 20 20 6e 61 6d 65 73 70 t 2.5. namesp
02c0: 61 63 65 20 69 6d 70 6f 72 74 20 2d 66 6f 72 63 ace import -forc
02d0: 65 20 3a 3a 74 63 6c 74 65 73 74 3a 3a 2a 0a 7d e ::tcltest::*.}
02e0: 0a 69 66 20 7b 5b 63 61 74 63 68 20 7b 70 61 63 .if {[catch {pac
02f0: 6b 61 67 65 20 72 65 71 75 69 72 65 20 6d 73 67 kage require msg
0300: 63 61 74 20 31 2e 36 7d 5d 7d 20 7b 0a 20 20 20 cat 1.6}]} {.
0310: 20 70 75 74 73 20 73 74 64 65 72 72 20 22 53 6b puts stderr "Sk
0320: 69 70 70 69 6e 67 20 74 65 73 74 73 20 69 6e 20 ipping tests in
0330: 5b 69 6e 66 6f 20 73 63 72 69 70 74 5d 2e 20 20 [info script].
0340: 4e 6f 20 6d 73 67 63 61 74 20 31 2e 36 20 66 6f No msgcat 1.6 fo
0350: 75 6e 64 20 74 6f 20 74 65 73 74 2e 22 0a 20 20 und to test.".
0360: 20 20 72 65 74 75 72 6e 0a 7d 0a 0a 6e 61 6d 65 return.}..name
0370: 73 70 61 63 65 20 65 76 61 6c 20 3a 3a 6d 73 67 space eval ::msg
0380: 63 61 74 3a 3a 74 65 73 74 20 7b 0a 20 20 20 20 cat::test {.
0390: 6e 61 6d 65 73 70 61 63 65 20 69 6d 70 6f 72 74 namespace import
03a0: 20 3a 3a 6d 73 67 63 61 74 3a 3a 2a 0a 20 20 20 ::msgcat::*.
03b0: 20 6e 61 6d 65 73 70 61 63 65 20 69 6d 70 6f 72 namespace impor
03c0: 74 20 3a 3a 74 63 6c 74 65 73 74 3a 3a 74 65 73 t ::tcltest::tes
03d0: 74 0a 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 t. namespace
03e0: 69 6d 70 6f 72 74 20 3a 3a 74 63 6c 74 65 73 74 import ::tcltest
03f0: 3a 3a 63 6c 65 61 6e 75 70 54 65 73 74 73 0a 20 ::cleanupTests.
0400: 20 20 20 6e 61 6d 65 73 70 61 63 65 20 69 6d 70 namespace imp
0410: 6f 72 74 20 3a 3a 74 63 6c 74 65 73 74 3a 3a 74 ort ::tcltest::t
0420: 65 6d 70 6f 72 61 72 79 44 69 72 65 63 74 6f 72 emporaryDirector
0430: 79 0a 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 y. namespace
0440: 69 6d 70 6f 72 74 20 3a 3a 74 63 6c 74 65 73 74 import ::tcltest
0450: 3a 3a 6d 61 6b 65 2a 0a 20 20 20 20 6e 61 6d 65 ::make*. name
0460: 73 70 61 63 65 20 69 6d 70 6f 72 74 20 3a 3a 74 space import ::t
0470: 63 6c 74 65 73 74 3a 3a 72 65 6d 6f 76 65 2a 0a cltest::remove*.
0480: 0a 20 20 20 20 23 20 54 65 73 74 73 20 6d 73 67 . # Tests msg
0490: 63 61 74 2d 30 2e 2a 3a 20 6c 6f 63 61 6c 65 20 cat-0.*: locale
04a0: 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 0a 0a initialization..
04b0: 20 20 20 20 23 20 43 61 6c 63 75 6c 61 74 65 20 # Calculate
04c0: 73 65 74 20 6f 66 20 61 6c 6c 20 70 65 72 6d 75 set of all permu
04d0: 74 61 74 69 6f 6e 73 20 6f 66 20 61 20 6c 69 73 tations of a lis
04e0: 74 0a 20 20 20 20 23 20 50 6f 77 65 72 53 65 74 t. # PowerSet
04f0: 20 7b 31 20 32 20 33 7d 20 2d 3e 20 7b 31 20 32 {1 2 3} -> {1 2
0500: 20 33 7d 20 7b 32 20 33 7d 20 7b 31 20 33 7d 20 3} {2 3} {1 3}
0510: 33 20 7b 31 20 32 7d 20 32 20 31 20 7b 7d 0a 20 3 {1 2} 2 1 {}.
0520: 20 20 20 70 72 6f 63 20 50 6f 77 65 72 53 65 74 proc PowerSet
0530: 20 7b 6c 7d 20 7b 0a 09 69 66 20 7b 5b 6c 6c 65 {l} {..if {[lle
0540: 6e 67 74 68 20 24 6c 5d 20 3d 3d 20 30 7d 20 7b ngth $l] == 0} {
0550: 72 65 74 75 72 6e 20 5b 6c 69 73 74 20 5b 6c 69 return [list [li
0560: 73 74 5d 5d 7d 0a 09 73 65 74 20 65 6c 65 6d 65 st]]}..set eleme
0570: 6e 74 20 5b 6c 69 6e 64 65 78 20 24 6c 20 30 5d nt [lindex $l 0]
0580: 0a 09 73 65 74 20 72 65 73 74 20 5b 6c 72 61 6e ..set rest [lran
0590: 67 65 20 24 6c 20 31 20 65 6e 64 5d 0a 09 73 65 ge $l 1 end]..se
05a0: 74 20 72 65 73 75 6c 74 20 5b 6c 69 73 74 5d 0a t result [list].
05b0: 09 66 6f 72 65 61 63 68 20 78 20 5b 50 6f 77 65 .foreach x [Powe
05c0: 72 53 65 74 20 24 72 65 73 74 5d 20 7b 0a 09 20 rSet $rest] {..
05d0: 20 20 20 6c 61 70 70 65 6e 64 20 72 65 73 75 6c lappend resul
05e0: 74 20 5b 6c 69 6e 73 65 72 74 20 24 78 20 30 20 t [linsert $x 0
05f0: 24 65 6c 65 6d 65 6e 74 5d 0a 09 20 20 20 20 6c $element].. l
0600: 61 70 70 65 6e 64 20 72 65 73 75 6c 74 20 24 78 append result $x
0610: 0a 09 7d 0a 09 72 65 74 75 72 6e 20 24 72 65 73 ..}..return $res
0620: 75 6c 74 0a 20 20 20 20 7d 0a 0a 20 20 20 20 76 ult. }.. v
0630: 61 72 69 61 62 6c 65 20 65 6e 76 56 61 72 73 20 ariable envVars
0640: 7b 4c 43 5f 41 4c 4c 20 4c 43 5f 4d 45 53 53 41 {LC_ALL LC_MESSA
0650: 47 45 53 20 4c 41 4e 47 7d 0a 20 20 20 20 76 61 GES LANG}. va
0660: 72 69 61 62 6c 65 20 63 6f 75 6e 74 20 30 0a 20 riable count 0.
0670: 20 20 20 76 61 72 69 61 62 6c 65 20 62 6f 64 79 variable body
0680: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 72 65 . variable re
0690: 73 75 6c 74 0a 20 20 20 20 76 61 72 69 61 62 6c sult. variabl
06a0: 65 20 73 65 74 56 61 72 73 0a 20 20 20 20 66 6f e setVars. fo
06b0: 72 65 61 63 68 20 73 65 74 56 61 72 73 20 5b 50 reach setVars [P
06c0: 6f 77 65 72 53 65 74 20 24 65 6e 76 56 61 72 73 owerSet $envVars
06d0: 5d 20 7b 0a 09 73 65 74 20 72 65 73 75 6c 74 20 ] {..set result
06e0: 5b 73 74 72 69 6e 67 20 74 6f 6c 6f 77 65 72 20 [string tolower
06f0: 5b 6c 69 6e 64 65 78 20 24 73 65 74 56 61 72 73 [lindex $setVars
0700: 20 30 5d 5d 0a 09 69 66 20 7b 5b 73 74 72 69 6e 0]]..if {[strin
0710: 67 20 6c 65 6e 67 74 68 20 24 72 65 73 75 6c 74 g length $result
0720: 5d 20 3d 3d 20 30 7d 20 7b 0a 09 20 20 20 20 69 ] == 0} {.. i
0730: 66 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 f {[info exists
0740: 3a 3a 74 63 6c 3a 3a 6d 61 63 3a 3a 6c 6f 63 61 ::tcl::mac::loca
0750: 6c 65 5d 7d 20 7b 0a 09 09 73 65 74 20 72 65 73 le]} {...set res
0760: 75 6c 74 20 5b 73 74 72 69 6e 67 20 74 6f 6c 6f ult [string tolo
0770: 77 65 72 20 5c 0a 09 09 09 5b 6d 73 67 63 61 74 wer \....[msgcat
0780: 3a 3a 6d 63 75 74 69 6c 3a 3a 43 6f 6e 76 65 72 ::mcutil::Conver
0790: 74 4c 6f 63 61 6c 65 20 24 3a 3a 74 63 6c 3a 3a tLocale $::tcl::
07a0: 6d 61 63 3a 3a 6c 6f 63 61 6c 65 5d 5d 0a 09 20 mac::locale]]..
07b0: 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 09 69 66 } else {...if
07c0: 20 7b 28 5b 69 6e 66 6f 20 73 68 61 72 65 64 6c {([info sharedl
07d0: 69 62 65 78 74 65 6e 73 69 6f 6e 5d 20 65 71 20 ibextension] eq
07e0: 22 2e 64 6c 6c 22 29 0a 09 09 09 26 26 20 21 5b ".dll")....&& ![
07f0: 63 61 74 63 68 20 7b 70 61 63 6b 61 67 65 20 72 catch {package r
0800: 65 71 75 69 72 65 20 72 65 67 69 73 74 72 79 7d equire registry}
0810: 5d 7d 20 7b 0a 09 09 20 20 20 20 23 20 57 69 6e ]} {... # Win
0820: 64 6f 77 73 20 61 6e 64 20 43 79 67 77 69 6e 20 dows and Cygwin
0830: 68 61 76 65 20 6f 74 68 65 72 20 77 61 79 73 20 have other ways
0840: 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65 to determine the
0850: 0a 09 09 20 20 20 20 23 20 6c 6f 63 61 6c 65 20 ... # locale
0860: 77 68 65 6e 20 74 68 65 20 65 6e 76 69 72 6f 6e when the environ
0870: 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 73 20 61 ment variables a
0880: 72 65 20 6d 69 73 73 69 6e 67 0a 09 09 20 20 20 re missing...
0890: 20 23 20 61 6e 64 20 74 68 65 20 72 65 67 69 73 # and the regis
08a0: 74 72 79 20 70 61 63 6b 61 67 65 20 69 73 20 70 try package is p
08b0: 72 65 73 65 6e 74 0a 09 09 20 20 20 20 63 6f 6e resent... con
08c0: 74 69 6e 75 65 0a 09 09 7d 0a 09 09 73 65 74 20 tinue...}...set
08d0: 72 65 73 75 6c 74 20 63 0a 09 20 20 20 20 7d 0a result c.. }.
08e0: 09 7d 0a 0c 0a 09 74 65 73 74 20 6d 73 67 63 61 .}....test msgca
08f0: 74 2d 30 2e 24 63 6f 75 6e 74 20 5b 6c 69 73 74 t-0.$count [list
0900: 20 5c 0a 09 20 20 20 20 6c 6f 63 61 6c 65 20 69 \.. locale i
0910: 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 20 66 72 nitialization fr
0920: 6f 6d 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 om environment v
0930: 61 72 69 61 62 6c 65 73 20 24 73 65 74 56 61 72 ariables $setVar
0940: 73 20 5c 0a 09 5d 20 2d 73 65 74 75 70 20 7b 0a s \..] -setup {.
0950: 09 20 20 20 20 76 61 72 69 61 62 6c 65 20 76 61 . variable va
0960: 72 0a 09 20 20 20 20 66 6f 72 65 61 63 68 20 76 r.. foreach v
0970: 61 72 20 24 65 6e 76 56 61 72 73 20 7b 0a 09 09 ar $envVars {...
0980: 63 61 74 63 68 20 7b 76 61 72 69 61 62 6c 65 20 catch {variable
0990: 24 76 61 72 20 24 3a 3a 65 6e 76 28 24 76 61 72 $var $::env($var
09a0: 29 7d 0a 09 09 75 6e 73 65 74 20 2d 6e 6f 63 6f )}...unset -noco
09b0: 6d 70 6c 61 69 6e 20 3a 3a 65 6e 76 28 24 76 61 mplain ::env($va
09c0: 72 29 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 66 r).. }.. f
09d0: 6f 72 65 61 63 68 20 76 61 72 20 24 73 65 74 56 oreach var $setV
09e0: 61 72 73 20 7b 0a 09 09 73 65 74 20 3a 3a 65 6e ars {...set ::en
09f0: 76 28 24 76 61 72 29 20 24 76 61 72 0a 09 20 20 v($var) $var..
0a00: 20 20 7d 0a 09 20 20 20 20 69 6e 74 65 72 70 20 }.. interp
0a10: 63 72 65 61 74 65 20 5b 6e 61 6d 65 73 70 61 63 create [namespac
0a20: 65 20 63 75 72 72 65 6e 74 5d 3a 3a 69 0a 09 20 e current]::i..
0a30: 20 20 20 69 20 65 76 61 6c 20 5b 6c 69 73 74 20 i eval [list
0a40: 70 61 63 6b 61 67 65 20 69 66 6e 65 65 64 65 64 package ifneeded
0a50: 20 6d 73 67 63 61 74 20 5b 70 61 63 6b 61 67 65 msgcat [package
0a60: 20 70 72 6f 76 69 64 65 20 6d 73 67 63 61 74 5d provide msgcat]
0a70: 20 5c 0a 09 09 20 20 20 20 5b 70 61 63 6b 61 67 \... [packag
0a80: 65 20 69 66 6e 65 65 64 65 64 20 6d 73 67 63 61 e ifneeded msgca
0a90: 74 20 5b 70 61 63 6b 61 67 65 20 70 72 6f 76 69 t [package provi
0aa0: 64 65 20 6d 73 67 63 61 74 5d 5d 5d 0a 09 20 20 de msgcat]]]..
0ab0: 20 20 69 20 65 76 61 6c 20 70 61 63 6b 61 67 65 i eval package
0ac0: 20 72 65 71 75 69 72 65 20 6d 73 67 63 61 74 0a require msgcat.
0ad0: 09 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 20 .} -cleanup {..
0ae0: 20 20 20 69 6e 74 65 72 70 20 64 65 6c 65 74 65 interp delete
0af0: 20 5b 6e 61 6d 65 73 70 61 63 65 20 63 75 72 72 [namespace curr
0b00: 65 6e 74 5d 3a 3a 69 0a 09 20 20 20 20 66 6f 72 ent]::i.. for
0b10: 65 61 63 68 20 76 61 72 20 24 65 6e 76 56 61 72 each var $envVar
0b20: 73 20 7b 0a 09 09 75 6e 73 65 74 20 2d 6e 6f 63 s {...unset -noc
0b30: 6f 6d 70 6c 61 69 6e 20 3a 3a 65 6e 76 28 24 76 omplain ::env($v
0b40: 61 72 29 0a 09 09 63 61 74 63 68 20 7b 73 65 74 ar)...catch {set
0b50: 20 3a 3a 65 6e 76 28 24 76 61 72 29 20 5b 73 65 ::env($var) [se
0b60: 74 20 5b 6e 61 6d 65 73 70 61 63 65 20 63 75 72 t [namespace cur
0b70: 72 65 6e 74 5d 3a 3a 24 76 61 72 5d 7d 0a 09 20 rent]::$var]}..
0b80: 20 20 20 7d 0a 09 7d 20 2d 62 6f 64 79 20 7b 69 }..} -body {i
0b90: 20 65 76 61 6c 20 6d 73 67 63 61 74 3a 3a 6d 63 eval msgcat::mc
0ba0: 6c 6f 63 61 6c 65 7d 20 2d 72 65 73 75 6c 74 20 locale} -result
0bb0: 24 72 65 73 75 6c 74 0a 09 69 6e 63 72 20 63 6f $result..incr co
0bc0: 75 6e 74 0a 20 20 20 20 7d 0a 20 20 20 20 75 6e unt. }. un
0bd0: 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 set -nocomplain
0be0: 72 65 73 75 6c 74 0a 0a 20 20 20 20 23 20 43 6f result.. # Co
0bf0: 75 6c 64 20 61 64 64 20 74 65 73 74 73 20 6f 66 uld add tests of
0c00: 20 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 20 initialization
0c10: 66 72 6f 6d 20 57 69 6e 64 6f 77 73 20 72 65 67 from Windows reg
0c20: 69 73 74 72 79 20 68 65 72 65 2e 0a 20 20 20 20 istry here..
0c30: 23 20 55 73 65 20 61 20 66 61 6b 65 20 72 65 67 # Use a fake reg
0c40: 69 73 74 72 79 20 70 61 63 6b 61 67 65 2e 0a 0a istry package...
0c50: 20 20 20 20 23 20 54 65 73 74 73 20 6d 73 67 63 # Tests msgc
0c60: 61 74 2d 31 2e 2a 3a 20 5b 6d 63 6c 6f 63 61 6c at-1.*: [mclocal
0c70: 65 5d 2c 20 5b 6d 63 70 72 65 66 65 72 65 6e 63 e], [mcpreferenc
0c80: 65 73 5d 0a 0a 20 20 20 20 74 65 73 74 20 6d 73 es].. test ms
0c90: 67 63 61 74 2d 31 2e 33 20 7b 6d 63 6c 6f 63 61 gcat-1.3 {mcloca
0ca0: 6c 65 20 73 65 74 2c 20 73 69 6e 67 6c 65 20 65 le set, single e
0cb0: 6c 65 6d 65 6e 74 7d 20 2d 73 65 74 75 70 20 7b lement} -setup {
0cc0: 0a 09 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 6c ..variable local
0cd0: 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 20 20 20 e [mclocale].
0ce0: 20 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 6d } -cleanup {..m
0cf0: 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a clocale $locale.
0d00: 20 20 20 20 7d 20 2d 62 6f 64 79 20 7b 0a 09 6d } -body {..m
0d10: 63 6c 6f 63 61 6c 65 20 65 6e 0a 20 20 20 20 7d clocale en. }
0d20: 20 2d 72 65 73 75 6c 74 20 65 6e 0a 0a 20 20 20 -result en..
0d30: 20 74 65 73 74 20 6d 73 67 63 61 74 2d 31 2e 34 test msgcat-1.4
0d40: 20 7b 6d 63 6c 6f 63 61 6c 65 20 67 65 74 2c 20 {mclocale get,
0d50: 73 69 6e 67 6c 65 20 65 6c 65 6d 65 6e 74 7d 20 single element}
0d60: 2d 73 65 74 75 70 20 7b 0a 09 76 61 72 69 61 62 -setup {..variab
0d70: 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 le locale [mcloc
0d80: 61 6c 65 5d 0a 09 6d 63 6c 6f 63 61 6c 65 20 65 ale]..mclocale e
0d90: 6e 0a 20 20 20 20 7d 20 2d 63 6c 65 61 6e 75 70 n. } -cleanup
0da0: 20 7b 0a 09 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f {..mclocale $lo
0db0: 63 61 6c 65 0a 20 20 20 20 7d 20 2d 62 6f 64 79 cale. } -body
0dc0: 20 7b 0a 09 6d 63 6c 6f 63 61 6c 65 0a 20 20 20 {..mclocale.
0dd0: 20 7d 20 2d 72 65 73 75 6c 74 20 65 6e 0a 0a 20 } -result en..
0de0: 20 20 20 74 65 73 74 20 6d 73 67 63 61 74 2d 31 test msgcat-1
0df0: 2e 35 20 7b 6d 63 70 72 65 66 65 72 65 6e 63 65 .5 {mcpreference
0e00: 73 2c 20 73 69 6e 67 6c 65 20 65 6c 65 6d 65 6e s, single elemen
0e10: 74 7d 20 2d 73 65 74 75 70 20 7b 0a 09 76 61 72 t} -setup {..var
0e20: 69 61 62 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 iable locale [mc
0e30: 6c 6f 63 61 6c 65 5d 0a 09 6d 63 6c 6f 63 61 6c locale]..mclocal
0e40: 65 20 65 6e 0a 20 20 20 20 7d 20 2d 63 6c 65 61 e en. } -clea
0e50: 6e 75 70 20 7b 0a 09 6d 63 6c 6f 63 61 6c 65 20 nup {..mclocale
0e60: 24 6c 6f 63 61 6c 65 0a 20 20 20 20 7d 20 2d 62 $locale. } -b
0e70: 6f 64 79 20 7b 0a 09 6d 63 70 72 65 66 65 72 65 ody {..mcprefere
0e80: 6e 63 65 73 0a 20 20 20 20 7d 20 2d 72 65 73 75 nces. } -resu
0e90: 6c 74 20 7b 65 6e 20 7b 7d 7d 0a 0a 20 20 20 20 lt {en {}}..
0ea0: 74 65 73 74 20 6d 73 67 63 61 74 2d 31 2e 36 20 test msgcat-1.6
0eb0: 7b 6d 63 6c 6f 63 61 6c 65 20 73 65 74 2c 20 74 {mclocale set, t
0ec0: 77 6f 20 65 6c 65 6d 65 6e 74 73 7d 20 2d 73 65 wo elements} -se
0ed0: 74 75 70 20 7b 0a 09 76 61 72 69 61 62 6c 65 20 tup {..variable
0ee0: 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 locale [mclocale
0ef0: 5d 0a 20 20 20 20 7d 20 2d 63 6c 65 61 6e 75 70 ]. } -cleanup
0f00: 20 7b 0a 09 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f {..mclocale $lo
0f10: 63 61 6c 65 0a 20 20 20 20 7d 20 2d 62 6f 64 79 cale. } -body
0f20: 20 7b 0a 09 6d 63 6c 6f 63 61 6c 65 20 65 6e 5f {..mclocale en_
0f30: 55 53 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 US. } -result
0f40: 20 65 6e 5f 75 73 0a 0a 20 20 20 20 74 65 73 74 en_us.. test
0f50: 20 6d 73 67 63 61 74 2d 31 2e 37 20 7b 6d 63 6c msgcat-1.7 {mcl
0f60: 6f 63 61 6c 65 20 67 65 74 2c 20 74 77 6f 20 65 ocale get, two e
0f70: 6c 65 6d 65 6e 74 73 7d 20 2d 73 65 74 75 70 20 lements} -setup
0f80: 7b 0a 09 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 {..variable loca
0f90: 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 6d le [mclocale]..m
0fa0: 63 6c 6f 63 61 6c 65 20 65 6e 5f 55 53 0a 20 20 clocale en_US.
0fb0: 20 20 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 } -cleanup {..
0fc0: 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 mclocale $locale
0fd0: 0a 20 20 20 20 7d 20 2d 62 6f 64 79 20 7b 0a 09 . } -body {..
0fe0: 6d 63 6c 6f 63 61 6c 65 0a 20 20 20 20 7d 20 2d mclocale. } -
0ff0: 72 65 73 75 6c 74 20 65 6e 5f 75 73 0a 0a 20 20 result en_us..
1000: 20 20 74 65 73 74 20 6d 73 67 63 61 74 2d 31 2e test msgcat-1.
1010: 38 20 7b 6d 63 70 72 65 66 65 72 65 6e 63 65 73 8 {mcpreferences
1020: 2c 20 74 77 6f 20 65 6c 65 6d 65 6e 74 73 7d 20 , two elements}
1030: 2d 73 65 74 75 70 20 7b 0a 09 76 61 72 69 61 62 -setup {..variab
1040: 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 le locale [mcloc
1050: 61 6c 65 5d 0a 09 6d 63 6c 6f 63 61 6c 65 20 65 ale]..mclocale e
1060: 6e 5f 55 53 0a 20 20 20 20 7d 20 2d 63 6c 65 61 n_US. } -clea
1070: 6e 75 70 20 7b 0a 09 6d 63 6c 6f 63 61 6c 65 20 nup {..mclocale
1080: 24 6c 6f 63 61 6c 65 0a 20 20 20 20 7d 20 2d 62 $locale. } -b
1090: 6f 64 79 20 7b 0a 09 6d 63 70 72 65 66 65 72 65 ody {..mcprefere
10a0: 6e 63 65 73 0a 20 20 20 20 7d 20 2d 72 65 73 75 nces. } -resu
10b0: 6c 74 20 7b 65 6e 5f 75 73 20 65 6e 20 7b 7d 7d lt {en_us en {}}
10c0: 0a 0a 20 20 20 20 74 65 73 74 20 6d 73 67 63 61 .. test msgca
10d0: 74 2d 31 2e 39 20 7b 6d 63 6c 6f 63 61 6c 65 20 t-1.9 {mclocale
10e0: 73 65 74 2c 20 74 68 72 65 65 20 65 6c 65 6d 65 set, three eleme
10f0: 6e 74 73 7d 20 2d 73 65 74 75 70 20 7b 0a 09 76 nts} -setup {..v
1100: 61 72 69 61 62 6c 65 20 6c 6f 63 61 6c 65 20 5b ariable locale [
1110: 6d 63 6c 6f 63 61 6c 65 5d 0a 20 20 20 20 7d 20 mclocale]. }
1120: 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 6d 63 6c 6f -cleanup {..mclo
1130: 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 20 20 20 cale $locale.
1140: 20 7d 20 2d 62 6f 64 79 20 7b 0a 09 6d 63 6c 6f } -body {..mclo
1150: 63 61 6c 65 20 65 6e 5f 55 53 5f 66 75 6e 6b 79 cale en_US_funky
1160: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 65 . } -result e
1170: 6e 5f 75 73 5f 66 75 6e 6b 79 0a 0a 20 20 20 20 n_us_funky..
1180: 74 65 73 74 20 6d 73 67 63 61 74 2d 31 2e 31 30 test msgcat-1.10
1190: 20 7b 6d 63 6c 6f 63 61 6c 65 20 67 65 74 2c 20 {mclocale get,
11a0: 74 68 72 65 65 20 65 6c 65 6d 65 6e 74 73 7d 20 three elements}
11b0: 2d 73 65 74 75 70 20 7b 0a 09 76 61 72 69 61 62 -setup {..variab
11c0: 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 le locale [mcloc
11d0: 61 6c 65 5d 0a 09 6d 63 6c 6f 63 61 6c 65 20 65 ale]..mclocale e
11e0: 6e 5f 55 53 5f 66 75 6e 6b 79 0a 20 20 20 20 7d n_US_funky. }
11f0: 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 6d 63 6c -cleanup {..mcl
1200: 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 20 20 ocale $locale.
1210: 20 20 7d 20 2d 62 6f 64 79 20 7b 0a 09 6d 63 6c } -body {..mcl
1220: 6f 63 61 6c 65 0a 20 20 20 20 7d 20 2d 72 65 73 ocale. } -res
1230: 75 6c 74 20 65 6e 5f 75 73 5f 66 75 6e 6b 79 0a ult en_us_funky.
1240: 0a 20 20 20 20 74 65 73 74 20 6d 73 67 63 61 74 . test msgcat
1250: 2d 31 2e 31 31 20 7b 6d 63 70 72 65 66 65 72 65 -1.11 {mcprefere
1260: 6e 63 65 73 2c 20 74 68 72 65 65 20 65 6c 65 6d nces, three elem
1270: 65 6e 74 73 7d 20 2d 73 65 74 75 70 20 7b 0a 09 ents} -setup {..
1280: 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 6c 65 20 variable locale
1290: 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 6d 63 6c 6f [mclocale]..mclo
12a0: 63 61 6c 65 20 65 6e 5f 55 53 5f 66 75 6e 6b 79 cale en_US_funky
12b0: 0a 20 20 20 20 7d 20 2d 63 6c 65 61 6e 75 70 20 . } -cleanup
12c0: 7b 0a 09 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 {..mclocale $loc
12d0: 61 6c 65 0a 20 20 20 20 7d 20 2d 62 6f 64 79 20 ale. } -body
12e0: 7b 0a 09 6d 63 70 72 65 66 65 72 65 6e 63 65 73 {..mcpreferences
12f0: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b . } -result {
1300: 65 6e 5f 75 73 5f 66 75 6e 6b 79 20 65 6e 5f 75 en_us_funky en_u
1310: 73 20 65 6e 20 7b 7d 7d 0a 0a 20 20 20 20 74 65 s en {}}.. te
1320: 73 74 20 6d 73 67 63 61 74 2d 31 2e 31 32 20 7b st msgcat-1.12 {
1330: 6d 63 6c 6f 63 61 6c 65 20 73 65 74 2c 20 72 65 mclocale set, re
1340: 6a 65 63 74 20 65 76 69 6c 20 69 6e 70 75 74 7d ject evil input}
1350: 20 2d 73 65 74 75 70 20 7b 0a 09 76 61 72 69 61 -setup {..varia
1360: 62 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f ble locale [mclo
1370: 63 61 6c 65 5d 0a 20 20 20 20 7d 20 2d 63 6c 65 cale]. } -cle
1380: 61 6e 75 70 20 7b 0a 09 6d 63 6c 6f 63 61 6c 65 anup {..mclocale
1390: 20 24 6c 6f 63 61 6c 65 0a 20 20 20 20 7d 20 2d $locale. } -
13a0: 62 6f 64 79 20 7b 0a 09 6d 63 6c 6f 63 61 6c 65 body {..mclocale
13b0: 20 2f 70 61 74 68 2f 74 6f 2f 65 76 69 6c 2f 63 /path/to/evil/c
13c0: 6f 64 65 0a 20 20 20 20 7d 20 2d 72 65 74 75 72 ode. } -retur
13d0: 6e 43 6f 64 65 73 20 65 72 72 6f 72 20 2d 6d 61 nCodes error -ma
13e0: 74 63 68 20 67 6c 6f 62 20 2d 72 65 73 75 6c 74 tch glob -result
13f0: 20 7b 6c 6f 63 61 6c 65 20 22 2a 22 20 6e 6f 74 {locale "*" not
1400: 20 76 61 6c 69 64 7d 20 2d 65 72 72 6f 72 43 6f valid} -errorCo
1410: 64 65 20 7b 4d 53 47 43 41 54 20 62 61 64 4c 6f de {MSGCAT badLo
1420: 63 61 6c 65 20 2a 7d 0a 0a 20 20 20 20 74 65 73 cale *}.. tes
1430: 74 20 6d 73 67 63 61 74 2d 31 2e 31 33 20 7b 6d t msgcat-1.13 {m
1440: 63 6c 6f 63 61 6c 65 20 73 65 74 2c 20 72 65 6a clocale set, rej
1450: 65 63 74 20 65 76 69 6c 20 69 6e 70 75 74 7d 20 ect evil input}
1460: 2d 73 65 74 75 70 20 7b 0a 09 76 61 72 69 61 62 -setup {..variab
1470: 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 le locale [mcloc
1480: 61 6c 65 5d 0a 20 20 20 20 7d 20 2d 63 6c 65 61 ale]. } -clea
1490: 6e 75 70 20 7b 0a 09 6d 63 6c 6f 63 61 6c 65 20 nup {..mclocale
14a0: 24 6c 6f 63 61 6c 65 0a 20 20 20 20 7d 20 2d 62 $locale. } -b
14b0: 6f 64 79 20 7b 0a 09 6d 63 6c 6f 63 61 6c 65 20 ody {..mclocale
14c0: 6c 6f 6f 6b 73 2f 6f 6b 2f 2e 2e 2f 2e 2e 2f 2e looks/ok/../../.
14d0: 2e 2f 2e 2e 2f 62 75 74 2f 69 73 2f 70 61 74 68 ./../but/is/path
14e0: 2f 74 6f 2f 65 76 69 6c 2f 63 6f 64 65 0a 20 20 /to/evil/code.
14f0: 20 20 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 } -returnCodes
1500: 20 65 72 72 6f 72 20 2d 6d 61 74 63 68 20 67 6c error -match gl
1510: 6f 62 20 2d 72 65 73 75 6c 74 20 7b 6c 6f 63 61 ob -result {loca
1520: 6c 65 20 22 2a 22 20 6e 6f 74 20 76 61 6c 69 64 le "*" not valid
1530: 7d 20 2d 65 72 72 6f 72 43 6f 64 65 20 7b 4d 53 } -errorCode {MS
1540: 47 43 41 54 20 62 61 64 4c 6f 63 61 6c 65 20 2a GCAT badLocale *
1550: 7d 0a 0a 20 20 20 20 74 65 73 74 20 6d 73 67 63 }.. test msgc
1560: 61 74 2d 31 2e 31 34 20 7b 6d 63 70 72 65 66 65 at-1.14 {mcprefe
1570: 72 65 6e 63 65 73 2c 20 63 75 73 74 6f 6d 20 6c rences, custom l
1580: 6f 63 61 6c 65 20 70 72 65 66 65 72 65 6e 63 65 ocale preference
1590: 73 7d 20 2d 73 65 74 75 70 20 7b 0a 09 76 61 72 s} -setup {..var
15a0: 69 61 62 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 iable locale [mc
15b0: 6c 6f 63 61 6c 65 5d 0a 09 6d 63 6c 6f 63 61 6c locale]..mclocal
15c0: 65 20 65 6e 0a 09 6d 63 70 72 65 66 65 72 65 6e e en..mcpreferen
15d0: 63 65 73 20 66 72 20 65 6e 20 7b 7d 0a 20 20 20 ces fr en {}.
15e0: 20 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 6d } -cleanup {..m
15f0: 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a clocale $locale.
1600: 20 20 20 20 7d 20 2d 62 6f 64 79 20 7b 0a 09 6d } -body {..m
1610: 63 70 72 65 66 65 72 65 6e 63 65 73 0a 20 20 20 cpreferences.
1620: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 66 72 20 65 } -result {fr e
1630: 6e 20 7b 7d 7d 0a 0a 20 20 20 20 74 65 73 74 20 n {}}.. test
1640: 6d 73 67 63 61 74 2d 31 2e 31 35 20 7b 6d 63 70 msgcat-1.15 {mcp
1650: 72 65 66 65 72 65 6e 63 65 73 2c 20 6f 76 65 72 references, over
1660: 77 72 69 74 65 20 63 75 73 74 6f 6d 20 6c 6f 63 write custom loc
1670: 61 6c 65 20 70 72 65 66 65 72 65 6e 63 65 73 7d ale preferences}
1680: 5c 0a 20 20 20 20 2d 73 65 74 75 70 20 7b 0a 09 \. -setup {..
1690: 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 6c 65 20 variable locale
16a0: 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 6d 63 70 72 [mclocale]..mcpr
16b0: 65 66 65 72 65 6e 63 65 73 20 66 72 20 65 6e 20 eferences fr en
16c0: 7b 7d 0a 09 6d 63 6c 6f 63 61 6c 65 20 65 6e 0a {}..mclocale en.
16d0: 20 20 20 20 7d 20 2d 63 6c 65 61 6e 75 70 20 7b } -cleanup {
16e0: 0a 09 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 ..mclocale $loca
16f0: 6c 65 0a 20 20 20 20 7d 20 2d 62 6f 64 79 20 7b le. } -body {
1700: 0a 09 6d 63 70 72 65 66 65 72 65 6e 63 65 73 0a ..mcpreferences.
1710: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 65 } -result {e
1720: 6e 20 7b 7d 7d 0a 0a 0a 20 20 20 20 23 20 54 65 n {}}... # Te
1730: 73 74 73 20 6d 73 67 63 61 74 2d 32 2e 2a 3a 20 sts msgcat-2.*:
1740: 5b 6d 63 73 65 74 5d 2c 20 5b 6d 63 6d 73 65 74 [mcset], [mcmset
1750: 5d 2c 20 6e 61 6d 65 73 70 61 63 65 20 70 61 72 ], namespace par
1760: 74 69 74 69 6f 6e 69 6e 67 0a 0a 20 20 20 20 74 titioning.. t
1770: 65 73 74 20 6d 73 67 63 61 74 2d 32 2e 31 20 7b est msgcat-2.1 {
1780: 6d 63 73 65 74 2c 20 67 6c 6f 62 61 6c 20 73 63 mcset, global sc
1790: 6f 70 65 7d 20 7b 0a 09 6e 61 6d 65 73 70 61 63 ope} {..namespac
17a0: 65 20 65 76 61 6c 20 3a 3a 20 3a 3a 6d 73 67 63 e eval :: ::msgc
17b0: 61 74 3a 3a 6d 63 73 65 74 20 20 66 6f 6f 5f 42 at::mcset foo_B
17c0: 41 52 20 74 65 78 74 31 20 74 65 78 74 32 0a 20 AR text1 text2.
17d0: 20 20 20 7d 20 7b 74 65 78 74 32 7d 0a 0a 20 20 } {text2}..
17e0: 20 20 74 65 73 74 20 6d 73 67 63 61 74 2d 32 2e test msgcat-2.
17f0: 32 20 7b 6d 63 73 65 74 2c 20 67 6c 6f 62 61 6c 2 {mcset, global
1800: 20 73 63 6f 70 65 2c 20 64 65 66 61 75 6c 74 7d scope, default}
1810: 20 7b 0a 09 6e 61 6d 65 73 70 61 63 65 20 65 76 {..namespace ev
1820: 61 6c 20 3a 3a 20 3a 3a 6d 73 67 63 61 74 3a 3a al :: ::msgcat::
1830: 6d 63 73 65 74 20 66 6f 6f 5f 42 41 52 20 74 65 mcset foo_BAR te
1840: 78 74 33 0a 20 20 20 20 7d 20 7b 74 65 78 74 33 xt3. } {text3
1850: 7d 0a 0a 20 20 20 20 74 65 73 74 20 6d 73 67 63 }.. test msgc
1860: 61 74 2d 32 2e 32 2e 31 20 7b 6d 63 73 65 74 2c at-2.2.1 {mcset,
1870: 20 6e 61 6d 65 73 70 61 63 65 20 6f 76 65 72 6c namespace overl
1880: 61 70 7d 20 7b 0a 09 6e 61 6d 65 73 70 61 63 65 ap} {..namespace
1890: 20 65 76 61 6c 20 62 61 7a 20 7b 3a 3a 6d 73 67 eval baz {::msg
18a0: 63 61 74 3a 3a 6d 63 73 65 74 20 20 66 6f 6f 5f cat::mcset foo_
18b0: 42 41 52 20 63 6f 6e 31 20 63 6f 6e 31 62 61 7a BAR con1 con1baz
18c0: 7d 0a 20 20 20 20 7d 20 7b 63 6f 6e 31 62 61 7a }. } {con1baz
18d0: 7d 0a 0a 20 20 20 20 74 65 73 74 20 6d 73 67 63 }.. test msgc
18e0: 61 74 2d 32 2e 33 20 7b 6d 63 73 65 74 2c 20 6e at-2.3 {mcset, n
18f0: 61 6d 65 73 70 61 63 65 20 6f 76 65 72 6c 61 70 amespace overlap
1900: 7d 20 2d 73 65 74 75 70 20 7b 0a 09 6e 61 6d 65 } -setup {..name
1910: 73 70 61 63 65 20 65 76 61 6c 20 62 61 72 20 7b space eval bar {
1920: 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 73 65 74 20 ::msgcat::mcset
1930: 20 66 6f 6f 5f 42 41 52 20 63 6f 6e 31 20 63 6f foo_BAR con1 co
1940: 6e 31 62 61 72 7d 0a 09 6e 61 6d 65 73 70 61 63 n1bar}..namespac
1950: 65 20 65 76 61 6c 20 62 61 7a 20 7b 3a 3a 6d 73 e eval baz {::ms
1960: 67 63 61 74 3a 3a 6d 63 73 65 74 20 20 66 6f 6f gcat::mcset foo
1970: 5f 42 41 52 20 63 6f 6e 31 20 63 6f 6e 31 62 61 _BAR con1 con1ba
1980: 7a 7d 0a 09 76 61 72 69 61 62 6c 65 20 6c 6f 63 z}..variable loc
1990: 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 ale [mclocale]..
19a0: 6d 63 6c 6f 63 61 6c 65 20 66 6f 6f 5f 42 41 52 mclocale foo_BAR
19b0: 0a 20 20 20 20 7d 20 2d 63 6c 65 61 6e 75 70 20 . } -cleanup
19c0: 7b 0a 09 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 {..mclocale $loc
19d0: 61 6c 65 0a 20 20 20 20 7d 20 2d 62 6f 64 79 20 ale. } -body
19e0: 7b 0a 09 6e 61 6d 65 73 70 61 63 65 20 65 76 61 {..namespace eva
19f0: 6c 20 62 61 72 20 7b 3a 3a 6d 73 67 63 61 74 3a l bar {::msgcat:
1a00: 3a 6d 63 20 63 6f 6e 31 7d 0a 20 20 20 20 7d 20 :mc con1}. }
1a10: 2d 72 65 73 75 6c 74 20 63 6f 6e 31 62 61 72 0a -result con1bar.
1a20: 0a 20 20 20 20 74 65 73 74 20 6d 73 67 63 61 74 . test msgcat
1a30: 2d 32 2e 34 20 7b 6d 63 73 65 74 2c 20 6e 61 6d -2.4 {mcset, nam
1a40: 65 73 70 61 63 65 20 6f 76 65 72 6c 61 70 7d 20 espace overlap}
1a50: 2d 73 65 74 75 70 20 7b 0a 09 6e 61 6d 65 73 70 -setup {..namesp
1a60: 61 63 65 20 65 76 61 6c 20 62 61 72 20 7b 3a 3a ace eval bar {::
1a70: 6d 73 67 63 61 74 3a 3a 6d 63 73 65 74 20 20 66 msgcat::mcset f
1a80: 6f 6f 5f 42 41 52 20 63 6f 6e 31 20 63 6f 6e 31 oo_BAR con1 con1
1a90: 62 61 72 7d 0a 09 6e 61 6d 65 73 70 61 63 65 20 bar}..namespace
1aa0: 65 76 61 6c 20 62 61 7a 20 7b 3a 3a 6d 73 67 63 eval baz {::msgc
1ab0: 61 74 3a 3a 6d 63 73 65 74 20 20 66 6f 6f 5f 42 at::mcset foo_B
1ac0: 41 52 20 63 6f 6e 31 20 63 6f 6e 31 62 61 7a 7d AR con1 con1baz}
1ad0: 0a 09 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 6c ..variable local
1ae0: 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 6d 63 e [mclocale]..mc
1af0: 6c 6f 63 61 6c 65 20 66 6f 6f 5f 42 41 52 0a 20 locale foo_BAR.
1b00: 20 20 20 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a } -cleanup {.
1b10: 09 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c .mclocale $local
1b20: 65 0a 20 20 20 20 7d 20 2d 62 6f 64 79 20 7b 0a e. } -body {.
1b30: 09 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 .namespace eval
1b40: 62 61 7a 20 7b 3a 3a 6d 73 67 63 61 74 3a 3a 6d baz {::msgcat::m
1b50: 63 20 63 6f 6e 31 7d 0a 20 20 20 20 7d 20 2d 72 c con1}. } -r
1b60: 65 73 75 6c 74 20 63 6f 6e 31 62 61 7a 0a 0a 20 esult con1baz..
1b70: 20 20 20 74 65 73 74 20 6d 73 67 63 61 74 2d 32 test msgcat-2
1b80: 2e 35 20 7b 6d 63 6d 73 65 74 2c 20 67 6c 6f 62 .5 {mcmset, glob
1b90: 61 6c 20 73 63 6f 70 65 7d 20 2d 73 65 74 75 70 al scope} -setup
1ba0: 20 7b 0a 09 6e 61 6d 65 73 70 61 63 65 20 65 76 {..namespace ev
1bb0: 61 6c 20 3a 3a 20 7b 0a 09 20 20 20 20 3a 3a 6d al :: {.. ::m
1bc0: 73 67 63 61 74 3a 3a 6d 63 6d 73 65 74 20 20 66 sgcat::mcmset f
1bd0: 6f 6f 5f 42 41 52 20 7b 0a 09 09 73 72 63 31 20 oo_BAR {...src1
1be0: 74 72 61 6e 73 31 0a 09 09 73 72 63 32 20 74 72 trans1...src2 tr
1bf0: 61 6e 73 32 0a 09 20 20 20 20 7d 0a 09 7d 0a 09 ans2.. }..}..
1c00: 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 6c 65 20 variable locale
1c10: 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 6d 63 6c 6f [mclocale]..mclo
1c20: 63 61 6c 65 20 66 6f 6f 5f 42 41 52 0a 20 20 20 cale foo_BAR.
1c30: 20 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 6d } -cleanup {..m
1c40: 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a clocale $locale.
1c50: 20 20 20 20 7d 20 2d 62 6f 64 79 20 7b 0a 09 6e } -body {..n
1c60: 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 3a 3a amespace eval ::
1c70: 20 7b 0a 09 20 20 20 20 3a 3a 6d 73 67 63 61 74 {.. ::msgcat
1c80: 3a 3a 6d 63 20 73 72 63 31 0a 09 7d 0a 20 20 20 ::mc src1..}.
1c90: 20 7d 20 2d 72 65 73 75 6c 74 20 74 72 61 6e 73 } -result trans
1ca0: 31 0a 0a 20 20 20 20 74 65 73 74 20 6d 73 67 63 1.. test msgc
1cb0: 61 74 2d 32 2e 36 20 7b 6d 63 6d 73 65 74 2c 20 at-2.6 {mcmset,
1cc0: 6e 61 6d 65 73 70 61 63 65 20 6f 76 65 72 6c 61 namespace overla
1cd0: 70 7d 20 2d 73 65 74 75 70 20 7b 0a 09 6e 61 6d p} -setup {..nam
1ce0: 65 73 70 61 63 65 20 65 76 61 6c 20 62 61 72 20 espace eval bar
1cf0: 7b 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 6d 73 65 {::msgcat::mcmse
1d00: 74 20 20 66 6f 6f 5f 42 41 52 20 7b 63 6f 6e 32 t foo_BAR {con2
1d10: 20 63 6f 6e 32 62 61 72 7d 7d 0a 09 6e 61 6d 65 con2bar}}..name
1d20: 73 70 61 63 65 20 65 76 61 6c 20 62 61 7a 20 7b space eval baz {
1d30: 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 6d 73 65 74 ::msgcat::mcmset
1d40: 20 20 66 6f 6f 5f 42 41 52 20 7b 63 6f 6e 32 20 foo_BAR {con2
1d50: 63 6f 6e 32 62 61 7a 7d 7d 0a 09 76 61 72 69 61 con2baz}}..varia
1d60: 62 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f ble locale [mclo
1d70: 63 61 6c 65 5d 0a 09 6d 63 6c 6f 63 61 6c 65 20 cale]..mclocale
1d80: 66 6f 6f 5f 42 41 52 0a 20 20 20 20 7d 20 2d 63 foo_BAR. } -c
1d90: 6c 65 61 6e 75 70 20 7b 0a 09 6d 63 6c 6f 63 61 leanup {..mcloca
1da0: 6c 65 20 24 6c 6f 63 61 6c 65 0a 20 20 20 20 7d le $locale. }
1db0: 20 2d 62 6f 64 79 20 7b 0a 09 6e 61 6d 65 73 70 -body {..namesp
1dc0: 61 63 65 20 65 76 61 6c 20 62 61 72 20 7b 3a 3a ace eval bar {::
1dd0: 6d 73 67 63 61 74 3a 3a 6d 63 20 63 6f 6e 32 7d msgcat::mc con2}
1de0: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 63 . } -result c
1df0: 6f 6e 32 62 61 72 0a 0a 20 20 20 20 74 65 73 74 on2bar.. test
1e00: 20 6d 73 67 63 61 74 2d 32 2e 37 20 7b 6d 63 6d msgcat-2.7 {mcm
1e10: 73 65 74 2c 20 6e 61 6d 65 73 70 61 63 65 20 6f set, namespace o
1e20: 76 65 72 6c 61 70 7d 20 2d 73 65 74 75 70 20 7b verlap} -setup {
1e30: 0a 09 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c ..namespace eval
1e40: 20 62 61 72 20 7b 3a 3a 6d 73 67 63 61 74 3a 3a bar {::msgcat::
1e50: 6d 63 6d 73 65 74 20 20 66 6f 6f 5f 42 41 52 20 mcmset foo_BAR
1e60: 7b 63 6f 6e 32 20 63 6f 6e 32 62 61 72 7d 7d 0a {con2 con2bar}}.
1e70: 09 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 .namespace eval
1e80: 62 61 7a 20 7b 3a 3a 6d 73 67 63 61 74 3a 3a 6d baz {::msgcat::m
1e90: 63 6d 73 65 74 20 20 66 6f 6f 5f 42 41 52 20 7b cmset foo_BAR {
1ea0: 63 6f 6e 32 20 63 6f 6e 32 62 61 7a 7d 7d 0a 09 con2 con2baz}}..
1eb0: 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 6c 65 20 variable locale
1ec0: 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 6d 63 6c 6f [mclocale]..mclo
1ed0: 63 61 6c 65 20 66 6f 6f 5f 42 41 52 0a 20 20 20 cale foo_BAR.
1ee0: 20 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 6d } -cleanup {..m
1ef0: 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a clocale $locale.
1f00: 20 20 20 20 7d 20 2d 62 6f 64 79 20 7b 0a 09 6e } -body {..n
1f10: 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 62 61 amespace eval ba
1f20: 7a 20 7b 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 20 z {::msgcat::mc
1f30: 63 6f 6e 32 7d 0a 20 20 20 20 7d 20 2d 72 65 73 con2}. } -res
1f40: 75 6c 74 20 63 6f 6e 32 62 61 7a 0a 0a 20 20 20 ult con2baz..
1f50: 20 23 20 54 65 73 74 73 20 6d 73 67 63 61 74 2d # Tests msgcat-
1f60: 33 2e 2a 3a 20 5b 6d 63 73 65 74 5d 2c 20 5b 6d 3.*: [mcset], [m
1f70: 63 5d 2c 20 63 61 74 61 6c 6f 67 20 22 69 6e 68 c], catalog "inh
1f80: 65 72 69 74 61 6e 63 65 22 0a 20 20 20 20 23 0a eritance". #.
1f90: 20 20 20 20 23 20 54 65 73 74 20 6d 63 73 65 74 # Test mcset
1fa0: 20 61 6e 64 20 6d 63 2c 20 65 6e 73 75 72 69 6e and mc, ensurin
1fb0: 67 20 74 68 61 74 20 6d 6f 72 65 20 73 70 65 63 g that more spec
1fc0: 69 66 69 63 20 6c 6f 63 61 6c 65 73 0a 20 20 20 ific locales.
1fd0: 20 23 20 28 65 2e 67 2e 20 65 6e 5f 55 4b 29 20 # (e.g. en_UK)
1fe0: 77 69 6c 6c 20 73 65 61 72 63 68 20 6c 65 73 73 will search less
1ff0: 20 73 70 65 63 69 66 69 63 20 6c 6f 63 61 6c 65 specific locale
2000: 73 0a 20 20 20 20 23 20 28 65 2e 67 2e 20 65 6e s. # (e.g. en
2010: 29 20 66 6f 72 20 74 72 61 6e 73 6c 61 74 69 6f ) for translatio
2020: 6e 20 73 74 72 69 6e 67 73 2e 0a 20 20 20 20 23 n strings.. #
2030: 0a 20 20 20 20 23 20 44 6f 20 74 68 69 73 20 66 . # Do this f
2040: 6f 72 20 74 68 65 20 31 35 20 70 65 72 6d 75 74 or the 15 permut
2050: 61 74 69 6f 6e 73 20 6f 66 0a 20 20 20 20 23 20 ations of. #
2060: 20 20 20 20 6c 6f 63 61 6c 65 73 3a 20 7b 66 6f locales: {fo
2070: 6f 20 66 6f 6f 5f 42 41 52 20 66 6f 6f 5f 42 41 o foo_BAR foo_BA
2080: 52 5f 62 61 7a 7d 0a 20 20 20 20 23 20 20 20 20 R_baz}. #
2090: 20 73 74 72 69 6e 67 73 3a 20 7b 6f 76 30 20 6f strings: {ov0 o
20a0: 76 31 20 6f 76 32 20 6f 76 33 20 6f 76 34 7d 0a v1 ov2 ov3 ov4}.
20b0: 20 20 20 20 23 09 20 20 6c 6f 63 61 6c 65 20 52 #. locale R
20c0: 4f 4f 54 20 20 20 20 20 20 20 20 64 65 66 69 6e OOT defin
20d0: 65 73 20 6f 76 30 2c 20 6f 76 31 2c 20 6f 76 32 es ov0, ov1, ov2
20e0: 2c 20 6f 76 33 0a 20 20 20 20 23 20 20 20 20 20 , ov3. #
20f0: 6c 6f 63 61 6c 65 20 66 6f 6f 20 20 20 20 20 20 locale foo
2100: 20 20 20 64 65 66 69 6e 65 73 20 20 20 20 20 20 defines
2110: 6f 76 31 2c 20 6f 76 32 2c 20 6f 76 33 0a 20 20 ov1, ov2, ov3.
2120: 20 20 23 20 20 20 20 20 6c 6f 63 61 6c 65 20 66 # locale f
2130: 6f 6f 5f 42 41 52 20 20 20 20 20 64 65 66 69 6e oo_BAR defin
2140: 65 73 20 20 20 20 20 20 20 20 20 20 20 6f 76 32 es ov2
2150: 2c 20 6f 76 33 0a 20 20 20 20 23 20 20 20 20 20 , ov3. #
2160: 6c 6f 63 61 6c 65 20 66 6f 6f 5f 42 41 52 5f 42 locale foo_BAR_B
2170: 41 5a 20 64 65 66 69 6e 65 73 20 20 20 20 20 20 AZ defines
2180: 20 20 20 20 20 20 20 20 20 20 6f 76 33 0a 20 20 ov3.
2190: 20 20 23 20 20 20 20 20 28 6f 76 34 20 69 73 20 # (ov4 is
21a0: 64 65 66 69 6e 65 64 20 69 6e 20 6e 6f 6e 65 29 defined in none)
21b0: 0a 20 20 20 20 23 20 53 6f 2c 0a 20 20 20 20 23 . # So,. #
21c0: 20 20 20 20 20 6f 76 33 20 73 68 6f 75 6c 64 20 ov3 should
21d0: 62 65 20 72 65 73 6f 6c 76 65 64 20 69 6e 20 66 be resolved in f
21e0: 6f 6f 2c 20 66 6f 6f 5f 42 41 52 2c 20 66 6f 6f oo, foo_BAR, foo
21f0: 5f 42 41 52 5f 62 61 7a 0a 20 20 20 20 23 20 20 _BAR_baz. #
2200: 20 20 20 6f 76 32 20 73 68 6f 75 6c 64 20 62 65 ov2 should be
2210: 20 72 65 73 6f 6c 76 65 64 20 69 6e 20 66 6f 6f resolved in foo
2220: 2c 20 66 6f 6f 5f 42 41 52 0a 20 20 20 20 23 20 , foo_BAR. #
2230: 20 20 20 20 6f 76 32 20 73 68 6f 75 6c 64 20 72 ov2 should r
2240: 65 73 6f 6c 76 65 20 74 6f 20 66 6f 6f 5f 42 41 esolve to foo_BA
2250: 52 20 69 6e 20 66 6f 6f 5f 42 41 52 5f 62 61 7a R in foo_BAR_baz
2260: 0a 20 20 20 20 23 20 20 20 20 20 6f 76 31 20 73 . # ov1 s
2270: 68 6f 75 6c 64 20 62 65 20 72 65 73 6f 6c 76 65 hould be resolve
2280: 64 20 69 6e 20 66 6f 6f 0a 20 20 20 20 23 20 20 d in foo. #
2290: 20 20 20 6f 76 31 20 73 68 6f 75 6c 64 20 72 65 ov1 should re
22a0: 73 6f 6c 76 65 20 74 6f 20 66 6f 6f 20 69 6e 20 solve to foo in
22b0: 66 6f 6f 5f 42 41 52 2c 20 66 6f 6f 5f 42 41 52 foo_BAR, foo_BAR
22c0: 5f 62 61 7a 0a 20 20 20 20 23 20 20 20 20 20 6f _baz. # o
22d0: 76 34 20 73 68 6f 75 6c 64 20 62 65 20 72 65 73 v4 should be res
22e0: 6f 6c 76 65 64 20 69 6e 20 6e 6f 6e 65 2c 20 61 olved in none, a
22f0: 6e 64 20 63 61 6c 6c 20 6d 63 75 6e 6b 6e 6f 77 nd call mcunknow
2300: 6e 0a 20 20 20 20 23 0a 20 20 20 20 76 61 72 69 n. #. vari
2310: 61 62 6c 65 20 63 6f 75 6e 74 20 32 0a 20 20 20 able count 2.
2320: 20 76 61 72 69 61 62 6c 65 20 72 65 73 75 6c 74 variable result
2330: 0a 20 20 20 20 61 72 72 61 79 20 73 65 74 20 72 . array set r
2340: 65 73 75 6c 74 20 7b 0a 09 66 6f 6f 2c 6f 76 30 esult {..foo,ov0
2350: 20 6f 76 30 5f 52 4f 4f 54 20 66 6f 6f 2c 6f 76 ov0_ROOT foo,ov
2360: 31 20 6f 76 31 5f 66 6f 6f 20 66 6f 6f 2c 6f 76 1 ov1_foo foo,ov
2370: 32 20 6f 76 32 5f 66 6f 6f 0a 09 66 6f 6f 2c 6f 2 ov2_foo..foo,o
2380: 76 33 20 6f 76 33 5f 66 6f 6f 20 66 6f 6f 2c 6f v3 ov3_foo foo,o
2390: 76 34 20 6f 76 34 0a 09 66 6f 6f 5f 42 41 52 2c v4 ov4..foo_BAR,
23a0: 6f 76 30 20 6f 76 30 5f 52 4f 4f 54 20 66 6f 6f ov0 ov0_ROOT foo
23b0: 5f 42 41 52 2c 6f 76 31 20 6f 76 31 5f 66 6f 6f _BAR,ov1 ov1_foo
23c0: 20 66 6f 6f 5f 42 41 52 2c 6f 76 32 20 6f 76 32 foo_BAR,ov2 ov2
23d0: 5f 66 6f 6f 5f 42 41 52 0a 09 66 6f 6f 5f 42 41 _foo_BAR..foo_BA
23e0: 52 2c 6f 76 33 20 6f 76 33 5f 66 6f 6f 5f 42 41 R,ov3 ov3_foo_BA
23f0: 52 09 66 6f 6f 5f 42 41 52 2c 6f 76 34 20 6f 76 R.foo_BAR,ov4 ov
2400: 34 0a 09 66 6f 6f 5f 42 41 52 5f 62 61 7a 2c 6f 4..foo_BAR_baz,o
2410: 76 30 20 6f 76 30 5f 52 4f 4f 54 20 66 6f 6f 5f v0 ov0_ROOT foo_
2420: 42 41 52 5f 62 61 7a 2c 6f 76 31 20 6f 76 31 5f BAR_baz,ov1 ov1_
2430: 66 6f 6f 0a 09 66 6f 6f 5f 42 41 52 5f 62 61 7a foo..foo_BAR_baz
2440: 2c 6f 76 32 20 6f 76 32 5f 66 6f 6f 5f 42 41 52 ,ov2 ov2_foo_BAR
2450: 0a 09 66 6f 6f 5f 42 41 52 5f 62 61 7a 2c 6f 76 ..foo_BAR_baz,ov
2460: 33 20 6f 76 33 5f 66 6f 6f 5f 42 41 52 5f 62 61 3 ov3_foo_BAR_ba
2470: 7a 20 66 6f 6f 5f 42 41 52 5f 62 61 7a 2c 6f 76 z foo_BAR_baz,ov
2480: 34 20 6f 76 34 0a 20 20 20 20 7d 0a 20 20 20 20 4 ov4. }.
2490: 76 61 72 69 61 62 6c 65 20 6c 6f 63 0a 20 20 20 variable loc.
24a0: 20 76 61 72 69 61 62 6c 65 20 73 74 72 69 6e 67 variable string
24b0: 0a 20 20 20 20 66 6f 72 65 61 63 68 20 6c 6f 63 . foreach loc
24c0: 20 7b 66 6f 6f 20 66 6f 6f 5f 42 41 52 20 66 6f {foo foo_BAR fo
24d0: 6f 5f 42 41 52 5f 62 61 7a 7d 20 7b 0a 09 66 6f o_BAR_baz} {..fo
24e0: 72 65 61 63 68 20 73 74 72 69 6e 67 20 7b 6f 76 reach string {ov
24f0: 30 20 6f 76 31 20 6f 76 32 20 6f 76 33 20 6f 76 0 ov1 ov2 ov3 ov
2500: 34 7d 20 7b 0a 09 20 20 20 20 74 65 73 74 20 6d 4} {.. test m
2510: 73 67 63 61 74 2d 33 2e 24 63 6f 75 6e 74 20 7b sgcat-3.$count {
2520: 6d 63 73 65 74 2c 20 6f 76 65 72 6c 61 70 7d 20 mcset, overlap}
2530: 2d 73 65 74 75 70 20 7b 0a 09 09 6d 63 73 65 74 -setup {...mcset
2540: 20 7b 7d 20 6f 76 30 20 6f 76 30 5f 52 4f 4f 54 {} ov0 ov0_ROOT
2550: 0a 09 09 6d 63 73 65 74 20 7b 7d 20 6f 76 31 20 ...mcset {} ov1
2560: 6f 76 31 5f 52 4f 4f 54 0a 09 09 6d 63 73 65 74 ov1_ROOT...mcset
2570: 20 7b 7d 20 6f 76 32 20 6f 76 32 5f 52 4f 4f 54 {} ov2 ov2_ROOT
2580: 0a 09 09 6d 63 73 65 74 20 7b 7d 20 6f 76 33 20 ...mcset {} ov3
2590: 6f 76 33 5f 52 4f 4f 54 0a 09 09 6d 63 73 65 74 ov3_ROOT...mcset
25a0: 20 66 6f 6f 20 6f 76 31 20 6f 76 31 5f 66 6f 6f foo ov1 ov1_foo
25b0: 0a 09 09 6d 63 73 65 74 20 66 6f 6f 20 6f 76 32 ...mcset foo ov2
25c0: 20 6f 76 32 5f 66 6f 6f 0a 09 09 6d 63 73 65 74 ov2_foo...mcset
25d0: 20 66 6f 6f 20 6f 76 33 20 6f 76 33 5f 66 6f 6f foo ov3 ov3_foo
25e0: 0a 09 09 6d 63 73 65 74 20 66 6f 6f 5f 42 41 52 ...mcset foo_BAR
25f0: 20 6f 76 32 20 6f 76 32 5f 66 6f 6f 5f 42 41 52 ov2 ov2_foo_BAR
2600: 0a 09 09 6d 63 73 65 74 20 66 6f 6f 5f 42 41 52 ...mcset foo_BAR
2610: 20 6f 76 33 20 6f 76 33 5f 66 6f 6f 5f 42 41 52 ov3 ov3_foo_BAR
2620: 0a 09 09 6d 63 73 65 74 20 66 6f 6f 5f 42 41 52 ...mcset foo_BAR
2630: 5f 62 61 7a 20 6f 76 33 20 6f 76 33 5f 66 6f 6f _baz ov3 ov3_foo
2640: 5f 42 41 52 5f 62 61 7a 0a 09 09 76 61 72 69 61 _BAR_baz...varia
2650: 62 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f ble locale [mclo
2660: 63 61 6c 65 5d 0a 09 09 6d 63 6c 6f 63 61 6c 65 cale]...mclocale
2670: 20 24 6c 6f 63 0a 09 20 20 20 20 7d 20 2d 63 6c $loc.. } -cl
2680: 65 61 6e 75 70 20 7b 0a 09 09 6d 63 6c 6f 63 61 eanup {...mcloca
2690: 6c 65 20 24 6c 6f 63 61 6c 65 0a 09 20 20 20 20 le $locale..
26a0: 7d 20 2d 62 6f 64 79 20 7b 0a 09 09 6d 63 20 24 } -body {...mc $
26b0: 73 74 72 69 6e 67 0a 09 20 20 20 20 7d 20 2d 72 string.. } -r
26c0: 65 73 75 6c 74 20 24 72 65 73 75 6c 74 28 24 6c esult $result($l
26d0: 6f 63 2c 24 73 74 72 69 6e 67 29 0a 09 20 20 20 oc,$string)..
26e0: 20 69 6e 63 72 20 63 6f 75 6e 74 0a 09 7d 0a 20 incr count..}.
26f0: 20 20 20 7d 0a 20 20 20 20 75 6e 73 65 74 20 2d }. unset -
2700: 6e 6f 63 6f 6d 70 6c 61 69 6e 20 72 65 73 75 6c nocomplain resul
2710: 74 0a 0a 20 20 20 20 23 20 54 65 73 74 73 20 6d t.. # Tests m
2720: 73 67 63 61 74 2d 34 2e 2a 3a 20 5b 6d 63 75 6e sgcat-4.*: [mcun
2730: 6b 6e 6f 77 6e 5d 0a 0a 20 20 20 20 74 65 73 74 known].. test
2740: 20 6d 73 67 63 61 74 2d 34 2e 32 20 7b 6d 63 75 msgcat-4.2 {mcu
2750: 6e 6b 6e 6f 77 6e 2c 20 64 65 66 61 75 6c 74 7d nknown, default}
2760: 20 2d 73 65 74 75 70 20 7b 0a 09 6d 63 73 65 74 -setup {..mcset
2770: 20 66 6f 6f 20 75 6e 6b 31 20 22 75 6e 6b 6e 6f foo unk1 "unkno
2780: 77 6e 20 31 22 0a 09 76 61 72 69 61 62 6c 65 20 wn 1"..variable
2790: 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 locale [mclocale
27a0: 5d 0a 09 6d 63 6c 6f 63 61 6c 65 20 66 6f 6f 0a ]..mclocale foo.
27b0: 20 20 20 20 7d 20 2d 63 6c 65 61 6e 75 70 20 7b } -cleanup {
27c0: 0a 09 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 ..mclocale $loca
27d0: 6c 65 0a 20 20 20 20 7d 20 2d 62 6f 64 79 20 7b le. } -body {
27e0: 0a 09 6d 63 20 75 6e 6b 31 0a 20 20 20 20 7d 20 ..mc unk1. }
27f0: 2d 72 65 73 75 6c 74 20 7b 75 6e 6b 6e 6f 77 6e -result {unknown
2800: 20 31 7d 0a 0a 20 20 20 20 74 65 73 74 20 6d 73 1}.. test ms
2810: 67 63 61 74 2d 34 2e 33 20 7b 6d 63 75 6e 6b 6e gcat-4.3 {mcunkn
2820: 6f 77 6e 2c 20 64 65 66 61 75 6c 74 7d 20 2d 73 own, default} -s
2830: 65 74 75 70 20 7b 0a 09 6d 63 73 65 74 20 66 6f etup {..mcset fo
2840: 6f 20 75 6e 6b 31 20 22 75 6e 6b 6e 6f 77 6e 20 o unk1 "unknown
2850: 31 22 0a 09 76 61 72 69 61 62 6c 65 20 6c 6f 63 1"..variable loc
2860: 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 ale [mclocale]..
2870: 6d 63 6c 6f 63 61 6c 65 20 66 6f 6f 0a 20 20 20 mclocale foo.
2880: 20 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 6d } -cleanup {..m
2890: 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a clocale $locale.
28a0: 20 20 20 20 7d 20 2d 62 6f 64 79 20 7b 0a 09 6d } -body {..m
28b0: 63 20 75 6e 6b 32 0a 20 20 20 20 7d 20 2d 72 65 c unk2. } -re
28c0: 73 75 6c 74 20 75 6e 6b 32 0a 0a 20 20 20 20 74 sult unk2.. t
28d0: 65 73 74 20 6d 73 67 63 61 74 2d 34 2e 34 20 7b est msgcat-4.4 {
28e0: 6d 63 75 6e 6b 6e 6f 77 6e 2c 20 6f 76 65 72 72 mcunknown, overr
28f0: 69 64 64 65 6e 7d 20 2d 73 65 74 75 70 20 7b 0a idden} -setup {.
2900: 09 72 65 6e 61 6d 65 20 3a 3a 6d 73 67 63 61 74 .rename ::msgcat
2910: 3a 3a 6d 63 75 6e 6b 6e 6f 77 6e 20 53 61 76 65 ::mcunknown Save
2920: 64 4d 63 75 6e 6b 6e 6f 77 6e 0a 09 70 72 6f 63 dMcunknown..proc
2930: 20 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 75 6e 6b ::msgcat::mcunk
2940: 6e 6f 77 6e 20 7b 64 6f 6d 20 73 7d 20 7b 0a 09 nown {dom s} {..
2950: 20 20 20 20 72 65 74 75 72 6e 20 75 6e 6b 6e 6f return unkno
2960: 77 6e 3a 24 64 6f 6d 3a 24 73 0a 09 7d 0a 09 6d wn:$dom:$s..}..m
2970: 63 73 65 74 20 66 6f 6f 20 75 6e 6b 31 20 22 75 cset foo unk1 "u
2980: 6e 6b 6e 6f 77 6e 20 31 22 0a 09 76 61 72 69 61 nknown 1"..varia
2990: 62 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f ble locale [mclo
29a0: 63 61 6c 65 5d 0a 09 6d 63 6c 6f 63 61 6c 65 20 cale]..mclocale
29b0: 66 6f 6f 0a 20 20 20 20 7d 20 2d 63 6c 65 61 6e foo. } -clean
29c0: 75 70 20 7b 0a 09 6d 63 6c 6f 63 61 6c 65 20 24 up {..mclocale $
29d0: 6c 6f 63 61 6c 65 0a 09 72 65 6e 61 6d 65 20 3a locale..rename :
29e0: 3a 6d 73 67 63 61 74 3a 3a 6d 63 75 6e 6b 6e 6f :msgcat::mcunkno
29f0: 77 6e 20 7b 7d 0a 09 72 65 6e 61 6d 65 20 53 61 wn {}..rename Sa
2a00: 76 65 64 4d 63 75 6e 6b 6e 6f 77 6e 20 3a 3a 6d vedMcunknown ::m
2a10: 73 67 63 61 74 3a 3a 6d 63 75 6e 6b 6e 6f 77 6e sgcat::mcunknown
2a20: 0a 20 20 20 20 7d 20 2d 62 6f 64 79 20 7b 0a 09 . } -body {..
2a30: 6d 63 20 75 6e 6b 31 0a 20 20 20 20 7d 20 2d 72 mc unk1. } -r
2a40: 65 73 75 6c 74 20 7b 75 6e 6b 6e 6f 77 6e 20 31 esult {unknown 1
2a50: 7d 0a 0a 20 20 20 20 74 65 73 74 20 6d 73 67 63 }.. test msgc
2a60: 61 74 2d 34 2e 35 20 7b 6d 63 75 6e 6b 6e 6f 77 at-4.5 {mcunknow
2a70: 6e 2c 20 6f 76 65 72 72 69 64 64 65 6e 7d 20 2d n, overridden} -
2a80: 73 65 74 75 70 20 7b 0a 09 72 65 6e 61 6d 65 20 setup {..rename
2a90: 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 75 6e 6b 6e ::msgcat::mcunkn
2aa0: 6f 77 6e 20 53 61 76 65 64 4d 63 75 6e 6b 6e 6f own SavedMcunkno
2ab0: 77 6e 0a 09 70 72 6f 63 20 3a 3a 6d 73 67 63 61 wn..proc ::msgca
2ac0: 74 3a 3a 6d 63 75 6e 6b 6e 6f 77 6e 20 7b 64 6f t::mcunknown {do
2ad0: 6d 20 73 7d 20 7b 0a 09 20 20 20 20 72 65 74 75 m s} {.. retu
2ae0: 72 6e 20 75 6e 6b 6e 6f 77 6e 3a 24 64 6f 6d 3a rn unknown:$dom:
2af0: 24 73 0a 09 7d 0a 09 6d 63 73 65 74 20 66 6f 6f $s..}..mcset foo
2b00: 20 75 6e 6b 31 20 22 75 6e 6b 6e 6f 77 6e 20 31 unk1 "unknown 1
2b10: 22 0a 09 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 "..variable loca
2b20: 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 6d le [mclocale]..m
2b30: 63 6c 6f 63 61 6c 65 20 66 6f 6f 0a 20 20 20 20 clocale foo.
2b40: 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 6d 63 } -cleanup {..mc
2b50: 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 09 locale $locale..
2b60: 72 65 6e 61 6d 65 20 3a 3a 6d 73 67 63 61 74 3a rename ::msgcat:
2b70: 3a 6d 63 75 6e 6b 6e 6f 77 6e 20 7b 7d 0a 09 72 :mcunknown {}..r
2b80: 65 6e 61 6d 65 20 53 61 76 65 64 4d 63 75 6e 6b ename SavedMcunk
2b90: 6e 6f 77 6e 20 3a 3a 6d 73 67 63 61 74 3a 3a 6d nown ::msgcat::m
2ba0: 63 75 6e 6b 6e 6f 77 6e 0a 20 20 20 20 7d 20 2d cunknown. } -
2bb0: 62 6f 64 79 20 7b 0a 09 6d 63 20 75 6e 6b 32 0a body {..mc unk2.
2bc0: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 75 } -result {u
2bd0: 6e 6b 6e 6f 77 6e 3a 66 6f 6f 3a 75 6e 6b 32 7d nknown:foo:unk2}
2be0: 0a 0a 20 20 20 20 74 65 73 74 20 6d 73 67 63 61 .. test msgca
2bf0: 74 2d 34 2e 36 20 7b 6d 63 75 6e 6b 6e 6f 77 6e t-4.6 {mcunknown
2c00: 2c 20 75 70 6c 65 76 65 6c 20 63 6f 6e 74 65 78 , uplevel contex
2c10: 74 7d 20 2d 73 65 74 75 70 20 7b 0a 09 72 65 6e t} -setup {..ren
2c20: 61 6d 65 20 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 ame ::msgcat::mc
2c30: 75 6e 6b 6e 6f 77 6e 20 53 61 76 65 64 4d 63 75 unknown SavedMcu
2c40: 6e 6b 6e 6f 77 6e 0a 09 70 72 6f 63 20 3a 3a 6d nknown..proc ::m
2c50: 73 67 63 61 74 3a 3a 6d 63 75 6e 6b 6e 6f 77 6e sgcat::mcunknown
2c60: 20 7b 64 6f 6d 20 73 7d 20 7b 0a 09 20 20 20 20 {dom s} {..
2c70: 72 65 74 75 72 6e 20 22 75 6e 6b 6e 6f 77 6e 3a return "unknown:
2c80: 24 64 6f 6d 3a 24 73 3a 5b 65 78 70 72 20 7b 5b $dom:$s:[expr {[
2c90: 69 6e 66 6f 20 6c 65 76 65 6c 5d 20 2d 20 31 7d info level] - 1}
2ca0: 5d 22 0a 09 7d 0a 09 6d 63 73 65 74 20 66 6f 6f ]"..}..mcset foo
2cb0: 20 75 6e 6b 31 20 22 75 6e 6b 6e 6f 77 6e 20 31 unk1 "unknown 1
2cc0: 22 0a 09 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 "..variable loca
2cd0: 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 6d le [mclocale]..m
2ce0: 63 6c 6f 63 61 6c 65 20 66 6f 6f 0a 20 20 20 20 clocale foo.
2cf0: 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 6d 63 } -cleanup {..mc
2d00: 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 09 locale $locale..
2d10: 72 65 6e 61 6d 65 20 3a 3a 6d 73 67 63 61 74 3a rename ::msgcat:
2d20: 3a 6d 63 75 6e 6b 6e 6f 77 6e 20 7b 7d 0a 09 72 :mcunknown {}..r
2d30: 65 6e 61 6d 65 20 53 61 76 65 64 4d 63 75 6e 6b ename SavedMcunk
2d40: 6e 6f 77 6e 20 3a 3a 6d 73 67 63 61 74 3a 3a 6d nown ::msgcat::m
2d50: 63 75 6e 6b 6e 6f 77 6e 0a 20 20 20 20 7d 20 2d cunknown. } -
2d60: 62 6f 64 79 20 7b 0a 09 6d 63 20 75 6e 6b 32 0a body {..mc unk2.
2d70: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 75 6e } -result un
2d80: 6b 6e 6f 77 6e 3a 66 6f 6f 3a 75 6e 6b 32 3a 5b known:foo:unk2:[
2d90: 69 6e 66 6f 20 6c 65 76 65 6c 5d 0a 0a 20 20 20 info level]..
2da0: 20 23 20 54 65 73 74 73 20 6d 73 67 63 61 74 2d # Tests msgcat-
2db0: 35 2e 2a 3a 20 5b 6d 63 6c 6f 61 64 5d 0a 0a 20 5.*: [mcload]..
2dc0: 20 20 20 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 variable loca
2dd0: 6c 65 73 20 7b 7b 7d 20 66 6f 6f 20 66 6f 6f 5f les {{} foo foo_
2de0: 42 41 52 20 66 6f 6f 5f 42 41 52 5f 62 61 7a 7d BAR foo_BAR_baz}
2df0: 0a 20 20 20 20 73 65 74 20 6d 73 67 64 69 72 20 . set msgdir
2e00: 5b 6d 61 6b 65 44 69 72 65 63 74 6f 72 79 20 6d [makeDirectory m
2e10: 73 67 64 69 72 5d 0a 20 20 20 20 66 6f 72 65 61 sgdir]. forea
2e20: 63 68 20 6c 6f 63 20 24 6c 6f 63 61 6c 65 73 20 ch loc $locales
2e30: 7b 0a 09 69 66 20 7b 20 24 6c 6f 63 20 65 71 20 {..if { $loc eq
2e40: 7b 7d 20 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 {} } {.. set
2e50: 6d 73 67 20 52 4f 4f 54 0a 09 7d 20 65 6c 73 65 msg ROOT..} else
2e60: 20 7b 0a 09 20 20 20 20 73 65 74 20 6d 73 67 20 {.. set msg
2e70: 5b 73 74 72 69 6e 67 20 74 6f 6c 6f 77 65 72 20 [string tolower
2e80: 24 6c 6f 63 5d 0a 09 7d 0a 09 6d 61 6b 65 46 69 $loc]..}..makeFi
2e90: 6c 65 20 5b 6c 69 73 74 20 3a 3a 6d 73 67 63 61 le [list ::msgca
2ea0: 74 3a 3a 6d 63 73 65 74 20 24 6c 6f 63 20 61 62 t::mcset $loc ab
2eb0: 63 20 61 62 63 2d 24 6c 6f 63 5d 20 24 6d 73 67 c abc-$loc] $msg
2ec0: 2e 6d 73 67 20 24 6d 73 67 64 69 72 0a 20 20 20 .msg $msgdir.
2ed0: 20 7d 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 }. variable
2ee0: 63 6f 75 6e 74 20 31 0a 20 20 20 20 66 6f 72 65 count 1. fore
2ef0: 61 63 68 20 6c 6f 63 20 7b 66 6f 6f 20 66 6f 6f ach loc {foo foo
2f00: 5f 42 41 52 20 66 6f 6f 5f 42 41 52 5f 62 61 7a _BAR foo_BAR_baz
2f10: 7d 20 7b 0a 09 74 65 73 74 20 6d 73 67 63 61 74 } {..test msgcat
2f20: 2d 35 2e 24 63 6f 75 6e 74 20 7b 6d 63 6c 6f 61 -5.$count {mcloa
2f30: 64 7d 20 2d 73 65 74 75 70 20 7b 0a 09 20 20 20 d} -setup {..
2f40: 20 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 6c 65 variable locale
2f50: 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 20 20 20 [mclocale]..
2f60: 20 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 6c 6f 63 ::msgcat::mcloc
2f70: 61 6c 65 20 22 22 0a 09 20 20 20 20 3a 3a 6d 73 ale "".. ::ms
2f80: 67 63 61 74 3a 3a 6d 63 6c 6f 61 64 65 64 6c 6f gcat::mcloadedlo
2f90: 63 61 6c 65 73 20 63 6c 65 61 72 0a 09 20 20 20 cales clear..
2fa0: 20 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 70 61 63 ::msgcat::mcpac
2fb0: 6b 61 67 65 63 6f 6e 66 69 67 20 75 6e 73 65 74 kageconfig unset
2fc0: 20 6d 63 66 6f 6c 64 65 72 0a 09 20 20 20 20 6d mcfolder.. m
2fd0: 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 0a 09 7d 20 clocale $loc..}
2fe0: 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 20 20 20 20 -cleanup {..
2ff0: 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 mclocale $locale
3000: 0a 09 20 20 20 20 3a 3a 6d 73 67 63 61 74 3a 3a .. ::msgcat::
3010: 6d 63 6c 6f 61 64 65 64 6c 6f 63 61 6c 65 73 20 mcloadedlocales
3020: 63 6c 65 61 72 0a 09 20 20 20 20 3a 3a 6d 73 67 clear.. ::msg
3030: 63 61 74 3a 3a 6d 63 70 61 63 6b 61 67 65 63 6f cat::mcpackageco
3040: 6e 66 69 67 20 75 6e 73 65 74 20 6d 63 66 6f 6c nfig unset mcfol
3050: 64 65 72 0a 09 7d 20 2d 62 6f 64 79 20 7b 0a 09 der..} -body {..
3060: 20 20 20 20 6d 63 6c 6f 61 64 20 24 6d 73 67 64 mcload $msgd
3070: 69 72 0a 09 7d 20 2d 72 65 73 75 6c 74 20 5b 65 ir..} -result [e
3080: 78 70 72 20 7b 20 24 63 6f 75 6e 74 2b 31 20 7d xpr { $count+1 }
3090: 5d 0a 09 69 6e 63 72 20 63 6f 75 6e 74 0a 20 20 ]..incr count.
30a0: 20 20 7d 0a 0a 20 20 20 20 23 20 45 76 65 6e 20 }.. # Even
30b0: 74 68 6f 75 67 68 20 66 6f 6f 5f 42 41 52 5f 6e though foo_BAR_n
30c0: 6f 74 65 78 69 73 74 20 64 6f 65 73 20 6e 6f 74 otexist does not
30d0: 20 65 78 69 73 74 2c 0a 20 20 20 20 23 20 66 6f exist,. # fo
30e0: 6f 5f 42 41 52 2c 20 66 6f 6f 20 61 6e 64 20 74 o_BAR, foo and t
30f0: 68 65 20 72 6f 6f 74 20 73 68 6f 75 6c 64 20 62 he root should b
3100: 65 20 6c 6f 61 64 65 64 2e 0a 09 74 65 73 74 20 e loaded...test
3110: 6d 73 67 63 61 74 2d 35 2e 34 20 7b 6d 63 6c 6f msgcat-5.4 {mclo
3120: 61 64 7d 20 2d 73 65 74 75 70 20 7b 0a 09 20 20 ad} -setup {..
3130: 20 20 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 6c variable local
3140: 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 20 20 e [mclocale]..
3150: 20 20 6d 63 6c 6f 63 61 6c 65 20 66 6f 6f 5f 42 mclocale foo_B
3160: 41 52 5f 6e 6f 74 65 78 69 73 74 0a 09 7d 20 2d AR_notexist..} -
3170: 63 6c 65 61 6e 75 70 20 7b 0a 09 20 20 20 20 6d cleanup {.. m
3180: 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a clocale $locale.
3190: 09 20 20 20 20 6d 63 6c 6f 61 64 65 64 6c 6f 63 . mcloadedloc
31a0: 61 6c 65 73 20 63 6c 65 61 72 0a 09 20 20 20 20 ales clear..
31b0: 6d 63 70 61 63 6b 61 67 65 63 6f 6e 66 69 67 20 mcpackageconfig
31c0: 75 6e 73 65 74 20 6d 63 66 6f 6c 64 65 72 0a 09 unset mcfolder..
31d0: 7d 20 2d 62 6f 64 79 20 7b 0a 09 20 20 20 20 6d } -body {.. m
31e0: 63 6c 6f 61 64 20 24 6d 73 67 64 69 72 0a 09 7d cload $msgdir..}
31f0: 20 2d 72 65 73 75 6c 74 20 33 0a 0a 09 74 65 73 -result 3...tes
3200: 74 20 6d 73 67 63 61 74 2d 35 2e 35 20 7b 6d 63 t msgcat-5.5 {mc
3210: 6c 6f 61 64 7d 20 2d 73 65 74 75 70 20 7b 0a 09 load} -setup {..
3220: 20 20 20 20 76 61 72 69 61 62 6c 65 20 6c 6f 63 variable loc
3230: 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 ale [mclocale]..
3240: 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 6e 6f 5f mclocale no_
3250: 46 49 5f 6e 6f 74 65 78 69 73 74 0a 09 7d 20 2d FI_notexist..} -
3260: 63 6c 65 61 6e 75 70 20 7b 0a 09 20 20 20 20 6d cleanup {.. m
3270: 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a clocale $locale.
3280: 09 20 20 20 20 6d 63 6c 6f 61 64 65 64 6c 6f 63 . mcloadedloc
3290: 61 6c 65 73 20 63 6c 65 61 72 0a 09 20 20 20 20 ales clear..
32a0: 6d 63 70 61 63 6b 61 67 65 63 6f 6e 66 69 67 20 mcpackageconfig
32b0: 75 6e 73 65 74 20 6d 63 66 6f 6c 64 65 72 0a 09 unset mcfolder..
32c0: 7d 20 2d 62 6f 64 79 20 7b 0a 09 20 20 20 20 6d } -body {.. m
32d0: 63 6c 6f 61 64 20 24 6d 73 67 64 69 72 0a 09 7d cload $msgdir..}
32e0: 20 2d 72 65 73 75 6c 74 20 31 0a 0a 09 74 65 73 -result 1...tes
32f0: 74 20 6d 73 67 63 61 74 2d 35 2e 36 20 7b 6d 63 t msgcat-5.6 {mc
3300: 6c 6f 61 64 7d 20 2d 73 65 74 75 70 20 7b 0a 09 load} -setup {..
3310: 20 20 20 20 76 61 72 69 61 62 6c 65 20 6c 6f 63 variable loc
3320: 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 ale [mclocale]..
3330: 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 66 6f 6f mclocale foo
3340: 0a 09 20 20 20 20 6d 63 6c 6f 61 64 20 24 6d 73 .. mcload $ms
3350: 67 64 69 72 0a 09 7d 20 2d 63 6c 65 61 6e 75 70 gdir..} -cleanup
3360: 20 7b 0a 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 {.. mclocale
3370: 20 24 6c 6f 63 61 6c 65 0a 09 7d 20 2d 62 6f 64 $locale..} -bod
3380: 79 20 7b 0a 09 20 20 20 20 6d 63 20 61 62 63 0a y {.. mc abc.
3390: 09 7d 20 2d 72 65 73 75 6c 74 20 61 62 63 2d 66 .} -result abc-f
33a0: 6f 6f 0a 0a 09 74 65 73 74 20 6d 73 67 63 61 74 oo...test msgcat
33b0: 2d 35 2e 37 20 7b 6d 63 6c 6f 61 64 7d 20 2d 73 -5.7 {mcload} -s
33c0: 65 74 75 70 20 7b 0a 09 20 20 20 20 76 61 72 69 etup {.. vari
33d0: 61 62 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c able locale [mcl
33e0: 6f 63 61 6c 65 5d 0a 09 20 20 20 20 6d 63 6c 6f ocale].. mclo
33f0: 63 61 6c 65 20 66 6f 6f 5f 42 41 52 0a 09 20 20 cale foo_BAR..
3400: 20 20 6d 63 6c 6f 61 64 20 24 6d 73 67 64 69 72 mcload $msgdir
3410: 0a 09 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 ..} -cleanup {..
3420: 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f mclocale $lo
3430: 63 61 6c 65 0a 09 7d 20 2d 62 6f 64 79 20 7b 0a cale..} -body {.
3440: 09 20 20 20 20 6d 63 20 61 62 63 0a 09 7d 20 2d . mc abc..} -
3450: 72 65 73 75 6c 74 20 61 62 63 2d 66 6f 6f 5f 42 result abc-foo_B
3460: 41 52 0a 0a 09 74 65 73 74 20 6d 73 67 63 61 74 AR...test msgcat
3470: 2d 35 2e 38 20 7b 6d 63 6c 6f 61 64 7d 20 2d 73 -5.8 {mcload} -s
3480: 65 74 75 70 20 7b 0a 09 20 20 20 20 76 61 72 69 etup {.. vari
3490: 61 62 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c able locale [mcl
34a0: 6f 63 61 6c 65 5d 0a 09 20 20 20 20 6d 63 6c 6f ocale].. mclo
34b0: 63 61 6c 65 20 66 6f 6f 5f 42 41 52 5f 62 61 7a cale foo_BAR_baz
34c0: 0a 09 20 20 20 20 6d 63 6c 6f 61 64 20 24 6d 73 .. mcload $ms
34d0: 67 64 69 72 0a 09 7d 20 2d 63 6c 65 61 6e 75 70 gdir..} -cleanup
34e0: 20 7b 0a 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 {.. mclocale
34f0: 20 24 6c 6f 63 61 6c 65 0a 09 7d 20 2d 62 6f 64 $locale..} -bod
3500: 79 20 7b 0a 09 20 20 20 20 6d 63 20 61 62 63 0a y {.. mc abc.
3510: 09 7d 20 2d 72 65 73 75 6c 74 20 61 62 63 2d 66 .} -result abc-f
3520: 6f 6f 5f 42 41 52 5f 62 61 7a 0a 0a 09 74 65 73 oo_BAR_baz...tes
3530: 74 20 6d 73 67 63 61 74 2d 35 2e 39 20 7b 6d 63 t msgcat-5.9 {mc
3540: 6c 6f 61 64 7d 20 2d 73 65 74 75 70 20 7b 0a 09 load} -setup {..
3550: 20 20 20 20 76 61 72 69 61 62 6c 65 20 6c 6f 63 variable loc
3560: 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 ale [mclocale]..
3570: 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 6e 6f 5f mclocale no_
3580: 46 49 5f 6e 6f 74 65 78 69 73 74 0a 09 20 20 20 FI_notexist..
3590: 20 6d 63 6c 6f 61 64 20 24 6d 73 67 64 69 72 0a mcload $msgdir.
35a0: 09 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 20 .} -cleanup {..
35b0: 20 20 20 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 mclocale $loc
35c0: 61 6c 65 0a 09 7d 20 2d 62 6f 64 79 20 7b 0a 09 ale..} -body {..
35d0: 20 20 20 20 6d 63 20 61 62 63 0a 09 7d 20 2d 72 mc abc..} -r
35e0: 65 73 75 6c 74 20 61 62 63 2d 0a 0a 09 74 65 73 esult abc-...tes
35f0: 74 20 6d 73 67 63 61 74 2d 35 2e 31 30 20 7b 6d t msgcat-5.10 {m
3600: 63 6c 6f 61 64 7d 20 2d 73 65 74 75 70 20 7b 0a cload} -setup {.
3610: 09 20 20 20 20 72 65 6e 61 6d 65 20 3a 3a 6d 73 . rename ::ms
3620: 67 63 61 74 3a 3a 6d 63 75 6e 6b 6e 6f 77 6e 20 gcat::mcunknown
3630: 53 61 76 65 64 4d 63 75 6e 6b 6e 6f 77 6e 0a 09 SavedMcunknown..
3640: 20 20 20 20 70 72 6f 63 20 3a 3a 6d 73 67 63 61 proc ::msgca
3650: 74 3a 3a 6d 63 75 6e 6b 6e 6f 77 6e 20 7b 64 6f t::mcunknown {do
3660: 6d 20 73 7d 20 7b 0a 09 09 72 65 74 75 72 6e 20 m s} {...return
3670: 75 6e 6b 6e 6f 77 6e 3a 24 64 6f 6d 3a 24 73 0a unknown:$dom:$s.
3680: 09 20 20 20 20 7d 0a 09 20 20 20 20 76 61 72 69 . }.. vari
3690: 61 62 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c able locale [mcl
36a0: 6f 63 61 6c 65 5d 0a 09 20 20 20 20 6d 63 6c 6f ocale].. mclo
36b0: 63 61 6c 65 20 6e 6f 5f 46 49 5f 6e 6f 74 65 78 cale no_FI_notex
36c0: 69 73 74 0a 09 20 20 20 20 6d 63 6c 6f 61 64 20 ist.. mcload
36d0: 24 6d 73 67 64 69 72 0a 09 7d 20 2d 63 6c 65 61 $msgdir..} -clea
36e0: 6e 75 70 20 7b 0a 09 20 20 20 20 6d 63 6c 6f 63 nup {.. mcloc
36f0: 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 09 20 20 20 ale $locale..
3700: 20 72 65 6e 61 6d 65 20 3a 3a 6d 73 67 63 61 74 rename ::msgcat
3710: 3a 3a 6d 63 75 6e 6b 6e 6f 77 6e 20 7b 7d 0a 09 ::mcunknown {}..
3720: 20 20 20 20 72 65 6e 61 6d 65 20 53 61 76 65 64 rename Saved
3730: 4d 63 75 6e 6b 6e 6f 77 6e 20 3a 3a 6d 73 67 63 Mcunknown ::msgc
3740: 61 74 3a 3a 6d 63 75 6e 6b 6e 6f 77 6e 0a 09 7d at::mcunknown..}
3750: 20 2d 62 6f 64 79 20 7b 0a 09 20 20 20 20 6d 63 -body {.. mc
3760: 20 64 65 66 0a 09 7d 20 2d 72 65 73 75 6c 74 20 def..} -result
3770: 75 6e 6b 6e 6f 77 6e 3a 6e 6f 5f 66 69 5f 6e 6f unknown:no_fi_no
3780: 74 65 78 69 73 74 3a 64 65 66 0a 0a 09 74 65 73 texist:def...tes
3790: 74 20 6d 73 67 63 61 74 2d 35 2e 31 31 20 7b 6d t msgcat-5.11 {m
37a0: 63 70 61 63 6b 61 67 65 63 6f 6e 66 69 67 20 6d cpackageconfig m
37b0: 63 66 6f 6c 64 65 72 7d 20 2d 73 65 74 75 70 20 cfolder} -setup
37c0: 7b 0a 09 20 20 20 20 76 61 72 69 61 62 6c 65 20 {.. variable
37d0: 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 locale [mclocale
37e0: 5d 0a 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 ].. mclocale
37f0: 22 22 0a 09 20 20 20 20 6d 63 6c 6f 61 64 65 64 "".. mcloaded
3800: 6c 6f 63 61 6c 65 73 20 63 6c 65 61 72 0a 09 20 locales clear..
3810: 20 20 20 6d 63 70 61 63 6b 61 67 65 63 6f 6e 66 mcpackageconf
3820: 69 67 20 75 6e 73 65 74 20 6d 63 66 6f 6c 64 65 ig unset mcfolde
3830: 72 0a 09 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a r..} -cleanup {.
3840: 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 24 6c . mclocale $l
3850: 6f 63 61 6c 65 0a 09 20 20 20 20 6d 63 6c 6f 61 ocale.. mcloa
3860: 64 65 64 6c 6f 63 61 6c 65 73 20 63 6c 65 61 72 dedlocales clear
3870: 0a 09 20 20 20 20 6d 63 70 61 63 6b 61 67 65 63 .. mcpackagec
3880: 6f 6e 66 69 67 20 75 6e 73 65 74 20 6d 63 66 6f onfig unset mcfo
3890: 6c 64 65 72 0a 09 7d 20 2d 62 6f 64 79 20 7b 0a lder..} -body {.
38a0: 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 66 6f . mclocale fo
38b0: 6f 0a 09 20 20 20 20 6d 63 70 61 63 6b 61 67 65 o.. mcpackage
38c0: 63 6f 6e 66 69 67 20 73 65 74 20 6d 63 66 6f 6c config set mcfol
38d0: 64 65 72 20 24 6d 73 67 64 69 72 0a 09 7d 20 2d der $msgdir..} -
38e0: 72 65 73 75 6c 74 20 32 0a 0a 20 20 20 20 66 6f result 2.. fo
38f0: 72 65 61 63 68 20 6c 6f 63 20 24 6c 6f 63 61 6c reach loc $local
3900: 65 73 20 7b 0a 09 69 66 20 7b 20 24 6c 6f 63 20 es {..if { $loc
3910: 65 71 20 7b 7d 20 7d 20 7b 0a 09 20 20 20 20 73 eq {} } {.. s
3920: 65 74 20 6d 73 67 20 52 4f 4f 54 0a 09 7d 20 65 et msg ROOT..} e
3930: 6c 73 65 20 7b 0a 09 20 20 20 20 73 65 74 20 6d lse {.. set m
3940: 73 67 20 5b 73 74 72 69 6e 67 20 74 6f 6c 6f 77 sg [string tolow
3950: 65 72 20 24 6c 6f 63 5d 0a 09 7d 0a 09 72 65 6d er $loc]..}..rem
3960: 6f 76 65 46 69 6c 65 20 24 6d 73 67 2e 6d 73 67 oveFile $msg.msg
3970: 20 24 6d 73 67 64 69 72 0a 20 20 20 20 7d 0a 20 $msgdir. }.
3980: 20 20 20 72 65 6d 6f 76 65 44 69 72 65 63 74 6f removeDirecto
3990: 72 79 20 6d 73 67 64 69 72 0a 0a 20 20 20 20 23 ry msgdir.. #
39a0: 20 54 65 73 74 73 20 6d 73 67 63 61 74 2d 36 2e Tests msgcat-6.
39b0: 2a 3a 20 5b 6d 63 73 65 74 5d 2c 20 5b 6d 63 5d *: [mcset], [mc]
39c0: 20 6e 61 6d 65 73 70 61 63 65 20 69 6e 68 65 72 namespace inher
39d0: 69 74 61 6e 63 65 0a 23 0a 23 20 54 65 73 74 20 itance.#.# Test
39e0: 6d 63 73 65 74 20 61 6e 64 20 6d 63 2c 20 65 6e mcset and mc, en
39f0: 73 75 72 69 6e 67 20 74 68 61 74 20 72 65 73 6f suring that reso
3a00: 6c 75 74 69 6f 6e 20 66 6f 72 20 6d 65 73 73 61 lution for messa
3a10: 67 65 73 0a 23 20 70 72 6f 63 65 65 64 73 20 66 ges.# proceeds f
3a20: 72 6f 6d 20 74 68 65 20 63 75 72 72 65 6e 74 20 rom the current
3a30: 6e 73 20 74 6f 20 69 74 73 20 70 61 72 65 6e 74 ns to its parent
3a40: 20 61 6e 64 20 73 6f 20 6f 6e 20 74 6f 20 74 68 and so on to th
3a50: 65 0a 23 20 67 6c 6f 62 61 6c 20 6e 73 2e 0a 23 e.# global ns..#
3a60: 0a 23 20 44 6f 20 74 68 69 73 20 66 6f 72 20 74 .# Do this for t
3a70: 68 65 20 31 32 20 70 65 72 6d 75 74 61 74 69 6f he 12 permutatio
3a80: 6e 73 20 6f 66 0a 23 20 20 20 20 20 6c 6f 63 61 ns of.# loca
3a90: 6c 65 73 3a 20 66 6f 6f 0a 23 20 20 20 20 20 6e les: foo.# n
3aa0: 61 6d 65 73 70 61 63 65 73 3a 20 66 6f 6f 20 66 amespaces: foo f
3ab0: 6f 6f 3a 3a 62 61 72 20 66 6f 6f 3a 3a 62 61 72 oo::bar foo::bar
3ac0: 3a 3a 62 61 7a 0a 23 20 20 20 20 20 73 74 72 69 ::baz.# stri
3ad0: 6e 67 73 3a 20 7b 6f 76 31 20 6f 76 32 20 6f 76 ngs: {ov1 ov2 ov
3ae0: 33 20 6f 76 34 7d 0a 23 20 20 20 20 20 6e 61 6d 3 ov4}.# nam
3af0: 65 73 70 61 63 65 20 3a 3a 66 6f 6f 20 20 20 20 espace ::foo
3b00: 20 20 20 20 20 20 20 20 64 65 66 69 6e 65 73 20 defines
3b10: 6f 76 31 2c 20 6f 76 32 2c 20 6f 76 33 0a 23 20 ov1, ov2, ov3.#
3b20: 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 3a 3a namespace ::
3b30: 66 6f 6f 3a 3a 62 61 72 20 20 20 20 20 20 20 64 foo::bar d
3b40: 65 66 69 6e 65 73 20 20 20 20 20 20 6f 76 32 2c efines ov2,
3b50: 20 6f 76 33 0a 23 20 20 20 20 20 6e 61 6d 65 73 ov3.# names
3b60: 70 61 63 65 20 3a 3a 66 6f 6f 3a 3a 62 61 72 3a pace ::foo::bar:
3b70: 3a 62 61 7a 20 20 64 65 66 69 6e 65 73 20 20 20 :baz defines
3b80: 20 20 20 20 20 20 20 20 6f 76 33 0a 23 0a 23 20 ov3.#.#
3b90: 20 20 20 20 6f 76 34 20 69 73 20 6e 6f 74 20 64 ov4 is not d
3ba0: 65 66 69 6e 65 64 20 69 6e 20 61 6e 79 20 6e 61 efined in any na
3bb0: 6d 65 73 70 61 63 65 2e 0a 23 0a 23 20 53 6f 2c mespace..#.# So,
3bc0: 0a 23 20 20 20 20 20 6f 76 33 20 73 68 6f 75 6c .# ov3 shoul
3bd0: 64 20 62 65 20 72 65 73 6f 6c 76 65 64 20 69 6e d be resolved in
3be0: 20 3a 3a 66 6f 6f 3a 3a 62 61 72 3a 3a 62 61 7a ::foo::bar::baz
3bf0: 2c 20 3a 3a 66 6f 6f 3a 3a 62 61 72 2c 20 3a 3a , ::foo::bar, ::
3c00: 66 6f 6f 3b 0a 23 20 20 20 20 20 6f 76 32 20 73 foo;.# ov2 s
3c10: 68 6f 75 6c 64 20 62 65 20 72 65 73 6f 6c 76 65 hould be resolve
3c20: 64 20 69 6e 20 3a 3a 66 6f 6f 2c 20 3a 3a 66 6f d in ::foo, ::fo
3c30: 6f 3a 3a 62 61 72 0a 23 20 20 20 20 20 6f 76 31 o::bar.# ov1
3c40: 20 73 68 6f 75 6c 64 20 62 65 20 72 65 73 6f 6c should be resol
3c50: 76 65 64 20 69 6e 20 3a 3a 66 6f 6f 0a 23 20 20 ved in ::foo.#
3c60: 20 20 20 6f 76 34 20 73 68 6f 75 6c 64 20 62 65 ov4 should be
3c70: 20 72 65 73 6f 6c 76 65 64 20 69 6e 20 6e 6f 6e resolved in non
3c80: 65 2c 20 61 6e 64 20 63 61 6c 6c 20 6d 63 75 6e e, and call mcun
3c90: 6b 6e 6f 77 6e 0a 23 0a 0a 20 20 20 20 76 61 72 known.#.. var
3ca0: 69 61 62 6c 65 20 72 65 73 75 6c 74 0a 20 20 20 iable result.
3cb0: 20 61 72 72 61 79 20 73 65 74 20 72 65 73 75 6c array set resul
3cc0: 74 20 7b 0a 09 66 6f 6f 2c 6f 76 31 20 6f 76 31 t {..foo,ov1 ov1
3cd0: 5f 66 6f 6f 20 66 6f 6f 2c 6f 76 32 20 6f 76 32 _foo foo,ov2 ov2
3ce0: 5f 66 6f 6f 20 66 6f 6f 2c 6f 76 33 20 6f 76 33 _foo foo,ov3 ov3
3cf0: 5f 66 6f 6f 20 66 6f 6f 2c 6f 76 34 20 6f 76 34 _foo foo,ov4 ov4
3d00: 0a 09 66 6f 6f 3a 3a 62 61 72 2c 6f 76 31 20 6f ..foo::bar,ov1 o
3d10: 76 31 5f 66 6f 6f 20 66 6f 6f 3a 3a 62 61 72 2c v1_foo foo::bar,
3d20: 6f 76 32 20 6f 76 32 5f 66 6f 6f 5f 62 61 72 0a ov2 ov2_foo_bar.
3d30: 09 66 6f 6f 3a 3a 62 61 72 2c 6f 76 33 20 6f 76 .foo::bar,ov3 ov
3d40: 33 5f 66 6f 6f 5f 62 61 72 20 66 6f 6f 3a 3a 62 3_foo_bar foo::b
3d50: 61 72 2c 6f 76 34 20 6f 76 34 20 66 6f 6f 3a 3a ar,ov4 ov4 foo::
3d60: 62 61 72 3a 3a 62 61 7a 2c 6f 76 31 20 6f 76 31 bar::baz,ov1 ov1
3d70: 5f 66 6f 6f 0a 09 66 6f 6f 3a 3a 62 61 72 3a 3a _foo..foo::bar::
3d80: 62 61 7a 2c 6f 76 32 20 6f 76 32 5f 66 6f 6f 5f baz,ov2 ov2_foo_
3d90: 62 61 72 20 66 6f 6f 3a 3a 62 61 72 3a 3a 62 61 bar foo::bar::ba
3da0: 7a 2c 6f 76 33 20 6f 76 33 5f 66 6f 6f 5f 62 61 z,ov3 ov3_foo_ba
3db0: 72 5f 62 61 7a 0a 09 66 6f 6f 3a 3a 62 61 72 3a r_baz..foo::bar:
3dc0: 3a 62 61 7a 2c 6f 76 34 20 6f 76 34 0a 20 20 20 :baz,ov4 ov4.
3dd0: 20 7d 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 }. variable
3de0: 63 6f 75 6e 74 20 31 0a 20 20 20 20 76 61 72 69 count 1. vari
3df0: 61 62 6c 65 20 6e 73 0a 20 20 20 20 66 6f 72 65 able ns. fore
3e00: 61 63 68 20 6e 73 20 7b 66 6f 6f 20 66 6f 6f 3a ach ns {foo foo:
3e10: 3a 62 61 72 20 66 6f 6f 3a 3a 62 61 72 3a 3a 62 :bar foo::bar::b
3e20: 61 7a 7d 20 7b 0a 09 66 6f 72 65 61 63 68 20 73 az} {..foreach s
3e30: 74 72 69 6e 67 20 7b 6f 76 31 20 6f 76 32 20 6f tring {ov1 ov2 o
3e40: 76 33 20 6f 76 34 7d 20 7b 0a 09 20 20 20 20 74 v3 ov4} {.. t
3e50: 65 73 74 20 6d 73 67 63 61 74 2d 36 2e 24 63 6f est msgcat-6.$co
3e60: 75 6e 74 20 7b 6d 63 73 65 74 2c 20 6f 76 65 72 unt {mcset, over
3e70: 6c 61 70 7d 20 2d 73 65 74 75 70 20 7b 0a 09 09 lap} -setup {...
3e80: 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 66 namespace eval f
3e90: 6f 6f 20 7b 0a 09 09 20 20 20 20 3a 3a 6d 73 67 oo {... ::msg
3ea0: 63 61 74 3a 3a 6d 63 73 65 74 20 66 6f 6f 20 6f cat::mcset foo o
3eb0: 76 31 20 6f 76 31 5f 66 6f 6f 0a 09 09 20 20 20 v1 ov1_foo...
3ec0: 20 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 73 65 74 ::msgcat::mcset
3ed0: 20 66 6f 6f 20 6f 76 32 20 6f 76 32 5f 66 6f 6f foo ov2 ov2_foo
3ee0: 0a 09 09 20 20 20 20 3a 3a 6d 73 67 63 61 74 3a ... ::msgcat:
3ef0: 3a 6d 63 73 65 74 20 66 6f 6f 20 6f 76 33 20 6f :mcset foo ov3 o
3f00: 76 33 5f 66 6f 6f 0a 09 09 20 20 20 20 6e 61 6d v3_foo... nam
3f10: 65 73 70 61 63 65 20 65 76 61 6c 20 62 61 72 20 espace eval bar
3f20: 7b 0a 09 09 09 3a 3a 6d 73 67 63 61 74 3a 3a 6d {....::msgcat::m
3f30: 63 73 65 74 20 66 6f 6f 20 6f 76 32 20 6f 76 32 cset foo ov2 ov2
3f40: 5f 66 6f 6f 5f 62 61 72 0a 09 09 09 3a 3a 6d 73 _foo_bar....::ms
3f50: 67 63 61 74 3a 3a 6d 63 73 65 74 20 66 6f 6f 20 gcat::mcset foo
3f60: 6f 76 33 20 6f 76 33 5f 66 6f 6f 5f 62 61 72 0a ov3 ov3_foo_bar.
3f70: 09 09 09 6e 61 6d 65 73 70 61 63 65 20 65 76 61 ...namespace eva
3f80: 6c 20 62 61 7a 20 7b 0a 09 09 09 20 20 20 20 3a l baz {.... :
3f90: 3a 6d 73 67 63 61 74 3a 3a 6d 63 73 65 74 20 66 :msgcat::mcset f
3fa0: 6f 6f 20 6f 76 33 20 22 6f 76 33 5f 66 6f 6f 5f oo ov3 "ov3_foo_
3fb0: 62 61 72 5f 62 61 7a 22 0a 09 09 09 7d 0a 09 09 bar_baz"....}...
3fc0: 20 20 20 20 7d 0a 0a 09 09 7d 0a 09 09 76 61 72 }....}...var
3fd0: 69 61 62 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 iable locale [mc
3fe0: 6c 6f 63 61 6c 65 5d 0a 09 09 6d 63 6c 6f 63 61 locale]...mcloca
3ff0: 6c 65 20 66 6f 6f 0a 09 20 20 20 20 7d 20 2d 63 le foo.. } -c
4000: 6c 65 61 6e 75 70 20 7b 0a 09 09 6d 63 6c 6f 63 leanup {...mcloc
4010: 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 09 09 6e 61 ale $locale...na
4020: 6d 65 73 70 61 63 65 20 64 65 6c 65 74 65 20 66 mespace delete f
4030: 6f 6f 0a 09 20 20 20 20 7d 20 2d 62 6f 64 79 20 oo.. } -body
4040: 7b 0a 09 09 6e 61 6d 65 73 70 61 63 65 20 65 76 {...namespace ev
4050: 61 6c 20 24 6e 73 20 5b 6c 69 73 74 20 3a 3a 6d al $ns [list ::m
4060: 73 67 63 61 74 3a 3a 6d 63 20 24 73 74 72 69 6e sgcat::mc $strin
4070: 67 5d 0a 09 20 20 20 20 7d 20 2d 72 65 73 75 6c g].. } -resul
4080: 74 20 24 72 65 73 75 6c 74 28 24 6e 73 2c 24 73 t $result($ns,$s
4090: 74 72 69 6e 67 29 0a 09 20 20 20 20 69 6e 63 72 tring).. incr
40a0: 20 63 6f 75 6e 74 0a 09 7d 0a 20 20 20 20 7d 0a count..}. }.
40b0: 0a 20 20 20 20 23 20 54 65 73 74 73 20 6d 73 67 . # Tests msg
40c0: 63 61 74 2d 37 2e 2a 3a 20 5b 6d 63 5d 20 65 78 cat-7.*: [mc] ex
40d0: 74 72 61 20 61 72 67 73 20 70 72 6f 63 65 73 73 tra args process
40e0: 65 64 20 62 79 20 5b 66 6f 72 6d 61 74 5d 0a 0a ed by [format]..
40f0: 20 20 20 20 74 65 73 74 20 6d 73 67 63 61 74 2d test msgcat-
4100: 37 2e 31 20 7b 6d 63 20 65 78 74 72 61 20 61 72 7.1 {mc extra ar
4110: 67 73 20 67 6f 20 74 68 72 6f 75 67 68 20 74 6f gs go through to
4120: 20 66 6f 72 6d 61 74 7d 20 2d 73 65 74 75 70 20 format} -setup
4130: 7b 0a 09 6d 63 73 65 74 20 66 6f 6f 20 66 6f 72 {..mcset foo for
4140: 6d 61 74 31 20 22 74 68 69 73 20 69 73 20 61 20 mat1 "this is a
4150: 74 65 73 74 22 0a 09 6d 63 73 65 74 20 66 6f 6f test"..mcset foo
4160: 20 66 6f 72 6d 61 74 32 20 22 74 68 69 73 20 69 format2 "this i
4170: 73 20 61 20 25 73 22 0a 09 6d 63 73 65 74 20 66 s a %s"..mcset f
4180: 6f 6f 20 66 6f 72 6d 61 74 33 20 22 74 68 69 73 oo format3 "this
4190: 20 69 73 20 61 20 25 73 20 25 73 22 0a 09 76 61 is a %s %s"..va
41a0: 72 69 61 62 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d riable locale [m
41b0: 63 6c 6f 63 61 6c 65 5d 0a 09 6d 63 6c 6f 63 61 clocale]..mcloca
41c0: 6c 65 20 66 6f 6f 0a 20 20 20 20 7d 20 2d 63 6c le foo. } -cl
41d0: 65 61 6e 75 70 20 7b 0a 09 6d 63 6c 6f 63 61 6c eanup {..mclocal
41e0: 65 20 24 6c 6f 63 61 6c 65 0a 20 20 20 20 7d 20 e $locale. }
41f0: 2d 62 6f 64 79 20 7b 0a 09 6d 63 20 66 6f 72 6d -body {..mc form
4200: 61 74 31 20 22 67 6f 6f 64 20 74 65 73 74 22 0a at1 "good test".
4210: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 22 74 } -result "t
4220: 68 69 73 20 69 73 20 61 20 74 65 73 74 22 0a 0a his is a test"..
4230: 20 20 20 20 74 65 73 74 20 6d 73 67 63 61 74 2d test msgcat-
4240: 37 2e 32 20 7b 6d 63 20 65 78 74 72 61 20 61 72 7.2 {mc extra ar
4250: 67 73 20 67 6f 20 74 68 72 6f 75 67 68 20 74 6f gs go through to
4260: 20 66 6f 72 6d 61 74 7d 20 2d 73 65 74 75 70 20 format} -setup
4270: 7b 0a 09 6d 63 73 65 74 20 66 6f 6f 20 66 6f 72 {..mcset foo for
4280: 6d 61 74 31 20 22 74 68 69 73 20 69 73 20 61 20 mat1 "this is a
4290: 74 65 73 74 22 0a 09 6d 63 73 65 74 20 66 6f 6f test"..mcset foo
42a0: 20 66 6f 72 6d 61 74 32 20 22 74 68 69 73 20 69 format2 "this i
42b0: 73 20 61 20 25 73 22 0a 09 6d 63 73 65 74 20 66 s a %s"..mcset f
42c0: 6f 6f 20 66 6f 72 6d 61 74 33 20 22 74 68 69 73 oo format3 "this
42d0: 20 69 73 20 61 20 25 73 20 25 73 22 0a 09 76 61 is a %s %s"..va
42e0: 72 69 61 62 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d riable locale [m
42f0: 63 6c 6f 63 61 6c 65 5d 0a 09 6d 63 6c 6f 63 61 clocale]..mcloca
4300: 6c 65 20 66 6f 6f 0a 20 20 20 20 7d 20 2d 63 6c le foo. } -cl
4310: 65 61 6e 75 70 20 7b 0a 09 6d 63 6c 6f 63 61 6c eanup {..mclocal
4320: 65 20 24 6c 6f 63 61 6c 65 0a 20 20 20 20 7d 20 e $locale. }
4330: 2d 62 6f 64 79 20 7b 0a 09 6d 63 20 66 6f 72 6d -body {..mc form
4340: 61 74 32 20 22 67 6f 6f 64 20 74 65 73 74 22 0a at2 "good test".
4350: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 22 74 } -result "t
4360: 68 69 73 20 69 73 20 61 20 67 6f 6f 64 20 74 65 his is a good te
4370: 73 74 22 0a 0a 20 20 20 20 74 65 73 74 20 6d 73 st".. test ms
4380: 67 63 61 74 2d 37 2e 33 20 7b 6d 63 20 65 72 72 gcat-7.3 {mc err
4390: 6f 72 73 20 66 72 6f 6d 20 66 6f 72 6d 61 74 20 ors from format
43a0: 61 72 65 20 70 72 6f 70 61 67 61 74 65 64 7d 20 are propagated}
43b0: 2d 73 65 74 75 70 20 7b 0a 09 6d 63 73 65 74 20 -setup {..mcset
43c0: 66 6f 6f 20 66 6f 72 6d 61 74 31 20 22 74 68 69 foo format1 "thi
43d0: 73 20 69 73 20 61 20 74 65 73 74 22 0a 09 6d 63 s is a test"..mc
43e0: 73 65 74 20 66 6f 6f 20 66 6f 72 6d 61 74 32 20 set foo format2
43f0: 22 74 68 69 73 20 69 73 20 61 20 25 73 22 0a 09 "this is a %s"..
4400: 6d 63 73 65 74 20 66 6f 6f 20 66 6f 72 6d 61 74 mcset foo format
4410: 33 20 22 74 68 69 73 20 69 73 20 61 20 25 73 20 3 "this is a %s
4420: 25 73 22 0a 09 76 61 72 69 61 62 6c 65 20 6c 6f %s"..variable lo
4430: 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a cale [mclocale].
4440: 09 6d 63 6c 6f 63 61 6c 65 20 66 6f 6f 0a 20 20 .mclocale foo.
4450: 20 20 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 } -cleanup {..
4460: 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 mclocale $locale
4470: 0a 20 20 20 20 7d 20 2d 62 6f 64 79 20 7b 0a 09 . } -body {..
4480: 63 61 74 63 68 20 7b 6d 63 20 66 6f 72 6d 61 74 catch {mc format
4490: 33 20 22 67 6f 6f 64 20 74 65 73 74 22 7d 0a 20 3 "good test"}.
44a0: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 31 0a 0a } -result 1..
44b0: 20 20 20 20 74 65 73 74 20 6d 73 67 63 61 74 2d test msgcat-
44c0: 37 2e 34 20 7b 6d 63 2c 20 65 78 74 72 61 20 61 7.4 {mc, extra a
44d0: 72 67 73 20 61 72 65 20 67 69 76 65 6e 20 74 6f rgs are given to
44e0: 20 75 6e 6b 6e 6f 77 6e 7d 20 2d 73 65 74 75 70 unknown} -setup
44f0: 20 7b 0a 09 6d 63 73 65 74 20 66 6f 6f 20 66 6f {..mcset foo fo
4500: 72 6d 61 74 31 20 22 74 68 69 73 20 69 73 20 61 rmat1 "this is a
4510: 20 74 65 73 74 22 0a 09 6d 63 73 65 74 20 66 6f test"..mcset fo
4520: 6f 20 66 6f 72 6d 61 74 32 20 22 74 68 69 73 20 o format2 "this
4530: 69 73 20 61 20 25 73 22 0a 09 6d 63 73 65 74 20 is a %s"..mcset
4540: 66 6f 6f 20 66 6f 72 6d 61 74 33 20 22 74 68 69 foo format3 "thi
4550: 73 20 69 73 20 61 20 25 73 20 25 73 22 0a 09 76 s is a %s %s"..v
4560: 61 72 69 61 62 6c 65 20 6c 6f 63 61 6c 65 20 5b ariable locale [
4570: 6d 63 6c 6f 63 61 6c 65 5d 0a 09 6d 63 6c 6f 63 mclocale]..mcloc
4580: 61 6c 65 20 66 6f 6f 0a 20 20 20 20 7d 20 2d 63 ale foo. } -c
4590: 6c 65 61 6e 75 70 20 7b 0a 09 6d 63 6c 6f 63 61 leanup {..mcloca
45a0: 6c 65 20 24 6c 6f 63 61 6c 65 0a 20 20 20 20 7d le $locale. }
45b0: 20 2d 62 6f 64 79 20 7b 0a 09 6d 63 20 22 74 68 -body {..mc "th
45c0: 69 73 20 69 73 20 61 20 25 73 22 20 22 67 6f 6f is is a %s" "goo
45d0: 64 20 74 65 73 74 22 0a 20 20 20 20 7d 20 2d 72 d test". } -r
45e0: 65 73 75 6c 74 20 22 74 68 69 73 20 69 73 20 61 esult "this is a
45f0: 20 67 6f 6f 64 20 74 65 73 74 22 0a 0a 20 20 20 good test"..
4600: 20 23 20 54 65 73 74 73 20 6d 73 67 63 61 74 2d # Tests msgcat-
4610: 38 2e 2a 3a 20 5b 6d 63 66 6c 73 65 74 5d 0a 0a 8.*: [mcflset]..
4620: 20 20 20 20 73 65 74 20 6d 73 67 64 69 72 31 20 set msgdir1
4630: 5b 6d 61 6b 65 44 69 72 65 63 74 6f 72 79 20 6d [makeDirectory m
4640: 73 67 64 69 72 31 5d 0a 20 20 20 20 6d 61 6b 65 sgdir1]. make
4650: 46 69 6c 65 20 7b 3a 3a 6d 73 67 63 61 74 3a 3a File {::msgcat::
4660: 6d 63 66 6c 73 65 74 20 6b 31 20 76 31 7d 20 6c mcflset k1 v1} l
4670: 31 2e 6d 73 67 20 24 6d 73 67 64 69 72 31 0a 0a 1.msg $msgdir1..
4680: 09 74 65 73 74 20 6d 73 67 63 61 74 2d 38 2e 31 .test msgcat-8.1
4690: 20 7b 6d 63 66 6c 73 65 74 7d 20 2d 73 65 74 75 {mcflset} -setu
46a0: 70 20 7b 0a 09 20 20 20 20 76 61 72 69 61 62 6c p {.. variabl
46b0: 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 e locale [mcloca
46c0: 6c 65 5d 0a 09 20 20 20 20 6d 63 6c 6f 63 61 6c le].. mclocal
46d0: 65 20 6c 31 0a 09 20 20 20 20 6d 63 6c 6f 61 64 e l1.. mcload
46e0: 20 24 6d 73 67 64 69 72 31 0a 09 7d 20 2d 63 6c $msgdir1..} -cl
46f0: 65 61 6e 75 70 20 7b 0a 09 20 20 20 20 6d 63 6c eanup {.. mcl
4700: 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 09 7d ocale $locale..}
4710: 20 2d 62 6f 64 79 20 7b 0a 09 20 20 20 20 6d 63 -body {.. mc
4720: 20 6b 31 0a 09 7d 20 2d 72 65 73 75 6c 74 20 76 k1..} -result v
4730: 31 0a 0a 20 20 20 20 72 65 6d 6f 76 65 46 69 6c 1.. removeFil
4740: 65 20 6c 31 2e 6d 73 67 20 24 6d 73 67 64 69 72 e l1.msg $msgdir
4750: 31 0a 20 20 20 20 72 65 6d 6f 76 65 44 69 72 65 1. removeDire
4760: 63 74 6f 72 79 20 6d 73 67 64 69 72 31 0a 0a 20 ctory msgdir1..
4770: 20 20 20 73 65 74 20 6d 73 67 64 69 72 32 20 5b set msgdir2 [
4780: 6d 61 6b 65 44 69 72 65 63 74 6f 72 79 20 6d 73 makeDirectory ms
4790: 67 64 69 72 32 5d 0a 20 20 20 20 73 65 74 20 6d gdir2]. set m
47a0: 73 67 64 69 72 33 20 5b 6d 61 6b 65 44 69 72 65 sgdir3 [makeDire
47b0: 63 74 6f 72 79 20 6d 73 67 64 69 72 33 5d 0a 20 ctory msgdir3].
47c0: 20 20 20 6d 61 6b 65 46 69 6c 65 20 22 3a 3a 6d makeFile "::m
47d0: 73 67 63 61 74 3a 3a 6d 63 66 6c 73 65 74 20 6b sgcat::mcflset k
47e0: 32 20 76 32 20 3b 20 3a 3a 6d 73 67 63 61 74 3a 2 v2 ; ::msgcat:
47f0: 3a 6d 63 6c 6f 61 64 20 5b 6c 69 73 74 20 24 6d :mcload [list $m
4800: 73 67 64 69 72 33 5d 22 5c 0a 09 20 20 20 20 6c sgdir3]"\.. l
4810: 32 2e 6d 73 67 20 24 6d 73 67 64 69 72 32 0a 20 2.msg $msgdir2.
4820: 20 20 20 6d 61 6b 65 46 69 6c 65 20 7b 3a 3a 6d makeFile {::m
4830: 73 67 63 61 74 3a 3a 6d 63 66 6c 73 65 74 20 6b sgcat::mcflset k
4840: 33 20 76 33 20 3b 20 3a 3a 6d 73 67 63 61 74 3a 3 v3 ; ::msgcat:
4850: 3a 6d 63 66 6c 6d 73 65 74 20 7b 6b 34 20 76 34 :mcflmset {k4 v4
4860: 20 6b 35 20 76 35 7d 7d 20 6c 32 2e 6d 73 67 20 k5 v5}} l2.msg
4870: 24 6d 73 67 64 69 72 33 0a 0a 09 23 20 63 68 61 $msgdir3...# cha
4880: 69 6e 65 64 20 6d 63 6c 6f 61 64 0a 09 74 65 73 ined mcload..tes
4890: 74 20 6d 73 67 63 61 74 2d 38 2e 32 20 7b 6d 63 t msgcat-8.2 {mc
48a0: 66 6c 73 65 74 2f 6d 63 66 6c 6d 73 65 74 7d 20 flset/mcflmset}
48b0: 2d 73 65 74 75 70 20 7b 0a 09 20 20 20 20 76 61 -setup {.. va
48c0: 72 69 61 62 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d riable locale [m
48d0: 63 6c 6f 63 61 6c 65 5d 0a 09 20 20 20 20 6d 63 clocale].. mc
48e0: 6c 6f 63 61 6c 65 20 6c 32 0a 09 20 20 20 20 6d locale l2.. m
48f0: 63 6c 6f 61 64 20 24 6d 73 67 64 69 72 32 0a 09 cload $msgdir2..
4900: 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 20 20 } -cleanup {..
4910: 20 20 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 mclocale $loca
4920: 6c 65 0a 09 7d 20 2d 62 6f 64 79 20 7b 0a 09 20 le..} -body {..
4930: 20 20 20 72 65 74 75 72 6e 20 5b 6d 63 20 6b 32 return [mc k2
4940: 5d 5b 6d 63 20 6b 33 5d 2d 2d 5b 6d 63 20 6b 34 ][mc k3]--[mc k4
4950: 5d 5b 6d 63 20 6b 35 5d 0a 09 7d 20 2d 72 65 73 ][mc k5]..} -res
4960: 75 6c 74 20 76 32 76 33 2d 2d 76 34 76 35 0a 0a ult v2v3--v4v5..
4970: 20 20 20 20 72 65 6d 6f 76 65 46 69 6c 65 20 6c removeFile l
4980: 32 2e 6d 73 67 20 24 6d 73 67 64 69 72 32 0a 20 2.msg $msgdir2.
4990: 20 20 20 72 65 6d 6f 76 65 44 69 72 65 63 74 6f removeDirecto
49a0: 72 79 20 6d 73 67 64 69 72 32 0a 20 20 20 20 72 ry msgdir2. r
49b0: 65 6d 6f 76 65 44 69 72 65 63 74 6f 72 79 20 6d emoveDirectory m
49c0: 73 67 64 69 72 33 0a 0a 20 20 20 20 23 20 54 65 sgdir3.. # Te
49d0: 73 74 73 20 6d 73 67 63 61 74 2d 39 2e 2a 3a 20 sts msgcat-9.*:
49e0: 5b 6d 63 65 78 69 73 74 73 5d 0a 0a 09 74 65 73 [mcexists]...tes
49f0: 74 20 6d 73 67 63 61 74 2d 39 2e 31 20 7b 6d 63 t msgcat-9.1 {mc
4a00: 65 78 69 73 74 73 20 6e 6f 20 70 61 72 61 6d 65 exists no parame
4a10: 74 65 72 7d 20 2d 62 6f 64 79 20 7b 0a 09 20 20 ter} -body {..
4a20: 20 20 6d 63 65 78 69 73 74 73 0a 09 7d 20 2d 72 mcexists..} -r
4a30: 65 74 75 72 6e 43 6f 64 65 73 20 31 5c 0a 09 2d eturnCodes 1\..-
4a40: 72 65 73 75 6c 74 20 7b 77 72 6f 6e 67 20 23 20 result {wrong #
4a50: 61 72 67 73 3a 20 73 68 6f 75 6c 64 20 62 65 20 args: should be
4a60: 22 6d 63 65 78 69 73 74 73 20 3f 2d 65 78 61 63 "mcexists ?-exac
4a70: 74 6e 61 6d 65 73 70 61 63 65 3f 20 3f 2d 65 78 tnamespace? ?-ex
4a80: 61 63 74 6c 6f 63 61 6c 65 3f 20 3f 2d 6e 61 6d actlocale? ?-nam
4a90: 65 73 70 61 63 65 20 6e 73 3f 20 73 72 63 22 7d espace ns? src"}
4aa0: 0a 0a 09 74 65 73 74 20 6d 73 67 63 61 74 2d 39 ...test msgcat-9
4ab0: 2e 32 20 7b 6d 63 65 78 69 73 74 73 20 75 6e 6b .2 {mcexists unk
4ac0: 6e 6f 77 6e 20 6f 70 74 69 6f 6e 7d 20 2d 62 6f nown option} -bo
4ad0: 64 79 20 7b 0a 09 20 20 20 20 6d 63 65 78 69 73 dy {.. mcexis
4ae0: 74 73 20 2d 75 6e 6b 6e 6f 77 6e 20 73 72 63 0a ts -unknown src.
4af0: 09 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 .} -returnCodes
4b00: 31 5c 0a 09 2d 72 65 73 75 6c 74 20 7b 75 6e 6b 1\..-result {unk
4b10: 6e 6f 77 6e 20 6f 70 74 69 6f 6e 20 22 2d 75 6e nown option "-un
4b20: 6b 6e 6f 77 6e 22 7d 0a 0a 09 74 65 73 74 20 6d known"}...test m
4b30: 73 67 63 61 74 2d 39 2e 33 20 7b 6d 63 65 78 69 sgcat-9.3 {mcexi
4b40: 73 74 73 7d 20 2d 73 65 74 75 70 20 7b 0a 09 20 sts} -setup {..
4b50: 20 20 20 6d 63 66 6f 72 67 65 74 70 61 63 6b 61 mcforgetpacka
4b60: 67 65 0a 09 20 20 20 20 76 61 72 69 61 62 6c 65 ge.. variable
4b70: 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c locale [mclocal
4b80: 65 5d 0a 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 e].. mclocale
4b90: 20 66 6f 6f 0a 09 20 20 20 20 6d 63 73 65 74 20 foo.. mcset
4ba0: 66 6f 6f 20 6b 31 20 76 31 0a 09 7d 20 2d 63 6c foo k1 v1..} -cl
4bb0: 65 61 6e 75 70 20 7b 0a 09 20 20 20 20 6d 63 6c eanup {.. mcl
4bc0: 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 09 7d ocale $locale..}
4bd0: 20 2d 62 6f 64 79 20 7b 0a 09 20 20 20 20 6c 69 -body {.. li
4be0: 73 74 20 5b 6d 63 65 78 69 73 74 73 20 6b 31 5d st [mcexists k1]
4bf0: 20 5b 6d 63 65 78 69 73 74 73 20 6b 32 5d 0a 09 [mcexists k2]..
4c00: 7d 20 2d 72 65 73 75 6c 74 20 7b 31 20 30 7d 0a } -result {1 0}.
4c10: 0a 09 74 65 73 74 20 6d 73 67 63 61 74 2d 39 2e ..test msgcat-9.
4c20: 34 20 7b 6d 63 65 78 69 73 74 73 20 64 65 73 63 4 {mcexists desc
4c30: 65 6e 64 65 6e 74 20 70 72 65 66 65 72 65 6e 63 endent preferenc
4c40: 65 7d 20 2d 73 65 74 75 70 20 7b 0a 09 20 20 20 e} -setup {..
4c50: 20 6d 63 66 6f 72 67 65 74 70 61 63 6b 61 67 65 mcforgetpackage
4c60: 0a 09 20 20 20 20 76 61 72 69 61 62 6c 65 20 6c .. variable l
4c70: 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d ocale [mclocale]
4c80: 0a 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 66 .. mclocale f
4c90: 6f 6f 5f 62 61 72 0a 09 20 20 20 20 6d 63 73 65 oo_bar.. mcse
4ca0: 74 20 66 6f 6f 20 6b 31 20 76 31 0a 09 7d 20 2d t foo k1 v1..} -
4cb0: 63 6c 65 61 6e 75 70 20 7b 0a 09 20 20 20 20 6d cleanup {.. m
4cc0: 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a clocale $locale.
4cd0: 09 7d 20 2d 62 6f 64 79 20 7b 0a 09 20 20 20 20 .} -body {..
4ce0: 6c 69 73 74 20 5b 6d 63 65 78 69 73 74 73 20 6b list [mcexists k
4cf0: 31 5d 20 5b 6d 63 65 78 69 73 74 73 20 2d 65 78 1] [mcexists -ex
4d00: 61 63 74 6c 6f 63 61 6c 65 20 6b 31 5d 0a 09 7d actlocale k1]..}
4d10: 20 2d 72 65 73 75 6c 74 20 7b 31 20 30 7d 0a 0a -result {1 0}..
4d20: 09 74 65 73 74 20 6d 73 67 63 61 74 2d 39 2e 35 .test msgcat-9.5
4d30: 20 7b 6d 63 65 78 69 73 74 73 20 70 61 72 65 6e {mcexists paren
4d40: 74 20 6e 61 6d 65 73 70 61 63 65 7d 20 2d 73 65 t namespace} -se
4d50: 74 75 70 20 7b 0a 09 20 20 20 20 6d 63 66 6f 72 tup {.. mcfor
4d60: 67 65 74 70 61 63 6b 61 67 65 0a 09 20 20 20 20 getpackage..
4d70: 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 6c 65 20 variable locale
4d80: 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 20 20 20 20 [mclocale]..
4d90: 6d 63 6c 6f 63 61 6c 65 20 66 6f 6f 5f 62 61 72 mclocale foo_bar
4da0: 0a 09 20 20 20 20 6d 63 73 65 74 20 66 6f 6f 20 .. mcset foo
4db0: 6b 31 20 76 31 0a 09 7d 20 2d 63 6c 65 61 6e 75 k1 v1..} -cleanu
4dc0: 70 20 7b 0a 09 20 20 20 20 6d 63 6c 6f 63 61 6c p {.. mclocal
4dd0: 65 20 24 6c 6f 63 61 6c 65 0a 09 20 20 20 20 6e e $locale.. n
4de0: 61 6d 65 73 70 61 63 65 20 64 65 6c 65 74 65 20 amespace delete
4df0: 3a 3a 66 6f 6f 0a 09 7d 20 2d 62 6f 64 79 20 7b ::foo..} -body {
4e00: 0a 09 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 .. namespace
4e10: 65 76 61 6c 20 3a 3a 66 6f 6f 20 7b 0a 09 09 6c eval ::foo {...l
4e20: 69 73 74 20 5b 3a 3a 6d 73 67 63 61 74 3a 3a 6d ist [::msgcat::m
4e30: 63 65 78 69 73 74 73 20 6b 31 5d 5c 0a 09 09 09 cexists k1]\....
4e40: 5b 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 65 78 69 [::msgcat::mcexi
4e50: 73 74 73 20 2d 6e 61 6d 65 73 70 61 63 65 20 3a sts -namespace :
4e60: 3a 6d 73 67 63 61 74 3a 3a 74 65 73 74 20 6b 31 :msgcat::test k1
4e70: 5d 0a 09 20 20 20 20 7d 0a 09 7d 20 2d 72 65 73 ].. }..} -res
4e80: 75 6c 74 20 7b 30 20 31 7d 0a 0a 09 74 65 73 74 ult {0 1}...test
4e90: 20 6d 73 67 63 61 74 2d 39 2e 36 20 7b 6d 63 65 msgcat-9.6 {mce
4ea0: 78 69 73 74 73 20 2d 6e 61 6d 65 73 70 61 63 65 xists -namespace
4eb0: 20 6e 73 20 70 61 72 61 6d 65 74 65 72 7d 20 2d ns parameter} -
4ec0: 73 65 74 75 70 20 7b 0a 09 20 20 20 20 6d 63 66 setup {.. mcf
4ed0: 6f 72 67 65 74 70 61 63 6b 61 67 65 0a 09 20 20 orgetpackage..
4ee0: 20 20 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 6c variable local
4ef0: 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 20 20 e [mclocale]..
4f00: 20 20 6d 63 6c 6f 63 61 6c 65 20 66 6f 6f 5f 62 mclocale foo_b
4f10: 61 72 0a 09 20 20 20 20 6d 63 73 65 74 20 66 6f ar.. mcset fo
4f20: 6f 20 6b 31 20 76 31 0a 09 7d 20 2d 63 6c 65 61 o k1 v1..} -clea
4f30: 6e 75 70 20 7b 0a 09 20 20 20 20 6d 63 6c 6f 63 nup {.. mcloc
4f40: 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 09 20 20 20 ale $locale..
4f50: 20 6e 61 6d 65 73 70 61 63 65 20 64 65 6c 65 74 namespace delet
4f60: 65 20 3a 3a 66 6f 6f 0a 09 7d 20 2d 62 6f 64 79 e ::foo..} -body
4f70: 20 7b 0a 09 20 20 20 20 6e 61 6d 65 73 70 61 63 {.. namespac
4f80: 65 20 65 76 61 6c 20 3a 3a 66 6f 6f 20 7b 0a 09 e eval ::foo {..
4f90: 09 6c 69 73 74 20 5b 3a 3a 6d 73 67 63 61 74 3a .list [::msgcat:
4fa0: 3a 6d 63 65 78 69 73 74 73 20 6b 31 5d 5c 0a 09 :mcexists k1]\..
4fb0: 09 09 5b 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 65 ..[::msgcat::mce
4fc0: 78 69 73 74 73 20 2d 6e 61 6d 65 73 70 61 63 65 xists -namespace
4fd0: 20 3a 3a 6d 73 67 63 61 74 3a 3a 74 65 73 74 20 ::msgcat::test
4fe0: 6b 31 5d 0a 09 20 20 20 20 7d 0a 09 7d 20 2d 72 k1].. }..} -r
4ff0: 65 73 75 6c 74 20 7b 30 20 31 7d 0a 0a 09 74 65 esult {0 1}...te
5000: 73 74 20 6d 73 67 63 61 74 2d 39 2e 37 20 7b 6d st msgcat-9.7 {m
5010: 63 65 78 69 73 74 73 20 2d 6e 61 6d 65 73 70 61 cexists -namespa
5020: 63 65 20 2d 20 6e 73 20 61 72 67 75 6d 65 6e 74 ce - ns argument
5030: 20 6d 69 73 73 69 6e 67 7d 20 2d 62 6f 64 79 20 missing} -body
5040: 7b 0a 09 20 20 20 20 6d 63 65 78 69 73 74 73 20 {.. mcexists
5050: 2d 6e 61 6d 65 73 70 61 63 65 20 73 72 63 0a 09 -namespace src..
5060: 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 31 } -returnCodes 1
5070: 5c 0a 09 2d 72 65 73 75 6c 74 20 7b 41 72 67 75 \..-result {Argu
5080: 6d 65 6e 74 20 6d 69 73 73 69 6e 67 20 66 6f 72 ment missing for
5090: 20 73 77 69 74 63 68 20 22 2d 6e 61 6d 65 73 70 switch "-namesp
50a0: 61 63 65 22 7d 0a 0a 0a 20 20 20 20 23 20 54 65 ace"}... # Te
50b0: 73 74 73 20 6d 73 67 63 61 74 2d 31 30 2e 2a 3a sts msgcat-10.*:
50c0: 20 5b 6d 63 6c 6f 61 64 65 64 6c 6f 63 61 6c 65 [mcloadedlocale
50d0: 73 5d 0a 0a 09 74 65 73 74 20 6d 73 67 63 61 74 s]...test msgcat
50e0: 2d 31 30 2e 31 20 7b 6d 63 6c 6f 61 64 65 64 6c -10.1 {mcloadedl
50f0: 6f 63 61 6c 65 73 20 6e 6f 20 61 72 67 7d 20 2d ocales no arg} -
5100: 62 6f 64 79 20 7b 0a 09 20 20 20 20 6d 63 6c 6f body {.. mclo
5110: 61 64 65 64 6c 6f 63 61 6c 65 73 0a 09 7d 20 2d adedlocales..} -
5120: 72 65 74 75 72 6e 43 6f 64 65 73 20 31 5c 0a 09 returnCodes 1\..
5130: 2d 72 65 73 75 6c 74 20 7b 77 72 6f 6e 67 20 23 -result {wrong #
5140: 20 61 72 67 73 3a 20 73 68 6f 75 6c 64 20 62 65 args: should be
5150: 20 22 6d 63 6c 6f 61 64 65 64 6c 6f 63 61 6c 65 "mcloadedlocale
5160: 73 20 73 75 62 63 6f 6d 6d 61 6e 64 22 7d 0a 0a s subcommand"}..
5170: 09 74 65 73 74 20 6d 73 67 63 61 74 2d 31 30 2e .test msgcat-10.
5180: 32 20 7b 6d 63 6c 6f 61 64 65 64 6c 6f 63 61 6c 2 {mcloadedlocal
5190: 65 73 20 77 72 6f 6e 67 20 73 75 62 63 6f 6d 6d es wrong subcomm
51a0: 61 6e 64 7d 20 2d 62 6f 64 79 20 7b 0a 09 20 20 and} -body {..
51b0: 20 20 6d 63 6c 6f 61 64 65 64 6c 6f 63 61 6c 65 mcloadedlocale
51c0: 73 20 6a 75 6e 6b 0a 09 7d 20 2d 72 65 74 75 72 s junk..} -retur
51d0: 6e 43 6f 64 65 73 20 31 5c 0a 09 2d 72 65 73 75 nCodes 1\..-resu
51e0: 6c 74 20 7b 75 6e 6b 6e 6f 77 6e 20 73 75 62 63 lt {unknown subc
51f0: 6f 6d 6d 61 6e 64 20 22 6a 75 6e 6b 22 3a 20 6d ommand "junk": m
5200: 75 73 74 20 62 65 20 63 6c 65 61 72 2c 20 6f 72 ust be clear, or
5210: 20 6c 6f 61 64 65 64 7d 0a 0a 09 74 65 73 74 20 loaded}...test
5220: 6d 73 67 63 61 74 2d 31 30 2e 33 20 7b 6d 63 6c msgcat-10.3 {mcl
5230: 6f 61 64 65 64 6c 6f 63 61 6c 65 73 20 6c 6f 61 oadedlocales loa
5240: 64 65 64 7d 20 2d 73 65 74 75 70 20 7b 0a 09 20 ded} -setup {..
5250: 20 20 20 6d 63 66 6f 72 67 65 74 70 61 63 6b 61 mcforgetpacka
5260: 67 65 0a 09 20 20 20 20 76 61 72 69 61 62 6c 65 ge.. variable
5270: 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c locale [mclocal
5280: 65 5d 0a 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 e].. mclocale
5290: 20 7b 7d 0a 09 20 20 20 20 6d 63 6c 6f 61 64 65 {}.. mcloade
52a0: 64 6c 6f 63 61 6c 65 73 20 63 6c 65 61 72 0a 09 dlocales clear..
52b0: 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 20 20 } -cleanup {..
52c0: 20 20 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 mclocale $loca
52d0: 6c 65 0a 09 7d 20 2d 62 6f 64 79 20 7b 0a 09 20 le..} -body {..
52e0: 20 20 20 6d 63 6c 6f 63 61 6c 65 20 66 6f 6f 5f mclocale foo_
52f0: 62 61 72 0a 09 20 20 20 20 23 20 54 68 65 20 72 bar.. # The r
5300: 65 73 75 6c 74 20 69 73 20 70 6f 73 69 74 69 6f esult is positio
5310: 6e 20 69 6e 64 65 70 65 6e 64 65 6e 74 20 73 6f n independent so
5320: 20 73 6f 72 74 0a 09 20 20 20 20 73 65 74 20 72 sort.. set r
5330: 65 73 75 6c 74 6c 69 73 74 20 5b 6c 73 6f 72 74 esultlist [lsort
5340: 20 5b 6d 63 6c 6f 61 64 65 64 6c 6f 63 61 6c 65 [mcloadedlocale
5350: 73 20 6c 6f 61 64 65 64 5d 5d 0a 09 7d 20 2d 72 s loaded]]..} -r
5360: 65 73 75 6c 74 20 7b 7b 7d 20 66 6f 6f 20 66 6f esult {{} foo fo
5370: 6f 5f 62 61 72 7d 0a 0a 09 74 65 73 74 20 6d 73 o_bar}...test ms
5380: 67 63 61 74 2d 31 30 2e 34 20 7b 6d 63 6c 6f 61 gcat-10.4 {mcloa
5390: 64 65 64 6c 6f 63 61 6c 65 73 20 63 6c 65 61 72 dedlocales clear
53a0: 7d 20 2d 73 65 74 75 70 20 7b 0a 09 20 20 20 20 } -setup {..
53b0: 6d 63 66 6f 72 67 65 74 70 61 63 6b 61 67 65 0a mcforgetpackage.
53c0: 09 20 20 20 20 76 61 72 69 61 62 6c 65 20 6c 6f . variable lo
53d0: 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a cale [mclocale].
53e0: 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 7b 7d . mclocale {}
53f0: 0a 09 20 20 20 20 6d 63 6c 6f 61 64 65 64 6c 6f .. mcloadedlo
5400: 63 61 6c 65 73 20 63 6c 65 61 72 0a 09 7d 20 2d cales clear..} -
5410: 63 6c 65 61 6e 75 70 20 7b 0a 09 20 20 20 20 6d cleanup {.. m
5420: 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a clocale $locale.
5430: 09 7d 20 2d 62 6f 64 79 20 7b 0a 09 20 20 20 20 .} -body {..
5440: 6d 63 6c 6f 63 61 6c 65 20 66 6f 6f 0a 09 20 20 mclocale foo..
5450: 20 20 6d 63 73 65 74 20 66 6f 6f 20 6b 31 20 76 mcset foo k1 v
5460: 31 0a 09 20 20 20 20 73 65 74 20 72 65 73 20 5b 1.. set res [
5470: 6d 63 65 78 69 73 74 73 20 6b 31 5d 0a 09 20 20 mcexists k1]..
5480: 20 20 6d 63 6c 6f 63 61 6c 65 20 22 22 0a 09 20 mclocale ""..
5490: 20 20 20 6d 63 6c 6f 61 64 65 64 6c 6f 63 61 6c mcloadedlocal
54a0: 65 73 20 63 6c 65 61 72 0a 09 20 20 20 20 6d 63 es clear.. mc
54b0: 6c 6f 63 61 6c 65 20 66 6f 6f 0a 09 20 20 20 20 locale foo..
54c0: 6c 61 70 70 65 6e 64 20 72 65 73 20 5b 6d 63 65 lappend res [mce
54d0: 78 69 73 74 73 20 6b 31 5d 0a 09 7d 20 2d 72 65 xists k1]..} -re
54e0: 73 75 6c 74 20 7b 31 20 30 7d 0a 0a 20 20 20 20 sult {1 0}..
54f0: 23 20 54 65 73 74 73 20 6d 73 67 63 61 74 2d 31 # Tests msgcat-1
5500: 31 2e 2a 3a 20 5b 6d 63 66 6f 72 67 65 74 70 61 1.*: [mcforgetpa
5510: 63 6b 61 67 65 5d 0a 0a 09 74 65 73 74 20 6d 73 ckage]...test ms
5520: 67 63 61 74 2d 31 31 2e 31 20 7b 6d 63 66 6f 72 gcat-11.1 {mcfor
5530: 67 65 74 70 61 63 6b 61 67 65 20 74 72 61 6e 73 getpackage trans
5540: 6c 61 74 69 6f 6e 7d 20 2d 73 65 74 75 70 20 7b lation} -setup {
5550: 0a 09 20 20 20 20 76 61 72 69 61 62 6c 65 20 6c .. variable l
5560: 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d ocale [mclocale]
5570: 0a 09 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 ..} -cleanup {..
5580: 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f mclocale $lo
5590: 63 61 6c 65 0a 09 7d 20 2d 62 6f 64 79 20 7b 0a cale..} -body {.
55a0: 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 66 6f . mclocale fo
55b0: 6f 0a 09 20 20 20 20 6d 63 73 65 74 20 66 6f 6f o.. mcset foo
55c0: 20 6b 31 20 76 31 0a 09 20 20 20 20 73 65 74 20 k1 v1.. set
55d0: 72 65 73 20 5b 6d 63 65 78 69 73 74 73 20 6b 31 res [mcexists k1
55e0: 5d 0a 09 20 20 20 20 6d 63 66 6f 72 67 65 74 70 ].. mcforgetp
55f0: 61 63 6b 61 67 65 0a 09 20 20 20 20 6c 61 70 70 ackage.. lapp
5600: 65 6e 64 20 72 65 73 20 5b 6d 63 65 78 69 73 74 end res [mcexist
5610: 73 20 6b 31 5d 0a 09 7d 20 2d 72 65 73 75 6c 74 s k1]..} -result
5620: 20 7b 31 20 30 7d 0a 0a 09 74 65 73 74 20 6d 73 {1 0}...test ms
5630: 67 63 61 74 2d 31 31 2e 32 20 7b 6d 63 66 6f 72 gcat-11.2 {mcfor
5640: 67 65 74 70 61 63 6b 61 67 65 20 6c 6f 63 61 6c getpackage local
5650: 65 7d 20 2d 73 65 74 75 70 20 7b 0a 09 20 20 20 e} -setup {..
5660: 20 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 6c 65 variable locale
5670: 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 7d 20 2d [mclocale]..} -
5680: 63 6c 65 61 6e 75 70 20 7b 0a 09 20 20 20 20 6d cleanup {.. m
5690: 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a clocale $locale.
56a0: 09 7d 20 2d 62 6f 64 79 20 7b 0a 09 20 20 20 20 .} -body {..
56b0: 6d 63 6c 6f 63 61 6c 65 20 66 6f 6f 0a 09 20 20 mclocale foo..
56c0: 20 20 6d 63 70 61 63 6b 61 67 65 6c 6f 63 61 6c mcpackagelocal
56d0: 65 20 73 65 74 20 62 61 72 0a 09 20 20 20 20 73 e set bar.. s
56e0: 65 74 20 72 65 73 20 5b 6d 63 70 61 63 6b 61 67 et res [mcpackag
56f0: 65 6c 6f 63 61 6c 65 20 67 65 74 5d 0a 09 20 20 elocale get]..
5700: 20 20 6d 63 66 6f 72 67 65 74 70 61 63 6b 61 67 mcforgetpackag
5710: 65 0a 09 20 20 20 20 6c 61 70 70 65 6e 64 20 72 e.. lappend r
5720: 65 73 20 5b 6d 63 70 61 63 6b 61 67 65 6c 6f 63 es [mcpackageloc
5730: 61 6c 65 20 67 65 74 5d 0a 09 7d 20 2d 72 65 73 ale get]..} -res
5740: 75 6c 74 20 7b 62 61 72 20 66 6f 6f 7d 0a 0a 09 ult {bar foo}...
5750: 74 65 73 74 20 6d 73 67 63 61 74 2d 31 31 2e 33 test msgcat-11.3
5760: 20 7b 6d 63 66 6f 72 67 65 74 70 61 63 6b 61 67 {mcforgetpackag
5770: 65 20 6f 70 74 69 6f 6e 73 7d 20 2d 62 6f 64 79 e options} -body
5780: 20 7b 0a 09 20 20 20 20 6d 63 70 61 63 6b 61 67 {.. mcpackag
5790: 65 63 6f 6e 66 69 67 20 73 65 74 20 6c 6f 61 64 econfig set load
57a0: 63 6d 64 20 22 22 0a 09 20 20 20 20 73 65 74 20 cmd "".. set
57b0: 72 65 73 20 5b 6d 63 70 61 63 6b 61 67 65 63 6f res [mcpackageco
57c0: 6e 66 69 67 20 69 73 73 65 74 20 6c 6f 61 64 63 nfig isset loadc
57d0: 6d 64 5d 0a 09 20 20 20 20 6d 63 66 6f 72 67 65 md].. mcforge
57e0: 74 70 61 63 6b 61 67 65 0a 09 20 20 20 20 6c 61 tpackage.. la
57f0: 70 70 65 6e 64 20 72 65 73 20 5b 6d 63 70 61 63 ppend res [mcpac
5800: 6b 61 67 65 63 6f 6e 66 69 67 20 69 73 73 65 74 kageconfig isset
5810: 20 6c 6f 61 64 63 6d 64 5d 0a 09 7d 20 2d 72 65 loadcmd]..} -re
5820: 73 75 6c 74 20 7b 31 20 30 7d 0a 0a 20 20 20 20 sult {1 0}..
5830: 23 20 54 65 73 74 73 20 6d 73 67 63 61 74 2d 31 # Tests msgcat-1
5840: 32 2e 2a 3a 20 5b 6d 63 70 61 63 6b 61 67 65 6c 2.*: [mcpackagel
5850: 6f 63 61 6c 65 5d 0a 0a 09 74 65 73 74 20 6d 73 ocale]...test ms
5860: 67 63 61 74 2d 31 32 2e 31 20 7b 6d 63 70 61 63 gcat-12.1 {mcpac
5870: 6b 61 67 65 6c 6f 63 61 6c 65 20 6e 6f 20 73 75 kagelocale no su
5880: 62 63 6f 6d 6d 61 6e 64 7d 20 2d 62 6f 64 79 20 bcommand} -body
5890: 7b 0a 09 20 20 20 20 6d 63 70 61 63 6b 61 67 65 {.. mcpackage
58a0: 6c 6f 63 61 6c 65 0a 09 7d 20 2d 72 65 74 75 72 locale..} -retur
58b0: 6e 43 6f 64 65 73 20 31 5c 0a 09 2d 72 65 73 75 nCodes 1\..-resu
58c0: 6c 74 20 7b 77 72 6f 6e 67 20 23 20 61 72 67 73 lt {wrong # args
58d0: 3a 20 73 68 6f 75 6c 64 20 62 65 20 22 6d 63 70 : should be "mcp
58e0: 61 63 6b 61 67 65 6c 6f 63 61 6c 65 20 73 75 62 ackagelocale sub
58f0: 63 6f 6d 6d 61 6e 64 20 3f 61 72 67 20 2e 2e 2e command ?arg ...
5900: 3f 22 7d 0a 0a 09 74 65 73 74 20 6d 73 67 63 61 ?"}...test msgca
5910: 74 2d 31 32 2e 32 20 7b 6d 63 6c 70 61 63 6b 61 t-12.2 {mclpacka
5920: 67 65 6c 6f 63 61 6c 65 20 77 72 6f 6e 67 20 73 gelocale wrong s
5930: 75 62 63 6f 6d 6d 61 6e 64 7d 20 2d 62 6f 64 79 ubcommand} -body
5940: 20 7b 0a 09 20 20 20 20 6d 63 70 61 63 6b 61 67 {.. mcpackag
5950: 65 6c 6f 63 61 6c 65 20 6a 75 6e 6b 0a 09 7d 20 elocale junk..}
5960: 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 31 5c 0a -returnCodes 1\.
5970: 09 2d 72 65 73 75 6c 74 20 7b 75 6e 6b 6e 6f 77 .-result {unknow
5980: 6e 20 73 75 62 63 6f 6d 6d 61 6e 64 20 22 6a 75 n subcommand "ju
5990: 6e 6b 22 3a 20 6d 75 73 74 20 62 65 20 63 6c 65 nk": must be cle
59a0: 61 72 2c 20 67 65 74 2c 20 69 73 73 65 74 2c 20 ar, get, isset,
59b0: 6c 6f 61 64 65 64 2c 20 70 72 65 73 65 6e 74 2c loaded, present,
59c0: 20 73 65 74 2c 20 6f 72 20 75 6e 73 65 74 7d 0a set, or unset}.
59d0: 0a 09 74 65 73 74 20 6d 73 67 63 61 74 2d 31 32 ..test msgcat-12
59e0: 2e 32 2e 31 20 7b 6d 63 6c 70 61 63 6b 61 67 65 .2.1 {mclpackage
59f0: 6c 6f 63 61 6c 65 20 73 65 74 20 6d 75 6c 74 69 locale set multi
5a00: 70 6c 65 20 61 72 67 73 7d 20 2d 62 6f 64 79 20 ple args} -body
5a10: 7b 0a 09 20 20 20 20 6d 63 70 61 63 6b 61 67 65 {.. mcpackage
5a20: 6c 6f 63 61 6c 65 20 73 65 74 20 61 20 62 0a 09 locale set a b..
5a30: 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 31 } -returnCodes 1
5a40: 5c 0a 09 2d 72 65 73 75 6c 74 20 7b 77 72 6f 6e \..-result {wron
5a50: 67 20 23 20 61 72 67 73 3a 20 73 68 6f 75 6c 64 g # args: should
5a60: 20 62 65 20 22 6d 63 70 61 63 6b 61 67 65 6c 6f be "mcpackagelo
5a70: 63 61 6c 65 20 73 65 74 20 3f 6c 6f 63 61 6c 65 cale set ?locale
5a80: 3f 22 7d 0a 0a 09 74 65 73 74 20 6d 73 67 63 61 ?"}...test msgca
5a90: 74 2d 31 32 2e 33 20 7b 6d 63 70 61 63 6b 61 67 t-12.3 {mcpackag
5aa0: 65 6c 6f 63 61 6c 65 20 73 65 74 7d 20 2d 73 65 elocale set} -se
5ab0: 74 75 70 20 7b 0a 09 20 20 20 20 76 61 72 69 61 tup {.. varia
5ac0: 62 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f ble locale [mclo
5ad0: 63 61 6c 65 5d 0a 09 7d 20 2d 63 6c 65 61 6e 75 cale]..} -cleanu
5ae0: 70 20 7b 0a 09 20 20 20 20 6d 63 6c 6f 63 61 6c p {.. mclocal
5af0: 65 20 24 6c 6f 63 61 6c 65 0a 09 20 20 20 20 6d e $locale.. m
5b00: 63 66 6f 72 67 65 74 70 61 63 6b 61 67 65 0a 09 cforgetpackage..
5b10: 7d 20 2d 62 6f 64 79 20 7b 0a 09 20 20 20 20 6d } -body {.. m
5b20: 63 6c 6f 63 61 6c 65 20 66 6f 6f 0a 09 20 20 20 clocale foo..
5b30: 20 6d 63 70 61 63 6b 61 67 65 6c 6f 63 61 6c 65 mcpackagelocale
5b40: 20 73 65 74 20 62 61 72 0a 09 20 20 20 20 6c 69 set bar.. li
5b50: 73 74 20 5b 6d 63 70 61 63 6b 61 67 65 6c 6f 63 st [mcpackageloc
5b60: 61 6c 65 20 67 65 74 5d 20 5b 6d 63 6c 6f 63 61 ale get] [mcloca
5b70: 6c 65 5d 0a 09 7d 20 2d 72 65 73 75 6c 74 20 7b le]..} -result {
5b80: 62 61 72 20 66 6f 6f 7d 0a 0a 09 74 65 73 74 20 bar foo}...test
5b90: 6d 73 67 63 61 74 2d 31 32 2e 34 20 7b 6d 63 70 msgcat-12.4 {mcp
5ba0: 61 63 6b 61 67 65 6c 6f 63 61 6c 65 20 67 65 74 ackagelocale get
5bb0: 7d 20 2d 73 65 74 75 70 20 7b 0a 09 20 20 20 20 } -setup {..
5bc0: 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 6c 65 20 variable locale
5bd0: 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 7d 20 2d 63 [mclocale]..} -c
5be0: 6c 65 61 6e 75 70 20 7b 0a 09 20 20 20 20 6d 63 leanup {.. mc
5bf0: 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 09 locale $locale..
5c00: 20 20 20 20 6d 63 66 6f 72 67 65 74 70 61 63 6b mcforgetpack
5c10: 61 67 65 0a 09 7d 20 2d 62 6f 64 79 20 7b 0a 09 age..} -body {..
5c20: 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 66 6f 6f mclocale foo
5c30: 0a 09 20 20 20 20 73 65 74 20 72 65 73 20 5b 6d .. set res [m
5c40: 63 70 61 63 6b 61 67 65 6c 6f 63 61 6c 65 20 67 cpackagelocale g
5c50: 65 74 5d 0a 09 20 20 20 20 6d 63 70 61 63 6b 61 et].. mcpacka
5c60: 67 65 6c 6f 63 61 6c 65 20 73 65 74 20 62 61 72 gelocale set bar
5c70: 0a 09 20 20 20 20 6c 61 70 70 65 6e 64 20 72 65 .. lappend re
5c80: 73 20 5b 6d 63 70 61 63 6b 61 67 65 6c 6f 63 61 s [mcpackageloca
5c90: 6c 65 20 67 65 74 5d 0a 09 7d 20 2d 72 65 73 75 le get]..} -resu
5ca0: 6c 74 20 7b 66 6f 6f 20 62 61 72 7d 0a 0a 09 74 lt {foo bar}...t
5cb0: 65 73 74 20 6d 73 67 63 61 74 2d 31 32 2e 35 20 est msgcat-12.5
5cc0: 7b 6d 63 70 61 63 6b 61 67 65 6c 6f 63 61 6c 65 {mcpackagelocale
5cd0: 20 70 72 65 66 65 72 65 6e 63 65 73 7d 20 2d 73 preferences} -s
5ce0: 65 74 75 70 20 7b 0a 09 20 20 20 20 76 61 72 69 etup {.. vari
5cf0: 61 62 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c able locale [mcl
5d00: 6f 63 61 6c 65 5d 0a 09 7d 20 2d 63 6c 65 61 6e ocale]..} -clean
5d10: 75 70 20 7b 0a 09 20 20 20 20 6d 63 6c 6f 63 61 up {.. mcloca
5d20: 6c 65 20 24 6c 6f 63 61 6c 65 0a 09 20 20 20 20 le $locale..
5d30: 6d 63 66 6f 72 67 65 74 70 61 63 6b 61 67 65 0a mcforgetpackage.
5d40: 09 7d 20 2d 62 6f 64 79 20 7b 0a 09 20 20 20 20 .} -body {..
5d50: 6d 63 6c 6f 63 61 6c 65 20 66 6f 6f 0a 09 20 20 mclocale foo..
5d60: 20 20 73 65 74 20 72 65 73 20 5b 6c 69 73 74 20 set res [list
5d70: 5b 6d 63 70 61 63 6b 61 67 65 6c 6f 63 61 6c 65 [mcpackagelocale
5d80: 20 70 72 65 66 65 72 65 6e 63 65 73 5d 5d 0a 09 preferences]]..
5d90: 20 20 20 20 6d 63 70 61 63 6b 61 67 65 6c 6f 63 mcpackageloc
5da0: 61 6c 65 20 73 65 74 20 62 61 72 0a 09 20 20 20 ale set bar..
5db0: 20 6c 61 70 70 65 6e 64 20 72 65 73 20 5b 6d 63 lappend res [mc
5dc0: 70 61 63 6b 61 67 65 6c 6f 63 61 6c 65 20 70 72 packagelocale pr
5dd0: 65 66 65 72 65 6e 63 65 73 5d 0a 09 7d 20 2d 72 eferences]..} -r
5de0: 65 73 75 6c 74 20 7b 7b 66 6f 6f 20 7b 7d 7d 20 esult {{foo {}}
5df0: 7b 62 61 72 20 7b 7d 7d 7d 0a 0a 09 74 65 73 74 {bar {}}}...test
5e00: 20 6d 73 67 63 61 74 2d 31 32 2e 36 20 7b 6d 63 msgcat-12.6 {mc
5e10: 70 61 63 6b 61 67 65 6c 6f 63 61 6c 65 20 6c 6f packagelocale lo
5e20: 61 64 65 64 7d 20 2d 73 65 74 75 70 20 7b 0a 09 aded} -setup {..
5e30: 20 20 20 20 76 61 72 69 61 62 6c 65 20 6c 6f 63 variable loc
5e40: 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 ale [mclocale]..
5e50: 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 20 20 } -cleanup {..
5e60: 20 20 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 mclocale $loca
5e70: 6c 65 0a 09 20 20 20 20 6d 63 66 6f 72 67 65 74 le.. mcforget
5e80: 70 61 63 6b 61 67 65 0a 09 7d 20 2d 62 6f 64 79 package..} -body
5e90: 20 7b 0a 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 {.. mclocale
5ea0: 20 22 22 0a 09 20 20 20 20 6d 63 6c 6f 61 64 65 "".. mcloade
5eb0: 64 6c 6f 63 61 6c 65 73 20 63 6c 65 61 72 0a 09 dlocales clear..
5ec0: 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 66 6f 6f mclocale foo
5ed0: 0a 09 20 20 20 20 23 20 54 68 65 20 72 65 73 75 .. # The resu
5ee0: 6c 74 20 69 73 20 70 6f 73 69 74 69 6f 6e 20 69 lt is position i
5ef0: 6e 64 65 70 65 6e 64 65 6e 74 20 73 6f 20 73 6f ndependent so so
5f00: 72 74 0a 09 20 20 20 20 73 65 74 20 72 65 73 20 rt.. set res
5f10: 5b 6c 69 73 74 20 5b 6c 73 6f 72 74 20 5b 6d 63 [list [lsort [mc
5f20: 70 61 63 6b 61 67 65 6c 6f 63 61 6c 65 20 6c 6f packagelocale lo
5f30: 61 64 65 64 5d 5d 5d 0a 09 20 20 20 20 6d 63 70 aded]]].. mcp
5f40: 61 63 6b 61 67 65 6c 6f 63 61 6c 65 20 73 65 74 ackagelocale set
5f50: 20 62 61 72 0a 09 20 20 20 20 6c 61 70 70 65 6e bar.. lappen
5f60: 64 20 72 65 73 20 5b 6c 73 6f 72 74 20 5b 6d 63 d res [lsort [mc
5f70: 70 61 63 6b 61 67 65 6c 6f 63 61 6c 65 20 6c 6f packagelocale lo
5f80: 61 64 65 64 5d 5d 0a 09 7d 20 2d 72 65 73 75 6c aded]]..} -resul
5f90: 74 20 7b 7b 7b 7d 20 66 6f 6f 7d 20 7b 7b 7d 20 t {{{} foo} {{}
5fa0: 62 61 72 20 66 6f 6f 7d 7d 0a 0a 09 74 65 73 74 bar foo}}...test
5fb0: 20 6d 73 67 63 61 74 2d 31 32 2e 37 20 7b 6d 63 msgcat-12.7 {mc
5fc0: 70 61 63 6b 61 67 65 6c 6f 63 61 6c 65 20 69 73 packagelocale is
5fd0: 73 65 74 7d 20 2d 73 65 74 75 70 20 7b 0a 09 20 set} -setup {..
5fe0: 20 20 20 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 variable loca
5ff0: 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 7d le [mclocale]..}
6000: 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 20 20 20 -cleanup {..
6010: 20 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c mclocale $local
6020: 65 0a 09 20 20 20 20 6d 63 66 6f 72 67 65 74 70 e.. mcforgetp
6030: 61 63 6b 61 67 65 0a 09 7d 20 2d 62 6f 64 79 20 ackage..} -body
6040: 7b 0a 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 {.. mclocale
6050: 66 6f 6f 0a 09 20 20 20 20 73 65 74 20 72 65 73 foo.. set res
6060: 20 5b 6d 63 70 61 63 6b 61 67 65 6c 6f 63 61 6c [mcpackagelocal
6070: 65 20 69 73 73 65 74 5d 0a 09 20 20 20 20 6d 63 e isset].. mc
6080: 70 61 63 6b 61 67 65 6c 6f 63 61 6c 65 20 73 65 packagelocale se
6090: 74 20 62 61 72 0a 09 20 20 20 20 6c 61 70 70 65 t bar.. lappe
60a0: 6e 64 20 72 65 73 20 5b 6d 63 70 61 63 6b 61 67 nd res [mcpackag
60b0: 65 6c 6f 63 61 6c 65 20 69 73 73 65 74 5d 0a 09 elocale isset]..
60c0: 7d 20 2d 72 65 73 75 6c 74 20 7b 30 20 31 7d 0a } -result {0 1}.
60d0: 0a 09 74 65 73 74 20 6d 73 67 63 61 74 2d 31 32 ..test msgcat-12
60e0: 2e 38 20 7b 6d 63 70 61 63 6b 61 67 65 6c 6f 63 .8 {mcpackageloc
60f0: 61 6c 65 20 75 6e 73 65 74 7d 20 2d 73 65 74 75 ale unset} -setu
6100: 70 20 7b 0a 09 20 20 20 20 76 61 72 69 61 62 6c p {.. variabl
6110: 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 e locale [mcloca
6120: 6c 65 5d 0a 09 7d 20 2d 63 6c 65 61 6e 75 70 20 le]..} -cleanup
6130: 7b 0a 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 {.. mclocale
6140: 24 6c 6f 63 61 6c 65 0a 09 20 20 20 20 6d 63 66 $locale.. mcf
6150: 6f 72 67 65 74 70 61 63 6b 61 67 65 0a 09 7d 20 orgetpackage..}
6160: 2d 62 6f 64 79 20 7b 0a 09 20 20 20 20 6d 63 70 -body {.. mcp
6170: 61 63 6b 61 67 65 6c 6f 63 61 6c 65 20 73 65 74 ackagelocale set
6180: 20 62 61 72 0a 09 20 20 20 20 73 65 74 20 72 65 bar.. set re
6190: 73 20 5b 6d 63 70 61 63 6b 61 67 65 6c 6f 63 61 s [mcpackageloca
61a0: 6c 65 20 69 73 73 65 74 5d 0a 09 20 20 20 20 6d le isset].. m
61b0: 63 70 61 63 6b 61 67 65 6c 6f 63 61 6c 65 20 75 cpackagelocale u
61c0: 6e 73 65 74 0a 09 20 20 20 20 6c 61 70 70 65 6e nset.. lappen
61d0: 64 20 72 65 73 20 5b 6d 63 70 61 63 6b 61 67 65 d res [mcpackage
61e0: 6c 6f 63 61 6c 65 20 69 73 73 65 74 5d 0a 09 7d locale isset]..}
61f0: 20 2d 72 65 73 75 6c 74 20 7b 31 20 30 7d 0a 0a -result {1 0}..
6200: 09 74 65 73 74 20 6d 73 67 63 61 74 2d 31 32 2e .test msgcat-12.
6210: 39 20 7b 6d 63 70 61 63 6b 61 67 65 6c 6f 63 61 9 {mcpackageloca
6220: 6c 65 20 70 72 65 73 65 6e 74 7d 20 2d 73 65 74 le present} -set
6230: 75 70 20 7b 0a 09 20 20 20 20 76 61 72 69 61 62 up {.. variab
6240: 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 le locale [mcloc
6250: 61 6c 65 5d 0a 09 7d 20 2d 63 6c 65 61 6e 75 70 ale]..} -cleanup
6260: 20 7b 0a 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 {.. mclocale
6270: 20 24 6c 6f 63 61 6c 65 0a 09 20 20 20 20 6d 63 $locale.. mc
6280: 66 6f 72 67 65 74 70 61 63 6b 61 67 65 0a 09 7d forgetpackage..}
6290: 20 2d 62 6f 64 79 20 7b 0a 09 20 20 20 20 6d 63 -body {.. mc
62a0: 6c 6f 63 61 6c 65 20 22 22 0a 09 20 20 20 20 6d locale "".. m
62b0: 63 6c 6f 61 64 65 64 6c 6f 63 61 6c 65 73 20 63 cloadedlocales c
62c0: 6c 65 61 72 0a 09 20 20 20 20 6d 63 6c 6f 63 61 lear.. mcloca
62d0: 6c 65 20 66 6f 6f 0a 09 20 20 20 20 73 65 74 20 le foo.. set
62e0: 72 65 73 20 5b 6d 63 70 61 63 6b 61 67 65 6c 6f res [mcpackagelo
62f0: 63 61 6c 65 20 70 72 65 73 65 6e 74 20 66 6f 6f cale present foo
6300: 5d 0a 09 20 20 20 20 6c 61 70 70 65 6e 64 20 72 ].. lappend r
6310: 65 73 20 5b 6d 63 70 61 63 6b 61 67 65 6c 6f 63 es [mcpackageloc
6320: 61 6c 65 20 70 72 65 73 65 6e 74 20 62 61 72 5d ale present bar]
6330: 0a 09 20 20 20 20 6d 63 70 61 63 6b 61 67 65 6c .. mcpackagel
6340: 6f 63 61 6c 65 20 73 65 74 20 62 61 72 0a 09 20 ocale set bar..
6350: 20 20 20 6c 61 70 70 65 6e 64 20 72 65 73 20 5b lappend res [
6360: 6d 63 70 61 63 6b 61 67 65 6c 6f 63 61 6c 65 20 mcpackagelocale
6370: 70 72 65 73 65 6e 74 20 66 6f 6f 5d 5c 0a 09 09 present foo]\...
6380: 20 20 20 20 5b 6d 63 70 61 63 6b 61 67 65 6c 6f [mcpackagelo
6390: 63 61 6c 65 20 70 72 65 73 65 6e 74 20 62 61 72 cale present bar
63a0: 5d 0a 09 7d 20 2d 72 65 73 75 6c 74 20 7b 31 20 ]..} -result {1
63b0: 30 20 31 20 31 7d 0a 0a 09 74 65 73 74 20 6d 73 0 1 1}...test ms
63c0: 67 63 61 74 2d 31 32 2e 31 30 20 7b 6d 63 70 61 gcat-12.10 {mcpa
63d0: 63 6b 61 67 65 6c 6f 63 61 6c 65 20 63 6c 65 61 ckagelocale clea
63e0: 72 7d 20 2d 73 65 74 75 70 20 7b 0a 09 20 20 20 r} -setup {..
63f0: 20 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 6c 65 variable locale
6400: 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 7d 20 2d [mclocale]..} -
6410: 63 6c 65 61 6e 75 70 20 7b 0a 09 20 20 20 20 6d cleanup {.. m
6420: 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a clocale $locale.
6430: 09 20 20 20 20 6d 63 66 6f 72 67 65 74 70 61 63 . mcforgetpac
6440: 6b 61 67 65 0a 09 7d 20 2d 62 6f 64 79 20 7b 0a kage..} -body {.
6450: 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 22 22 . mclocale ""
6460: 0a 09 20 20 20 20 6d 63 6c 6f 61 64 65 64 6c 6f .. mcloadedlo
6470: 63 61 6c 65 73 20 63 6c 65 61 72 0a 09 20 20 20 cales clear..
6480: 20 6d 63 6c 6f 63 61 6c 65 20 66 6f 6f 0a 09 20 mclocale foo..
6490: 20 20 20 6d 63 70 61 63 6b 61 67 65 6c 6f 63 61 mcpackageloca
64a0: 6c 65 20 73 65 74 20 62 61 72 0a 09 20 20 20 20 le set bar..
64b0: 6d 63 70 61 63 6b 61 67 65 6c 6f 63 61 6c 65 20 mcpackagelocale
64c0: 63 6c 65 61 72 0a 09 20 20 20 20 6c 69 73 74 20 clear.. list
64d0: 5b 6d 63 70 61 63 6b 61 67 65 6c 6f 63 61 6c 65 [mcpackagelocale
64e0: 20 70 72 65 73 65 6e 74 20 66 6f 6f 5d 20 5b 6d present foo] [m
64f0: 63 70 61 63 6b 61 67 65 6c 6f 63 61 6c 65 20 70 cpackagelocale p
6500: 72 65 73 65 6e 74 20 62 61 72 5d 0a 09 7d 20 2d resent bar]..} -
6510: 72 65 73 75 6c 74 20 7b 30 20 31 7d 0a 0a 09 74 result {0 1}...t
6520: 65 73 74 20 6d 73 67 63 61 74 2d 31 32 2e 31 31 est msgcat-12.11
6530: 20 7b 6d 63 70 61 63 6b 61 67 65 6c 6f 63 61 6c {mcpackagelocal
6540: 65 20 63 75 73 74 6f 6d 20 70 72 65 66 65 72 65 e custom prefere
6550: 6e 63 65 73 7d 20 2d 73 65 74 75 70 20 7b 0a 09 nces} -setup {..
6560: 20 20 20 20 76 61 72 69 61 62 6c 65 20 6c 6f 63 variable loc
6570: 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 ale [mclocale]..
6580: 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 20 20 } -cleanup {..
6590: 20 20 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 mclocale $loca
65a0: 6c 65 0a 09 20 20 20 20 6d 63 66 6f 72 67 65 74 le.. mcforget
65b0: 70 61 63 6b 61 67 65 0a 09 7d 20 2d 62 6f 64 79 package..} -body
65c0: 20 7b 0a 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 {.. mclocale
65d0: 20 66 6f 6f 0a 09 20 20 20 20 73 65 74 20 72 65 foo.. set re
65e0: 73 20 5b 6c 69 73 74 20 5b 6d 63 70 61 63 6b 61 s [list [mcpacka
65f0: 67 65 6c 6f 63 61 6c 65 20 70 72 65 66 65 72 65 gelocale prefere
6600: 6e 63 65 73 5d 5d 0a 09 20 20 20 20 6d 63 70 61 nces]].. mcpa
6610: 63 6b 61 67 65 6c 6f 63 61 6c 65 20 70 72 65 66 ckagelocale pref
6620: 65 72 65 6e 63 65 73 20 62 61 72 20 7b 7d 0a 09 erences bar {}..
6630: 20 20 20 20 6c 61 70 70 65 6e 64 20 72 65 73 20 lappend res
6640: 5b 6d 63 70 61 63 6b 61 67 65 6c 6f 63 61 6c 65 [mcpackagelocale
6650: 20 70 72 65 66 65 72 65 6e 63 65 73 5d 0a 09 7d preferences]..}
6660: 20 2d 72 65 73 75 6c 74 20 7b 7b 66 6f 6f 20 7b -result {{foo {
6670: 7d 7d 20 7b 62 61 72 20 7b 7d 7d 7d 0a 0a 09 74 }} {bar {}}}...t
6680: 65 73 74 20 6d 73 67 63 61 74 2d 31 32 2e 31 32 est msgcat-12.12
6690: 20 7b 6d 63 70 61 63 6b 61 67 65 6c 6f 63 61 6c {mcpackagelocal
66a0: 65 20 70 72 65 66 65 72 65 6e 63 65 73 20 2d 3e e preferences ->
66b0: 20 6e 6f 20 69 73 73 65 74 7d 20 2d 73 65 74 75 no isset} -setu
66c0: 70 20 7b 0a 09 20 20 20 20 76 61 72 69 61 62 6c p {.. variabl
66d0: 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 e locale [mcloca
66e0: 6c 65 5d 0a 09 7d 20 2d 63 6c 65 61 6e 75 70 20 le]..} -cleanup
66f0: 7b 0a 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 {.. mclocale
6700: 24 6c 6f 63 61 6c 65 0a 09 20 20 20 20 6d 63 66 $locale.. mcf
6710: 6f 72 67 65 74 70 61 63 6b 61 67 65 0a 09 7d 20 orgetpackage..}
6720: 2d 62 6f 64 79 20 7b 0a 09 20 20 20 20 6d 63 6c -body {.. mcl
6730: 6f 63 61 6c 65 20 66 6f 6f 0a 09 20 20 20 20 6d ocale foo.. m
6740: 63 70 61 63 6b 61 67 65 6c 6f 63 61 6c 65 20 70 cpackagelocale p
6750: 72 65 66 65 72 65 6e 63 65 73 0a 09 20 20 20 20 references..
6760: 6d 63 70 61 63 6b 61 67 65 6c 6f 63 61 6c 65 20 mcpackagelocale
6770: 69 73 73 65 74 0a 09 7d 20 2d 72 65 73 75 6c 74 isset..} -result
6780: 20 7b 30 7d 0a 0a 09 66 6f 72 65 61 63 68 20 6c {0}...foreach l
6790: 20 5b 6c 69 73 74 20 7b 2a 7d 7b 0a 09 20 20 20 [list {*}{..
67a0: 20 2e 2e 2f 55 4e 53 41 46 45 50 41 54 48 2f 4e ../UNSAFEPATH/N
67b0: 4f 57 48 45 52 45 20 55 4e 53 41 46 45 50 41 54 OWHERE UNSAFEPAT
67c0: 48 2f 2e 2e 2f 45 4e 20 2f 2f 55 4e 53 41 46 45 H/../EN //UNSAFE
67d0: 50 41 54 48 2f 4e 4f 57 48 45 52 45 0a 09 20 20 PATH/NOWHERE..
67e0: 20 20 7a 69 70 66 73 3a 2f 55 4e 53 41 46 45 50 zipfs:/UNSAFEP
67f0: 41 54 48 2f 4e 4f 57 48 45 52 45 20 43 3a 2f 55 ATH/NOWHERE C:/U
6800: 4e 53 41 46 45 50 41 54 48 2f 4e 4f 57 48 45 52 NSAFEPATH/NOWHER
6810: 45 0a 09 20 20 20 20 7e 2f 55 4e 53 41 46 45 50 E.. ~/UNSAFEP
6820: 41 54 48 2f 4e 4f 57 48 45 52 45 20 7e 55 4e 53 ATH/NOWHERE ~UNS
6830: 41 46 45 55 53 45 52 2f 4e 4f 57 48 45 52 45 0a AFEUSER/NOWHERE.
6840: 09 20 20 7d 20 5b 6c 69 73 74 20 5b 66 69 6c 65 . } [list [file
6850: 20 6a 6f 69 6e 20 5b 69 6e 66 6f 20 6c 69 62 72 join [info libr
6860: 61 72 79 5d 20 6d 73 67 73 5d 5d 0a 09 5d 20 7b ary] msgs]]..] {
6870: 0a 09 20 20 73 65 74 20 6c 20 5b 73 74 72 69 6e .. set l [strin
6880: 67 20 74 6f 6c 6f 77 65 72 20 24 6c 5d 0a 09 20 g tolower $l]..
6890: 20 66 6f 72 65 61 63 68 20 6c 20 5b 6c 69 73 74 foreach l [list
68a0: 20 24 6c 20 5b 73 74 72 69 6e 67 20 6d 61 70 20 $l [string map
68b0: 7b 2f 20 5c 5c 7d 20 24 6c 5d 5d 20 7b 0a 09 20 {/ \\} $l]] {..
68c0: 20 20 20 74 65 73 74 20 6d 73 67 63 61 74 2d 31 test msgcat-1
68d0: 32 2e 31 33 2d 24 6c 20 22 6d 63 70 61 63 6b 61 2.13-$l "mcpacka
68e0: 67 65 6c 6f 63 61 6c 65 20 73 65 74 20 2d 20 62 gelocale set - b
68f0: 61 64 20 6c 6f 63 61 6c 65 20 28 6e 6f 74 20 76 ad locale (not v
6900: 61 6c 69 64 20 2d 20 75 6e 73 61 66 65 20 70 61 alid - unsafe pa
6910: 74 68 29 22 20 2d 63 6c 65 61 6e 75 70 20 7b 0a th)" -cleanup {.
6920: 09 20 20 20 20 20 20 6d 63 66 6f 72 67 65 74 70 . mcforgetp
6930: 61 63 6b 61 67 65 0a 09 20 20 20 20 7d 20 2d 62 ackage.. } -b
6940: 6f 64 79 20 7b 0a 09 20 20 20 20 20 20 6d 63 70 ody {.. mcp
6950: 61 63 6b 61 67 65 6c 6f 63 61 6c 65 20 73 65 74 ackagelocale set
6960: 20 24 6c 0a 09 20 20 20 20 7d 20 2d 72 65 74 75 $l.. } -retu
6970: 72 6e 43 6f 64 65 73 20 31 20 2d 72 65 73 75 6c rnCodes 1 -resul
6980: 74 20 22 6c 6f 63 61 6c 65 20 5c 22 24 6c 5c 22 t "locale \"$l\"
6990: 20 6e 6f 74 20 76 61 6c 69 64 22 20 2d 65 72 72 not valid" -err
69a0: 6f 72 43 6f 64 65 20 7b 4d 53 47 43 41 54 20 62 orCode {MSGCAT b
69b0: 61 64 4c 6f 63 61 6c 65 20 2a 7d 0a 09 20 20 20 adLocale *}..
69c0: 20 74 65 73 74 20 6d 73 67 63 61 74 2d 31 32 2e test msgcat-12.
69d0: 31 34 2d 24 6c 20 22 6d 63 70 61 63 6b 61 67 65 14-$l "mcpackage
69e0: 6c 6f 63 61 6c 65 20 70 72 65 66 65 72 65 6e 63 locale preferenc
69f0: 65 73 20 2d 20 62 61 64 20 6c 6f 63 61 6c 65 20 es - bad locale
6a00: 28 6e 6f 74 20 76 61 6c 69 64 20 2d 20 75 6e 73 (not valid - uns
6a10: 61 66 65 20 70 61 74 68 29 22 20 2d 63 6c 65 61 afe path)" -clea
6a20: 6e 75 70 20 7b 0a 09 20 20 20 20 20 20 6d 63 66 nup {.. mcf
6a30: 6f 72 67 65 74 70 61 63 6b 61 67 65 0a 09 20 20 orgetpackage..
6a40: 20 20 7d 20 2d 62 6f 64 79 20 7b 0a 09 20 20 20 } -body {..
6a50: 20 20 20 6d 63 70 61 63 6b 61 67 65 6c 6f 63 61 mcpackageloca
6a60: 6c 65 20 70 72 65 66 65 72 65 6e 63 65 73 20 65 le preferences e
6a70: 6e 20 24 6c 20 7b 7d 0a 09 20 20 20 20 7d 20 2d n $l {}.. } -
6a80: 72 65 74 75 72 6e 43 6f 64 65 73 20 31 20 2d 72 returnCodes 1 -r
6a90: 65 73 75 6c 74 20 22 6c 6f 63 61 6c 65 20 5c 22 esult "locale \"
6aa0: 24 6c 5c 22 20 6e 6f 74 20 76 61 6c 69 64 22 20 $l\" not valid"
6ab0: 2d 65 72 72 6f 72 43 6f 64 65 20 7b 4d 53 47 43 -errorCode {MSGC
6ac0: 41 54 20 62 61 64 4c 6f 63 61 6c 65 20 2a 7d 0a AT badLocale *}.
6ad0: 09 20 20 7d 0a 09 7d 0a 09 75 6e 73 65 74 20 6c . }..}..unset l
6ae0: 0a 0a 09 74 65 73 74 20 6d 73 67 63 61 74 2d 31 ...test msgcat-1
6af0: 32 2e 31 35 20 7b 6d 63 70 61 63 6b 61 67 65 6c 2.15 {mcpackagel
6b00: 6f 63 61 6c 65 20 70 72 65 66 65 72 65 6e 63 65 ocale preference
6b10: 73 20 64 6f 65 73 20 6e 6f 74 20 73 6f 75 72 63 s does not sourc
6b20: 65 20 61 20 66 69 6c 65 20 6f 75 74 73 69 64 65 e a file outside
6b30: 20 74 68 65 20 6d 73 67 63 61 74 20 64 69 72 65 the msgcat dire
6b40: 63 74 6f 72 79 20 5b 32 66 38 62 62 34 38 30 30 ctory [2f8bb4800
6b50: 39 5d 7d 20 2d 73 65 74 75 70 20 7b 0a 09 20 20 9]} -setup {..
6b60: 20 20 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 6c variable local
6b70: 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 20 20 e [mclocale]..
6b80: 20 20 73 65 74 20 66 20 5b 6d 61 6b 65 46 69 6c set f [makeFil
6b90: 65 20 7b 73 65 74 20 3a 3a 6d 73 67 63 61 74 3a e {set ::msgcat:
6ba0: 3a 74 65 73 74 3a 3a 6c 6f 61 64 65 64 20 31 7d :test::loaded 1}
6bb0: 20 75 6e 73 61 66 65 2e 6d 73 67 5d 0a 09 20 20 unsafe.msg]..
6bc0: 20 20 73 65 74 20 6c 6f 61 64 65 64 20 30 0a 09 set loaded 0..
6bd0: 20 20 20 20 6d 63 70 61 63 6b 61 67 65 63 6f 6e mcpackagecon
6be0: 66 69 67 20 73 65 74 20 6d 63 66 6f 6c 64 65 72 fig set mcfolder
6bf0: 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 5b 74 65 6d [file join [tem
6c00: 70 6f 72 61 72 79 44 69 72 65 63 74 6f 72 79 5d poraryDirectory]
6c10: 20 6e 6f 73 75 63 68 64 69 72 5d 0a 09 7d 20 2d nosuchdir]..} -
6c20: 63 6c 65 61 6e 75 70 20 7b 0a 09 20 20 20 20 6d cleanup {.. m
6c30: 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a clocale $locale.
6c40: 09 20 20 20 20 6d 63 66 6f 72 67 65 74 70 61 63 . mcforgetpac
6c50: 6b 61 67 65 0a 09 20 20 20 20 72 65 6d 6f 76 65 kage.. remove
6c60: 46 69 6c 65 20 75 6e 73 61 66 65 2e 6d 73 67 0a File unsafe.msg.
6c70: 09 20 20 20 20 75 6e 73 65 74 20 2d 6e 6f 63 6f . unset -noco
6c80: 6d 70 6c 61 69 6e 20 66 20 6c 6f 61 64 65 64 0a mplain f loaded.
6c90: 09 7d 20 2d 62 6f 64 79 20 7b 0a 09 20 20 20 20 .} -body {..
6ca0: 6c 69 73 74 20 5b 63 61 74 63 68 20 7b 6d 63 70 list [catch {mcp
6cb0: 61 63 6b 61 67 65 6c 6f 63 61 6c 65 20 70 72 65 ackagelocale pre
6cc0: 66 65 72 65 6e 63 65 73 20 5b 66 69 6c 65 20 72 ferences [file r
6cd0: 6f 6f 74 6e 61 6d 65 20 24 66 5d 20 7b 7d 7d 5d ootname $f] {}}]
6ce0: 20 24 6c 6f 61 64 65 64 0a 09 7d 20 2d 72 65 73 $loaded..} -res
6cf0: 75 6c 74 20 7b 31 20 30 7d 0a 0a 0a 20 20 20 20 ult {1 0}...
6d00: 23 20 54 65 73 74 73 20 6d 73 67 63 61 74 2d 31 # Tests msgcat-1
6d10: 33 2e 2a 3a 20 5b 6d 63 70 61 63 6b 61 67 65 63 3.*: [mcpackagec
6d20: 6f 6e 66 69 67 20 73 75 62 63 6d 64 73 5d 0a 0a onfig subcmds]..
6d30: 09 74 65 73 74 20 6d 73 67 63 61 74 2d 31 33 2e .test msgcat-13.
6d40: 31 20 7b 6d 63 70 61 63 6b 61 67 65 63 6f 6e 66 1 {mcpackageconf
6d50: 69 67 20 6e 6f 20 73 75 62 63 6f 6d 6d 61 6e 64 ig no subcommand
6d60: 7d 20 2d 62 6f 64 79 20 7b 0a 09 20 20 20 20 6d } -body {.. m
6d70: 63 70 61 63 6b 61 67 65 63 6f 6e 66 69 67 0a 09 cpackageconfig..
6d80: 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 31 } -returnCodes 1
6d90: 5c 0a 09 2d 72 65 73 75 6c 74 20 7b 77 72 6f 6e \..-result {wron
6da0: 67 20 23 20 61 72 67 73 3a 20 73 68 6f 75 6c 64 g # args: should
6db0: 20 62 65 20 22 6d 63 70 61 63 6b 61 67 65 63 6f be "mcpackageco
6dc0: 6e 66 69 67 20 73 75 62 63 6f 6d 6d 61 6e 64 20 nfig subcommand
6dd0: 6f 70 74 69 6f 6e 20 3f 76 61 6c 75 65 3f 22 7d option ?value?"}
6de0: 0a 0a 09 74 65 73 74 20 6d 73 67 63 61 74 2d 31 ...test msgcat-1
6df0: 33 2e 32 20 7b 6d 63 6c 70 61 63 6b 61 67 65 63 3.2 {mclpackagec
6e00: 6f 6e 66 69 67 20 77 72 6f 6e 67 20 73 75 62 63 onfig wrong subc
6e10: 6f 6d 6d 61 6e 64 7d 20 2d 62 6f 64 79 20 7b 0a ommand} -body {.
6e20: 09 20 20 20 20 6d 63 70 61 63 6b 61 67 65 63 6f . mcpackageco
6e30: 6e 66 69 67 20 6a 75 6e 6b 20 6d 63 66 6f 6c 64 nfig junk mcfold
6e40: 65 72 0a 09 7d 20 2d 72 65 74 75 72 6e 43 6f 64 er..} -returnCod
6e50: 65 73 20 31 5c 0a 09 2d 72 65 73 75 6c 74 20 7b es 1\..-result {
6e60: 75 6e 6b 6e 6f 77 6e 20 73 75 62 63 6f 6d 6d 61 unknown subcomma
6e70: 6e 64 20 22 6a 75 6e 6b 22 3a 20 6d 75 73 74 20 nd "junk": must
6e80: 62 65 20 67 65 74 2c 20 69 73 73 65 74 2c 20 73 be get, isset, s
6e90: 65 74 2c 20 6f 72 20 75 6e 73 65 74 7d 0a 0a 09 et, or unset}...
6ea0: 74 65 73 74 20 6d 73 67 63 61 74 2d 31 33 2e 33 test msgcat-13.3
6eb0: 20 7b 6d 63 6c 70 61 63 6b 61 67 65 63 6f 6e 66 {mclpackageconf
6ec0: 69 67 20 77 72 6f 6e 67 20 6f 70 74 69 6f 6e 7d ig wrong option}
6ed0: 20 2d 62 6f 64 79 20 7b 0a 09 20 20 20 20 6d 63 -body {.. mc
6ee0: 70 61 63 6b 61 67 65 63 6f 6e 66 69 67 20 67 65 packageconfig ge
6ef0: 74 20 6a 75 6e 6b 0a 09 7d 20 2d 72 65 74 75 72 t junk..} -retur
6f00: 6e 43 6f 64 65 73 20 31 5c 0a 09 2d 72 65 73 75 nCodes 1\..-resu
6f10: 6c 74 20 7b 62 61 64 20 6f 70 74 69 6f 6e 20 22 lt {bad option "
6f20: 6a 75 6e 6b 22 3a 20 6d 75 73 74 20 62 65 20 6d junk": must be m
6f30: 63 66 6f 6c 64 65 72 2c 20 6c 6f 61 64 63 6d 64 cfolder, loadcmd
6f40: 2c 20 63 68 61 6e 67 65 63 6d 64 2c 20 6f 72 20 , changecmd, or
6f50: 75 6e 6b 6e 6f 77 6e 63 6d 64 7d 0a 0a 09 74 65 unknowncmd}...te
6f60: 73 74 20 6d 73 67 63 61 74 2d 31 33 2e 34 20 7b st msgcat-13.4 {
6f70: 6d 63 70 61 63 6b 61 67 65 63 6f 6e 66 69 67 20 mcpackageconfig
6f80: 67 65 74 7d 20 2d 73 65 74 75 70 20 7b 0a 09 20 get} -setup {..
6f90: 20 20 20 6d 63 66 6f 72 67 65 74 70 61 63 6b 61 mcforgetpacka
6fa0: 67 65 0a 09 7d 20 2d 63 6c 65 61 6e 75 70 20 7b ge..} -cleanup {
6fb0: 0a 09 20 20 20 20 6d 63 66 6f 72 67 65 74 70 61 .. mcforgetpa
6fc0: 63 6b 61 67 65 0a 09 7d 20 2d 62 6f 64 79 20 7b ckage..} -body {
6fd0: 0a 09 20 20 20 20 6d 63 70 61 63 6b 61 67 65 63 .. mcpackagec
6fe0: 6f 6e 66 69 67 20 73 65 74 20 6c 6f 61 64 63 6d onfig set loadcm
6ff0: 64 20 22 22 0a 09 20 20 20 20 6d 63 70 61 63 6b d "".. mcpack
7000: 61 67 65 63 6f 6e 66 69 67 20 67 65 74 20 6c 6f ageconfig get lo
7010: 61 64 63 6d 64 0a 09 7d 20 2d 72 65 73 75 6c 74 adcmd..} -result
7020: 20 7b 7d 0a 0a 09 74 65 73 74 20 6d 73 67 63 61 {}...test msgca
7030: 74 2d 31 33 2e 35 20 7b 6d 63 70 61 63 6b 61 67 t-13.5 {mcpackag
7040: 65 63 6f 6e 66 69 67 20 28 69 73 2f 75 6e 29 73 econfig (is/un)s
7050: 65 74 7d 20 2d 73 65 74 75 70 20 7b 0a 09 20 20 et} -setup {..
7060: 20 20 6d 63 66 6f 72 67 65 74 70 61 63 6b 61 67 mcforgetpackag
7070: 65 0a 09 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a e..} -cleanup {.
7080: 09 20 20 20 20 6d 63 66 6f 72 67 65 74 70 61 63 . mcforgetpac
7090: 6b 61 67 65 0a 09 7d 20 2d 62 6f 64 79 20 7b 0a kage..} -body {.
70a0: 09 20 20 20 20 73 65 74 20 72 65 73 20 5b 6d 63 . set res [mc
70b0: 70 61 63 6b 61 67 65 63 6f 6e 66 69 67 20 69 73 packageconfig is
70c0: 73 65 74 20 6c 6f 61 64 63 6d 64 5d 0a 09 20 20 set loadcmd]..
70d0: 20 20 6c 61 70 70 65 6e 64 20 72 65 73 20 5b 6d lappend res [m
70e0: 63 70 61 63 6b 61 67 65 63 6f 6e 66 69 67 20 73 cpackageconfig s
70f0: 65 74 20 6c 6f 61 64 63 6d 64 20 22 22 5d 0a 09 et loadcmd ""]..
7100: 20 20 20 20 6c 61 70 70 65 6e 64 20 72 65 73 20 lappend res
7110: 5b 6d 63 70 61 63 6b 61 67 65 63 6f 6e 66 69 67 [mcpackageconfig
7120: 20 69 73 73 65 74 20 6c 6f 61 64 63 6d 64 5d 0a isset loadcmd].
7130: 09 20 20 20 20 6d 63 70 61 63 6b 61 67 65 63 6f . mcpackageco
7140: 6e 66 69 67 20 75 6e 73 65 74 20 6c 6f 61 64 63 nfig unset loadc
7150: 6d 64 0a 09 20 20 20 20 6c 61 70 70 65 6e 64 20 md.. lappend
7160: 72 65 73 20 5b 6d 63 70 61 63 6b 61 67 65 63 6f res [mcpackageco
7170: 6e 66 69 67 20 69 73 73 65 74 20 6c 6f 61 64 63 nfig isset loadc
7180: 6d 64 5d 0a 09 7d 20 2d 72 65 73 75 6c 74 20 7b md]..} -result {
7190: 30 20 30 20 31 20 30 7d 0a 0a 20 20 20 20 23 20 0 0 1 0}.. #
71a0: 6f 70 74 69 6f 6e 20 6d 63 66 6f 6c 64 65 72 20 option mcfolder
71b0: 69 73 20 61 6c 72 65 61 64 79 20 74 65 73 74 65 is already teste
71c0: 64 20 77 69 74 68 20 35 2e 31 31 0a 0a 20 20 20 d with 5.11..
71d0: 20 23 20 54 65 73 74 73 20 6d 73 67 63 61 74 2d # Tests msgcat-
71e0: 31 34 2e 2a 3a 20 63 61 6c 6c 62 61 63 6b 73 3a 14.*: callbacks:
71f0: 20 6c 6f 61 64 63 6d 64 2c 20 63 68 61 6e 67 65 loadcmd, change
7200: 63 6d 64 2c 20 75 6e 6b 6e 6f 77 6e 63 6d 64 0a cmd, unknowncmd.
7210: 0a 20 20 20 20 23 20 54 68 69 73 20 72 6f 75 74 . # This rout
7220: 69 6e 65 20 69 73 20 75 73 65 64 20 61 73 20 62 ine is used as b
7230: 67 65 72 72 6f 72 20 61 6e 64 20 62 79 20 64 69 gerror and by di
7240: 72 65 63 74 20 63 61 6c 6c 62 61 63 6b 20 69 6e rect callback in
7250: 76 6f 63 61 74 69 6f 6e 0a 20 20 20 20 70 72 6f vocation. pro
7260: 63 20 63 61 6c 6c 62 61 63 6b 70 72 6f 63 20 61 c callbackproc a
7270: 72 67 73 20 7b 0a 09 76 61 72 69 61 62 6c 65 20 rgs {..variable
7280: 72 65 73 75 6c 74 76 61 72 69 61 62 6c 65 0a 09 resultvariable..
7290: 73 65 74 20 72 65 73 75 6c 74 76 61 72 69 61 62 set resultvariab
72a0: 6c 65 20 24 61 72 67 73 0a 20 20 20 20 7d 0a 20 le $args. }.
72b0: 20 20 20 70 72 6f 63 20 63 61 6c 6c 62 61 63 6b proc callback
72c0: 66 61 69 6c 70 72 6f 63 20 61 72 67 73 20 7b 0a failproc args {.
72d0: 09 72 65 74 75 72 6e 20 2d 63 6f 64 65 20 65 72 .return -code er
72e0: 72 6f 72 20 66 61 69 6c 0a 20 20 20 20 7d 0a 20 ror fail. }.
72f0: 20 20 20 73 65 74 20 62 67 65 72 72 6f 72 73 61 set bgerrorsa
7300: 76 65 64 20 5b 69 6e 74 65 72 70 20 62 67 65 72 ved [interp bger
7310: 72 6f 72 20 7b 7d 5d 0a 20 20 20 20 69 6e 74 65 ror {}]. inte
7320: 72 70 20 62 67 65 72 72 6f 72 20 7b 7d 20 5b 6e rp bgerror {} [n
7330: 61 6d 65 73 70 61 63 65 20 63 6f 64 65 20 63 61 amespace code ca
7340: 6c 6c 62 61 63 6b 70 72 6f 63 5d 0a 0a 20 20 20 llbackproc]..
7350: 20 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 6c 65 variable locale
7360: 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 . if {![info
7370: 65 78 69 73 74 20 6c 6f 63 61 6c 65 5d 7d 20 7b exist locale]} {
7380: 20 73 65 74 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c set locale [mcl
7390: 6f 63 61 6c 65 5d 20 7d 0a 0a 09 74 65 73 74 20 ocale] }...test
73a0: 6d 73 67 63 61 74 2d 31 34 2e 31 20 7b 69 6e 76 msgcat-14.1 {inv
73b0: 6f 63 61 74 69 6f 6e 20 6c 6f 61 64 63 6d 64 7d ocation loadcmd}
73c0: 20 2d 73 65 74 75 70 20 7b 0a 09 20 20 20 20 6d -setup {.. m
73d0: 63 66 6f 72 67 65 74 70 61 63 6b 61 67 65 0a 09 cforgetpackage..
73e0: 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f mclocale $lo
73f0: 63 61 6c 65 0a 09 20 20 20 20 6d 63 6c 6f 63 61 cale.. mcloca
7400: 6c 65 20 22 22 0a 09 20 20 20 20 6d 63 6c 6f 61 le "".. mcloa
7410: 64 65 64 6c 6f 63 61 6c 65 73 20 63 6c 65 61 72 dedlocales clear
7420: 0a 09 20 20 20 20 73 65 74 20 72 65 73 75 6c 74 .. set result
7430: 76 61 72 69 61 62 6c 65 20 22 22 0a 09 7d 20 2d variable ""..} -
7440: 63 6c 65 61 6e 75 70 20 7b 0a 09 20 20 20 20 6d cleanup {.. m
7450: 63 66 6f 72 67 65 74 70 61 63 6b 61 67 65 0a 09 cforgetpackage..
7460: 7d 20 2d 62 6f 64 79 20 7b 0a 09 20 20 20 20 6d } -body {.. m
7470: 63 70 61 63 6b 61 67 65 63 6f 6e 66 69 67 20 73 cpackageconfig s
7480: 65 74 20 6c 6f 61 64 63 6d 64 20 5b 6e 61 6d 65 et loadcmd [name
7490: 73 70 61 63 65 20 63 6f 64 65 20 63 61 6c 6c 62 space code callb
74a0: 61 63 6b 70 72 6f 63 5d 0a 09 20 20 20 20 6d 63 ackproc].. mc
74b0: 6c 6f 63 61 6c 65 20 66 6f 6f 5f 62 61 72 0a 09 locale foo_bar..
74c0: 20 20 20 20 6c 73 6f 72 74 20 24 72 65 73 75 6c lsort $resul
74d0: 74 76 61 72 69 61 62 6c 65 0a 09 7d 20 2d 72 65 tvariable..} -re
74e0: 73 75 6c 74 20 7b 66 6f 6f 20 66 6f 6f 5f 62 61 sult {foo foo_ba
74f0: 72 7d 0a 0a 09 74 65 73 74 20 6d 73 67 63 61 74 r}...test msgcat
7500: 2d 31 34 2e 32 20 7b 69 6e 76 6f 63 61 74 69 6f -14.2 {invocatio
7510: 6e 20 66 61 69 6c 65 64 20 69 6e 20 6c 6f 61 64 n failed in load
7520: 63 6d 64 7d 20 2d 73 65 74 75 70 20 7b 0a 09 20 cmd} -setup {..
7530: 20 20 20 6d 63 66 6f 72 67 65 74 70 61 63 6b 61 mcforgetpacka
7540: 67 65 0a 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 ge.. mclocale
7550: 20 24 6c 6f 63 61 6c 65 0a 09 20 20 20 20 6d 63 $locale.. mc
7560: 6c 6f 63 61 6c 65 20 22 22 0a 09 20 20 20 20 6d locale "".. m
7570: 63 6c 6f 61 64 65 64 6c 6f 63 61 6c 65 73 20 63 cloadedlocales c
7580: 6c 65 61 72 0a 09 7d 20 2d 63 6c 65 61 6e 75 70 lear..} -cleanup
7590: 20 7b 0a 09 20 20 20 20 6d 63 66 6f 72 67 65 74 {.. mcforget
75a0: 70 61 63 6b 61 67 65 0a 09 20 20 20 20 61 66 74 package.. aft
75b0: 65 72 20 63 61 6e 63 65 6c 20 73 65 74 20 5b 6e er cancel set [n
75c0: 61 6d 65 73 70 61 63 65 20 63 75 72 72 65 6e 74 amespace current
75d0: 5d 3a 3a 72 65 73 75 6c 74 76 61 72 69 61 62 6c ]::resultvariabl
75e0: 65 20 74 69 6d 65 6f 75 74 0a 09 7d 20 2d 62 6f e timeout..} -bo
75f0: 64 79 20 7b 0a 09 20 20 20 20 6d 63 70 61 63 6b dy {.. mcpack
7600: 61 67 65 63 6f 6e 66 69 67 20 73 65 74 20 6c 6f ageconfig set lo
7610: 61 64 63 6d 64 20 5b 6e 61 6d 65 73 70 61 63 65 adcmd [namespace
7620: 20 63 6f 64 65 20 63 61 6c 6c 62 61 63 6b 66 61 code callbackfa
7630: 69 6c 70 72 6f 63 5d 0a 09 20 20 20 20 6d 63 6c ilproc].. mcl
7640: 6f 63 61 6c 65 20 66 6f 6f 5f 62 61 72 0a 09 20 ocale foo_bar..
7650: 20 20 20 23 20 6c 65 74 20 74 68 65 20 62 67 65 # let the bge
7660: 72 72 6f 72 20 72 75 6e 0a 09 20 20 20 20 61 66 rror run.. af
7670: 74 65 72 20 31 30 30 20 73 65 74 20 5b 6e 61 6d ter 100 set [nam
7680: 65 73 70 61 63 65 20 63 75 72 72 65 6e 74 5d 3a espace current]:
7690: 3a 72 65 73 75 6c 74 76 61 72 69 61 62 6c 65 20 :resultvariable
76a0: 74 69 6d 65 6f 75 74 0a 09 20 20 20 20 76 77 61 timeout.. vwa
76b0: 69 74 20 5b 6e 61 6d 65 73 70 61 63 65 20 63 75 it [namespace cu
76c0: 72 72 65 6e 74 5d 3a 3a 72 65 73 75 6c 74 76 61 rrent]::resultva
76d0: 72 69 61 62 6c 65 0a 09 20 20 20 20 6c 61 73 73 riable.. lass
76e0: 69 67 6e 20 24 72 65 73 75 6c 74 76 61 72 69 61 ign $resultvaria
76f0: 62 6c 65 20 65 72 72 20 65 72 72 64 69 63 74 0a ble err errdict.
7700: 09 20 20 20 20 6c 69 73 74 20 24 65 72 72 20 5b . list $err [
7710: 64 69 63 74 20 67 65 74 20 24 65 72 72 64 69 63 dict get $errdic
7720: 74 20 2d 63 6f 64 65 5d 0a 09 7d 20 2d 72 65 73 t -code]..} -res
7730: 75 6c 74 20 7b 66 61 69 6c 20 31 7d 0a 0a 09 74 ult {fail 1}...t
7740: 65 73 74 20 6d 73 67 63 61 74 2d 31 34 2e 33 20 est msgcat-14.3
7750: 7b 69 6e 76 6f 63 61 74 69 6f 6e 20 63 68 61 6e {invocation chan
7760: 67 65 63 6d 64 7d 20 2d 73 65 74 75 70 20 7b 0a gecmd} -setup {.
7770: 09 20 20 20 20 6d 63 66 6f 72 67 65 74 70 61 63 . mcforgetpac
7780: 6b 61 67 65 0a 09 20 20 20 20 6d 63 6c 6f 63 61 kage.. mcloca
7790: 6c 65 20 24 6c 6f 63 61 6c 65 0a 09 20 20 20 20 le $locale..
77a0: 6d 63 6c 6f 63 61 6c 65 20 22 22 0a 09 20 20 20 mclocale ""..
77b0: 20 73 65 74 20 72 65 73 75 6c 74 76 61 72 69 61 set resultvaria
77c0: 62 6c 65 20 22 22 0a 09 7d 20 2d 63 6c 65 61 6e ble ""..} -clean
77d0: 75 70 20 7b 0a 09 20 20 20 20 6d 63 66 6f 72 67 up {.. mcforg
77e0: 65 74 70 61 63 6b 61 67 65 0a 09 7d 20 2d 62 6f etpackage..} -bo
77f0: 64 79 20 7b 0a 09 20 20 20 20 6d 63 70 61 63 6b dy {.. mcpack
7800: 61 67 65 63 6f 6e 66 69 67 20 73 65 74 20 63 68 ageconfig set ch
7810: 61 6e 67 65 63 6d 64 20 5b 6e 61 6d 65 73 70 61 angecmd [namespa
7820: 63 65 20 63 6f 64 65 20 63 61 6c 6c 62 61 63 6b ce code callback
7830: 70 72 6f 63 5d 0a 09 20 20 20 20 6d 63 6c 6f 63 proc].. mcloc
7840: 61 6c 65 20 66 6f 6f 5f 62 61 72 0a 09 20 20 20 ale foo_bar..
7850: 20 73 65 74 20 72 65 73 75 6c 74 76 61 72 69 61 set resultvaria
7860: 62 6c 65 0a 09 7d 20 2d 72 65 73 75 6c 74 20 7b ble..} -result {
7870: 66 6f 6f 5f 62 61 72 20 66 6f 6f 20 7b 7d 7d 0a foo_bar foo {}}.
7880: 0a 09 74 65 73 74 20 6d 73 67 63 61 74 2d 31 34 ..test msgcat-14
7890: 2e 34 20 7b 69 6e 76 6f 63 61 74 69 6f 6e 20 75 .4 {invocation u
78a0: 6e 6b 6e 6f 77 6e 63 6d 64 7d 20 2d 73 65 74 75 nknowncmd} -setu
78b0: 70 20 7b 0a 09 20 20 20 20 6d 63 66 6f 72 67 65 p {.. mcforge
78c0: 74 70 61 63 6b 61 67 65 0a 09 20 20 20 20 6d 63 tpackage.. mc
78d0: 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 09 locale $locale..
78e0: 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 22 22 0a mclocale "".
78f0: 09 20 20 20 20 6d 63 6c 6f 61 64 65 64 6c 6f 63 . mcloadedloc
7900: 61 6c 65 73 20 63 6c 65 61 72 0a 09 20 20 20 20 ales clear..
7910: 73 65 74 20 72 65 73 75 6c 74 76 61 72 69 61 62 set resultvariab
7920: 6c 65 20 22 22 0a 09 7d 20 2d 63 6c 65 61 6e 75 le ""..} -cleanu
7930: 70 20 7b 0a 09 20 20 20 20 6d 63 66 6f 72 67 65 p {.. mcforge
7940: 74 70 61 63 6b 61 67 65 0a 09 7d 20 2d 62 6f 64 tpackage..} -bod
7950: 79 20 7b 0a 09 20 20 20 20 6d 63 70 61 63 6b 61 y {.. mcpacka
7960: 67 65 63 6f 6e 66 69 67 20 73 65 74 20 75 6e 6b geconfig set unk
7970: 6e 6f 77 6e 63 6d 64 20 5b 6e 61 6d 65 73 70 61 nowncmd [namespa
7980: 63 65 20 63 6f 64 65 20 63 61 6c 6c 62 61 63 6b ce code callback
7990: 70 72 6f 63 5d 0a 09 20 20 20 20 6d 63 6c 6f 63 proc].. mcloc
79a0: 61 6c 65 20 66 6f 6f 5f 62 61 72 0a 09 20 20 20 ale foo_bar..
79b0: 20 6d 63 20 6b 31 20 70 31 0a 09 20 20 20 20 73 mc k1 p1.. s
79c0: 65 74 20 72 65 73 75 6c 74 76 61 72 69 61 62 6c et resultvariabl
79d0: 65 0a 09 7d 20 2d 72 65 73 75 6c 74 20 7b 66 6f e..} -result {fo
79e0: 6f 5f 62 61 72 20 6b 31 20 70 31 7d 0a 0a 09 74 o_bar k1 p1}...t
79f0: 65 73 74 20 6d 73 67 63 61 74 2d 31 34 2e 35 20 est msgcat-14.5
7a00: 7b 64 69 73 61 62 6c 65 20 67 6c 6f 62 61 6c 20 {disable global
7a10: 75 6e 6b 6e 6f 77 6e 63 6d 64 7d 20 2d 73 65 74 unknowncmd} -set
7a20: 75 70 20 7b 0a 09 20 20 20 20 6d 63 66 6f 72 67 up {.. mcforg
7a30: 65 74 70 61 63 6b 61 67 65 0a 09 20 20 20 20 6d etpackage.. m
7a40: 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a clocale $locale.
7a50: 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 22 22 . mclocale ""
7a60: 0a 09 20 20 20 20 6d 63 6c 6f 61 64 65 64 6c 6f .. mcloadedlo
7a70: 63 61 6c 65 73 20 63 6c 65 61 72 0a 09 20 20 20 cales clear..
7a80: 20 73 65 74 20 72 65 73 75 6c 74 76 61 72 69 61 set resultvaria
7a90: 62 6c 65 20 22 22 0a 09 20 20 20 20 72 65 6e 61 ble "".. rena
7aa0: 6d 65 20 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 75 me ::msgcat::mcu
7ab0: 6e 6b 6e 6f 77 6e 20 53 61 76 65 64 4d 63 75 6e nknown SavedMcun
7ac0: 6b 6e 6f 77 6e 0a 09 20 20 20 20 70 72 6f 63 20 known.. proc
7ad0: 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 75 6e 6b 6e ::msgcat::mcunkn
7ae0: 6f 77 6e 20 7b 64 6f 6d 20 73 7d 20 7b 0a 09 09 own {dom s} {...
7af0: 72 65 74 75 72 6e 20 75 6e 6b 6e 6f 77 6e 3a 24 return unknown:$
7b00: 64 6f 6d 3a 24 73 0a 09 20 20 20 20 7d 0a 09 7d dom:$s.. }..}
7b10: 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 20 20 20 -cleanup {..
7b20: 20 6d 63 66 6f 72 67 65 74 70 61 63 6b 61 67 65 mcforgetpackage
7b30: 0a 09 20 20 20 20 72 65 6e 61 6d 65 20 3a 3a 6d .. rename ::m
7b40: 73 67 63 61 74 3a 3a 6d 63 75 6e 6b 6e 6f 77 6e sgcat::mcunknown
7b50: 20 7b 7d 0a 09 20 20 20 20 72 65 6e 61 6d 65 20 {}.. rename
7b60: 53 61 76 65 64 4d 63 75 6e 6b 6e 6f 77 6e 20 3a SavedMcunknown :
7b70: 3a 6d 73 67 63 61 74 3a 3a 6d 63 75 6e 6b 6e 6f :msgcat::mcunkno
7b80: 77 6e 0a 09 7d 20 2d 62 6f 64 79 20 7b 0a 09 20 wn..} -body {..
7b90: 20 20 20 6d 63 70 61 63 6b 61 67 65 63 6f 6e 66 mcpackageconf
7ba0: 69 67 20 73 65 74 20 75 6e 6b 6e 6f 77 6e 63 6d ig set unknowncm
7bb0: 64 20 22 22 0a 09 20 20 20 20 6d 63 6c 6f 63 61 d "".. mcloca
7bc0: 6c 65 20 66 6f 6f 5f 62 61 72 0a 09 20 20 20 20 le foo_bar..
7bd0: 6d 63 20 6b 31 25 73 20 70 31 0a 09 7d 20 2d 72 mc k1%s p1..} -r
7be0: 65 73 75 6c 74 20 7b 6b 31 70 31 7d 0a 0a 09 74 esult {k1p1}...t
7bf0: 65 73 74 20 6d 73 67 63 61 74 2d 31 34 2e 36 20 est msgcat-14.6
7c00: 7b 75 6e 6b 6e 6f 77 6e 63 6d 64 20 66 61 69 6c {unknowncmd fail
7c10: 69 6e 67 7d 20 2d 73 65 74 75 70 20 7b 0a 09 20 ing} -setup {..
7c20: 20 20 20 6d 63 66 6f 72 67 65 74 70 61 63 6b 61 mcforgetpacka
7c30: 67 65 0a 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 ge.. mclocale
7c40: 20 24 6c 6f 63 61 6c 65 0a 09 20 20 20 20 6d 63 $locale.. mc
7c50: 6c 6f 63 61 6c 65 20 22 22 0a 09 20 20 20 20 6d locale "".. m
7c60: 63 6c 6f 61 64 65 64 6c 6f 63 61 6c 65 73 20 63 cloadedlocales c
7c70: 6c 65 61 72 0a 09 20 20 20 20 73 65 74 20 72 65 lear.. set re
7c80: 73 75 6c 74 76 61 72 69 61 62 6c 65 20 22 22 0a sultvariable "".
7c90: 09 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 20 .} -cleanup {..
7ca0: 20 20 20 6d 63 66 6f 72 67 65 74 70 61 63 6b 61 mcforgetpacka
7cb0: 67 65 0a 09 7d 20 2d 62 6f 64 79 20 7b 0a 09 20 ge..} -body {..
7cc0: 20 20 20 6d 63 70 61 63 6b 61 67 65 63 6f 6e 66 mcpackageconf
7cd0: 69 67 20 73 65 74 20 75 6e 6b 6e 6f 77 6e 63 6d ig set unknowncm
7ce0: 64 20 5b 6e 61 6d 65 73 70 61 63 65 20 63 6f 64 d [namespace cod
7cf0: 65 20 63 61 6c 6c 62 61 63 6b 66 61 69 6c 70 72 e callbackfailpr
7d00: 6f 63 5d 0a 09 20 20 20 20 6d 63 6c 6f 63 61 6c oc].. mclocal
7d10: 65 20 66 6f 6f 5f 62 61 72 0a 09 20 20 20 20 6d e foo_bar.. m
7d20: 63 20 6b 31 0a 09 7d 20 2d 72 65 74 75 72 6e 43 c k1..} -returnC
7d30: 6f 64 65 73 20 31 5c 0a 09 2d 72 65 73 75 6c 74 odes 1\..-result
7d40: 20 7b 66 61 69 6c 7d 0a 0c 0a 0a 20 20 20 20 23 {fail}.... #
7d50: 20 54 65 73 74 73 20 6d 73 67 63 61 74 2d 31 35 Tests msgcat-15
7d60: 2e 2a 3a 20 74 63 6c 6f 6f 20 63 6f 76 65 72 61 .*: tcloo covera
7d70: 67 65 0a 0a 20 20 20 20 23 20 54 68 65 72 65 20 ge.. # There
7d80: 61 72 65 20 34 20 75 73 65 2d 63 61 73 65 73 2c are 4 use-cases,
7d90: 20 77 68 65 72 65 20 33 20 6d 75 73 74 20 62 65 where 3 must be
7da0: 20 74 65 73 74 65 64 20 6e 6f 77 3a 0a 20 20 20 tested now:.
7db0: 20 23 20 2d 20 6e 61 6d 65 73 70 61 63 65 20 64 # - namespace d
7dc0: 65 66 69 6e 65 64 2c 20 69 6e 20 63 6c 61 73 73 efined, in class
7dd0: 20 64 65 66 69 6e 69 74 69 6f 6e 2c 20 63 6c 61 definition, cla
7de0: 73 73 20 64 65 66 69 6e 65 64 20 6f 6f 2c 20 63 ss defined oo, c
7df0: 6c 61 73 73 6c 65 73 73 0a 0a 20 20 20 20 74 65 lassless.. te
7e00: 73 74 20 6d 73 67 63 61 74 2d 31 35 2e 31 20 7b st msgcat-15.1 {
7e10: 6d 63 20 69 6e 20 63 6c 61 73 73 20 73 65 74 75 mc in class setu
7e20: 70 7d 20 2d 73 65 74 75 70 20 7b 0a 09 23 20 66 p} -setup {..# f
7e30: 75 6c 6c 20 6e 61 6d 65 73 70 61 63 65 20 69 73 ull namespace is
7e40: 20 3a 3a 6d 73 67 63 61 74 3a 3a 74 65 73 74 3a ::msgcat::test:
7e50: 62 61 72 0a 09 6e 61 6d 65 73 70 61 63 65 20 65 bar..namespace e
7e60: 76 61 6c 20 62 61 72 20 7b 0a 09 20 20 20 20 3a val bar {.. :
7e70: 3a 6d 73 67 63 61 74 3a 3a 6d 63 73 65 74 20 66 :msgcat::mcset f
7e80: 6f 6f 5f 42 41 52 20 63 6f 6e 32 20 63 6f 6e 32 oo_BAR con2 con2
7e90: 62 61 72 0a 09 20 20 20 20 6f 6f 3a 3a 63 6c 61 bar.. oo::cla
7ea0: 73 73 20 63 72 65 61 74 65 20 43 6c 61 73 73 43 ss create ClassC
7eb0: 75 72 0a 09 7d 0a 09 76 61 72 69 61 62 6c 65 20 ur..}..variable
7ec0: 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 locale [mclocale
7ed0: 5d 0a 09 6d 63 6c 6f 63 61 6c 65 20 66 6f 6f 5f ]..mclocale foo_
7ee0: 42 41 52 0a 20 20 20 20 7d 20 2d 63 6c 65 61 6e BAR. } -clean
7ef0: 75 70 20 7b 0a 09 6d 63 6c 6f 63 61 6c 65 20 24 up {..mclocale $
7f00: 6c 6f 63 61 6c 65 0a 09 6e 61 6d 65 73 70 61 63 locale..namespac
7f10: 65 20 65 76 61 6c 20 62 61 72 20 7b 3a 3a 6d 73 e eval bar {::ms
7f20: 67 63 61 74 3a 3a 6d 63 66 6f 72 67 65 74 70 61 gcat::mcforgetpa
7f30: 63 6b 61 67 65 7d 0a 09 6e 61 6d 65 73 70 61 63 ckage}..namespac
7f40: 65 20 64 65 6c 65 74 65 20 62 61 72 0a 20 20 20 e delete bar.
7f50: 20 7d 20 2d 62 6f 64 79 20 7b 0a 09 6f 6f 3a 3a } -body {..oo::
7f60: 64 65 66 69 6e 65 20 62 61 72 3a 3a 43 6c 61 73 define bar::Clas
7f70: 73 43 75 72 20 6d 73 67 63 61 74 3a 3a 6d 63 20 sCur msgcat::mc
7f80: 63 6f 6e 32 0a 20 20 20 20 7d 20 2d 72 65 73 75 con2. } -resu
7f90: 6c 74 20 63 6f 6e 32 62 61 72 0a 0a 20 20 20 20 lt con2bar..
7fa0: 74 65 73 74 20 6d 73 67 63 61 74 2d 31 35 2e 32 test msgcat-15.2
7fb0: 20 7b 6d 63 20 69 6e 20 63 6c 61 73 73 7d 20 2d {mc in class} -
7fc0: 73 65 74 75 70 20 7b 0a 09 23 20 66 75 6c 6c 20 setup {..# full
7fd0: 6e 61 6d 65 73 70 61 63 65 20 69 73 20 3a 3a 6d namespace is ::m
7fe0: 73 67 63 61 74 3a 3a 74 65 73 74 3a 62 61 72 0a sgcat::test:bar.
7ff0: 09 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 .namespace eval
8000: 62 61 72 20 7b 0a 09 20 20 20 20 3a 3a 6d 73 67 bar {.. ::msg
8010: 63 61 74 3a 3a 6d 63 73 65 74 20 66 6f 6f 5f 42 cat::mcset foo_B
8020: 41 52 20 63 6f 6e 32 20 63 6f 6e 32 62 61 72 0a AR con2 con2bar.
8030: 09 20 20 20 20 6f 6f 3a 3a 63 6c 61 73 73 20 63 . oo::class c
8040: 72 65 61 74 65 20 43 6c 61 73 73 43 75 72 0a 09 reate ClassCur..
8050: 20 20 20 20 6f 6f 3a 3a 64 65 66 69 6e 65 20 43 oo::define C
8060: 6c 61 73 73 43 75 72 20 6d 65 74 68 6f 64 20 6d lassCur method m
8070: 65 74 68 6f 64 31 20 7b 7d 20 7b 3a 3a 6d 73 67 ethod1 {} {::msg
8080: 63 61 74 3a 3a 6d 63 20 63 6f 6e 32 7d 0a 09 7d cat::mc con2}..}
8090: 0a 09 23 20 66 75 6c 6c 20 6e 61 6d 65 73 70 61 ..# full namespa
80a0: 63 65 20 69 73 20 3a 3a 6d 73 67 63 61 74 3a 3a ce is ::msgcat::
80b0: 74 65 73 74 3a 62 61 7a 0a 09 6e 61 6d 65 73 70 test:baz..namesp
80c0: 61 63 65 20 65 76 61 6c 20 62 61 7a 20 7b 0a 09 ace eval baz {..
80d0: 20 20 20 20 73 65 74 20 4f 62 6a 43 75 72 20 5b set ObjCur [
80e0: 3a 3a 6d 73 67 63 61 74 3a 3a 74 65 73 74 3a 3a ::msgcat::test::
80f0: 62 61 72 3a 3a 43 6c 61 73 73 43 75 72 20 6e 65 bar::ClassCur ne
8100: 77 5d 0a 09 7d 0a 09 76 61 72 69 61 62 6c 65 20 w]..}..variable
8110: 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 locale [mclocale
8120: 5d 0a 09 6d 63 6c 6f 63 61 6c 65 20 66 6f 6f 5f ]..mclocale foo_
8130: 42 41 52 0a 20 20 20 20 7d 20 2d 63 6c 65 61 6e BAR. } -clean
8140: 75 70 20 7b 0a 09 6d 63 6c 6f 63 61 6c 65 20 24 up {..mclocale $
8150: 6c 6f 63 61 6c 65 0a 09 6e 61 6d 65 73 70 61 63 locale..namespac
8160: 65 20 65 76 61 6c 20 62 61 72 20 7b 3a 3a 6d 73 e eval bar {::ms
8170: 67 63 61 74 3a 3a 6d 63 66 6f 72 67 65 74 70 61 gcat::mcforgetpa
8180: 63 6b 61 67 65 7d 0a 09 6e 61 6d 65 73 70 61 63 ckage}..namespac
8190: 65 20 64 65 6c 65 74 65 20 62 61 72 20 62 61 7a e delete bar baz
81a0: 0a 20 20 20 20 7d 20 2d 62 6f 64 79 20 7b 0a 09 . } -body {..
81b0: 24 62 61 7a 3a 3a 4f 62 6a 43 75 72 20 6d 65 74 $baz::ObjCur met
81c0: 68 6f 64 31 0a 20 20 20 20 7d 20 2d 72 65 73 75 hod1. } -resu
81d0: 6c 74 20 63 6f 6e 32 62 61 72 0a 0a 20 20 20 20 lt con2bar..
81e0: 74 65 73 74 20 6d 73 67 63 61 74 2d 31 35 2e 33 test msgcat-15.3
81f0: 20 7b 6d 63 20 69 6e 20 63 6c 61 73 73 6c 65 73 {mc in classles
8200: 73 20 6f 62 6a 65 63 74 7d 20 2d 73 65 74 75 70 s object} -setup
8210: 20 7b 0a 09 23 20 66 75 6c 6c 20 6e 61 6d 65 73 {..# full names
8220: 70 61 63 65 20 69 73 20 3a 3a 6d 73 67 63 61 74 pace is ::msgcat
8230: 3a 3a 74 65 73 74 3a 62 61 72 0a 09 6e 61 6d 65 ::test:bar..name
8240: 73 70 61 63 65 20 65 76 61 6c 20 62 61 72 20 7b space eval bar {
8250: 0a 09 20 20 20 20 3a 3a 6d 73 67 63 61 74 3a 3a .. ::msgcat::
8260: 6d 63 73 65 74 20 66 6f 6f 5f 42 41 52 20 63 6f mcset foo_BAR co
8270: 6e 32 20 63 6f 6e 32 62 61 72 0a 09 20 20 20 20 n2 con2bar..
8280: 6f 6f 3a 3a 6f 62 6a 65 63 74 20 63 72 65 61 74 oo::object creat
8290: 65 20 4f 62 6a 43 75 72 0a 09 20 20 20 20 6f 6f e ObjCur.. oo
82a0: 3a 3a 6f 62 6a 64 65 66 69 6e 65 20 4f 62 6a 43 ::objdefine ObjC
82b0: 75 72 20 6d 65 74 68 6f 64 20 6d 65 74 68 6f 64 ur method method
82c0: 31 20 7b 7d 20 7b 3a 3a 6d 73 67 63 61 74 3a 3a 1 {} {::msgcat::
82d0: 6d 63 20 63 6f 6e 32 7d 0a 09 7d 0a 09 76 61 72 mc con2}..}..var
82e0: 69 61 62 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 iable locale [mc
82f0: 6c 6f 63 61 6c 65 5d 0a 09 6d 63 6c 6f 63 61 6c locale]..mclocal
8300: 65 20 66 6f 6f 5f 42 41 52 0a 20 20 20 20 7d 20 e foo_BAR. }
8310: 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 6d 63 6c 6f -cleanup {..mclo
8320: 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 09 6e 61 cale $locale..na
8330: 6d 65 73 70 61 63 65 20 65 76 61 6c 20 62 61 72 mespace eval bar
8340: 20 7b 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 66 6f {::msgcat::mcfo
8350: 72 67 65 74 70 61 63 6b 61 67 65 7d 0a 09 6e 61 rgetpackage}..na
8360: 6d 65 73 70 61 63 65 20 64 65 6c 65 74 65 20 62 mespace delete b
8370: 61 72 0a 20 20 20 20 7d 20 2d 62 6f 64 79 20 7b ar. } -body {
8380: 0a 09 62 61 72 3a 3a 4f 62 6a 43 75 72 20 6d 65 ..bar::ObjCur me
8390: 74 68 6f 64 31 0a 20 20 20 20 7d 20 2d 72 65 73 thod1. } -res
83a0: 75 6c 74 20 63 6f 6e 32 62 61 72 0a 0a 20 20 20 ult con2bar..
83b0: 20 74 65 73 74 20 6d 73 67 63 61 74 2d 31 35 2e test msgcat-15.
83c0: 34 20 7b 6d 63 20 69 6e 20 63 6c 61 73 73 6c 65 4 {mc in classle
83d0: 73 73 20 6f 62 6a 65 63 74 20 77 69 74 68 20 65 ss object with e
83e0: 78 70 6c 69 63 69 74 65 20 6e 61 6d 65 73 70 61 xplicite namespa
83f0: 63 65 20 65 76 61 6c 7d 5c 0a 20 20 20 20 2d 73 ce eval}\. -s
8400: 65 74 75 70 20 7b 0a 09 23 20 66 75 6c 6c 20 6e etup {..# full n
8410: 61 6d 65 73 70 61 63 65 20 69 73 20 3a 3a 6d 73 amespace is ::ms
8420: 67 63 61 74 3a 3a 74 65 73 74 3a 62 61 72 0a 09 gcat::test:bar..
8430: 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 62 namespace eval b
8440: 61 72 20 7b 0a 09 20 20 20 20 3a 3a 6d 73 67 63 ar {.. ::msgc
8450: 61 74 3a 3a 6d 63 73 65 74 20 66 6f 6f 5f 42 41 at::mcset foo_BA
8460: 52 20 63 6f 6e 32 20 63 6f 6e 32 62 61 72 0a 09 R con2 con2bar..
8470: 20 20 20 20 6f 6f 3a 3a 6f 62 6a 65 63 74 20 63 oo::object c
8480: 72 65 61 74 65 20 4f 62 6a 43 75 72 0a 09 20 20 reate ObjCur..
8490: 20 20 6f 6f 3a 3a 6f 62 6a 64 65 66 69 6e 65 20 oo::objdefine
84a0: 4f 62 6a 43 75 72 20 6d 65 74 68 6f 64 20 6d 65 ObjCur method me
84b0: 74 68 6f 64 31 20 7b 7d 20 7b 0a 09 09 6e 61 6d thod1 {} {...nam
84c0: 65 73 70 61 63 65 20 65 76 61 6c 20 3a 3a 6d 73 espace eval ::ms
84d0: 67 63 61 74 3a 3a 74 65 73 74 3a 3a 62 61 7a 20 gcat::test::baz
84e0: 7b 0a 09 09 20 20 20 20 3a 3a 6d 73 67 63 61 74 {... ::msgcat
84f0: 3a 3a 6d 63 20 63 6f 6e 32 0a 09 09 7d 0a 09 20 ::mc con2...}..
8500: 20 20 20 7d 0a 09 7d 0a 09 6e 61 6d 65 73 70 61 }..}..namespa
8510: 63 65 20 65 76 61 6c 20 62 61 7a 20 7b 0a 09 20 ce eval baz {..
8520: 20 20 20 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 73 ::msgcat::mcs
8530: 65 74 20 66 6f 6f 5f 42 41 52 20 63 6f 6e 32 20 et foo_BAR con2
8540: 63 6f 6e 32 62 61 7a 0a 09 7d 0a 09 76 61 72 69 con2baz..}..vari
8550: 61 62 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c able locale [mcl
8560: 6f 63 61 6c 65 5d 0a 09 6d 63 6c 6f 63 61 6c 65 ocale]..mclocale
8570: 20 66 6f 6f 5f 42 41 52 0a 20 20 20 20 7d 20 2d foo_BAR. } -
8580: 63 6c 65 61 6e 75 70 20 7b 0a 09 6d 63 6c 6f 63 cleanup {..mcloc
8590: 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 09 6e 61 6d ale $locale..nam
85a0: 65 73 70 61 63 65 20 65 76 61 6c 20 62 61 72 20 espace eval bar
85b0: 7b 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 66 6f 72 {::msgcat::mcfor
85c0: 67 65 74 70 61 63 6b 61 67 65 7d 0a 09 6e 61 6d getpackage}..nam
85d0: 65 73 70 61 63 65 20 65 76 61 6c 20 62 61 7a 20 espace eval baz
85e0: 7b 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 66 6f 72 {::msgcat::mcfor
85f0: 67 65 74 70 61 63 6b 61 67 65 7d 0a 09 6e 61 6d getpackage}..nam
8600: 65 73 70 61 63 65 20 64 65 6c 65 74 65 20 62 61 espace delete ba
8610: 72 20 62 61 7a 0a 20 20 20 20 7d 20 2d 62 6f 64 r baz. } -bod
8620: 79 20 7b 0a 09 62 61 72 3a 3a 4f 62 6a 43 75 72 y {..bar::ObjCur
8630: 20 6d 65 74 68 6f 64 31 0a 20 20 20 20 7d 20 2d method1. } -
8640: 72 65 73 75 6c 74 20 63 6f 6e 32 62 61 7a 0a 0a result con2baz..
8650: 20 20 20 20 23 20 48 61 4f 20 32 30 32 34 2d 30 # HaO 2024-0
8660: 37 2d 31 35 20 66 69 78 20 6d 65 0a 20 20 20 20 7-15 fix me.
8670: 23 20 54 69 63 6b 65 74 20 39 31 62 33 61 35 62 # Ticket 91b3a5b
8680: 62 3a 20 49 20 68 61 76 65 20 6e 6f 20 69 64 65 b: I have no ide
8690: 61 20 77 68 61 74 20 74 68 65 20 66 6f 6c 6c 6f a what the follo
86a0: 77 69 6e 67 20 63 61 73 65 20 73 68 6f 75 6c 64 wing case should
86b0: 20 64 6f 2e 0a 20 20 20 20 23 20 42 75 74 20 63 do.. # But c
86c0: 75 72 72 65 6e 74 6c 79 2c 20 69 74 20 72 61 69 urrently, it rai
86d0: 73 65 73 20 61 6e 20 65 72 72 6f 72 20 61 6e 64 ses an error and
86e0: 20 74 68 61 74 20 73 68 6f 75 6c 64 20 6e 6f 74 that should not
86f0: 20 68 61 70 70 65 6e 2e 0a 20 20 20 20 23 20 54 happen.. # T
8700: 68 65 20 62 61 63 6b 67 72 6f 75 6e 64 20 69 73 he background is
8710: 20 74 68 65 20 74 6b 6c 69 62 20 74 6f 6f 6c 74 the tklib toolt
8720: 69 70 20 70 61 63 6b 61 67 65 2e 0a 20 20 20 20 ip package..
8730: 23 20 54 68 69 73 20 70 61 63 6b 61 67 65 20 63 # This package c
8740: 61 70 74 75 72 65 73 20 74 68 65 20 63 61 6c 6c aptures the call
8750: 65 72 20 6e 61 6d 65 73 70 61 63 65 20 74 6f 20 er namespace to
8760: 6c 61 74 65 72 20 69 6e 76 6f 6b 65 20 6d 73 67 later invoke msg
8770: 63 61 74 20 77 69 74 68 20 63 75 72 72 65 6e 74 cat with current
8780: 20 64 61 74 61 2e 0a 20 20 20 20 23 20 49 66 20 data.. # If
8790: 74 68 65 20 63 61 6c 6c 65 72 20 6e 61 6d 65 73 the caller names
87a0: 70 61 63 65 20 69 73 20 61 20 6d 65 74 68 6f 64 pace is a method
87b0: 2c 20 69 74 20 63 75 72 72 65 6e 74 6c 79 20 66 , it currently f
87c0: 61 69 6c 73 2e 0a 20 20 20 20 74 65 73 74 20 6d ails.. test m
87d0: 73 67 63 61 74 2d 31 35 2e 35 20 7b 74 69 63 6b sgcat-15.5 {tick
87e0: 65 74 20 39 31 62 33 61 35 62 62 3a 20 6d 65 74 et 91b3a5bb: met
87f0: 68 6f 64 20 6e 61 6d 65 73 70 61 63 65 20 72 65 hod namespace re
8800: 63 6f 72 64 65 64 20 61 6e 64 20 65 76 61 6c 75 corded and evalu
8810: 61 74 65 64 20 67 69 76 65 73 20 65 72 72 6f 72 ated gives error
8820: 7d 5c 0a 20 20 20 20 2d 73 65 74 75 70 20 7b 0a }\. -setup {.
8830: 09 6f 6f 3a 3a 63 6c 61 73 73 20 63 72 65 61 74 .oo::class creat
8840: 65 20 41 70 70 20 7b 7d 0a 09 6f 6f 3a 3a 64 65 e App {}..oo::de
8850: 66 69 6e 65 20 41 70 70 20 7b 0a 09 20 20 20 20 fine App {..
8860: 63 6f 6e 73 74 72 75 63 74 6f 72 20 7b 7d 20 7b constructor {} {
8870: 20 6d 79 20 61 64 64 5f 6f 6e 65 20 7d 0a 09 20 my add_one }..
8880: 20 20 20 6d 65 74 68 6f 64 20 61 64 64 5f 6f 6e method add_on
8890: 65 20 7b 7d 20 7b 20 72 65 63 6f 72 64 4d 73 67 e {} { recordMsg
88a0: 63 61 74 20 7d 0a 09 7d 0a 09 70 72 6f 63 20 3a cat }..}..proc :
88b0: 3a 72 65 63 6f 72 64 4d 73 67 63 61 74 20 7b 7d :recordMsgcat {}
88c0: 20 7b 20 73 65 74 20 3a 3a 6e 73 63 61 6c 6c 65 { set ::nscalle
88d0: 72 20 5b 75 70 6c 65 76 65 6c 20 31 20 7b 6e 61 r [uplevel 1 {na
88e0: 6d 65 73 70 61 63 65 20 63 75 72 72 65 6e 74 7d mespace current}
88f0: 5d 20 7d 0a 09 73 65 74 20 61 70 70 6c 69 63 61 ] }..set applica
8900: 74 69 6f 6e 20 5b 41 70 70 20 6e 65 77 5d 0a 7d tion [App new].}
8910: 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 24 61 70 -cleanup {..$ap
8920: 70 6c 69 63 61 74 69 6f 6e 20 64 65 73 74 72 6f plication destro
8930: 79 0a 09 41 70 70 20 64 65 73 74 72 6f 79 0a 09 y..App destroy..
8940: 75 6e 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69 unset -nocomplai
8950: 6e 20 3a 3a 6e 73 63 61 6c 6c 65 72 0a 09 72 65 n ::nscaller..re
8960: 6e 61 6d 65 20 3a 3a 72 65 63 6f 72 64 4d 73 67 name ::recordMsg
8970: 63 61 74 20 22 22 0a 20 20 20 20 7d 20 2d 62 6f cat "". } -bo
8980: 64 79 20 7b 0a 09 6e 61 6d 65 73 70 61 63 65 20 dy {..namespace
8990: 65 76 61 6c 20 24 3a 3a 6e 73 63 61 6c 6c 65 72 eval $::nscaller
89a0: 20 5b 6c 69 73 74 20 3a 3a 6d 73 67 63 61 74 3a [list ::msgcat:
89b0: 3a 6d 63 20 22 54 65 73 74 22 5d 0a 20 20 20 20 :mc "Test"].
89c0: 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 6f } -returnCodes o
89d0: 6b 20 2d 72 65 73 75 6c 74 20 54 65 73 74 0a 0a k -result Test..
89e0: 20 20 20 20 23 20 54 65 73 74 20 6d 73 67 63 61 # Test msgca
89f0: 74 2d 31 36 2e 2a 3a 20 63 6f 6d 6d 61 6e 64 20 t-16.*: command
8a00: 6d 63 70 61 63 6b 61 67 65 6e 61 6d 65 73 70 61 mcpackagenamespa
8a10: 63 65 67 65 74 0a 0a 20 20 20 20 74 65 73 74 20 ceget.. test
8a20: 6d 73 67 63 61 74 2d 31 36 2e 31 20 7b 6d 63 70 msgcat-16.1 {mcp
8a30: 61 63 6b 61 67 65 6e 61 6d 65 73 70 61 63 65 67 ackagenamespaceg
8a40: 65 74 20 69 6e 20 6e 61 6d 65 73 70 61 63 65 20 et in namespace
8a50: 70 72 6f 63 65 64 75 72 65 7d 20 2d 62 6f 64 79 procedure} -body
8a60: 20 7b 0a 09 6e 61 6d 65 73 70 61 63 65 20 65 76 {..namespace ev
8a70: 61 6c 20 62 61 7a 20 7b 6d 73 67 63 61 74 3a 3a al baz {msgcat::
8a80: 6d 63 70 61 63 6b 61 67 65 6e 61 6d 65 73 70 61 mcpackagenamespa
8a90: 63 65 67 65 74 7d 0a 20 20 20 20 7d 20 2d 72 65 ceget}. } -re
8aa0: 73 75 6c 74 20 3a 3a 6d 73 67 63 61 74 3a 3a 74 sult ::msgcat::t
8ab0: 65 73 74 3a 3a 62 61 7a 0a 0a 20 20 20 20 74 65 est::baz.. te
8ac0: 73 74 20 6d 73 67 63 61 74 2d 31 36 2e 32 20 7b st msgcat-16.2 {
8ad0: 6d 63 70 61 63 6b 61 67 65 6e 61 6d 65 73 70 61 mcpackagenamespa
8ae0: 63 65 67 65 74 20 69 6e 20 63 6c 61 73 73 20 73 ceget in class s
8af0: 65 74 75 70 7d 20 2d 73 65 74 75 70 20 7b 0a 09 etup} -setup {..
8b00: 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 62 namespace eval b
8b10: 61 72 20 7b 0a 09 20 20 20 20 6f 6f 3a 3a 63 6c ar {.. oo::cl
8b20: 61 73 73 20 63 72 65 61 74 65 20 43 6c 61 73 73 ass create Class
8b30: 43 75 72 0a 09 20 20 20 20 6f 6f 3a 3a 64 65 66 Cur.. oo::def
8b40: 69 6e 65 20 43 6c 61 73 73 43 75 72 20 76 61 72 ine ClassCur var
8b50: 69 61 62 6c 65 20 61 0a 09 7d 0a 20 20 20 20 7d iable a..}. }
8b60: 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 6e 61 6d -cleanup {..nam
8b70: 65 73 70 61 63 65 20 64 65 6c 65 74 65 20 62 61 espace delete ba
8b80: 72 0a 20 20 20 20 7d 20 2d 62 6f 64 79 20 7b 0a r. } -body {.
8b90: 09 6f 6f 3a 3a 64 65 66 69 6e 65 20 62 61 72 3a .oo::define bar:
8ba0: 3a 43 6c 61 73 73 43 75 72 20 6d 73 67 63 61 74 :ClassCur msgcat
8bb0: 3a 3a 6d 63 70 61 63 6b 61 67 65 6e 61 6d 65 73 ::mcpackagenames
8bc0: 70 61 63 65 67 65 74 0a 20 20 20 20 7d 20 2d 72 paceget. } -r
8bd0: 65 73 75 6c 74 20 3a 3a 6d 73 67 63 61 74 3a 3a esult ::msgcat::
8be0: 74 65 73 74 3a 3a 62 61 72 0a 0a 20 20 20 20 74 test::bar.. t
8bf0: 65 73 74 20 6d 73 67 63 61 74 2d 31 36 2e 33 20 est msgcat-16.3
8c00: 7b 6d 63 70 61 63 6b 61 67 65 6e 61 6d 65 73 70 {mcpackagenamesp
8c10: 61 63 65 67 65 74 20 69 6e 20 63 6c 61 73 73 7d aceget in class}
8c20: 20 2d 73 65 74 75 70 20 7b 0a 09 6e 61 6d 65 73 -setup {..names
8c30: 70 61 63 65 20 65 76 61 6c 20 62 61 72 20 7b 0a pace eval bar {.
8c40: 09 20 20 20 20 6f 6f 3a 3a 63 6c 61 73 73 20 63 . oo::class c
8c50: 72 65 61 74 65 20 43 6c 61 73 73 43 75 72 0a 09 reate ClassCur..
8c60: 20 20 20 20 6f 6f 3a 3a 64 65 66 69 6e 65 20 43 oo::define C
8c70: 6c 61 73 73 43 75 72 20 6d 65 74 68 6f 64 20 6d lassCur method m
8c80: 65 74 68 6f 64 31 20 7b 7d 20 7b 6d 73 67 63 61 ethod1 {} {msgca
8c90: 74 3a 3a 6d 63 70 61 63 6b 61 67 65 6e 61 6d 65 t::mcpackagename
8ca0: 73 70 61 63 65 67 65 74 7d 0a 09 7d 0a 09 6e 61 spaceget}..}..na
8cb0: 6d 65 73 70 61 63 65 20 65 76 61 6c 20 62 61 7a mespace eval baz
8cc0: 20 7b 0a 09 20 20 20 20 73 65 74 20 4f 62 6a 43 {.. set ObjC
8cd0: 75 72 20 5b 3a 3a 6d 73 67 63 61 74 3a 3a 74 65 ur [::msgcat::te
8ce0: 73 74 3a 3a 62 61 72 3a 3a 43 6c 61 73 73 43 75 st::bar::ClassCu
8cf0: 72 20 6e 65 77 5d 0a 09 7d 0a 20 20 20 20 7d 20 r new]..}. }
8d00: 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 6e 61 6d 65 -cleanup {..name
8d10: 73 70 61 63 65 20 64 65 6c 65 74 65 20 62 61 72 space delete bar
8d20: 20 62 61 7a 0a 20 20 20 20 7d 20 2d 62 6f 64 79 baz. } -body
8d30: 20 7b 0a 09 24 62 61 7a 3a 3a 4f 62 6a 43 75 72 {..$baz::ObjCur
8d40: 20 6d 65 74 68 6f 64 31 0a 20 20 20 20 7d 20 2d method1. } -
8d50: 72 65 73 75 6c 74 20 3a 3a 6d 73 67 63 61 74 3a result ::msgcat:
8d60: 3a 74 65 73 74 3a 3a 62 61 72 0a 0a 20 20 20 20 :test::bar..
8d70: 74 65 73 74 20 6d 73 67 63 61 74 2d 31 36 2e 34 test msgcat-16.4
8d80: 20 7b 6d 63 70 61 63 6b 61 67 65 6e 61 6d 65 73 {mcpackagenames
8d90: 70 61 63 65 67 65 74 20 69 6e 20 63 6c 61 73 73 paceget in class
8da0: 6c 65 73 73 20 6f 62 6a 65 63 74 7d 20 2d 73 65 less object} -se
8db0: 74 75 70 20 7b 0a 09 6e 61 6d 65 73 70 61 63 65 tup {..namespace
8dc0: 20 65 76 61 6c 20 62 61 72 20 7b 0a 09 20 20 20 eval bar {..
8dd0: 20 6f 6f 3a 3a 6f 62 6a 65 63 74 20 63 72 65 61 oo::object crea
8de0: 74 65 20 4f 62 6a 43 75 72 0a 09 20 20 20 20 6f te ObjCur.. o
8df0: 6f 3a 3a 6f 62 6a 64 65 66 69 6e 65 20 4f 62 6a o::objdefine Obj
8e00: 43 75 72 20 6d 65 74 68 6f 64 20 6d 65 74 68 6f Cur method metho
8e10: 64 31 20 7b 7d 20 7b 6d 73 67 63 61 74 3a 3a 6d d1 {} {msgcat::m
8e20: 63 70 61 63 6b 61 67 65 6e 61 6d 65 73 70 61 63 cpackagenamespac
8e30: 65 67 65 74 7d 0a 09 7d 0a 20 20 20 20 7d 20 2d eget}..}. } -
8e40: 63 6c 65 61 6e 75 70 20 7b 0a 09 6e 61 6d 65 73 cleanup {..names
8e50: 70 61 63 65 20 64 65 6c 65 74 65 20 62 61 72 0a pace delete bar.
8e60: 20 20 20 20 7d 20 2d 62 6f 64 79 20 7b 0a 09 62 } -body {..b
8e70: 61 72 3a 3a 4f 62 6a 43 75 72 20 6d 65 74 68 6f ar::ObjCur metho
8e80: 64 31 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 d1. } -result
8e90: 20 3a 3a 6d 73 67 63 61 74 3a 3a 74 65 73 74 3a ::msgcat::test:
8ea0: 3a 62 61 72 0a 0a 20 20 20 20 74 65 73 74 20 6d :bar.. test m
8eb0: 73 67 63 61 74 2d 31 36 2e 35 5c 0a 20 20 20 20 sgcat-16.5\.
8ec0: 7b 6d 63 70 61 63 6b 61 67 65 6e 61 6d 65 73 70 {mcpackagenamesp
8ed0: 61 63 65 67 65 74 20 69 6e 20 63 6c 61 73 73 6c aceget in classl
8ee0: 65 73 73 20 6f 62 6a 65 63 74 20 77 69 74 68 20 ess object with
8ef0: 65 78 70 6c 69 63 69 74 65 20 6e 61 6d 65 73 70 explicite namesp
8f00: 61 63 65 20 65 76 61 6c 7d 5c 0a 20 20 20 20 2d ace eval}\. -
8f10: 73 65 74 75 70 20 7b 0a 09 6e 61 6d 65 73 70 61 setup {..namespa
8f20: 63 65 20 65 76 61 6c 20 62 61 72 20 7b 0a 09 20 ce eval bar {..
8f30: 20 20 20 6f 6f 3a 3a 6f 62 6a 65 63 74 20 63 72 oo::object cr
8f40: 65 61 74 65 20 4f 62 6a 43 75 72 0a 09 20 20 20 eate ObjCur..
8f50: 20 6f 6f 3a 3a 6f 62 6a 64 65 66 69 6e 65 20 4f oo::objdefine O
8f60: 62 6a 43 75 72 20 6d 65 74 68 6f 64 20 6d 65 74 bjCur method met
8f70: 68 6f 64 31 20 7b 7d 20 7b 0a 09 09 6e 61 6d 65 hod1 {} {...name
8f80: 73 70 61 63 65 20 65 76 61 6c 20 3a 3a 6d 73 67 space eval ::msg
8f90: 63 61 74 3a 3a 74 65 73 74 3a 3a 62 61 7a 20 7b cat::test::baz {
8fa0: 0a 09 09 20 20 20 20 6d 73 67 63 61 74 3a 3a 6d ... msgcat::m
8fb0: 63 70 61 63 6b 61 67 65 6e 61 6d 65 73 70 61 63 cpackagenamespac
8fc0: 65 67 65 74 0a 09 09 7d 0a 09 20 20 20 20 7d 0a eget...}.. }.
8fd0: 09 7d 0a 20 20 20 20 7d 20 2d 63 6c 65 61 6e 75 .}. } -cleanu
8fe0: 70 20 7b 0a 09 6e 61 6d 65 73 70 61 63 65 20 64 p {..namespace d
8ff0: 65 6c 65 74 65 20 62 61 72 20 62 61 7a 0a 20 20 elete bar baz.
9000: 20 20 7d 20 2d 62 6f 64 79 20 7b 0a 09 62 61 72 } -body {..bar
9010: 3a 3a 4f 62 6a 43 75 72 20 6d 65 74 68 6f 64 31 ::ObjCur method1
9020: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 3a . } -result :
9030: 3a 6d 73 67 63 61 74 3a 3a 74 65 73 74 3a 3a 62 :msgcat::test::b
9040: 61 7a 0a 0a 0c 0a 20 20 20 20 23 20 54 65 73 74 az.... # Test
9050: 20 6d 73 67 63 61 74 2d 31 37 2e 2a 3a 20 6d 63 msgcat-17.*: mc
9060: 6e 20 63 6f 6d 6d 61 6e 64 0a 0a 20 20 20 20 74 n command.. t
9070: 65 73 74 20 6d 73 67 63 61 74 2d 31 37 2e 31 20 est msgcat-17.1
9080: 7b 6d 63 6e 20 6e 6f 20 70 61 72 61 6d 65 74 65 {mcn no paramete
9090: 72 73 7d 20 2d 62 6f 64 79 20 7b 0a 09 6d 63 6e rs} -body {..mcn
90a0: 0a 20 20 20 20 7d 20 2d 72 65 74 75 72 6e 43 6f . } -returnCo
90b0: 64 65 73 20 31 5c 0a 20 20 20 20 2d 72 65 73 75 des 1\. -resu
90c0: 6c 74 20 7b 77 72 6f 6e 67 20 23 20 61 72 67 73 lt {wrong # args
90d0: 3a 20 73 68 6f 75 6c 64 20 62 65 20 22 6d 63 6e : should be "mcn
90e0: 20 6e 73 20 73 72 63 20 3f 61 72 67 20 2e 2e 2e ns src ?arg ...
90f0: 3f 22 7d 0a 0a 20 20 20 20 74 65 73 74 20 6d 73 ?"}.. test ms
9100: 67 63 61 74 2d 31 37 2e 32 20 7b 6d 63 6e 7d 20 gcat-17.2 {mcn}
9110: 2d 73 65 74 75 70 20 7b 0a 09 6e 61 6d 65 73 70 -setup {..namesp
9120: 61 63 65 20 65 76 61 6c 20 62 61 72 20 7b 3a 3a ace eval bar {::
9130: 6d 73 67 63 61 74 3a 3a 6d 63 73 65 74 20 66 6f msgcat::mcset fo
9140: 6f 5f 42 41 52 20 63 6f 6e 31 20 63 6f 6e 31 62 o_BAR con1 con1b
9150: 61 72 7d 0a 09 76 61 72 69 61 62 6c 65 20 6c 6f ar}..variable lo
9160: 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a cale [mclocale].
9170: 09 6d 63 6c 6f 63 61 6c 65 20 66 6f 6f 5f 42 41 .mclocale foo_BA
9180: 52 0a 20 20 20 20 7d 20 2d 63 6c 65 61 6e 75 70 R. } -cleanup
9190: 20 7b 0a 09 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f {..mclocale $lo
91a0: 63 61 6c 65 0a 20 20 20 20 7d 20 2d 62 6f 64 79 cale. } -body
91b0: 20 7b 0a 09 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 {..::msgcat::mc
91c0: 6e 20 5b 6e 61 6d 65 73 70 61 63 65 20 63 75 72 n [namespace cur
91d0: 72 65 6e 74 5d 3a 3a 62 61 72 20 63 6f 6e 31 0a rent]::bar con1.
91e0: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 63 6f } -result co
91f0: 6e 31 62 61 72 0a 0a 0c 0a 20 20 20 20 69 6e 74 n1bar.... int
9200: 65 72 70 20 62 67 65 72 72 6f 72 20 7b 7d 20 24 erp bgerror {} $
9210: 62 67 65 72 72 6f 72 73 61 76 65 64 0a 0a 20 20 bgerrorsaved..
9220: 20 20 23 20 54 65 73 74 73 20 6d 73 67 63 61 74 # Tests msgcat
9230: 2d 31 38 2e 2a 3a 20 5b 6d 63 75 74 69 6c 5d 0a -18.*: [mcutil].
9240: 0a 20 20 20 20 74 65 73 74 20 6d 73 67 63 61 74 . test msgcat
9250: 2d 31 38 2e 31 20 7b 6d 63 75 74 69 6c 20 2d 20 -18.1 {mcutil -
9260: 6e 6f 20 61 72 67 75 6d 65 6e 74 7d 20 2d 62 6f no argument} -bo
9270: 64 79 20 7b 0a 09 6d 63 75 74 69 6c 0a 20 20 20 dy {..mcutil.
9280: 20 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 } -returnCodes
9290: 31 5c 0a 20 20 20 20 2d 72 65 73 75 6c 74 20 7b 1\. -result {
92a0: 77 72 6f 6e 67 20 23 20 61 72 67 73 3a 20 73 68 wrong # args: sh
92b0: 6f 75 6c 64 20 62 65 20 22 6d 63 75 74 69 6c 20 ould be "mcutil
92c0: 73 75 62 63 6f 6d 6d 61 6e 64 20 3f 61 72 67 20 subcommand ?arg
92d0: 2e 2e 2e 3f 22 7d 0a 0a 20 20 20 20 74 65 73 74 ...?"}.. test
92e0: 20 6d 73 67 63 61 74 2d 31 38 2e 32 20 7b 6d 63 msgcat-18.2 {mc
92f0: 75 74 69 6c 20 2d 20 77 72 6f 6e 67 20 61 72 67 util - wrong arg
9300: 75 6d 65 6e 74 7d 20 2d 62 6f 64 79 20 7b 0a 09 ument} -body {..
9310: 6d 63 75 74 69 6c 20 6a 75 6e 6b 0a 20 20 20 20 mcutil junk.
9320: 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 31 } -returnCodes 1
9330: 5c 0a 20 20 20 20 2d 72 65 73 75 6c 74 20 7b 75 \. -result {u
9340: 6e 6b 6e 6f 77 6e 20 73 75 62 63 6f 6d 6d 61 6e nknown subcomman
9350: 64 20 22 6a 75 6e 6b 22 3a 20 6d 75 73 74 20 62 d "junk": must b
9360: 65 20 67 65 74 70 72 65 66 65 72 65 6e 63 65 73 e getpreferences
9370: 2c 20 6f 72 20 67 65 74 73 79 73 74 65 6d 6c 6f , or getsystemlo
9380: 63 61 6c 65 7d 0a 0a 20 20 20 20 74 65 73 74 20 cale}.. test
9390: 6d 73 67 63 61 74 2d 31 38 2e 33 20 7b 6d 63 75 msgcat-18.3 {mcu
93a0: 74 69 6c 20 2d 20 70 61 72 74 69 61 6c 20 61 72 til - partial ar
93b0: 67 75 6d 65 6e 74 7d 20 2d 62 6f 64 79 20 7b 0a gument} -body {.
93c0: 09 6d 63 75 74 69 6c 20 67 65 74 73 79 73 74 65 .mcutil getsyste
93d0: 6d 0a 20 20 20 20 7d 20 2d 72 65 74 75 72 6e 43 m. } -returnC
93e0: 6f 64 65 73 20 31 5c 0a 20 20 20 20 2d 72 65 73 odes 1\. -res
93f0: 75 6c 74 20 7b 75 6e 6b 6e 6f 77 6e 20 73 75 62 ult {unknown sub
9400: 63 6f 6d 6d 61 6e 64 20 22 67 65 74 73 79 73 74 command "getsyst
9410: 65 6d 22 3a 20 6d 75 73 74 20 62 65 20 67 65 74 em": must be get
9420: 70 72 65 66 65 72 65 6e 63 65 73 2c 20 6f 72 20 preferences, or
9430: 67 65 74 73 79 73 74 65 6d 6c 6f 63 61 6c 65 7d getsystemlocale}
9440: 0a 0a 20 20 20 20 74 65 73 74 20 6d 73 67 63 61 .. test msgca
9450: 74 2d 31 38 2e 34 20 7b 6d 63 75 74 69 6c 20 67 t-18.4 {mcutil g
9460: 65 74 70 72 65 66 65 72 65 6e 63 65 73 20 2d 20 etpreferences -
9470: 6e 6f 20 61 72 67 75 6d 65 6e 74 7d 20 2d 62 6f no argument} -bo
9480: 64 79 20 7b 0a 09 6d 63 75 74 69 6c 20 67 65 74 dy {..mcutil get
9490: 70 72 65 66 65 72 65 6e 63 65 73 0a 20 20 20 20 preferences.
94a0: 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 31 } -returnCodes 1
94b0: 5c 0a 20 20 20 20 2d 72 65 73 75 6c 74 20 7b 77 \. -result {w
94c0: 72 6f 6e 67 20 23 20 61 72 67 73 3a 20 73 68 6f rong # args: sho
94d0: 75 6c 64 20 62 65 20 22 6d 63 75 74 69 6c 20 67 uld be "mcutil g
94e0: 65 74 70 72 65 66 65 72 65 6e 63 65 73 20 6c 6f etpreferences lo
94f0: 63 61 6c 65 22 7d 0a 0a 20 20 20 20 74 65 73 74 cale"}.. test
9500: 20 6d 73 67 63 61 74 2d 31 38 2e 35 20 7b 6d 63 msgcat-18.5 {mc
9510: 75 74 69 6c 20 67 65 74 70 72 65 66 65 72 65 6e util getpreferen
9520: 63 65 73 20 2d 20 44 45 5f 64 65 7d 20 2d 62 6f ces - DE_de} -bo
9530: 64 79 20 7b 0a 09 6d 63 75 74 69 6c 20 67 65 74 dy {..mcutil get
9540: 70 72 65 66 65 72 65 6e 63 65 73 20 44 45 5f 64 preferences DE_d
9550: 65 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 e. } -result
9560: 7b 64 65 5f 64 65 20 64 65 20 7b 7d 7d 0a 0a 20 {de_de de {}}..
9570: 20 20 20 74 65 73 74 20 6d 73 67 63 61 74 2d 31 test msgcat-1
9580: 38 2e 36 20 7b 6d 63 75 74 69 6c 20 67 65 74 73 8.6 {mcutil gets
9590: 79 73 74 65 6d 6c 6f 63 61 6c 65 20 2d 20 77 72 ystemlocale - wr
95a0: 6f 6e 67 20 61 72 67 75 6d 65 6e 74 7d 20 2d 62 ong argument} -b
95b0: 6f 64 79 20 7b 0a 09 6d 63 75 74 69 6c 20 67 65 ody {..mcutil ge
95c0: 74 73 79 73 74 65 6d 6c 6f 63 61 6c 65 20 44 45 tsystemlocale DE
95d0: 5f 64 65 0a 20 20 20 20 7d 20 2d 72 65 74 75 72 _de. } -retur
95e0: 6e 43 6f 64 65 73 20 31 5c 0a 20 20 20 20 2d 72 nCodes 1\. -r
95f0: 65 73 75 6c 74 20 7b 77 72 6f 6e 67 20 23 20 61 esult {wrong # a
9600: 72 67 73 3a 20 73 68 6f 75 6c 64 20 62 65 20 22 rgs: should be "
9610: 6d 63 75 74 69 6c 20 67 65 74 73 79 73 74 65 6d mcutil getsystem
9620: 6c 6f 63 61 6c 65 22 7d 0a 0a 20 20 20 20 23 20 locale"}.. #
9630: 54 68 65 20 72 65 73 75 6c 74 20 69 73 20 73 79 The result is sy
9640: 73 74 65 6d 20 64 65 70 65 6e 64 65 6e 74 0a 20 stem dependent.
9650: 20 20 20 23 20 53 6f 20 6a 75 73 74 20 74 65 73 # So just tes
9660: 74 20 69 66 20 69 74 20 72 75 6e 73 0a 20 20 20 t if it runs.
9670: 20 23 20 54 68 65 20 65 6e 76 69 72 6f 6e 6d 65 # The environme
9680: 6e 74 20 76 61 72 69 61 62 6c 65 20 76 65 72 73 nt variable vers
9690: 69 6f 6e 20 77 61 73 20 74 65 73 74 20 77 69 74 ion was test wit
96a0: 68 20 74 65 73 74 20 30 2e 78 0a 20 20 20 20 74 h test 0.x. t
96b0: 65 73 74 20 6d 73 67 63 61 74 2d 31 38 2e 37 20 est msgcat-18.7
96c0: 7b 6d 63 75 74 69 6c 20 67 65 74 73 79 73 74 65 {mcutil getsyste
96d0: 6d 6c 6f 63 61 6c 65 7d 20 2d 62 6f 64 79 20 7b mlocale} -body {
96e0: 0a 09 6d 63 75 74 69 6c 20 67 65 74 73 79 73 74 ..mcutil getsyst
96f0: 65 6d 6c 6f 63 61 6c 65 0a 09 73 65 74 20 6f 6b emlocale..set ok
9700: 20 6f 6b 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c ok. } -resul
9710: 74 20 7b 6f 6b 7d 0a 0a 0a 20 20 20 20 63 6c 65 t {ok}... cle
9720: 61 6e 75 70 54 65 73 74 73 0a 7d 0a 6e 61 6d 65 anupTests.}.name
9730: 73 70 61 63 65 20 64 65 6c 65 74 65 20 3a 3a 6d space delete ::m
9740: 73 67 63 61 74 3a 3a 74 65 73 74 0a 72 65 74 75 sgcat::test.retu
9750: 72 6e 0a 0a 23 20 4c 6f 63 61 6c 20 56 61 72 69 rn..# Local Vari
9760: 61 62 6c 65 73 3a 0a 23 20 6d 6f 64 65 3a 20 74 ables:.# mode: t
9770: 63 6c 0a 23 20 45 6e 64 3a 0a cl.# End:.