Tests

NoTcl includes a comprehensive test suite covering core functionality, concurrency, and integration with Tcl tools.

Running the tests

To run all tests from the project root:

pytest notcl/tests/

Or with verbose output:

pytest notcl/tests/ -v

Test requirements

Most tests require a Tcl shell to be available. NoTcl includes a custom test shell in utils/test-notcl-tclsh/ that provides additional test commands.

To compile the test shell:

  1. Install Tcl development headers (package tcl-dev on Debian/Ubuntu)

  2. Navigate to utils/test-notcl-tclsh/

  3. Run make

  4. Add the directory to PATH when running pytest:

    PATH=$PATH:/path/to/notcl/utils/test-notcl-tclsh pytest notcl/tests/
    

When the test shell is not found, tests requiring it are automatically skipped.

Test coverage

The test suite includes:

  • Basic functionality (test_tclsh.py): Command evaluation, type conversion, error handling, return value references

  • Concurrency (test_concurrency.py): Nested contexts, parallel tool instances, subprocess compatibility

  • Bridge communication (test_bridge.py): Low-level message passing between Python and Tcl

  • Custom tools (test_custom_tclsh.py): TclRemoteObjRef features, object-oriented API usage

  • Type encoding (test_tclobj.py): Python to Tcl data structure conversion

All tests use the standard Tcl shell (tclsh) as the simplest possible Tcl-based tool, ensuring the library works correctly with minimal dependencies.