Support for Michelson unit tests in TZT format
In 2019, to test the formalization of Michelson in the K framework, Runtime Verification designed the TZT format and wrote a test suite in this format which fully covered the K semantics of Michelson.
In 2020, I opened the TZT meta-issue https://gitlab.com/nomadic-labs/tezos/-/issues/63 which gives more detailed context, I documented the TZT format in MR !1487 (merged) and implemented support for the TZT format in the client in MR metastatedev/tezos!83 which I've never marked as ready because it contains some horrible hacks to support unit testing of the instructions building internal operations.
To host the tests themselves, https://gitlab.com/tezos/tzt-reference-test-suite was created.
In 2022, I attempted to reboot the client support work in MR !4474 (merged) and after gathering some feedback I came up with a plan to split it into mergeable pieces but I was caught by more urgent work before I could start implementing the plan.
Now, in 2023, new Michelson runtimes are being developed and would benefit from a reference test suite. In particular https://github.com/baking-bad/tezos-on-tezos/tree/master/tezos_vm and https://gitlab.com/tezos/tezos/-/tree/master/contrib/mir.
Work breakdown:
-
RPC + client support for normalization of stacks !7731 (merged), -
RPC + client support for the step function of the interpreter !9935 (merged), -
local origination of contracts and big maps (#2528 (closed) !9946 (merged)), -
minimal support of TZT in the client (!10898 (merged)) -
support for all of TZT but operations (!4474 (merged)), -
protocol change needed to support operations (either a change in parsing of operations or in readable unparsing, or both) (!10938) -
support for operations (!10938)