Tutorial Developer Reference 1 Introduction 2 Interface 3 Scanner 4 Parser 5 Analyser 6 Tangle 7 Weave 8 Shell 9 Commands 10 Glossary 11 References SEARCH

8.1 Introduction

One of the goals of FunnelWeb is that it must be extremely portable, and a significant effort has gone into achieving this.

An equally important goal was that of correctness and reliability. To this end, it was determined that a large automated suite of test programs be prepared to assist in regression testing. Preparing the test suite was tedious, but achievable. Automating it portably was more difficult.

The difficulty faced was that if FunnelWeb was implemented in the form of a utility that could be invoked from the operating system command language, the only way to set up regression testing was in the command language of the operating system of the target machine (shellscripts for UNIX, DCL for OpenVMS, batch files for MSDOS, and nothing on the Macintosh). The huge variation in these command languages led to the conclusion that either the automation of regression testing would have to be rewritten on each target machine, or a small command language would have to be created within FunnelWeb. In the end, the twin goals of portability and regression testing were considered so important that a small command shell was constructed inside FunnelWeb. This is called the FunnelWeb command shell, or just "the shell" for short.

By default, when FunnelWeb is invoked, it does not enter its shell. If just given the name of an input file, it will simple process the input file in the normal manner and then terminate. To instruct FunnelWeb to invoke its shell, the `+K` or `+X` command line option must be specified when FunnelWeb is invoked from the operating system. It is also invoked upon startup if the file `fwinit.fws` exists.

Most FunnelWeb users will never need to use the shell and need not even know about it. There are four main uses of the shell:

1. As a tool to support automated regression testing.
2. As a development tool on machines that do not have a built in shell (e.g. the Macintosh). The shell can be used to process whole groups of files automatically.
3. As a convenience. A user working on a multi-tasking, multi-window workstation may wish to keep an interactive session of FunnelWeb going in one window rather than having to run up the utility each time it is required.
4. As a convenient vehicle for enclosing utilities. The FunnelWeb shell contains useful general purpose commands such as the differences command `diff`.

Webmaster Copyright © Ross N. Williams 1992,1999. All rights reserved.