chiark / gitweb /
wdriver: Return Generation, not a String, from synch
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 5 Apr 2021 16:56:56 +0000 (17:56 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 5 Apr 2021 16:56:56 +0000 (17:56 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
wdriver/wdriver.rs
wdriver/wdt-simple.rs

index c07d2c9f30a886dd069d45a5a3b9e768bde81a9b..04cf6c3dc114af2c5fd4628765a7b87be5ed95cc 100644 (file)
@@ -632,7 +632,7 @@ impl<'g> WindowGuard<'g> {
   }
 
   #[throws(AE)]
-  fn synch_raw(&mut self) -> String {
+  fn synch_raw(&mut self) -> Generation {
     let gen = self.su.mgmt_conn().game_synch(self.w.instance.clone())?;
     (|| {
       loop {
@@ -658,23 +658,25 @@ impl<'g> WindowGuard<'g> {
       Ok::<(),AE>(())
     })()
       .context("await gen update via async js script")?;
-    synch_logentry(gen).into_html_string()
+    gen
   }
 
   #[throws(AE)]
-  pub fn synch_ignore_js_errors(&mut self) {
-    self.synch_raw()?;
+  pub fn synch_ignore_js_errors(&mut self) -> Generation {
+    let gen = self.synch_raw()?;
 
     self.su.driver.execute_script(r#"
       let e = document.getElementById('error');
       e.innerHTML = "";
     "#)
       .context("clear in-client trapped errors")?;
+
+    gen
   }
 
   #[throws(AE)]
-  pub fn synch(&mut self) {
-    self.synch_raw()?;
+  pub fn synch(&mut self) -> Generation {
+    let gen = self.synch_raw()?;
 
     (|| {
       let errors = self.su.driver.execute_script(r#"
@@ -697,6 +699,8 @@ impl<'g> WindowGuard<'g> {
       Ok::<(),AE>(())
     })()
       .context("check for in-client trapped errors")?;
+
+    gen
   }
 
   /// These come in stacking order, bottom to top.
index 0412d3f989915e1dd79e9657d6a98b145815caa3..d975da2e044924521cf7e0d39262c5f8b239294f 100644 (file)
@@ -176,6 +176,7 @@ impl Ctx {
       window: &'s Window,
       start: Pos,
       try_end: Pos,
+      gen: Generation,
     }
 
     let mut mk_side = |window, dx| {
@@ -192,9 +193,9 @@ impl Ctx {
         .perform()
         .did("select and release")?;
 
-      w.synch()?;
+      let gen = w.synch()?;
 
-      Ok::<_,AE>(Side { window, start, try_end })
+      Ok::<_,AE>(Side { window, start, try_end, gen })
     };
 
     let sides = [