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