unitizer icon indicating copy to clipboard operation
unitizer copied to clipboard

State Tracking for Reference Objects

Open brodieG opened this issue 7 years ago • 2 comments

Currently we're resetting state without checking whether the state should be from a reference or a new object. This is an issue with deleted items for which clearly the state must be reference. In theory, could resolve this by merging states prior to browsing, and re-assigning all the state indices in reference objects.

brodieG avatar Oct 23 '16 15:10 brodieG

Was this not addressed in mergeStates? See also #197. Leaving open until we confirm.

brodieG avatar Feb 23 '17 02:02 brodieG

So, mergeStates just handles the compressed version of state that is kept with the unitizer objects for display purposes in diffs. What we're talking about here is the actual state (pre-compression), which we only have for new evaluations in global$tracking.

As such, we probably don't have a good way of setting actual state for either deleted objects or in review mode.

The current implementation is probably all bad since it is attempting to use reference indices against our new target objects. Instead, it should probably use zero state? Not ideal, because this may cause deleted tests to behave differently than how they are stored (e.g. a deleted test requires loading of a library, but the library load happens in a non-deleted test).

Thinking about it a bit more, zero env seems an okay solution for review tests, and maybe use the last state for deleted tests? Maybe need to warn about / document someplace what's happening here? Basically we don't have a good way of re-creating the reference state. All we have is the compressed version that can tell us if there are obvious state differences, but that isn't enough to actually recreate the state.

brodieG avatar Feb 26 '17 16:02 brodieG