/ Hex Artifact Content
Login
SQLite training in Houston TX on 2019-11-05 (details)
Part of the 2019 Tcl Conference

Artifact 96be02ea0c21f05b24c1883d7b711a1fa8525a68ab7b636aacf6057876941013:


0000: 23 20 32 30 31 37 20 44 65 63 65 6d 62 65 72 20  # 2017 December 
0010: 39 0a 23 0a 23 20 54 68 65 20 61 75 74 68 6f 72  9.#.# The author
0020: 20 64 69 73 63 6c 61 69 6d 73 20 63 6f 70 79 72   disclaims copyr
0030: 69 67 68 74 20 74 6f 20 74 68 69 73 20 73 6f 75  ight to this sou
0040: 72 63 65 20 63 6f 64 65 2e 20 20 49 6e 20 70 6c  rce code.  In pl
0050: 61 63 65 20 6f 66 0a 23 20 61 20 6c 65 67 61 6c  ace of.# a legal
0060: 20 6e 6f 74 69 63 65 2c 20 68 65 72 65 20 69 73   notice, here is
0070: 20 61 20 62 6c 65 73 73 69 6e 67 3a 0a 23 0a 23   a blessing:.#.#
0080: 20 20 20 20 4d 61 79 20 79 6f 75 20 64 6f 20 67      May you do g
0090: 6f 6f 64 20 61 6e 64 20 6e 6f 74 20 65 76 69 6c  ood and not evil
00a0: 2e 0a 23 20 20 20 20 4d 61 79 20 79 6f 75 20 66  ..#    May you f
00b0: 69 6e 64 20 66 6f 72 67 69 76 65 6e 65 73 73 20  ind forgiveness 
00c0: 66 6f 72 20 79 6f 75 72 73 65 6c 66 20 61 6e 64  for yourself and
00d0: 20 66 6f 72 67 69 76 65 20 6f 74 68 65 72 73 2e   forgive others.
00e0: 0a 23 20 20 20 20 4d 61 79 20 79 6f 75 20 73 68  .#    May you sh
00f0: 61 72 65 20 66 72 65 65 6c 79 2c 20 6e 65 76 65  are freely, neve
0100: 72 20 74 61 6b 69 6e 67 20 6d 6f 72 65 20 74 68  r taking more th
0110: 61 6e 20 79 6f 75 20 67 69 76 65 2e 0a 23 0a 23  an you give..#.#
0120: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0130: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0140: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0150: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0160: 2a 2a 2a 2a 2a 2a 2a 0a 23 0a 23 20 54 65 73 74  *******.#.# Test
0170: 20 74 68 65 20 73 68 65 6c 6c 20 74 6f 6f 6c 20   the shell tool 
0180: 22 2e 61 72 22 20 63 6f 6d 6d 61 6e 64 2e 0a 23  ".ar" command..#
0190: 0a 0a 73 65 74 20 74 65 73 74 64 69 72 20 5b 66  ..set testdir [f
01a0: 69 6c 65 20 64 69 72 6e 61 6d 65 20 24 61 72 67  ile dirname $arg
01b0: 76 30 5d 0a 73 6f 75 72 63 65 20 24 74 65 73 74  v0].source $test
01c0: 64 69 72 2f 74 65 73 74 65 72 2e 74 63 6c 0a 73  dir/tester.tcl.s
01d0: 65 74 20 74 65 73 74 70 72 65 66 69 78 20 73 68  et testprefix sh
01e0: 65 6c 6c 38 0a 0a 69 66 63 61 70 61 62 6c 65 20  ell8..ifcapable 
01f0: 21 76 74 61 62 20 7b 0a 20 20 66 69 6e 69 73 68  !vtab {.  finish
0200: 5f 74 65 73 74 3b 20 72 65 74 75 72 6e 0a 7d 0a  _test; return.}.
0210: 73 65 74 20 43 4c 49 20 5b 74 65 73 74 5f 66 69  set CLI [test_fi
0220: 6e 64 5f 63 6c 69 5d 0a 0a 23 20 43 68 65 63 6b  nd_cli]..# Check
0230: 20 74 6f 20 6d 61 6b 65 20 73 75 72 65 20 74 68   to make sure th
0240: 65 20 73 68 65 6c 6c 20 68 61 73 20 62 65 65 6e  e shell has been
0250: 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 22   compiled with "
0260: 2e 61 72 63 68 69 76 65 22 20 73 75 70 70 6f 72  .archive" suppor
0270: 74 2e 0a 23 0a 69 66 20 7b 5b 73 74 72 69 6e 67  t..#.if {[string
0280: 20 6d 61 74 63 68 20 7b 2a 75 6e 6b 6e 6f 77 6e   match {*unknown
0290: 20 63 6f 6d 6d 61 6e 64 2a 7d 20 5b 63 61 74 63   command*} [catc
02a0: 68 63 6d 64 20 3a 6d 65 6d 6f 72 79 3a 20 2e 61  hcmd :memory: .a
02b0: 72 63 68 69 76 65 5d 5d 7d 20 7b 0a 20 20 66 69  rchive]]} {.  fi
02c0: 6e 69 73 68 5f 74 65 73 74 3b 20 72 65 74 75 72  nish_test; retur
02d0: 6e 0a 7d 0a 0a 70 72 6f 63 20 70 6f 70 75 6c 61  n.}..proc popula
02e0: 74 65 5f 64 69 72 20 7b 64 69 72 6e 61 6d 65 20  te_dir {dirname 
02f0: 73 70 65 63 7d 20 7b 0a 20 20 23 20 46 69 72 73  spec} {.  # Firs
0300: 74 20 64 65 6c 65 74 65 20 74 68 65 20 63 75 72  t delete the cur
0310: 72 65 6e 74 20 74 72 65 65 2c 20 69 66 20 6f 6e  rent tree, if on
0320: 65 20 65 78 69 73 74 73 2e 0a 20 20 66 69 6c 65  e exists..  file
0330: 20 64 65 6c 65 74 65 20 2d 66 6f 72 63 65 20 24   delete -force $
0340: 64 69 72 6e 61 6d 65 0a 20 20 0a 20 20 23 20 52  dirname.  .  # R
0350: 65 63 72 65 61 74 65 20 74 68 65 20 72 6f 6f 74  ecreate the root
0360: 20 6f 66 20 74 68 65 20 6e 65 77 20 74 72 65 65   of the new tree
0370: 2e 0a 20 20 66 69 6c 65 20 6d 6b 64 69 72 20 24  ..  file mkdir $
0380: 64 69 72 6e 61 6d 65 0a 0a 20 20 23 20 41 64 64  dirname..  # Add
0390: 20 65 61 63 68 20 66 69 6c 65 20 74 6f 20 74 68   each file to th
03a0: 65 20 6e 65 77 20 74 72 65 65 2e 0a 20 20 66 6f  e new tree..  fo
03b0: 72 65 61 63 68 20 7b 66 20 64 7d 20 24 73 70 65  reach {f d} $spe
03c0: 63 20 7b 0a 20 20 20 20 73 65 74 20 70 61 74 68  c {.    set path
03d0: 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 64 69 72   [file join $dir
03e0: 6e 61 6d 65 20 24 66 5d 0a 20 20 20 20 66 69 6c  name $f].    fil
03f0: 65 20 6d 6b 64 69 72 20 5b 66 69 6c 65 20 64 69  e mkdir [file di
0400: 72 6e 61 6d 65 20 24 70 61 74 68 5d 0a 20 20 20  rname $path].   
0410: 20 73 65 74 20 66 64 20 5b 6f 70 65 6e 20 24 70   set fd [open $p
0420: 61 74 68 20 77 5d 0a 20 20 20 20 70 75 74 73 20  ath w].    puts 
0430: 2d 6e 6f 6e 65 77 6c 69 6e 65 20 24 66 64 20 24  -nonewline $fd $
0440: 64 0a 20 20 20 20 63 6c 6f 73 65 20 24 66 64 0a  d.    close $fd.
0450: 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20 64 69 72 5f    }.}..proc dir_
0460: 74 6f 5f 6c 69 73 74 20 7b 64 69 72 6e 61 6d 65  to_list {dirname
0470: 20 7b 6e 20 2d 31 7d 7d 20 7b 0a 20 20 69 66 20   {n -1}} {.  if 
0480: 7b 24 6e 3c 30 7d 20 7b 73 65 74 20 6e 20 5b 6c  {$n<0} {set n [l
0490: 6c 65 6e 67 74 68 20 5b 66 69 6c 65 20 73 70 6c  length [file spl
04a0: 69 74 20 24 64 69 72 6e 61 6d 65 5d 5d 7d 0a 0a  it $dirname]]}..
04b0: 20 20 73 65 74 20 72 65 73 20 5b 6c 69 73 74 5d    set res [list]
04c0: 0a 20 20 66 6f 72 65 61 63 68 20 66 20 5b 67 6c  .  foreach f [gl
04d0: 6f 62 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 24  ob -nocomplain $
04e0: 64 69 72 6e 61 6d 65 2f 2a 5d 20 7b 0a 20 20 20  dirname/*] {.   
04f0: 20 73 65 74 20 6d 74 69 6d 65 20 5b 66 69 6c 65   set mtime [file
0500: 20 6d 74 69 6d 65 20 24 66 5d 0a 20 20 20 20 69   mtime $f].    i
0510: 66 20 7b 24 3a 3a 74 63 6c 5f 70 6c 61 74 66 6f  f {$::tcl_platfo
0520: 72 6d 28 70 6c 61 74 66 6f 72 6d 29 21 3d 22 77  rm(platform)!="w
0530: 69 6e 64 6f 77 73 22 7d 20 7b 0a 20 20 20 20 20  indows"} {.     
0540: 20 73 65 74 20 70 65 72 6d 20 5b 66 69 6c 65 20   set perm [file 
0550: 61 74 74 72 69 62 75 74 65 73 20 24 66 20 2d 70  attributes $f -p
0560: 65 72 6d 5d 0a 20 20 20 20 7d 20 65 6c 73 65 20  erm].    } else 
0570: 7b 0a 20 20 20 20 20 20 73 65 74 20 70 65 72 6d  {.      set perm
0580: 20 30 0a 20 20 20 20 7d 0a 20 20 20 20 73 65 74   0.    }.    set
0590: 20 72 65 6c 70 61 74 68 20 5b 66 69 6c 65 20 6a   relpath [file j
05a0: 6f 69 6e 20 7b 2a 7d 5b 6c 72 61 6e 67 65 20 5b  oin {*}[lrange [
05b0: 66 69 6c 65 20 73 70 6c 69 74 20 24 66 5d 20 24  file split $f] $
05c0: 6e 20 65 6e 64 5d 5d 0a 20 20 20 20 6c 61 70 70  n end]].    lapp
05d0: 65 6e 64 20 72 65 73 20 0a 20 20 20 20 69 66 20  end res .    if 
05e0: 7b 5b 66 69 6c 65 20 69 73 64 69 72 65 63 74 6f  {[file isdirecto
05f0: 72 79 20 24 66 5d 7d 20 7b 0a 20 20 20 20 20 20  ry $f]} {.      
0600: 6c 61 70 70 65 6e 64 20 72 65 73 20 5b 6c 69 73  lappend res [lis
0610: 74 20 24 72 65 6c 70 61 74 68 20 2f 20 24 6d 74  t $relpath / $mt
0620: 69 6d 65 20 24 70 65 72 6d 5d 0a 20 20 20 20 20  ime $perm].     
0630: 20 6c 61 70 70 65 6e 64 20 72 65 73 20 7b 2a 7d   lappend res {*}
0640: 5b 64 69 72 5f 74 6f 5f 6c 69 73 74 20 24 66 5d  [dir_to_list $f]
0650: 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20  .    } else {.  
0660: 20 20 20 20 73 65 74 20 66 64 20 5b 6f 70 65 6e      set fd [open
0670: 20 24 66 5d 0a 20 20 20 20 20 20 73 65 74 20 64   $f].      set d
0680: 61 74 61 20 5b 72 65 61 64 20 24 66 64 5d 0a 20  ata [read $fd]. 
0690: 20 20 20 20 20 63 6c 6f 73 65 20 24 66 64 0a 20       close $fd. 
06a0: 20 20 20 20 20 6c 61 70 70 65 6e 64 20 72 65 73       lappend res
06b0: 20 5b 6c 69 73 74 20 24 72 65 6c 70 61 74 68 20   [list $relpath 
06c0: 24 64 61 74 61 20 24 6d 74 69 6d 65 20 24 70 65  $data $mtime $pe
06d0: 72 6d 5d 0a 20 20 20 20 7d 0a 20 20 7d 0a 20 20  rm].    }.  }.  
06e0: 6c 73 6f 72 74 20 24 72 65 73 0a 7d 0a 0a 70 72  lsort $res.}..pr
06f0: 6f 63 20 64 69 72 5f 63 6f 6d 70 61 72 65 20 7b  oc dir_compare {
0700: 64 31 20 64 32 7d 20 7b 0a 20 20 73 65 74 20 6c  d1 d2} {.  set l
0710: 31 20 5b 64 69 72 5f 74 6f 5f 6c 69 73 74 20 24  1 [dir_to_list $
0720: 64 31 5d 0a 20 20 73 65 74 20 6c 32 20 5b 64 69  d1].  set l2 [di
0730: 72 5f 74 6f 5f 6c 69 73 74 20 24 64 31 5d 0a 20  r_to_list $d1]. 
0740: 20 73 74 72 69 6e 67 20 63 6f 6d 70 61 72 65 20   string compare 
0750: 24 6c 31 20 24 6c 32 0a 7d 0a 0a 66 6f 72 65 61  $l1 $l2.}..forea
0760: 63 68 20 7b 74 6e 20 74 63 6c 7d 20 7b 0a 20 20  ch {tn tcl} {.  
0770: 31 20 7b 0a 20 20 20 20 73 65 74 20 63 31 20 22  1 {.    set c1 "
0780: 2e 61 72 20 63 20 61 72 31 22 0a 20 20 20 20 73  .ar c ar1".    s
0790: 65 74 20 78 31 20 22 2e 61 72 20 78 22 0a 0a 20  et x1 ".ar x".. 
07a0: 20 20 20 73 65 74 20 63 32 20 22 2e 61 72 20 63     set c2 ".ar c
07b0: 43 20 61 72 31 20 2e 22 0a 20 20 20 20 73 65 74  C ar1 .".    set
07c0: 20 78 32 20 22 2e 61 72 20 43 78 20 61 72 33 22   x2 ".ar Cx ar3"
07d0: 0a 0a 20 20 20 20 73 65 74 20 63 33 20 22 2e 61  ..    set c3 ".a
07e0: 72 20 63 43 66 20 61 72 31 20 74 65 73 74 5f 78  r cCf ar1 test_x
07f0: 79 7a 2e 64 62 20 2e 22 0a 20 20 20 20 73 65 74  yz.db .".    set
0800: 20 78 33 20 22 2e 61 72 20 43 66 78 20 61 72 33   x3 ".ar Cfx ar3
0810: 20 74 65 73 74 5f 78 79 7a 2e 64 62 22 0a 20 20   test_xyz.db".  
0820: 7d 0a 0a 20 20 32 20 7b 0a 20 20 20 20 73 65 74  }..  2 {.    set
0830: 20 63 31 20 22 2e 61 72 20 2d 63 20 61 72 31 22   c1 ".ar -c ar1"
0840: 0a 20 20 20 20 73 65 74 20 78 31 20 22 2e 61 72  .    set x1 ".ar
0850: 20 2d 78 22 0a 0a 20 20 20 20 73 65 74 20 63 32   -x"..    set c2
0860: 20 22 2e 61 72 20 2d 63 43 20 61 72 31 20 2e 22   ".ar -cC ar1 ."
0870: 0a 20 20 20 20 73 65 74 20 78 32 20 22 2e 61 72  .    set x2 ".ar
0880: 20 2d 78 43 20 61 72 33 22 0a 0a 20 20 20 20 73   -xC ar3"..    s
0890: 65 74 20 63 33 20 22 2e 61 72 20 2d 63 43 61 72  et c3 ".ar -cCar
08a0: 31 20 2d 66 74 65 73 74 5f 78 79 7a 2e 64 62 20  1 -ftest_xyz.db 
08b0: 2e 22 0a 20 20 20 20 73 65 74 20 78 33 20 22 2e  .".    set x3 ".
08c0: 61 72 20 2d 78 20 2d 43 20 61 72 33 20 2d 66 20  ar -x -C ar3 -f 
08d0: 74 65 73 74 5f 78 79 7a 2e 64 62 22 0a 20 20 7d  test_xyz.db".  }
08e0: 0a 0a 20 20 33 20 7b 0a 20 20 20 20 73 65 74 20  ..  3 {.    set 
08f0: 63 31 20 22 2e 61 72 20 2d 2d 63 72 65 61 74 65  c1 ".ar --create
0900: 20 61 72 31 22 0a 20 20 20 20 73 65 74 20 78 31   ar1".    set x1
0910: 20 22 2e 61 72 20 2d 2d 65 78 74 72 61 63 74 22   ".ar --extract"
0920: 0a 0a 20 20 20 20 73 65 74 20 63 32 20 22 2e 61  ..    set c2 ".a
0930: 72 20 2d 2d 64 69 72 65 63 74 6f 72 79 20 61 72  r --directory ar
0940: 31 20 2d 2d 63 72 65 61 74 65 20 2e 22 0a 20 20  1 --create .".  
0950: 20 20 73 65 74 20 78 32 20 22 2e 61 72 20 2d 2d    set x2 ".ar --
0960: 65 78 74 72 61 63 74 20 2d 2d 64 69 72 20 61 72  extract --dir ar
0970: 33 22 0a 0a 20 20 20 20 73 65 74 20 63 33 20 22  3"..    set c3 "
0980: 2e 61 72 20 2d 2d 63 72 65 61 74 20 2d 2d 64 69  .ar --creat --di
0990: 72 20 61 72 31 20 2d 2d 66 69 6c 65 20 74 65 73  r ar1 --file tes
09a0: 74 5f 78 79 7a 2e 64 62 20 2e 22 0a 20 20 20 20  t_xyz.db .".    
09b0: 73 65 74 20 78 33 20 22 2e 61 72 20 2d 2d 65 20  set x3 ".ar --e 
09c0: 20 2d 2d 64 69 72 20 61 72 33 20 2d 2d 66 20 74   --dir ar3 --f t
09d0: 65 73 74 5f 78 79 7a 2e 64 62 22 0a 20 20 7d 0a  est_xyz.db".  }.
09e0: 0a 20 20 34 20 7b 0a 20 20 20 20 73 65 74 20 63  .  4 {.    set c
09f0: 31 20 22 2e 61 72 20 2d 2d 63 72 20 61 72 31 22  1 ".ar --cr ar1"
0a00: 0a 20 20 20 20 73 65 74 20 78 31 20 22 2e 61 72  .    set x1 ".ar
0a10: 20 2d 2d 65 22 0a 0a 20 20 20 20 73 65 74 20 63   --e"..    set c
0a20: 32 20 22 2e 61 72 20 2d 43 20 61 72 31 20 2d 63  2 ".ar -C ar1 -c
0a30: 20 2e 22 0a 20 20 20 20 73 65 74 20 78 32 20 22   .".    set x2 "
0a40: 2e 61 72 20 2d 78 20 2d 43 20 61 72 33 22 0a 0a  .ar -x -C ar3"..
0a50: 20 20 20 20 73 65 74 20 63 33 20 22 2e 61 72 20      set c3 ".ar 
0a60: 2d 63 20 2d 2d 64 69 72 65 63 74 6f 72 79 20 61  -c --directory a
0a70: 72 31 20 2d 2d 66 69 6c 65 20 74 65 73 74 5f 78  r1 --file test_x
0a80: 79 7a 2e 64 62 20 2e 22 0a 20 20 20 20 73 65 74  yz.db .".    set
0a90: 20 78 33 20 22 2e 61 72 20 2d 78 20 2d 2d 64 69   x3 ".ar -x --di
0aa0: 72 65 63 74 6f 72 79 20 61 72 33 20 2d 2d 66 69  rectory ar3 --fi
0ab0: 6c 65 20 74 65 73 74 5f 78 79 7a 2e 64 62 22 0a  le test_xyz.db".
0ac0: 20 20 7d 0a 7d 20 7b 0a 20 20 65 76 61 6c 20 24    }.} {.  eval $
0ad0: 74 63 6c 0a 0a 20 20 23 20 50 6f 70 75 6c 61 74  tcl..  # Populat
0ae0: 65 20 64 69 72 65 63 74 6f 72 79 20 22 61 72 31  e directory "ar1
0af0: 22 20 77 69 74 68 20 73 6f 6d 65 20 66 69 6c 65  " with some file
0b00: 73 2e 0a 20 20 23 0a 20 20 70 6f 70 75 6c 61 74  s..  #.  populat
0b10: 65 5f 64 69 72 20 61 72 31 20 7b 0a 20 20 20 20  e_dir ar1 {.    
0b20: 66 69 6c 65 31 20 22 61 62 63 64 22 20 0a 20 20  file1 "abcd" .  
0b30: 20 20 66 69 6c 65 32 20 22 65 66 67 68 22 0a 20    file2 "efgh". 
0b40: 20 20 20 64 69 72 31 2f 66 69 6c 65 33 20 22 69     dir1/file3 "i
0b50: 6a 6b 6c 22 0a 20 20 7d 0a 20 20 73 65 74 20 65  jkl".  }.  set e
0b60: 78 70 65 63 74 65 64 20 5b 64 69 72 5f 74 6f 5f  xpected [dir_to_
0b70: 6c 69 73 74 20 61 72 31 5d 0a 0a 20 20 64 6f 5f  list ar1]..  do_
0b80: 74 65 73 74 20 31 2e 24 74 6e 2e 31 20 7b 0a 20  test 1.$tn.1 {. 
0b90: 20 20 20 63 61 74 63 68 63 6d 64 20 74 65 73 74     catchcmd test
0ba0: 5f 61 72 2e 64 62 20 24 63 31 0a 20 20 20 20 66  _ar.db $c1.    f
0bb0: 69 6c 65 20 64 65 6c 65 74 65 20 2d 66 6f 72 63  ile delete -forc
0bc0: 65 20 61 72 31 0a 20 20 20 20 63 61 74 63 68 63  e ar1.    catchc
0bd0: 6d 64 20 74 65 73 74 5f 61 72 2e 64 62 20 24 78  md test_ar.db $x
0be0: 31 0a 20 20 20 20 64 69 72 5f 74 6f 5f 6c 69 73  1.    dir_to_lis
0bf0: 74 20 61 72 31 0a 20 20 7d 20 24 65 78 70 65 63  t ar1.  } $expec
0c00: 74 65 64 0a 0a 20 20 64 6f 5f 74 65 73 74 20 31  ted..  do_test 1
0c10: 2e 24 74 6e 2e 32 20 7b 0a 20 20 20 20 66 69 6c  .$tn.2 {.    fil
0c20: 65 20 64 65 6c 65 74 65 20 2d 66 6f 72 63 65 20  e delete -force 
0c30: 61 72 33 0a 20 20 20 20 63 61 74 63 68 63 6d 64  ar3.    catchcmd
0c40: 20 74 65 73 74 5f 61 72 2e 64 62 20 24 63 32 0a   test_ar.db $c2.
0c50: 20 20 20 20 63 61 74 63 68 63 6d 64 20 74 65 73      catchcmd tes
0c60: 74 5f 61 72 2e 64 62 20 24 78 32 0a 20 20 20 20  t_ar.db $x2.    
0c70: 64 69 72 5f 74 6f 5f 6c 69 73 74 20 61 72 33 0a  dir_to_list ar3.
0c80: 20 20 7d 20 24 65 78 70 65 63 74 65 64 0a 0a 20    } $expected.. 
0c90: 20 64 6f 5f 74 65 73 74 20 31 2e 24 74 6e 2e 33   do_test 1.$tn.3
0ca0: 20 7b 0a 20 20 20 20 66 69 6c 65 20 64 65 6c 65   {.    file dele
0cb0: 74 65 20 2d 66 6f 72 63 65 20 61 72 33 0a 20 20  te -force ar3.  
0cc0: 20 20 66 69 6c 65 20 64 65 6c 65 74 65 20 2d 66    file delete -f
0cd0: 6f 72 63 65 20 74 65 73 74 5f 78 79 7a 2e 64 62  orce test_xyz.db
0ce0: 0a 20 20 20 20 63 61 74 63 68 63 6d 64 20 22 3a  .    catchcmd ":
0cf0: 6d 65 6d 6f 72 79 3a 22 20 24 63 33 0a 20 20 20  memory:" $c3.   
0d00: 20 63 61 74 63 68 63 6d 64 20 22 3a 6d 65 6d 6f   catchcmd ":memo
0d10: 72 79 3a 22 20 24 78 33 0a 20 20 20 20 64 69 72  ry:" $x3.    dir
0d20: 5f 74 6f 5f 6c 69 73 74 20 61 72 33 0a 20 20 7d  _to_list ar3.  }
0d30: 20 24 65 78 70 65 63 74 65 64 0a 0a 20 20 23 20   $expected..  # 
0d40: 54 68 69 73 20 69 73 20 61 20 72 65 70 65 61 74  This is a repeat
0d50: 20 6f 66 20 74 65 73 74 20 31 2e 24 74 6e 2e 31   of test 1.$tn.1
0d60: 2c 20 65 78 63 65 70 74 20 74 68 61 74 20 74 68  , except that th
0d70: 65 72 65 20 69 73 20 61 20 32 20 73 65 63 6f 6e  ere is a 2 secon
0d80: 64 20 0a 20 20 23 20 70 61 75 73 65 20 62 65 74  d .  # pause bet
0d90: 77 65 65 6e 20 63 72 65 61 74 69 6e 67 20 74 68  ween creating th
0da0: 65 20 61 72 63 68 69 76 65 20 61 6e 64 20 65 78  e archive and ex
0db0: 74 72 61 63 74 69 6e 67 20 69 74 73 20 63 6f 6e  tracting its con
0dc0: 74 65 6e 74 73 2e 0a 20 20 23 20 54 68 69 73 20  tents..  # This 
0dd0: 69 73 20 74 6f 20 74 65 73 74 20 74 68 61 74 20  is to test that 
0de0: 74 69 6d 65 73 74 61 6d 70 73 20 61 72 65 20 73  timestamps are s
0df0: 65 74 20 63 6f 72 72 65 63 74 6c 79 2e 0a 20 20  et correctly..  
0e00: 23 0a 20 20 23 20 42 65 63 61 75 73 65 20 69 74  #.  # Because it
0e10: 20 69 73 20 73 6c 6f 77 2c 20 6f 6e 6c 79 20 64   is slow, only d
0e20: 6f 20 74 68 69 73 20 66 6f 72 20 24 74 6e 3d 3d  o this for $tn==
0e30: 31 2e 0a 20 20 69 66 20 7b 24 74 6e 3d 3d 31 7d  1..  if {$tn==1}
0e40: 20 7b 0a 20 20 20 20 64 6f 5f 74 65 73 74 20 31   {.    do_test 1
0e50: 2e 24 74 6e 2e 31 20 7b 0a 20 20 20 20 20 20 63  .$tn.1 {.      c
0e60: 61 74 63 68 63 6d 64 20 74 65 73 74 5f 61 72 2e  atchcmd test_ar.
0e70: 64 62 20 24 63 31 0a 20 20 20 20 20 20 66 69 6c  db $c1.      fil
0e80: 65 20 64 65 6c 65 74 65 20 2d 66 6f 72 63 65 20  e delete -force 
0e90: 61 72 31 0a 20 20 20 20 20 20 61 66 74 65 72 20  ar1.      after 
0ea0: 32 30 30 30 0a 20 20 20 20 20 20 63 61 74 63 68  2000.      catch
0eb0: 63 6d 64 20 74 65 73 74 5f 61 72 2e 64 62 20 24  cmd test_ar.db $
0ec0: 78 31 0a 20 20 20 20 20 20 64 69 72 5f 74 6f 5f  x1.      dir_to_
0ed0: 6c 69 73 74 20 61 72 31 0a 20 20 20 20 7d 20 24  list ar1.    } $
0ee0: 65 78 70 65 63 74 65 64 0a 20 20 7d 0a 7d 0a 0a  expected.  }.}..
0ef0: 66 69 6e 69 73 68 5f 74 65 73 74 0a 0a 0a 0a 66  finish_test....f
0f00: 69 6e 69 73 68 5f 74 65 73 74 0a                 inish_test.