Run SUnit Tests
Execute SUnit tests after importing changes to the Smalltalk image.
Usage
/st-test TestClassName # run a single test class
/st-test PackageName-Tests # run all tests in a package
Steps
With arguments: run a specific test class or package
- Determine whether the argument is a class name or a package name
- Class name (e.g.
RsJsonTest) → callrun_class_test - Package name (e.g.
RediStick-Json-Tests) → callrun_package_test
- Class name (e.g.
- Report pass/fail counts and any failures
Without arguments: run all test packages in the project
When no arguments are given, discover and run all test packages automatically:
Locate the source directory — read
.projectfrom the repository root and extract thesrcDirectoryvalue. Resolve it to an absolute path.Identify test packages — find the
BaselineOfpackage inside the source directory (a directory starting withBaselineOf) and read itsBaselineOfXXX.class.st. Parse thebaseline: specmethod and collect all packages whose names end with-Tests(or follow the project's test-naming convention).Check what is already imported — call
list_packagesto get the list of packages currently loaded in the Smalltalk image.Run tests for imported packages — for each test package that is present in the image, call
run_package_testand report the pass/fail results.Report unimported packages — for any test package found in the BaselineOf but not loaded in the image, skip running tests and report it to the user with a note that they can run
/st-importfirst to load it.
Examples
/st-test RsJsonTest
/st-test RediStick-Json-Tests