Ver código fonte

fix make tests

Jonathan Kelley 1 ano atrás
pai
commit
7e54039ed2

+ 4 - 2
packages/core/src/runtime.rs

@@ -155,8 +155,10 @@ impl Runtime {
     /// This means the virtual dom is currently doing syncronous work
     /// The lock will be held until `release_flush_lock` is called - and then the OwnedLock will be dropped
     pub(crate) fn acquire_flush_lock(&self) {
-        self.flush_lock
-            .set(Some(self.flush_mutex.try_lock_owned().unwrap()));
+        // The flush lock might already be held...
+        if let Some(lock) = self.flush_mutex.try_lock_owned() {
+            self.flush_lock.set(Some(lock));
+        }
     }
 
     /// Release the flush lock

+ 1 - 0
packages/core/src/virtual_dom.rs

@@ -450,6 +450,7 @@ impl VirtualDom {
             // When we're doing awaiting the rx, the lock will be dropped and tasks waiting on the lock will get waked
             // We have to own the lock since poll_tasks is cancel safe - the future that this is running in might get dropped
             // and if we held the lock in the scope, the lock would also get dropped prematurely
+            self.runtime.release_flush_lock();
             self.runtime.acquire_flush_lock();
 
             match self.rx.next().await.expect("channel should never close") {

+ 1 - 1
packages/core/tests/task.rs

@@ -16,7 +16,7 @@ async fn run_vdom(app: fn() -> Element) {
 }
 
 #[tokio::test]
-async fn it_works() {
+async fn running_async() {
     static POLL_COUNT: AtomicUsize = AtomicUsize::new(0);
 
     fn app() -> Element {

+ 1 - 1
packages/plasmo/src/lib.rs

@@ -259,7 +259,7 @@ pub fn render<R: Driver>(
                                     TermEvent::Resize(_, _) => updated = true,
                                     _ => {}
                                 },
-                                InputEvent::Close => panic!("ackkkk"),
+                                InputEvent::Close => break,
                             };
 
                             if let InputEvent::UserInput(evt) = evt.unwrap() {