0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews# Copyright (C) 1999-2001, 2004, 2007, 2012, 2016 Internet Systems Consortium, Inc. ("ISC")
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews# This Source Code Form is subject to the terms of the Mozilla Public
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews# License, v. 2.0. If a copy of the MPL was not distributed with this
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews# file, You can obtain one at http://mozilla.org/MPL/2.0/.
70e5a7403f0e0a3bd292b8287c5fed5772c15270Automatic Updater# $Id: t_api.pl,v 1.10 2007/06/19 23:46:59 tbox Exp $
c34b793ca866723d5fcad54bf1c600994a305661William King# a minimalistic test api in perl compatable with the C api
c34b793ca866723d5fcad54bf1c600994a305661William King# used for the bind 9 regression tests
c34b793ca866723d5fcad54bf1c600994a305661William King local($result) = @_;
c34b793ca866723d5fcad54bf1c600994a305661William King printf("R:$result\n");
c34b793ca866723d5fcad54bf1c600994a305661William King local($component, $anum, $class, $what, @rest) = @_;
c34b793ca866723d5fcad54bf1c600994a305661William King printf("A:%s:%d:%s:$what\n", $component, $anum, $class, @rest);
c34b793ca866723d5fcad54bf1c600994a305661William King local($name) = @_;
c34b793ca866723d5fcad54bf1c600994a305661William King return($T_env{$name}) if (defined($T_env{$name}));
c34b793ca866723d5fcad54bf1c600994a305661William King# initialize the test environment
c34b793ca866723d5fcad54bf1c600994a305661William King local($cfile) = @_;
c34b793ca866723d5fcad54bf1c600994a305661William King if ((-f $cfile) && (-s _)) {
c34b793ca866723d5fcad54bf1c600994a305661William King next if (/^\#/);
c34b793ca866723d5fcad54bf1c600994a305661William King next unless (/=/);
c34b793ca866723d5fcad54bf1c600994a305661William King# dump the configuration to the journal
c34b793ca866723d5fcad54bf1c600994a305661William King &main't_info("%s\t%s\n", $name, $T_env{$name});
c34b793ca866723d5fcad54bf1c600994a305661William King if (! defined($status)) {
c34b793ca866723d5fcad54bf1c600994a305661William King &t_info("The test case timed out\n") if ($t_api'T_timedout);
c34b793ca866723d5fcad54bf1c600994a305661William King &t_info("The test case was terminated\n") if ($t_api'T_terminated);
c34b793ca866723d5fcad54bf1c600994a305661William King &t_info("The test case was aborted\n") if ($t_api'T_aborted);
c34b793ca866723d5fcad54bf1c600994a305661William King &t_info("Test %d is not defined\n", $testnumber);
c34b793ca866723d5fcad54bf1c600994a305661William King c <configfile> : use configfile instead of t_config
c34b793ca866723d5fcad54bf1c600994a305661William King t <name> : run test named testname (not implemented)
c34b793ca866723d5fcad54bf1c600994a305661William King# get command line args
c34b793ca866723d5fcad54bf1c600994a305661William King# if -u, print usage and exit
c34b793ca866723d5fcad54bf1c600994a305661William King# implement -h and -t after we add test descriptions to T_testlist ZZZ
c34b793ca866723d5fcad54bf1c600994a305661William King print "the -h option is not implemented\n";
c34b793ca866723d5fcad54bf1c600994a305661William King print "the -t option is not implemented\n";
c34b793ca866723d5fcad54bf1c600994a305661William King# silently ignore the -x option
c34b793ca866723d5fcad54bf1c600994a305661William King# this exists in the C version of the api
c34b793ca866723d5fcad54bf1c600994a305661William King# to facilitate exception debugging with gdb
c34b793ca866723d5fcad54bf1c600994a305661William King# and is not meaningful here
c34b793ca866723d5fcad54bf1c600994a305661William King$T_debug = $main'opt_d if (defined($main'opt_d));
c34b793ca866723d5fcad54bf1c600994a305661William King$T_configfile = $main'opt_c if (defined($main'opt_c));
c34b793ca866723d5fcad54bf1c600994a305661William King$T_testnum = $main'opt_n if (defined($main'opt_n));
c34b793ca866723d5fcad54bf1c600994a305661William King$T_timeout = $main'opt_q if (defined($main'opt_q));
c34b793ca866723d5fcad54bf1c600994a305661William King# print the start line
c34b793ca866723d5fcad54bf1c600994a305661William Kingprintf("S:$cmd:$date\n");
c34b793ca866723d5fcad54bf1c600994a305661William King# initialize the test environment
c34b793ca866723d5fcad54bf1c600994a305661William King# establish working directory if requested
c34b793ca866723d5fcad54bf1c600994a305661William Kingchdir("$T_dir") if (defined($T_dir) && (-d "$T_dir"));
c34b793ca866723d5fcad54bf1c600994a305661William King# run the tests
c34b793ca866723d5fcad54bf1c600994a305661William King # run all tests
c34b793ca866723d5fcad54bf1c600994a305661William King for ($T_cnt = 0; $T_cnt < $T_ntests; ++$T_cnt) {
c34b793ca866723d5fcad54bf1c600994a305661William King # otherwise run the specified test
c34b793ca866723d5fcad54bf1c600994a305661William King# print the end line
c34b793ca866723d5fcad54bf1c600994a305661William Kingprintf("E:$cmd:$date\n");