xref: /sqlite-3.40.0/test/permutations.test (revision be217793)
1# 2008 June 21
2#
3# The author disclaims copyright to this source code.  In place of
4# a legal notice, here is a blessing:
5#
6#    May you do good and not evil.
7#    May you find forgiveness for yourself and forgive others.
8#    May you share freely, never taking more than you give.
9#
10#***********************************************************************
11#
12# $Id: permutations.test,v 1.45 2009/01/10 18:51:40 danielk1977 Exp $
13
14set testdir [file dirname $argv0]
15source $testdir/tester.tcl
16
17# Argument processing.
18#
19#puts "PERM-DEBUG: argv=$argv"
20namespace eval ::perm {
21  variable testmode [lindex $::argv 0]
22  variable testfile [lindex $::argv 1]
23}
24set argv [lrange $argv 2 end]
25#puts "PERM-DEBUG: testmode=$::perm::testmode tstfile=$::perm::testfile"
26
27set ::permutations_presql ""
28set ::permutations_test_prefix ""
29
30if {$::perm::testmode eq "veryquick"} {
31  set ::perm::testmode [list persistent_journal no_journal]
32  set ISQUICK 1
33}
34if {$::perm::testmode eq "quick"} {
35  set ::perm::testmode [list persistent_journal no_journal autovacuum_ioerr]
36  set ISQUICK 1
37}
38if {$::perm::testmode eq "all" || $::perm::testmode eq ""} {
39  set ::perm::testmode {
40    memsubsys1 memsubsys2 singlethread multithread onefile utf16 exclusive
41    persistent_journal persistent_journal_error no_journal no_journal_error
42    autovacuum_ioerr no_mutex_try fullmutex journaltest
43  }
44}
45if {$::perm::testmode eq "targets"} {
46  puts ""
47  puts -nonewline "veryquick            "
48  puts "Same as persistent_journal and no_journal"
49  puts -nonewline "quick                "
50  puts "Same as persistent_journal, no_journal and autovacuum_ioerr"
51  puts -nonewline "all                  "
52  puts "Everything except autovacuum_crash"
53}
54#puts "PERM-DEBUG: testmode=$::perm::testmode"
55
56set EXCLUDE {
57  all.test                  in2.test                  onefile.test
58  async2.test               incrvacuum_ioerr.test     permutations.test
59  async.test                jrnlmode2.test            quick.test
60  autovacuum_crash.test     jrnlmode3.test            shared_err.test
61  autovacuum_ioerr.test     jrnlmode4.test            soak.test
62  btree8.test               loadext.test              speed1p.test
63  corrupt.test              malloc2.test              speed1.test
64  crash2.test               malloc3.test              speed2.test
65  crash3.test               malloc4.test              speed3.test
66  crash4.test               mallocAll.test            speed4p.test
67  crash6.test               malloc.test               speed4.test
68  crash7.test               memleak.test              sqllimits1.test
69  crash.test                memsubsys1.test           thread001.test
70  exclusive3.test           memsubsys2.test           thread002.test
71  fts3.test                 misc7.test                utf16.test
72  fuzz_malloc.test          misuse.test               veryquick.test
73  fuzz.test                 mutex2.test               vtab_err.test
74  lookaside.test            fuzz3.test                savepoint4.test
75  savepoint6.test
76}
77set ALLTESTS [list]
78foreach filename [glob $testdir/*.test] {
79  set filename [file tail $filename]
80  if {[lsearch $EXCLUDE $filename] < 0} { lappend ALLTESTS $filename }
81}
82set ALLTESTS [lsort $ALLTESTS]
83
84rename finish_test really_finish_test2
85proc finish_test {} {}
86
87rename do_test really_do_test
88
89proc do_test {name args} {
90  eval really_do_test [list "perm-$::permutations_test_prefix.$name"] $args
91}
92
93# Overload the [sqlite3] command
94rename sqlite3 really_sqlite3
95proc sqlite3 {args} {
96  set r [eval really_sqlite3 $args]
97  if { [llength $args] == 2 && $::permutations_presql ne "" } {
98    [lindex $args 0] eval $::permutations_presql
99  }
100  set r
101}
102
103# run_tests OPTIONS
104#
105# where available options are:
106#
107#       -initialize  SCRIPT                 (default "")
108#       -shutdown    SCRIPT                 (default "")
109#       -include     LIST-OF-FILES          (default $::ALLTESTS)
110#       -exclude     LIST-OF-FILES          (default "")
111#       -presql      SQL                    (default "")
112#       -description TITLE                  (default "")
113#
114proc run_tests {name args} {
115  set ::permutations_test_prefix $name
116  set options(-shutdown) ""
117  set options(-initialize) ""
118  set options(-exclude) ""
119  set options(-include) $::ALLTESTS
120  set options(-presql) ""
121  set options(-description) "no description supplied (fixme)"
122  array set options $args
123  #puts "PERM-DEBUG: name=$name testfile=$::perm::testfile"
124  #puts "PERM-DEBUG: [array get options]"
125
126  if {$::perm::testmode eq "targets"} {
127    puts [format "% -20s %s" $name [string trim $options(-description)]]
128    return
129  }
130  if {$::perm::testmode ne "" && [lsearch $::perm::testmode $name]<0} {
131    puts "skipping permutation test $name..."
132    return
133  }
134
135  uplevel $options(-initialize)
136  set ::permutations_presql $options(-presql)
137
138  foreach file [lsort $options(-include)] {
139    if {[lsearch $options(-exclude) $file] < 0 &&
140       ( $::perm::testfile eq "" ||
141         $::perm::testfile eq $file ||
142        "$::perm::testfile.test" eq $file )
143    } {
144      set ::perm::shared_cache_setting [shared_cache_setting]
145      uplevel source $::testdir/$file
146      if {$::perm::shared_cache_setting ne [shared_cache_setting]} {
147        error "File $::testdir/$file changed the shared cache setting from $::perm::shared_cache_setting to [shared_cache_setting]"
148      }
149    } else {
150      # puts "skipping file $file"
151    }
152  }
153
154  uplevel $options(-shutdown)
155  set ::permutations_test_prefix ""
156}
157
158proc shared_cache_setting {} {
159  set ret 0
160  catch {
161    set ret [sqlite3_enable_shared_cache]
162  }
163  return $ret
164}
165
166#############################################################################
167# Start of tests
168
169# Run some tests using pre-allocated page and scratch blocks.
170#
171run_tests "memsubsys1" -description {
172  Tests using pre-allocated page and scratch blocks
173} -exclude {
174  ioerr5.test
175  malloc5.test
176} -initialize {
177  catch {db close}
178  sqlite3_shutdown
179  sqlite3_config_pagecache 4096 24
180  sqlite3_config_scratch 25000 1
181  sqlite3_initialize
182} -shutdown {
183  catch {db close}
184  sqlite3_shutdown
185  sqlite3_config_pagecache 0 0
186  sqlite3_config_scratch 0 0
187  sqlite3_initialize
188}
189
190# Run some tests using pre-allocated page and scratch blocks. This time
191# the allocations are too small to use in most cases.
192#
193# Both ioerr5.test and malloc5.test are excluded because they test the
194# sqlite3_soft_heap_limit() and sqlite3_release_memory() functionality.
195# This functionality is disabled if a pre-allocated page block is provided.
196#
197run_tests "memsubsys2" -description {
198  Tests using small pre-allocated page and scratch blocks
199} -exclude {
200  ioerr5.test
201  malloc5.test
202} -initialize {
203  catch {db close}
204  sqlite3_shutdown
205  sqlite3_config_pagecache 512 5
206  sqlite3_config_scratch 1000 1
207  sqlite3_initialize
208} -shutdown {
209  catch {db close}
210  sqlite3_shutdown
211  sqlite3_config_pagecache 0 0
212  sqlite3_config_scratch 0 0
213  sqlite3_initialize
214}
215
216# Run all tests with the lookaside allocator disabled.
217#
218run_tests "nolookaside" -description {
219  OOM tests with lookaside disabled
220} -initialize {
221  catch {db close}
222  sqlite3_shutdown
223  sqlite3_config_lookaside 0 0
224  sqlite3_initialize
225} -shutdown {
226  catch {db close}
227  sqlite3_shutdown
228  sqlite3_config_lookaside 100 500
229  sqlite3_initialize
230}
231
232# Run some tests in SQLITE_CONFIG_SINGLETHREAD mode.
233#
234run_tests "singlethread" -description {
235  Tests run in SQLITE_CONFIG_SINGLETHREAD mode
236} -initialize {
237  catch {db close}
238  sqlite3_shutdown
239  catch {sqlite3_config singlethread}
240} -include {
241  delete.test   delete2.test  insert.test  rollback.test  select1.test
242  select2.test  trans.test    update.test  vacuum.test    types.test
243  types2.test   types3.test
244} -shutdown {
245  catch {db close}
246  sqlite3_shutdown
247  catch {sqlite3_config serialized}
248}
249
250run_tests "nomutex" -description {
251  Tests run with the SQLITE_OPEN_MULTITHREADED flag passed to sqlite3_open().
252} -initialize {
253  rename sqlite3 sqlite3_nomutex
254  proc sqlite3 {args} {
255    if {[string range [lindex $args 0] 0 0] ne "-"} {
256      lappend args -fullmutex 0 -nomutex 1
257    }
258    uplevel [concat sqlite3_nomutex $args]
259  }
260} -include {
261  delete.test   delete2.test  insert.test  rollback.test  select1.test
262  select2.test  trans.test    update.test  vacuum.test    types.test
263  types2.test   types3.test
264} -shutdown {
265  rename sqlite3 {}
266  rename sqlite3_nomutex sqlite3
267}
268
269# Run some tests in SQLITE_CONFIG_MULTITHREAD mode.
270#
271run_tests "multithread" -description {
272  Tests run in SQLITE_CONFIG_MULTITHREAD mode
273} -initialize {
274  catch {db close}
275  sqlite3_shutdown
276  catch {sqlite3_config multithread}
277} -include {
278  delete.test   delete2.test  insert.test  rollback.test  select1.test
279  select2.test  trans.test    update.test  vacuum.test    types.test
280  types2.test   types3.test
281} -shutdown {
282  catch {db close}
283  sqlite3_shutdown
284  catch {sqlite3_config serialized}
285}
286
287# Run some tests in SQLITE_OPEN_FULLMUTEX mode.
288#
289run_tests "fullmutex" -description {
290  Tests run in SQLITE_OPEN_FULLMUTEX mode
291} -initialize {
292  rename sqlite3 sqlite3_fullmutex
293  proc sqlite3 {args} {
294    if {[string range [lindex $args 0] 0 0] ne "-"} {
295      lappend args -nomutex 0 -fullmutex 1
296    }
297    uplevel [concat sqlite3_fullmutex $args]
298  }
299} -include {
300  delete.test   delete2.test  insert.test  rollback.test  select1.test
301  select2.test  trans.test    update.test  vacuum.test    types.test
302  types2.test   types3.test
303} -shutdown {
304  rename sqlite3 {}
305  rename sqlite3_fullmutex sqlite3
306}
307
308# Run some tests using the "onefile" demo.
309#
310run_tests "onefile" -description {
311  Run some tests using the "test_onefile.c" demo
312} -initialize {
313  rename sqlite3 sqlite3_onefile
314  proc sqlite3 {args} {
315    if {[string range [lindex $args 0] 0 0] ne "-"} {
316      lappend args -vfs fs
317    }
318    uplevel [concat sqlite3_onefile $args]
319  }
320} -include {
321  conflict.test  insert.test   insert2.test  insert3.test
322  rollback.test  select1.test  select2.test  select3.test
323} -shutdown {
324  rename sqlite3 {}
325  rename sqlite3_onefile sqlite3
326}
327
328# Run some tests using UTF-16 databases.
329#
330run_tests "utf16" -description {
331  Run tests using UTF-16 databases
332} -presql {
333  pragma encoding = 'UTF-16'
334} -include {
335    alter.test alter3.test
336    auth.test bind.test blob.test capi2.test capi3.test collate1.test
337    collate2.test collate3.test collate4.test collate5.test collate6.test
338    conflict.test date.test delete.test expr.test fkey1.test func.test
339    hook.test index.test insert2.test insert.test interrupt.test in.test
340    intpkey.test ioerr.test join2.test join.test lastinsert.test
341    laststmtchanges.test limit.test lock2.test lock.test main.test
342    memdb.test minmax.test misc1.test misc2.test misc3.test notnull.test
343    null.test progress.test quote.test rowid.test select1.test select2.test
344    select3.test select4.test select5.test select6.test sort.test
345    subselect.test tableapi.test table.test temptable.test
346    trace.test trigger1.test trigger2.test trigger3.test
347    trigger4.test types2.test types.test unique.test update.test
348    vacuum.test view.test where.test
349}
350
351# Run some tests in exclusive locking mode.
352#
353run_tests "exclusive" -description {
354  Run tests in exclusive locking mode.
355} -presql {
356  pragma locking_mode = 'exclusive'
357} -include {
358  rollback.test select1.test select2.test
359  malloc.test ioerr.test
360}
361
362# Run some tests in exclusive locking mode with truncated journals.
363#
364run_tests "exclusive-truncate" -description {
365  Run tests in exclusive locking mode and truncate journal mode.
366} -presql {
367  pragma locking_mode = 'exclusive';
368  pragma journal_mode = TRUNCATE;
369} -include {
370  delete.test delete2.test insert.test rollback.test select1.test
371  select2.test update.test malloc.test ioerr.test
372}
373
374# Run some tests in persistent journal mode.
375#
376run_tests "persistent_journal" -description {
377  Run tests in persistent-journal mode.
378} -presql {
379  pragma journal_mode = persist
380} -include {
381  delete.test delete2.test insert.test rollback.test select1.test
382  select2.test trans.test update.test vacuum.test
383}
384
385# Run some tests in truncating journal mode.
386#
387run_tests "truncate_journal" -description {
388  Run tests in persistent-journal mode.
389} -presql {
390  pragma journal_mode = truncate
391} -include {
392  delete.test delete2.test insert.test rollback.test select1.test
393  select2.test trans.test update.test vacuum.test
394  malloc.test ioerr.test
395}
396
397# Run some error tests in persistent journal mode.
398#
399run_tests "persistent_journal_error" -description {
400  Run malloc.test and ioerr.test in persistent-journal mode.
401} -presql {
402  pragma journal_mode = persist
403} -include {
404  malloc.test ioerr.test
405}
406
407# Run some tests in no journal mode.
408#
409run_tests "no_journal" -description {
410  Run tests in no-journal mode.
411} -presql {
412  pragma journal_mode = persist
413} -include {
414  delete.test delete2.test insert.test rollback.test select1.test
415  select2.test trans.test update.test vacuum.test
416}
417
418# Run some error tests in no journal mode.
419#
420run_tests "no_journal_error" -description {
421  Run malloc.test and ioerr.test in no-journal mode.
422} -presql {
423  pragma journal_mode = persist
424} -include {
425  malloc.test ioerr.test
426}
427
428# Run some crash-tests in autovacuum mode.
429#
430run_tests "autovacuum_crash" -description {
431  Run crash.test in autovacuum mode.
432} -presql {
433  pragma auto_vacuum = 1
434} -include crash.test
435
436# Run some ioerr-tests in autovacuum mode.
437#
438run_tests "autovacuum_ioerr" -description {
439  Run ioerr.test in autovacuum mode.
440} -presql {
441  pragma auto_vacuum = 1
442} -include ioerr.test
443
444# Run tests with an in-memory journal.
445#
446run_tests "inmemory_journal" -description {
447  Run tests with an in-memory journal file.
448} -presql {
449  pragma journal_mode = 'memory'
450} -exclude {
451  # Exclude all tests that simulate IO errors.
452  autovacuum_ioerr2.test incrvacuum_ioerr.test ioerr.test
453  ioerr.test ioerr2.test ioerr3.test ioerr4.test ioerr5.test
454  vacuum3.test incrblob_err.test diskfull.test
455
456  # Exclude test scripts that use tcl IO to access journal files or count
457  # the number of fsync() calls.
458  pager.test exclusive.test jrnlmode.test sync.test misc1.test
459  journal1.test conflict.test
460}
461
462ifcapable mem3 {
463  run_tests "memsys3" -description {
464    Run tests using the allocator in mem3.c.
465  } -exclude {
466    autovacuum.test           delete3.test              manydb.test
467    bigrow.test               incrblob2.test            memdb.test
468    bitvec.test               index2.test               memsubsys1.test
469    capi3c.test               ioerr.test                memsubsys2.test
470    capi3.test                join3.test                pagesize.test
471    collate5.test             limit.test
472  } -initialize {
473    catch {db close}
474    sqlite3_reset_auto_extension
475    sqlite3_shutdown
476    sqlite3_config_heap 25000000 0
477    sqlite3_config_lookaside 0 0
478    install_malloc_faultsim 1
479    sqlite3_initialize
480    autoinstall_test_functions
481  } -shutdown {
482    catch {db close}
483    sqlite3_reset_auto_extension
484    sqlite3_shutdown
485    sqlite3_config_heap 0 0
486    sqlite3_config_lookaside 100 500
487    install_malloc_faultsim 1
488    sqlite3_initialize
489  }
490}
491
492ifcapable mem5 {
493  run_tests "memsys5" -description {
494    Run tests using the allocator in mem5.c.
495  } -exclude {
496    autovacuum.test           delete3.test              manydb.test
497    bigrow.test               incrblob2.test            memdb.test
498    bitvec.test               index2.test               memsubsys1.test
499    capi3c.test               ioerr.test                memsubsys2.test
500    capi3.test                join3.test                pagesize.test
501    collate5.test             limit.test                zeroblob.test
502  } -initialize {
503    catch {db close}
504    sqlite3_reset_auto_extension
505    sqlite3_shutdown
506    sqlite3_config_heap 25000000 64
507    sqlite3_config_lookaside 0 0
508    install_malloc_faultsim 1
509    sqlite3_initialize
510    autoinstall_test_functions
511  } -shutdown {
512    catch {db close}
513    sqlite3_reset_auto_extension
514    sqlite3_shutdown
515    sqlite3_config_heap 0 0
516    sqlite3_config_lookaside 100 500
517    install_malloc_faultsim 1
518    sqlite3_initialize
519  }
520
521  run_tests "memsys5-2" -description {
522    Run tests using the allocator in mem5.c in a different configuration.
523  } -include {
524    select1.test
525  } -initialize {
526    catch {db close}
527    sqlite3_reset_auto_extension
528    sqlite3_shutdown
529    sqlite3_config_heap 40000000 16
530    sqlite3_config_lookaside 0 0
531    install_malloc_faultsim 1
532    sqlite3_initialize
533    autoinstall_test_functions
534  } -shutdown {
535    catch {db close}
536    sqlite3_reset_auto_extension
537    sqlite3_shutdown
538    sqlite3_config_heap 0 0
539    sqlite3_config_lookaside 100 500
540    install_malloc_faultsim 1
541    sqlite3_initialize
542  }
543}
544
545ifcapable threadsafe {
546  run_tests "no_mutex_try" -description {
547     The sqlite3_mutex_try() interface always fails
548  } -exclude [concat $EXCLUDE mutex1.test mutex2.test] \
549  -initialize {
550    catch {db close}
551    sqlite3_shutdown
552    install_mutex_counters 1
553    set ::disable_mutex_try 1
554  } -shutdown {
555    catch {db close}
556    sqlite3_shutdown
557    install_mutex_counters 0
558  }
559}
560
561# run_tests "crash_safe_append" -description {
562#   Run crash.test with persistent journals on a SAFE_APPEND file-system.
563# } -initialize {
564#   rename crashsql sa_crashsql
565#   proc crashsql {args} {
566#     set options [lrange $args 0 [expr {[llength $args]-2}]]
567#     lappend options -char safe_append
568#     set sql [lindex $args end]
569#     lappend options "
570#       PRAGMA journal_mode=persistent;
571#       $sql
572#     "
573#     set fd [open test.db-journal w]
574#     puts $fd [string repeat 1234567890 100000]
575#     close $fd
576#     eval sa_crashsql $options
577#   }
578# } -shutdown {
579#   rename crashsql {}
580#   rename sa_crashsql crashsql
581# } -include crash.test
582
583run_tests "safe_append" -description {
584  Run some tests on a SAFE_APPEND file-system.
585} -initialize {
586  rename sqlite3 sqlite3_safeappend
587  proc sqlite3 {args} {
588    if {[string range [lindex $args 0] 0 0] ne "-"} {
589      lappend args -vfs devsym
590    }
591    uplevel [concat sqlite3_safeappend $args]
592  }
593  sqlite3_simulate_device -char safe_append
594} -shutdown {
595  rename sqlite3 {}
596  rename sqlite3_shutdown sqlite3
597} -include [lsort [concat shared_err.test $ALLTESTS]] \
598  -exclude async3.test
599
600# The set of tests to run on the alternative-pcache
601set perm-alt-pcache-testset {
602  async.test
603  attach.test
604  delete.test delete2.test
605  index.test
606  insert.test insert2.test
607  join.test join2.test
608  rollback.test
609  select1.test select2.test
610  trans.test
611  update.test
612}
613
614run_tests "pcache0" -description {
615  Alternative pcache implementation without random discard
616} -initialize {
617  catch {db close}
618  sqlite3_reset_auto_extension
619  sqlite3_shutdown
620  sqlite3_config_alt_pcache 1 0 1
621  sqlite3_initialize
622  autoinstall_test_functions
623} -shutdown {
624  catch {db close}
625  sqlite3_reset_auto_extension
626  sqlite3_shutdown
627  sqlite3_config_alt_pcache 0 0 0
628  sqlite3_config_lookaside 100 500
629  install_malloc_faultsim 1
630  sqlite3_initialize
631} -include ${perm-alt-pcache-testset}
632
633run_tests "pcache10" -description {
634  Alternative pcache implementation without 10% random discard
635} -initialize {
636  catch {db close}
637  sqlite3_reset_auto_extension
638  sqlite3_shutdown
639  sqlite3_config_alt_pcache 1 50 1
640  sqlite3_initialize
641  autoinstall_test_functions
642} -shutdown {
643  catch {db close}
644  sqlite3_reset_auto_extension
645  sqlite3_shutdown
646  sqlite3_config_alt_pcache 0 0 0
647  sqlite3_initialize
648} -include ${perm-alt-pcache-testset}
649
650run_tests "pcache50" -description {
651  Alternative pcache implementation without 50% random discard
652} -initialize {
653  catch {db close}
654  sqlite3_reset_auto_extension
655  sqlite3_shutdown
656  sqlite3_config_alt_pcache 1 50 1
657  sqlite3_initialize
658  autoinstall_test_functions
659} -shutdown {
660  catch {db close}
661  sqlite3_reset_auto_extension
662  sqlite3_shutdown
663  sqlite3_config_alt_pcache 0 0 0
664  sqlite3_initialize
665} -include ${perm-alt-pcache-testset}
666
667run_tests "pcache90" -description {
668  Alternative pcache implementation without 90% random discard
669} -initialize {
670  catch {db close}
671  sqlite3_reset_auto_extension
672  sqlite3_shutdown
673  sqlite3_config_alt_pcache 1 50 1
674  sqlite3_initialize
675  autoinstall_test_functions
676} -shutdown {
677  catch {db close}
678  sqlite3_reset_auto_extension
679  sqlite3_shutdown
680  sqlite3_config_alt_pcache 0 0 0
681  sqlite3_initialize
682} -include ${perm-alt-pcache-testset}
683
684run_tests "pcache100" -description {
685  Alternative pcache implementation that always discards when unpinning
686} -initialize {
687  catch {db close}
688  sqlite3_reset_auto_extension
689  sqlite3_shutdown
690  sqlite3_config_alt_pcache 1 100 1
691  sqlite3_initialize
692  autoinstall_test_functions
693} -shutdown {
694  catch {db close}
695  sqlite3_reset_auto_extension
696  sqlite3_shutdown
697  sqlite3_config_alt_pcache 0 0 0
698  sqlite3_initialize
699} -include ${perm-alt-pcache-testset}
700
701run_tests "journaltest" -description {
702  Check that pages are synced before being written (test_journal.c).
703} -initialize {
704  set ISQUICK 1
705  catch {db close}
706  register_jt_vfs -default ""
707  #sqlite3_instvfs binarylog -default binarylog ostrace.bin
708} -shutdown {
709  #sqlite3_instvfs destroy binarylog
710  unregister_jt_vfs
711} -include [concat $::ALLTESTS savepoint6.test
712] -exclude {
713  incrvacuum.test
714  ioerr.test
715  corrupt4.test
716  io.test
717  crash8.test
718}
719
720# End of tests
721#############################################################################
722
723if {$::perm::testmode eq "targets"} { puts "" ; exit }
724
725# Restore the [sqlite3] command.
726#
727rename sqlite3 {}
728rename really_sqlite3 sqlite3
729
730# Restore the [finish_test] command.
731#
732rename finish_test ""
733rename really_finish_test2 finish_test
734
735# Restore the [do_test] command.
736#
737rename do_test ""
738rename really_do_test do_test
739
740finish_test
741