# -*- tcl -*- # idx_import.testsuite: Tests for the managed of index import plugins. # # Copyright (c) 2009 Andreas Kupries # All rights reserved. # # RCS: @(#) $Id: import,v 1.1 2009/04/01 04:28:37 andreas_kupries Exp $ # ------------------------------------------------------------------------- # Tests are run for all formats we have an import plugin for. # ------------------------------------------------------------------------- set mytestdir tests/data set mytestconfig {fox dog lazy jump} set mytestincludes [TestFilesGlob $mytestdir] # ------------------------------------------------------------------------- # ------------------------------------------------------------------------- # docidx markup # We are checking that the various forms of docidx markup, as can be # generated by doctools::idx(::format::docidx) are valid input to the # docidx parser. foreach {k section} { 0 {} 1 -ultracompact 2 -compact 3 -indented 4 -aligned 5 -indalign } { TestFilesProcess $mytestdir ok docidx$section serial-print -> n label input data expected { test doctools-idx-import-plugin-docidx-20.$k.$n "doctools::idx::import text /docidx, $label$section, ok" -setup { doctools::idx::import I foreach {n v} $mytestconfig { I config set $n $v } foreach p $mytestincludes { I include add $p } } -body { doctools::idx::structure print [I import text $data docidx] } -cleanup { I destroy } -result $expected } TestFilesProcess $mytestdir ok docidx$section serial-print -> n label input data expected { test doctools-idx-import-plugin-docidx-21.$k.$n "doctools::idx::import file /docidx, $label$section, ok" -setup { doctools::idx::import I foreach {n v} $mytestconfig { I config set $n $v } foreach p $mytestincludes { I include add $p } } -body { doctools::idx::structure print [I import file $input docidx] } -cleanup { I destroy } -result $expected } } # We test the error messages and codes thrown by the parser for a # variety of failure possibilities. TestFilesProcess $mytestdir fail docidx emsg -> n label input data expected { test doctools-idx-import-plugin-docidx-22.$n "doctools::idx::import text /docidx, $label, error message" -setup { doctools::idx::import I foreach {n v} $mytestconfig { I config set $n $v } foreach p $mytestincludes { I include add $p } } -body { I import text $data docidx } -cleanup { I destroy } -returnCodes error -result $expected } TestFilesProcess $mytestdir fail docidx ecode -> n label input data expected { test doctools-idx-import-plugin-docidx-23.$n "doctools::idx::import text /docidx, $label, error code" -setup { doctools::idx::import I foreach {n v} $mytestconfig { I config set $n $v } foreach p $mytestincludes { I include add $p } } -body { # Catch and rethrow using the error code as new message. catch { I import text $data docidx } set ::errorCode } -cleanup { I destroy } -result $expected } TestFilesProcess $mytestdir fail docidx emsg -> n label input data expected { test doctools-idx-import-plugin-docidx-24.$n "doctools::idx::import file /docidx, $label, error message" -setup { doctools::idx::import I foreach {n v} $mytestconfig { I config set $n $v } foreach p $mytestincludes { I include add $p } } -body { I import file $input docidx } -cleanup { I destroy } -returnCodes error -result $expected } TestFilesProcess $mytestdir fail docidx ecode -> n label input data expected { test doctools-idx-import-plugin-docidx-25.$n "doctools::idx::import file /docidx, $label, error code" -setup { doctools::idx::import I foreach {n v} $mytestconfig { I config set $n $v } foreach p $mytestincludes { I include add $p } } -body { # Catch and rethrow using the error code as new message. catch { I import file $input docidx } set ::errorCode } -cleanup { I destroy } -result $expected } # ------------------------------------------------------------------------- # ------------------------------------------------------------------------- # text markup - This is not an importable format. # ------------------------------------------------------------------------- # ------------------------------------------------------------------------- # json - Java Script Object Notation # We are checking that the various forms of json markup, as can be # generated by doctools::idx(::export(::json)) are valid input to the # json parser. # # section {} holds the non-canonical input we have to accept and make # canonical to higher layers. foreach {k section} { 0 {} 1 -ultracompact 2 -indented 3 -indalign } { TestFilesProcess $mytestdir ok json$section serial-print -> n label input data expected { test doctools-idx-import-plugin-json-26.$k.$n "doctools::idx::import text /json, $label$section, ok" -setup { doctools::idx::import I } -body { doctools::idx::structure print [I import text $data json] } -cleanup { I destroy } -result $expected } TestFilesProcess $mytestdir ok json$section serial-print -> n label input data expected { test doctools-idx-import-plugin-json-27.$k.$n "doctools::idx::import file /json, $label$section, ok" -setup { doctools::idx::import I } -body { doctools::idx::structure print [I import file $input json] } -cleanup { I destroy } -result $expected } } # ------------------------------------------------------------------------- # We test the error messages and codes thrown by the parser for a # variety of failure possibilities. TestFilesProcess $mytestdir fail json json-emsg -> n label input data expected { test doctools-idx-import-plugin-json-28.$n "doctools::idx::import text /json, $label, error message" -setup { doctools::idx::import I } -body { I import text $data json } -cleanup { I destroy } -returnCodes error -result $expected } # ------------------------------------------------------------------------- unset mytestdir n label input data expected return