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 green
ordirty
state.
Note that the whole graph is a unit of the state, and there's no partialgreen
nor 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'.