Basic test dependencies#
The depends_on() directive designates one test case as dependent on another. Dependent test cases will not run until all of its dependencies run to completion. When the test case is run, it can query the properties of its dependencies by the instance.dependencies attribute.
Example#
# Copyright NTESS. See COPYRIGHT file for details.
#
# SPDX-License-Identifier: MIT
import sys
import canary
canary.directives.depends_on("a")
def depends_on_a():
instance = canary.get_instance()
assert len(instance.dependencies) == 1
assert instance.dependencies[0].name == "a"
if __name__ == "__main__":
sys.exit(depends_on_a())
depends_on_a will not run until after a runs:
$ canary run ./depends_on/basic
INFO: Initializing empty canary workspace at .
INFO: Collecting generator files from depends_on/basic
INFO: Instantiating generators from collected files
INFO: Generating test specs from generators
INFO: Searching for duplicated tests
INFO: Resolving test spec dependencies
INFO: Generated 2 test specs from 2 generators
INFO: Caching test specs
INFO: Created selection 'bright-shark'
INFO: Selecting test jobs based on runtime environment
INFO: Starting session 2026-06-04T20-43-11.335682
INFO: Starting process pool with max 1 workers
Job ID Status Elapsed Rank
─────────────────────────────────────────────────────────────────────────────────────────
a 76e93b8 SUBMITTED 1/2
a 76e93b8 STARTED 1/2
a 76e93b8 PASS (SUCCESS) 0.4s 1/2
depends_on_a 12e9bb0 SUBMITTED 2/2
depends_on_a 12e9bb0 STARTED 2/2
depends_on_a 12e9bb0 PASS (SUCCESS) 0.4s 2/2
INFO: 2/2 tests finished with status PASS
INFO: Finished session in 0.96 s. with returncode 0
INFO: Updating view at /home/docs/checkouts/readthedocs.org/user_builds/canary-wm/checkouts/latest/src/canary/examples/TestResults