(executables
 (names error1 error2 error3)
 (modes js))

(rule
 (target error1.actual)
 (deps error1.html)
 (alias runtest)
 (action
  (with-accepted-exit-codes
   2
   (with-outputs-to
    %{target}
    (run node %{dep:error1.bc.js})))))

(rule
 (alias runtest)
 (action
  (diff %{dep:error1.expected} %{dep:error1.actual})))

(rule
 (target error1-unregister.actual)
 (deps error1-unregister.html)
 (alias runtest)
 (action
  (with-accepted-exit-codes
   2
   (with-outputs-to
    %{target}
    (run node %{dep:error1.bc.js} unregister)))))

(rule
 (alias runtest)
 (action
  (diff %{dep:error1-unregister.expected} %{dep:error1-unregister.actual})))

(rule
 (target error2.actual)
 (deps error2.html)
 (alias runtest)
 (action
  (with-accepted-exit-codes
   2
   (with-outputs-to
    %{target}
    (run node %{dep:error2.bc.js})))))

(rule
 (alias runtest)
 (action
  (diff %{dep:error2.expected} %{dep:error2.actual})))

(rule
 (target error2-unregister.actual)
 (deps error2-unregister.html)
 (alias runtest)
 (action
  (with-accepted-exit-codes
   2
   (with-outputs-to
    %{target}
    (run node %{dep:error2.bc.js} unregister)))))

(rule
 (alias runtest)
 (action
  (diff %{dep:error2-unregister.expected} %{dep:error2-unregister.actual})))

;; We don't expect the output of error3 as it will be flacky

(rule
 (target error3.actual)
 (deps error3.html)
 (alias runtest)
 (action
  (with-accepted-exit-codes
   7
   (with-outputs-to
    %{target}
    (run node %{dep:error3.bc.js})))))

(rule
 (target error3-unregister.actual)
 (deps error3-unregister.html)
 (alias runtest)
 (action
  (with-accepted-exit-codes
   7
   (with-outputs-to
    %{target}
    (run node %{dep:error3.bc.js} unregister)))))
