Most of our Span actions don't mutate the object because we just
immediately emit messages to the test log, but SetName directly modifies
the span name so we need to pass by pointer so we can honor that rename.
This code is still under development and so we have some stuff that's
there to support further work despite not actually being used yet. We
should reconsider these changes later on once the work here has settled.
This is the public entry point for the overall validation of an entire
stack configuration. So far it supports validation only of input variables,
embedded stack calls, and output values. We'll grow this to support other
language constructs in later commits.
This is a relatively large commit due to introducing various supporting
infrastructure to help make evaluation possible at all. Subsequent commits
will hopefully be more focused due to being able to depend on the
foundations introduced here.
Since our stackeval package is instrumented for OpenTelemetry tracing,
it's helpful to be able to see the trace events as part of the test log
when debugging.
tracesToTestLog arranges for any spans to be announced into the main test
log for the remainder of the current test, and then restores the original
trace provider afterwards as a test cleanup action.