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'.