TET3 is the latest version of the Test Environment Toolkit. This is an UNSUPPORTED source release. See http://tetworks.opengroup.org for more information For quick installation instructions see below. For full documentation refer to the TETware 3.7 documentation available on http://tetworks.opengroup.org/docs.html Please note that TET3.7 does not include support for the Microsoft WIN32 API- that support is only included in the supported TETware releases. Quick Start for Installation. ----------------------------- Typical installation is as follows: Install a .profile for the test suite user Example: TET_ROOT=/home/tet PATH=$PATH:$TET_ROOT/bin export TET_ROOT PATH To configure TET3 cd $TET_ROOT sh configure -t lite # for TETware lite cd src make install (the final command below is not necessary) make compat # for backwards compatibility for include directories If the build fails check the makefiles in src/defines Note: some Make utilities may have trouble with the include directive, this is a known problem on BSDI systems. In this case use GNU Make (gmake). Version 3.75 and higher is known to work. New features in this release ---------------------------- The following features appear for the first time in this release of TET: The Java API is included with the open source release for the first time. See the section entitled ``Support for Java'' in Chapter 3 of the TETware Installation Guide for UNIX Operating systems. The C TCM/API is enhanced to enable realtime signals to be left alone or ignored, both at compile time and at runtime. The ability to compile the C TCM/API to leave realtime signals alone is useful when building the Java API runtime support library on certain platforms; notably Linux. The compile-time functionality is mentioned in the section entitled ``Support for Java'' in Chapter 3 of the TETware Installation Guide for UNIX Operating systems. The runtime functionality is described in the section entitled ``Insulating from the test environment'' in Chapter 8 of the TETware Programmers Guide. The Perl API is upgraded to use perl 5 syntax such that it executes without warnings when run under the control of perl -w (but see ``API status'' later in this document). In Distributed TETware, an optional Transfer Source Files phase is added at the start of the build mode processing of each test case. In this operation, tcc reads file and directory names from a Source File Transfer instruction file on the local system and copies the corresponding files from the test case source directory on the local system to the test case source directory on one or more remote systems. In simple cases a single instruction file may be provided for use with every test case in a test suite. In more complex cases a separate instruction file may be provided for use with each test case in a test suite. Both ASCII and binary file transfers may be specified. This functionality is described in the section entitled ``Transferring source files to remote systems'' in Chapter 3, and the description of TET_TRANSFER_SOURCE_FILES in Chapter 5, both in the TETware Programmers Guide. The format of the Source File Transfer instruction file is described in the section entitled ``Source file transfer instructions'' in Chapter 6 of the TETware Programmers Guide. In Distributed TETware, a test suite may provide a file that associates a file type (that is: ASCII or binary) with a file name suffix. When TET_TRANSFER_SAVE_FILES is true, these associations are used to determine the type of copy operation that should take place during the Save Files phase of execute mode processing. These associations are also used in the Transfer Source Files phase of build mode processing when no explicit file type is specified in the Source File Transfer instruction file. The format of the File Type Specifications file is described in the section entitled ``File type specifications'' in Chapter 6 of the TETware Programmers Guide. Source code for the generic report writer is included in the TETware source distribution. The contrib distribution bundled is contrib-3.7, featuring several new API sets, python, Ruby, an extended TCL API, and a PHP-CLI. Problems fixed since the last release The following problems have been fixed since the last TET release: In Distributed TETware, there was a problem relating to the way in which the common client/server i/o code handled the receipt of multiple SIGPIPE signals. Signal handling did not work in the Perl TCM/API. When rerun or resume mode resulted in tcc processing a scenario directive that had no selected test cases within its scope, tcc could go into an infinite loop under certain circumstances. On a UNIX system, when TET_EXEC_IN_PLACE=false and a test case created a symbolic link below the temporary directory which pointed to a non-existent file, this could result in tcc being unable to remove the temporary directory. On a UNIX system, when TET_EXEC_IN_PLACE=false and a test case created a non- writable or non-searchable directory below the temporary directory, this could result in tcc being unable to remove the temporary directory. Build Notes: In this release the Java API may be built on Solaris and Linux. In order to build the Java API on these systems a variable must be set in the defines.mk file which specifies where the Java Development Kit (JDK) has been installed on your machine. On Solaris Release 7 and later the JDK is supplied with the operating system and so is installed in a standard place (/usr/java). This location is specified in the defines.mk files for such systems that are supplied in the distribution. However, on other platforms the JDK might be installed anywhere, so it is necessary to customise your defines.mk file if you want to build the Java API. Refer to the section entitled ``Support for Java'' in the TETware Installation Guide for instructions on how to do this. In the defines.mk file on UNIX systems it is necessary to specify the list of signals that are used by the Java Virtual Machine, so as to avoid conflict with the use of signals by the TETware Java API runtime support library. This signal list may change, depending on which JDK and/or operating system version you are using. The defines.mk files for various UNIX platforms on which the Java API is supported contain signal lists for particular JDK versions. If you are using a different JDK version you may need to change this list. Please refer to the section entitled ``Support for Java'' in the TETware Installation Guide for UNIX Operating Systems for further details. Perl Notes As indicated previously, the Perl API is upgraded to use perl 5 syntax such that it executes without warnings when run under the control of perl -w. However, test case authors should note that perl test cases may still emit warnings, when run under the control of perl -w, about API interface variables defined in the test case only being used once. For example, consider the following trivial perl test case: #!/usr/bin/perl @iclist=("ic1"); @ic1=("tp1"); $tet'startup = "startup"; $tet'cleanup = "cleanup"; sub startup { &tet'infoline("in startup function"); } sub cleanup { &tet'infoline("in cleanup function"); } sub tp1 { &tet'infoline("This is tp1 in a simple perl test case"); &tet'result("PASS"); } require "$ENV{\"TET_ROOT\"}/lib/perl/tcm.pl"; When run with perl -w, the following warnings are generated from the test case source file: Name "tet::startup" used only once: possible typo at simple.pl line 6. Name "tet::cleanup" used only once: possible typo at simple.pl line 7. Name "main::ic1" used only once: possible typo at simple.pl line 4. Name "main::iclist" used only once: possible typo at simple.pl line 3. When Perl version 5.6 or later is used, it is possible to suppress these warnings by use of the our keyword in the test case source file. For example: #!/usr/bin/perl @iclist=("ic1"); @ic1=("tp1"); $tet'startup = "startup"; $tet'cleanup = "cleanup"; our(@iclist, @ic1); { package tet; our($startup, $cleanup); } rest of test case . . . In this example the code that has been added in order to suppress warning messages is indicated by a character in the right margin.