Skip to content

Commit f75e2fe

Browse files
committed
tag controls for Watchdog
1 parent c681e36 commit f75e2fe

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

Kernel/LocalKernel.wl

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -118,9 +118,12 @@ tcpConnect[port_, o_LocalKernelObject] := With[{shared = af`SharedDir, host = o[
118118
EventFire[Internal`Kernel`Stdout[secret], "Pong", True];
119119
);
120120

121-
Internal`Kernel`Watchdog["Assertion", name_String, test_, action_] := (
121+
Internal`Kernel`Watchdog["Assertion", name_String, test_, action_] := With[{uid = CreateUUID[]},
122+
Internal`Kernel`Watchdog["Assertion", name, test, action, uid ];
123+
];
124+
Internal`Kernel`Watchdog["Assertion", name_String, test_, action_, tag_] := (
122125
If[!KeyExistsQ[Internal`Kernel`Watchdog`store, name],
123-
Internal`Kernel`Watchdog`store[name] = {Hold[test], Hold[action]};
126+
Internal`Kernel`Watchdog`store[name] = {Hold[test], Hold[action], tag};
124127
Internal`Kernel`Watchdog`state[name] = ReleaseHold[test];
125128
];
126129
);
@@ -129,14 +132,19 @@ tcpConnect[port_, o_LocalKernelObject] := With[{shared = af`SharedDir, host = o[
129132

130133
Internal`Kernel`Watchdog`$Journal = {};
131134

132-
Internal`Kernel`Watchdog["Test"] := With[{},
135+
Internal`Kernel`Watchdog["Test"] := Module[{firedTags},
133136
KeyValueMap[Function[{key, value},
134137
If[Internal`Kernel`Watchdog`state[key] =!= ReleaseHold[value[[1]]],
135138
Internal`Kernel`Watchdog`$Journal = Append[Internal`Kernel`Watchdog`$Journal, {StringTemplate[Internal`Kernel`Watchdog::assert][key], Now} ];
136-
value[[2]] // ReleaseHold;
139+
140+
If[!TrueQ[firedTags[value[[3]] ] ], value[[2]] // ReleaseHold];
141+
With[{v = value[[3]]}, firedTags[v] = True];
142+
137143
Internal`Kernel`Watchdog`state[key] = ReleaseHold[value[[1]]];
138144
];
139145
], Internal`Kernel`Watchdog`store ];
146+
147+
ClearAll[firedTags];
140148
];
141149

142150
Internal`Kernel`Watchdog["QuickTest"] := Internal`Kernel`Watchdog["Test"];

0 commit comments

Comments
 (0)