Index: openacs-4/packages/acs-tcl/tcl/test/doc-check-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-tcl/tcl/test/doc-check-procs.tcl,v
diff -u -r1.21 -r1.22
--- openacs-4/packages/acs-tcl/tcl/test/doc-check-procs.tcl	3 Sep 2024 15:37:34 -0000	1.21
+++ openacs-4/packages/acs-tcl/tcl/test/doc-check-procs.tcl	9 Oct 2024 12:42:34 -0000	1.22
@@ -26,16 +26,16 @@
         nsshell
     }
     foreach p [lsort -dictionary [nsv_array names api_proc_doc]] {
-        array set pa [nsv_get api_proc_doc $p]
-        if { [info exists pa(protection)]
-             && "public" in $pa(protection)
-             && !($pa(deprecated_p) || $pa(warn_p))
+        set pa [nsv_get api_proc_doc $p]
+        if { [dict exists $pa protection]
+             && "public" in [dict get $pa protection]
+             && !([dict get $pa deprecated_p] || [dict get $pa warn_p])
          } {
             incr count
-            if { [string is space [join $pa(main)]] &&
-                 (![info exists pa(return)] || [string is space [join $pa(return)]]) &&
-                 (![info exists pa(param)] || [string is space [join $pa(param)]]) &&
-                 (![info exists pa(see)] || [string is space [join $pa(see)]])
+            if { [string is space [join [dict get $pa main]]] &&
+                 (![dict exists $pa return] || [string is space [join [dict get $pa return]]]) &&
+                 (![dict exists $pa param] || [string is space [join [dict get $pa param]]]) &&
+                 (![dict exists $pa see] || [string is space [join [dict get $pa see]]])
              } {
                 if {[regexp "^(\\s+Class ::)?([join $ignored_namespaces |])::.*\$" $p m]} {
                     set test_result warning
@@ -47,7 +47,6 @@
                 incr good
             }
         }
-        array unset pa
     }
     aa_log "Found $good public procs with proper documentation (out of $count checked)"
 
@@ -175,20 +174,19 @@
     set count 0
     set good 0
     foreach p [lsort -dictionary [nsv_array names api_proc_doc]] {
-        array set pa [nsv_get api_proc_doc $p]
-        if { ([info exists pa(deprecated_p)] && $pa(deprecated_p))
-             || ([info exists pa(warn_p)] && $pa(warn_p))
+        set pa [nsv_get api_proc_doc $p]
+        if { ([dict exists $pa deprecated_p] && [dict get $pa deprecated_p])
+             || ([dict exists $pa warn_p] && [dict get $pa warn_p])
          } {
             incr count
-            if { ![info exists pa(see)] || [string is space $pa(see)] } {
+            if { ![dict exists $pa see] || [string is space [dict get $pa see]] } {
                 aa_silence_log_entries -severities warning {
                     aa_log_result fail "No @see for deprecated proc [api_proc_link $p]"
                 }
             } else {
                 incr good
             }
         }
-        array unset pa
     }
     aa_log "Found $good of $count procs checked"
 }
Index: openacs-4/packages/acs-tcl/tcl/test/file-test-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-tcl/tcl/test/file-test-procs.tcl,v
diff -u -r1.25 -r1.26
--- openacs-4/packages/acs-tcl/tcl/test/file-test-procs.tcl	8 Oct 2024 09:30:57 -0000	1.25
+++ openacs-4/packages/acs-tcl/tcl/test/file-test-procs.tcl	9 Oct 2024 12:42:34 -0000	1.26
@@ -129,34 +129,36 @@
         lappend package_keys $package_key
 
         set errp 0
-        if {  [catch {array set version [apm_read_package_info_file $spec_file]} errMsg] } {
+        if {  [catch {
+            set version [apm_read_package_info_file $spec_file]
+        } errMsg] } {
             aa_log_result fail "$spec_file returned $errMsg"
             set errp 1
         } else {
             regexp {packages/([^/]*)/} $spec_file match key
-            if {$version(package.key) ne $key } {
-                aa_log_result fail "MISMATCH DIRECTORY/PACKAGE KEY: $spec_file $version(package.key) != $key"
+            if {[dict get $version package.key] ne $key } {
+                aa_log_result fail "MISMATCH DIRECTORY/PACKAGE KEY: $spec_file [dict get $version package.key] != $key"
                 set errp 1
             }
             # check on the requires, provides, etc stuff.
-            if {$version(provides) eq ""
-                && [string equal $version(package.type) apm_service] } {
+            if {[dict get $version provides] eq ""
+                && [dict get $version package.type] eq "apm_service" } {
                 aa_log_result fail "$spec_file SERVICE MISSING PROVIDES: $key"
                 set errp 1
-            } elseif { $version(provides) ne ""} {
-                if { $version(name) ne [lindex $version(provides) 0 1] } {
-                    aa_log_result fail "$spec_file: MISMATCH PROVIDES VERSION: $version(provides) $version(name)"
+            } elseif { [dict get $version provides] ne ""} {
+                if { [dict get $version name] ne [lindex [dict get $version provides] 0 1] } {
+                    aa_log_result fail "$spec_file: MISMATCH PROVIDES VERSION: [dict get $version provides] [dict get $version name]"
                     set errp 1
                 }
-                if { $key ne [lindex $version(provides) 0 0] } {
-                    aa_log_result fail "$spec_file MISMATCH PROVIDES KEY: $key $version(provides)"
+                if { $key ne [lindex [dict get $version provides] 0 0] } {
+                    aa_log_result fail "$spec_file MISMATCH PROVIDES KEY: $key [dict get $version provides]"
                     set errp 1
                 }
             }
 
             # check for duplicate parameters
-            array unset params
-            foreach param $version(parameters) {
+            unset -nocomplain params
+            foreach param [dict get $version parameters] {
                 set name [lindex $param 0]
                 if {[info exists params($name)]} {
                     aa_log_result fail "$spec_file: DUPLICATE PARAMETER: $name"