This project is dedicated to utilities to make Agile Software Engineering, in particular Test Driven Development easier in Tcl.  It has evolved into TIP-452.  This repository shall remain until the TIP is accepted and shipped.

Please do not use the code in this repository, but rather that in the tip's branch.

If you intend to use this in a Tcl version prior to the TIP being accepted and shipped, then t he contents of the  TestSeam.tcl file should be placed in your init.tcl file

The  following commands are added to the tcl test package:

  • ::tcltest::testSetup - Defines which procedures/commands are stubbed out  and how they should behave for each invocation. This should  only be called once per test.
  • :: tcltest::addStub - Adds a procedures/commands  to the list that are stubbed out.
  • :: tcltest::saveVars - Saves the values of variables to be restored later. This should  only be called once per test.
  • :: tcltest::addVars - Add a variable to the list of variables to be restored later
  • :: tcltest::callCount - Returns a dictionary sorted list of the stubbed out  procedures and how many times they were called.
  • :: tcltest::testCleanup - Restores saved variables and stubbed out procedures.
  • :: tcltest::sortedArrayData - Return the values of an array as a list of key value  pairs sorted by the keys.
  • :: tcltest::callProc - Call the real implementation of a stubbed out procedure.
  • :: tcltest::seam - Test seam definition and injection (aka enabling)
  • ::tcltest::testObject - This command creates an instance of an object, runs the specified test against it and then destroys the object.  The syntax is:
 ::tcltest::testObject  name description class ?-options...?

It supports all options of::tcltest::test plus those listed below:
    • -arguments creationArgumentList -- arguments to pass in when creating the object 
    • -constructor script -- override the class constructor with the 
    • -destructor script --  override the class destructor with the 
    • -objectVar variableName -- name to hold the created object, defaults to "cut"
    • -stubs stubDefList -- a list of "instance" methods (those defined in the class) to be "replaced" by the contained definition.  Each element of stubDefList is a duple with the following format:
      • methodName methodBody -- The methodBody will be executed when ever methodName is called instead of the "real" definition.

Supporting Class

::tcltest::object - Class to provide useful object testing utilities



Exported Static Methods

Exported Instance Methods


Thanks to Sean Woods for providing major help with the object based extensions.
Thanks to Noumena Corporation for encouragement and for supporting the Tcl community.