Its purpose is to provide a single front end for all tests. Beyond this, DejaGnu offers several advantages for testing. The flexibility and consistency of the DejaGnu framework make it easy to write tests for any program. DejaGnu provides a layer of abstraction which makes all tests (if correctly written) portable to any host or target where a program must be tested. For instance, a test for GDB can run (from any Unix based host) on any target architecture supported by DejaGnu. DejaGnu is written in expect, which in turn uses Tcl.