<pre style='margin:0'>
Ryan Schmidt (ryandesign) pushed a commit to branch master
in repository macports-base.
</pre>
<p><a href="https://github.com/macports/macports-base/commit/b0dc49a18100050fd55c7bd2e3e99e465f7345e5">https://github.com/macports/macports-base/commit/b0dc49a18100050fd55c7bd2e3e99e465f7345e5</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'> new b0dc49a1 tests: Add modeline and fix whitespace
</span>b0dc49a1 is described below
<span style='display:block; white-space:pre;color:#808000;'>commit b0dc49a18100050fd55c7bd2e3e99e465f7345e5
</span>Author: Ryan Schmidt <ryandesign@macports.org>
AuthorDate: Tue Jun 16 23:36:44 2020 -0500
<span style='display:block; white-space:pre;color:#404040;'> tests: Add modeline and fix whitespace
</span>---
src/pextlib1.0/tests/checksums.tcl | 98 +++----
src/pextlib1.0/tests/curl.tcl | 96 +++----
src/pextlib1.0/tests/filemap.tcl | 492 ++++++++++++++++++-----------------
src/pextlib1.0/tests/fs-traverse.tcl | 52 ++--
src/pextlib1.0/tests/symlink.tcl | 16 +-
src/pextlib1.0/tests/system.tcl | 2 +
src/pextlib1.0/tests/unsetenv.tcl | 2 +
src/pextlib1.0/tests/vercomp.tcl | 76 +++---
8 files changed, 425 insertions(+), 409 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/pextlib1.0/tests/checksums.tcl b/src/pextlib1.0/tests/checksums.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index b39d1f57..a069644a 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/pextlib1.0/tests/checksums.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/pextlib1.0/tests/checksums.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,57 +1,59 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> # Test file for Pextlib's md5 and sha1 commands.
# Requires r/w access to /tmp/
# Syntax:
# tclsh checksums.tcl <Pextlib name>
proc main {pextlibname} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- load $pextlibname
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- encoding system utf-8
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set testfile "/tmp/macports-pextlib-testchecksums"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- file delete -force $testfile
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # create a dummy file.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set chan [open $testfile w]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts $chan "Article premier"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts $chan " Tous les êtres humains naissent libres et égaux en dignité "
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts $chan " et en droits. Ils sont doués de raison et de conscience et "
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts $chan " doivent agir les uns envers les autres dans un esprit de "
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts $chan " fraternité."
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts $chan "Article 2"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts $chan " Chacun peut se prévaloir de tous les droits et de toutes les "
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts $chan " libertés proclamés dans la présente Déclaration, sans "
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts $chan " distinction aucune, notamment de race, de couleur, de sexe, "
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts $chan " de langue, de religion, d'opinion politique ou de toute autre "
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts $chan " opinion, d'origine nationale ou sociale, de fortune, de "
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts $chan " naissance ou de toute autre situation."
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts $chan " De plus, il ne sera fait aucune distinction fondée sur le "
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts $chan " statut politique, juridique ou international du pays ou du "
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts $chan " territoire dont une personne est ressortissante, que ce pays "
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts $chan " ou territoire soit indépendant, sous tutelle, non autonome ou "
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts $chan " soumis à une limitation quelconque de souveraineté."
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- close $chan
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # checksum the file.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[md5 file $testfile] != "91d3ef5cd86741957b0b5d8f8911166d"} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts {[md5 file $testfile] != "91d3ef5cd86741957b0b5d8f8911166d"}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- exit 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[sha1 file $testfile] != "a40f8539f217a0032d194c3a8c42cc832b6379cf"} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts {[sha1 file $testfile] != "a40f8539f217a0032d194c3a8c42cc832b6379cf"}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- exit 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[rmd160 file $testfile] != "b654ecbdced69aba8a4ea8d6824dd1ac103b3116"} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts {[rmd160 file $testfile] != "b654ecbdced69aba8a4ea8d6824dd1ac103b3116"}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- exit 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[sha256 file $testfile] != "424359e1002a1d117f12f95346a81987037b3fde60a564a7aacb48c65a518fe5"} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts {[sha256 file $testfile] != "424359e1002a1d117f12f95346a81987037b3fde60a564a7aacb48c65a518fe5"}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- exit 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # delete the file.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- file delete -force $testfile
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ load $pextlibname
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ encoding system utf-8
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set testfile "/tmp/macports-pextlib-testchecksums"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ file delete -force $testfile
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # create a dummy file.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set chan [open $testfile w]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts $chan "Article premier"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts $chan " Tous les êtres humains naissent libres et égaux en dignité "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts $chan " et en droits. Ils sont doués de raison et de conscience et "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts $chan " doivent agir les uns envers les autres dans un esprit de "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts $chan " fraternité."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts $chan "Article 2"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts $chan " Chacun peut se prévaloir de tous les droits et de toutes les "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts $chan " libertés proclamés dans la présente Déclaration, sans "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts $chan " distinction aucune, notamment de race, de couleur, de sexe, "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts $chan " de langue, de religion, d'opinion politique ou de toute autre "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts $chan " opinion, d'origine nationale ou sociale, de fortune, de "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts $chan " naissance ou de toute autre situation."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts $chan " De plus, il ne sera fait aucune distinction fondée sur le "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts $chan " statut politique, juridique ou international du pays ou du "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts $chan " territoire dont une personne est ressortissante, que ce pays "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts $chan " ou territoire soit indépendant, sous tutelle, non autonome ou "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts $chan " soumis à une limitation quelconque de souveraineté."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ close $chan
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # checksum the file.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[md5 file $testfile] != "91d3ef5cd86741957b0b5d8f8911166d"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts {[md5 file $testfile] != "91d3ef5cd86741957b0b5d8f8911166d"}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exit 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[sha1 file $testfile] != "a40f8539f217a0032d194c3a8c42cc832b6379cf"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts {[sha1 file $testfile] != "a40f8539f217a0032d194c3a8c42cc832b6379cf"}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exit 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[rmd160 file $testfile] != "b654ecbdced69aba8a4ea8d6824dd1ac103b3116"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts {[rmd160 file $testfile] != "b654ecbdced69aba8a4ea8d6824dd1ac103b3116"}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exit 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[sha256 file $testfile] != "424359e1002a1d117f12f95346a81987037b3fde60a564a7aacb48c65a518fe5"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts {[sha256 file $testfile] != "424359e1002a1d117f12f95346a81987037b3fde60a564a7aacb48c65a518fe5"}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exit 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # delete the file.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ file delete -force $testfile
</span> }
main $argv
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/pextlib1.0/tests/curl.tcl b/src/pextlib1.0/tests/curl.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index def4a625..01fd01c4 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/pextlib1.0/tests/curl.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/pextlib1.0/tests/curl.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,61 +1,63 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> # Test file for Pextlib's curl.
# Syntax:
# tclsh curl.tcl <Pextlib name>
proc main {pextlibname} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- load $pextlibname
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set tempfile /tmp/macports-pextlib-testcurl
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # download a dummy file over HTTP.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set dummyfile http://distfiles.macports.org/MacPorts/MacPorts-2.6.2.tar.gz.asc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- curl fetch $dummyfile $tempfile
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # check the md5 sum of the file.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- test "md5sum" {[md5 file $tempfile] == "41023b6070d3dda3b5d34b7e773b40fc"}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # check we indeed get a 404 a dummy file over HTTP.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- test "dummy404" {[catch {curl fetch $dummyfile/404 $tempfile}]}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # check the modification date of the dummy file.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- test "mtime1" {[curl isnewer $dummyfile [clock scan 2019-10-20Z]]}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- test "mtime2" {![curl isnewer $dummyfile [clock scan 2019-10-21Z]]}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # use --disable-epsv
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #curl fetch --disable-epsv ftp://ftp.cup.hp.com/dist/networking/benchmarks/netperf/archive/netperf-2.2pl5.tar.gz $tempfile
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #test {[md5 file $tempfile] == "a4b0f4a5fbd8bec23002ad8023e01729"}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # use -u
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # This URL does not work anymore, disabled the test
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #curl fetch -u "I accept www.opensource.org/licenses/cpl:." http://www.research.att.com/~gsf/download/tgz/sfio.2005-02-01.tgz $tempfile
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #test {[md5 file $tempfile] == "48f45c7c77c23ab0ccca48c22b3870de"}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- curl fetch --enable-compression https://www.whatsmyip.org/http-compression-test/ $tempfile
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- grepper $tempfile {gz_yes}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- curl fetch https://www.whatsmyip.org/http-compression-test/ $tempfile
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- grepper $tempfile {gz_no}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- file delete -force $tempfile
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ load $pextlibname
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set tempfile /tmp/macports-pextlib-testcurl
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # download a dummy file over HTTP.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set dummyfile http://distfiles.macports.org/MacPorts/MacPorts-2.6.2.tar.gz.asc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ curl fetch $dummyfile $tempfile
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # check the md5 sum of the file.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ test "md5sum" {[md5 file $tempfile] == "41023b6070d3dda3b5d34b7e773b40fc"}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # check we indeed get a 404 a dummy file over HTTP.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ test "dummy404" {[catch {curl fetch $dummyfile/404 $tempfile}]}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # check the modification date of the dummy file.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ test "mtime1" {[curl isnewer $dummyfile [clock scan 2019-10-20Z]]}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ test "mtime2" {![curl isnewer $dummyfile [clock scan 2019-10-21Z]]}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # use --disable-epsv
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #curl fetch --disable-epsv ftp://ftp.cup.hp.com/dist/networking/benchmarks/netperf/archive/netperf-2.2pl5.tar.gz $tempfile
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #test {[md5 file $tempfile] == "a4b0f4a5fbd8bec23002ad8023e01729"}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # use -u
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # This URL does not work anymore, disabled the test
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #curl fetch -u "I accept www.opensource.org/licenses/cpl:." http://www.research.att.com/~gsf/download/tgz/sfio.2005-02-01.tgz $tempfile
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #test {[md5 file $tempfile] == "48f45c7c77c23ab0ccca48c22b3870de"}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ curl fetch --enable-compression https://www.whatsmyip.org/http-compression-test/ $tempfile
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ grepper $tempfile {gz_yes}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ curl fetch https://www.whatsmyip.org/http-compression-test/ $tempfile
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ grepper $tempfile {gz_no}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ file delete -force $tempfile
</span> }
proc test {test_name args} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[catch {uplevel 1 expr $args} result] || !$result} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts "test $test_name failed: [uplevel 1 subst -nocommands $args] == $result"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- exit 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[catch {uplevel 1 expr $args} result] || !$result} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts "test $test_name failed: [uplevel 1 subst -nocommands $args] == $result"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exit 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span> }
proc grepper {filepath regex} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set hasMatch 0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set fd [open $filepath]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- while {[gets $fd line] != -1} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[regexp $regex $line all]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set hasMatch 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- close $fd
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- test "grepper $regex" {$hasMatch == 1}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set hasMatch 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set fd [open $filepath]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ while {[gets $fd line] != -1} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[regexp $regex $line all]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set hasMatch 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ close $fd
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ test "grepper $regex" {$hasMatch == 1}
</span> }
main $argv
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/pextlib1.0/tests/filemap.tcl b/src/pextlib1.0/tests/filemap.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index c997b09c..47405141 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/pextlib1.0/tests/filemap.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/pextlib1.0/tests/filemap.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,254 +1,256 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> # Test file for Pextlib's filemap.
# Requires r/w access to /tmp/
# Syntax:
# tclsh filemap.tcl <Pextlib name>
proc main {pextlibname} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- load $pextlibname
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- file delete -force "/tmp/macports-pextlib-testmap"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- filemap open testmap "/tmp/macports-pextlib-testmap"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[filemap exists testmap "/foo/bar"]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts {[filemap exists testmap "/foo/bar"]}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- exit 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- filemap set testmap "/foo/bar" "foobar"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {![filemap exists testmap "/foo/bar"]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts {![filemap exists testmap "/foo/bar"]}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- exit 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[filemap get testmap "/foo/bar"] ne "foobar"} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts {[filemap get testmap "/foo/bar"] ne "foobar"}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- exit 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- filemap unset testmap "/foo/bar"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[filemap exists testmap "/foo/bar"]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts {[filemap exists testmap "/foo/bar"] (2)}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- exit 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- filemap set testmap "/foo/bar" "foobar-1"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- filemap set testmap "/foo/foo" "foobar-2"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- filemap set testmap "/bar/foo" "foobar-3"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- filemap set testmap "/foobar" "foobar-4"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[filemap get testmap "/foo/foo"] != "foobar-2"} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts {[filemap get testmap "/foo/foo"] != "foobar-2"}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts [filemap get testmap "/foo/foo"]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- exit 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- filemap save testmap
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- filemap set testmap "/foo/bar-1" "somevalue"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- filemap set testmap "/foo/bar-2" "somevalue"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- filemap set testmap "/bar/bar-3" "somevalue"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set theList [filemap list testmap "somevalue"]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[llength $theList] != 3} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts {[llength $theList] != 3}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- exit 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[lindex $theList 0] != "/bar/bar-3"} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts {[lindex $theList 2] != "/bar/bar-3"}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- exit 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[lindex $theList 1] != "/foo/bar-1"} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts {[lindex $theList 0] != "/foo/bar-1"}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- exit 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[lindex $theList 2] != "/foo/bar-2"} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts {[lindex $theList 1] != "/foo/bar-2"}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- exit 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- filemap set testmap "/a/b/c/d/e/f/g/foo.h" "foo"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- filemap set testmap "/a/b/c/d/e/f/g/foo/bar" "foo"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # add 1000 subnodes.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- for {set index 0} {$index < 1000} {incr index} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- filemap set testmap "/many/foo-$index" "foo-$index"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # add another 1000 subnodes, lexicographically before.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- for {set index 0} {$index < 1000} {incr index} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- filemap set testmap "/many/bar-$index" "foo-$index"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # save again
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- filemap save testmap
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # add some value that won't be saved.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- filemap set testmap "/unsaved" "unsaved"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # revert the map.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- filemap revert testmap
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- filemap close testmap
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- filemap open testmap2 "/tmp/macports-pextlib-testmap"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[filemap exists testmap2 "/foo/foobar"]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts {[filemap exists testmap2 "/foo/foobar"]}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- exit 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {![filemap exists testmap2 "/foo/bar"]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts {![filemap exists testmap2 "/foo/bar"]}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- exit 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[filemap get testmap2 "/foo/bar"] != "foobar-1"} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts {[filemap get testmap2 "/foo/bar"] != "foobar-1"}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts [filemap get testmap2 "/foo/bar"]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- exit 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[filemap get testmap2 "/foo/foo"] != "foobar-2"} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts {[filemap get testmap2 "/foo/foo"] != "foobar-2"}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts [filemap get testmap2 "/foo/foo"]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- exit 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[filemap get testmap2 "/bar/foo"] != "foobar-3"} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts {[filemap get testmap2 "/bar/foo"] != "foobar-3"}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts [filemap get testmap2 "/bar/foo"]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- exit 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[filemap get testmap2 "/foobar"] != "foobar-4"} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts {[filemap get testmap2 "/foobar"] != "foobar-4"}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts [filemap get testmap2 "/foobar"]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- exit 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[filemap get testmap2 "/bar/bar-3"] ne "somevalue"} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts {[filemap get testmap2 "/bar/bar-3"] ne "somevalue"}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts [filemap get testmap2 "/bar/bar-3"]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- exit 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set theList [filemap list testmap2 "somevalue"]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[llength $theList] != 3} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts {[llength $theList] != 3}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- exit 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[lindex $theList 0] != "/bar/bar-3"} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts {[lindex $theList 2] != "/bar/bar-3"}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- exit 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[lindex $theList 1] != "/foo/bar-1"} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts {[lindex $theList 0] != "/foo/bar-1"}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- exit 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[lindex $theList 2] != "/foo/bar-2"} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts {[lindex $theList 1] != "/foo/bar-2"}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- exit 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # check the 1000 subnodes.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- for {set index 0} {$index < 1000} {incr index} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[filemap get testmap2 "/many/foo-$index"] != "foo-$index"} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts {[filemap get testmap2 "/many/foo-$index"] != "foo-$index"}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts $index
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts [filemap get testmap2 "/many/foo-$index"]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- exit 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[filemap get testmap2 "/many/bar-$index"] != "foo-$index"} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts {[filemap get testmap2 "/many/bar-$index"] != "foo-$index"}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts $index
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts [filemap get testmap2 "/many/bar-$index"]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- exit 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[filemap exists testmap2 "/unsaved"]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts {[filemap exists testmap2 "/unsaved"]}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- exit 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- filemap close testmap2
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # open it again, r/o
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- filemap open testmap3 "/tmp/macports-pextlib-testmap" readonly
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # open it again, r/w
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- filemap open testmap4 "/tmp/macports-pextlib-testmap"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # put a key (r/w copy)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- filemap set testmap4 "/rw/foobar" "foobar"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # save the r/w copy.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- filemap save testmap4
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # check the key is not there (r/o copy)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # (remark: the r/o copy uses the old version)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[filemap exists testmap3 "/rw/foobar"]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts {[filemap exists testmap3 "/rw/foobar"]}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- exit 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # reload the r/o copy.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- filemap revert testmap3
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # check the key is here.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {![filemap exists testmap3 "/rw/foobar"]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts {![filemap exists testmap3 "/rw/foobar"]}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- exit 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- filemap close testmap4
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- filemap close testmap3
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # concurrency bug test
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- filemap open testmap7 "/tmp/macports-pextlib-testmap"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- filemap set testmap7 "/rw/foobar" "foobar"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- filemap save testmap7
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- filemap close testmap7
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- filemap open testmap6 "/tmp/macports-pextlib-testmap" readonly
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- filemap open testmap8 "/tmp/macports-pextlib-testmap"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- filemap unset testmap8 "/rw/foobar"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- filemap save testmap8
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- filemap close testmap8
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- filemap close testmap6
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- filemap open testmap9 "/tmp/macports-pextlib-testmap" readonly
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[filemap exists testmap9 "/rw/foobar"]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts {[filemap exists testmap9 "/rw/foobar"]}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- exit 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- filemap close testmap9
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- file delete -force "/tmp/macports-pextlib-testmap"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # delete the lock file as well.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- file delete -force "/tmp/macports-pextlib-testmap.lock"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # create a RAM-based map.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- filemap create testmap5
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # add 1000 subnodes.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- for {set index 0} {$index < 1000} {incr index} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- filemap set testmap5 "/many/foo-$index" "foo-$index"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # add another 1000 subnodes, lexicographically before.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- for {set index 0} {$index < 1000} {incr index} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- filemap set testmap5 "/many/bar-$index" "foo-$index"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # check the 1000 subnodes.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- for {set index 0} {$index < 1000} {incr index} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[filemap get testmap5 "/many/foo-$index"] != "foo-$index"} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts {[filemap get testmap5 "/many/foo-$index"] != "foo-$index"}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts $index
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts [filemap get testmap5 "/many/foo-$index"]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- exit 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[filemap get testmap5 "/many/bar-$index"] != "foo-$index"} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts {[filemap get testmap5 "/many/bar-$index"] != "foo-$index"}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts $index
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts [filemap get testmap5 "/many/bar-$index"]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- exit 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # close the virtual filemap.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- filemap close testmap5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ load $pextlibname
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ file delete -force "/tmp/macports-pextlib-testmap"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ filemap open testmap "/tmp/macports-pextlib-testmap"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[filemap exists testmap "/foo/bar"]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts {[filemap exists testmap "/foo/bar"]}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exit 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ filemap set testmap "/foo/bar" "foobar"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {![filemap exists testmap "/foo/bar"]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts {![filemap exists testmap "/foo/bar"]}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exit 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[filemap get testmap "/foo/bar"] ne "foobar"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts {[filemap get testmap "/foo/bar"] ne "foobar"}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exit 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ filemap unset testmap "/foo/bar"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[filemap exists testmap "/foo/bar"]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts {[filemap exists testmap "/foo/bar"] (2)}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exit 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ filemap set testmap "/foo/bar" "foobar-1"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ filemap set testmap "/foo/foo" "foobar-2"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ filemap set testmap "/bar/foo" "foobar-3"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ filemap set testmap "/foobar" "foobar-4"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[filemap get testmap "/foo/foo"] != "foobar-2"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts {[filemap get testmap "/foo/foo"] != "foobar-2"}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts [filemap get testmap "/foo/foo"]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exit 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ filemap save testmap
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ filemap set testmap "/foo/bar-1" "somevalue"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ filemap set testmap "/foo/bar-2" "somevalue"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ filemap set testmap "/bar/bar-3" "somevalue"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set theList [filemap list testmap "somevalue"]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[llength $theList] != 3} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts {[llength $theList] != 3}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exit 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[lindex $theList 0] != "/bar/bar-3"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts {[lindex $theList 2] != "/bar/bar-3"}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exit 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[lindex $theList 1] != "/foo/bar-1"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts {[lindex $theList 0] != "/foo/bar-1"}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exit 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[lindex $theList 2] != "/foo/bar-2"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts {[lindex $theList 1] != "/foo/bar-2"}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exit 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ filemap set testmap "/a/b/c/d/e/f/g/foo.h" "foo"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ filemap set testmap "/a/b/c/d/e/f/g/foo/bar" "foo"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # add 1000 subnodes.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ for {set index 0} {$index < 1000} {incr index} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ filemap set testmap "/many/foo-$index" "foo-$index"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # add another 1000 subnodes, lexicographically before.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ for {set index 0} {$index < 1000} {incr index} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ filemap set testmap "/many/bar-$index" "foo-$index"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # save again
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ filemap save testmap
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # add some value that won't be saved.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ filemap set testmap "/unsaved" "unsaved"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # revert the map.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ filemap revert testmap
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ filemap close testmap
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ filemap open testmap2 "/tmp/macports-pextlib-testmap"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[filemap exists testmap2 "/foo/foobar"]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts {[filemap exists testmap2 "/foo/foobar"]}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exit 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {![filemap exists testmap2 "/foo/bar"]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts {![filemap exists testmap2 "/foo/bar"]}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exit 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[filemap get testmap2 "/foo/bar"] != "foobar-1"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts {[filemap get testmap2 "/foo/bar"] != "foobar-1"}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts [filemap get testmap2 "/foo/bar"]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exit 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[filemap get testmap2 "/foo/foo"] != "foobar-2"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts {[filemap get testmap2 "/foo/foo"] != "foobar-2"}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts [filemap get testmap2 "/foo/foo"]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exit 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[filemap get testmap2 "/bar/foo"] != "foobar-3"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts {[filemap get testmap2 "/bar/foo"] != "foobar-3"}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts [filemap get testmap2 "/bar/foo"]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exit 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[filemap get testmap2 "/foobar"] != "foobar-4"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts {[filemap get testmap2 "/foobar"] != "foobar-4"}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts [filemap get testmap2 "/foobar"]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exit 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[filemap get testmap2 "/bar/bar-3"] ne "somevalue"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts {[filemap get testmap2 "/bar/bar-3"] ne "somevalue"}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts [filemap get testmap2 "/bar/bar-3"]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exit 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set theList [filemap list testmap2 "somevalue"]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[llength $theList] != 3} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts {[llength $theList] != 3}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exit 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[lindex $theList 0] != "/bar/bar-3"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts {[lindex $theList 2] != "/bar/bar-3"}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exit 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[lindex $theList 1] != "/foo/bar-1"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts {[lindex $theList 0] != "/foo/bar-1"}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exit 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[lindex $theList 2] != "/foo/bar-2"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts {[lindex $theList 1] != "/foo/bar-2"}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exit 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # check the 1000 subnodes.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ for {set index 0} {$index < 1000} {incr index} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[filemap get testmap2 "/many/foo-$index"] != "foo-$index"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts {[filemap get testmap2 "/many/foo-$index"] != "foo-$index"}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts $index
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts [filemap get testmap2 "/many/foo-$index"]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exit 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[filemap get testmap2 "/many/bar-$index"] != "foo-$index"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts {[filemap get testmap2 "/many/bar-$index"] != "foo-$index"}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts $index
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts [filemap get testmap2 "/many/bar-$index"]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exit 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[filemap exists testmap2 "/unsaved"]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts {[filemap exists testmap2 "/unsaved"]}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exit 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ filemap close testmap2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # open it again, r/o
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ filemap open testmap3 "/tmp/macports-pextlib-testmap" readonly
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # open it again, r/w
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ filemap open testmap4 "/tmp/macports-pextlib-testmap"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # put a key (r/w copy)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ filemap set testmap4 "/rw/foobar" "foobar"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # save the r/w copy.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ filemap save testmap4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # check the key is not there (r/o copy)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # (remark: the r/o copy uses the old version)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[filemap exists testmap3 "/rw/foobar"]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts {[filemap exists testmap3 "/rw/foobar"]}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exit 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # reload the r/o copy.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ filemap revert testmap3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # check the key is here.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {![filemap exists testmap3 "/rw/foobar"]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts {![filemap exists testmap3 "/rw/foobar"]}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exit 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ filemap close testmap4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ filemap close testmap3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # concurrency bug test
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ filemap open testmap7 "/tmp/macports-pextlib-testmap"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ filemap set testmap7 "/rw/foobar" "foobar"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ filemap save testmap7
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ filemap close testmap7
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ filemap open testmap6 "/tmp/macports-pextlib-testmap" readonly
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ filemap open testmap8 "/tmp/macports-pextlib-testmap"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ filemap unset testmap8 "/rw/foobar"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ filemap save testmap8
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ filemap close testmap8
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ filemap close testmap6
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ filemap open testmap9 "/tmp/macports-pextlib-testmap" readonly
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[filemap exists testmap9 "/rw/foobar"]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts {[filemap exists testmap9 "/rw/foobar"]}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exit 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ filemap close testmap9
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ file delete -force "/tmp/macports-pextlib-testmap"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # delete the lock file as well.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ file delete -force "/tmp/macports-pextlib-testmap.lock"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # create a RAM-based map.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ filemap create testmap5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # add 1000 subnodes.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ for {set index 0} {$index < 1000} {incr index} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ filemap set testmap5 "/many/foo-$index" "foo-$index"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # add another 1000 subnodes, lexicographically before.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ for {set index 0} {$index < 1000} {incr index} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ filemap set testmap5 "/many/bar-$index" "foo-$index"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # check the 1000 subnodes.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ for {set index 0} {$index < 1000} {incr index} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[filemap get testmap5 "/many/foo-$index"] != "foo-$index"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts {[filemap get testmap5 "/many/foo-$index"] != "foo-$index"}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts $index
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts [filemap get testmap5 "/many/foo-$index"]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exit 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[filemap get testmap5 "/many/bar-$index"] != "foo-$index"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts {[filemap get testmap5 "/many/bar-$index"] != "foo-$index"}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts $index
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts [filemap get testmap5 "/many/bar-$index"]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exit 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # close the virtual filemap.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ filemap close testmap5
</span> }
main $argv
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/pextlib1.0/tests/fs-traverse.tcl b/src/pextlib1.0/tests/fs-traverse.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index 37569b95..955209b2 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/pextlib1.0/tests/fs-traverse.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/pextlib1.0/tests/fs-traverse.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,3 +1,5 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> # Test file for Pextlib's fs-traverse
# Requires r/w access to /tmp
# Syntax:
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -361,31 +363,31 @@ proc setup_trees {root} {
</span> "
set trees(6) "
<span style='display:block; white-space:pre;background:#ffe0e0;'>- . directory
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- a directory
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- a/a file
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- a/b file
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- a/c directory
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- a/c/a {link ../d}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- a/c/b file
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- a/c/c directory
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- a/c/d file
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- a/d directory
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- a/d/a file
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- a/d/b {link ../../b/a}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- a/d/c directory
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- a/d/d file
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- a/e file
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- b directory
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- b/a directory
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- b/a/a file
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- b/a/b file
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- b/a/c file
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- b/b directory
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- b/c directory
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- b/c/a file
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- b/c/b file
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- b/c/c file
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ . directory
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ a directory
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ a/a file
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ a/b file
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ a/c directory
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ a/c/a {link ../d}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ a/c/b file
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ a/c/c directory
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ a/c/d file
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ a/d directory
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ a/d/a file
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ a/d/b {link ../../b/a}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ a/d/c directory
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ a/d/d file
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ a/e file
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ b directory
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ b/a directory
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ b/a/a file
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ b/a/b file
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ b/a/c file
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ b/b directory
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ b/c directory
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ b/c/a file
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ b/c/b file
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ b/c/c file
</span> "
}
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/pextlib1.0/tests/symlink.tcl b/src/pextlib1.0/tests/symlink.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index 580f801e..fa32b8af 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/pextlib1.0/tests/symlink.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/pextlib1.0/tests/symlink.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,3 +1,5 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> # Test file for Pextlib's symlink.
# Requires r/w access to /tmp/
# Syntax:
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -5,15 +7,15 @@
</span>
proc main {pextlibname} {
load $pextlibname
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> set root "/tmp/macports-pextlib-symlink"
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> file delete -force $root
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> file mkdir $root
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> symlink foobar $root/test
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> if {[catch {file type $root/test}] || [file type $root/test] ne "link" || [file readlink $root/test] ne "foobar"} {
set message "symlink failed: "
if {[catch {file type $root/test}]} {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -26,12 +28,12 @@ proc main {pextlibname} {
</span> file delete -force $root
error $message
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> if {![catch {symlink barfoo $root/test}]} {
file delete -force $root
error "symlink did not raise error when file already exists"
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> file delete -force $root
}
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/pextlib1.0/tests/system.tcl b/src/pextlib1.0/tests/system.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index 7a3b2fcd..eabe57f6 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/pextlib1.0/tests/system.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/pextlib1.0/tests/system.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,3 +1,5 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> # Test file for Pextlib's system command.
# Syntax:
# tclsh system.tcl <Pextlib name>
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/pextlib1.0/tests/unsetenv.tcl b/src/pextlib1.0/tests/unsetenv.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index 2440012c..dc664d99 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/pextlib1.0/tests/unsetenv.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/pextlib1.0/tests/unsetenv.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,3 +1,5 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> # Test file for Pextlib's unsetenv.
# tclsh <Pextlib name>
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/pextlib1.0/tests/vercomp.tcl b/src/pextlib1.0/tests/vercomp.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index ad464121..e4b23145 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/pextlib1.0/tests/vercomp.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/pextlib1.0/tests/vercomp.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,47 +1,49 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> # Test file for Pextlib's vercmp command.
# Syntax:
# tclsh vercomp.tcl <Pextlib name>
proc main {pextlibname} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- load $pextlibname
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # 2.0 > 1.0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[vercmp 2.0 1.0] <= 0} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts {[vercmp 2.0 1.0] <= 0}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- exit 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # 1.0 = 1.0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[vercmp 1.0 1.0] != 0} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts {[vercmp 1.0 1.0] != 0}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- exit 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # 1.0 < 2.0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[vercmp 1.0 2.0] >= 0} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts {[vercmp 1.0 2.0] >= 0}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- exit 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ load $pextlibname
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # 2.0 > 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[vercmp 2.0 1.0] <= 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts {[vercmp 2.0 1.0] <= 0}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exit 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # 1.0 = 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[vercmp 1.0 1.0] != 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts {[vercmp 1.0 1.0] != 0}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exit 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # 1.0 < 2.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[vercmp 1.0 2.0] >= 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts {[vercmp 1.0 2.0] >= 0}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exit 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>- # def > abc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[vercmp def abc] <= 0} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts {[vercmp def abc] <= 0}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- exit 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # abc = abc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[vercmp abc abc] != 0} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts {[vercmp abc abc] != 0}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- exit 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # abc < def
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[vercmp abc def] >= 0} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts {[vercmp abc def] >= 0}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- exit 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # def > abc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[vercmp def abc] <= 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts {[vercmp def abc] <= 0}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exit 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # abc = abc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[vercmp abc abc] != 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts {[vercmp abc abc] != 0}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exit 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # abc < def
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[vercmp abc def] >= 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts {[vercmp abc def] >= 0}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exit 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>- # a < 1 (digits beats alpha)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[vercmp a 1] >= 0} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts {[vercmp a 1] >= 0}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- exit 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # a < 1 (digits beats alpha)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[vercmp a 1] >= 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts {[vercmp a 1] >= 0}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exit 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span> }
main $argv
</pre><pre style='margin:0'>
</pre>