Add more strongly typed wrapper around test.macro
#3883
+228
−342
Merged