[cylc]
    abort if any task fails = True
    [[events]]
        timeout = PT30S
        abort on timeout = True
[scheduling]
    [[dependencies]]
         graph = """
            foo:fail => bar & baz
            foo:a => !bar
            foo:b => !baz"""
[runtime]
    [[foo]]
        # Abort if messages don't result in the expected suite state change.
        script = """
sleep 5
# There should be 3 task proxies in the suite state.
cylc dump -t $CYLC_SUITE_NAME | sort > log.1
diff log.1 - << __EOF__
bar, 1, waiting, unspawned
baz, 1, waiting, unspawned
foo, 1, running, spawned
__EOF__

cylc message "the quick brown fox"
sleep 5
# There should now be 2 task proxies in the suite state.
cylc dump -t $CYLC_SUITE_NAME | sort > log.2
diff log.2 - << __EOF__
baz, 1, waiting, unspawned
foo, 1, running, spawned
__EOF__

cylc message "jumped over the lazy dog"
sleep 5
# There should now be only 1 task proxy in the suite state.
cylc dump -t $CYLC_SUITE_NAME | sort > log.3
diff log.3 - << __EOF__
foo, 1, running, spawned
__EOF__
"""
        [[[outputs]]]
            a = "the quick brown fox"
            b = "jumped over the lazy dog"
    [[bar, baz]]
