chiark / gitweb /
wdt: Do not tolerate JS errors
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 10 Jul 2021 18:19:23 +0000 (19:19 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 10 Jul 2021 18:20:09 +0000 (19:20 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
wdriver/wdriver.rs

index 0961886833fcf6e4d424d98df25bb5d536d3e29b..16c9f47e8efb29d568aadaddd51923116b4e96f3 100644 (file)
@@ -199,6 +199,12 @@ impl JsLogfileImp {
   /// current window must be this one, named `name` as we passed to open
   #[throws(AE)]
   pub fn fetch(&mut self, driver: &T4d) {
+    self.fetchx(driver, false)?;
+  }
+
+  /// current window must be this one, named `name` as we passed to open
+  #[throws(AE)]
+  pub fn fetchx(&mut self, driver: &T4d, tolerate_errors: bool) {
     self.counter += 1;
     let head = format!(
  "-------------------- JS {} {} --------------------",
@@ -206,6 +212,8 @@ impl JsLogfileImp {
     );
     writeln!(&mut self.fh, "{}", &head)?;
 
+    let mut intolerable = vec![];
+
     (||{
       let got = driver.execute_script(r#"
         var returning = window.console.saved;
@@ -230,12 +238,22 @@ impl JsLogfileImp {
           .context("parse log entry")?;
 
         writeln!(&mut self.fh, "{:?}", &ent)?;
+
+        if ! tolerate_errors {
+          match ent.0.as_str() {
+            "log" => { },
+            _ => intolerable.push(ent)
+          }
+        }
       }
       Ok::<_,AE>(())
     })()
       .with_context(|| self.name.clone())
       .context("fetch JS log messages")?;
 
+    assert!{ intolerable.is_empty(),
+             "Intolerable JS error(s) {:#?}", intolerable };
+
     info!("{}", head);
   }
 }