Conecpts

Concepts

Task<T>

Task<T> represents the value of a cell in a lazy and reactive task graph. A cell have a value, but it is not evaluated until it is needed because the task graph is lazy. A cell is re-evaluated when its dependencies change, and the value is required again.

Let's say we have a task graph like the above.

Lazyness

Caching

Let's assume that the value of Task d is required. We evaluate Task d and its dependencies, by doing await or calling .current() on it.

taskend will evaluate the dependencies of Task d and cache the result. Let's say we now require the value of Task e. taskend will check if the cached value of Task a and Task b are still valid. If they are, it will use the cached value.

TestendGraph

TestendGraph is a stateful graph consisting of source files. It should have a unique name among the testend graphs in the package. A graph can be in a greenordirtystate. Note that the whole graph is a unit of the state, and there's no partialgreennor partialdirty. This may change in the future if there's a reasonable reason to support it.

A graph is in a green state if all tests of the graph passed previously. The term previously depends on the context here. In a continuous integration (CI) environment, testend leverages git to utilize the latest commit's test results. Meanwhile, locally, it functions akin to a watch mode with a persistent cache. The detection of whether it is in a CI environment relies on the presence of an environment variable called 'CI'.

CI mode

Local mode