diff --git a/.github/workflows/auto-ready-merge.yml b/.github/workflows/auto-ready-merge.yml index 8a91532a..349f7cd4 100644 --- a/.github/workflows/auto-ready-merge.yml +++ b/.github/workflows/auto-ready-merge.yml @@ -23,4 +23,4 @@ jobs: env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | - gh pr merge "${{ github.event.pull_request.html_url }}" --auto --merge + gh pr merge "${{ github.event.pull_request.html_url }}" --auto --merge || true diff --git a/stdlib/src/sync.rs b/stdlib/src/sync.rs index bdb50b9e..b2d0f07c 100644 --- a/stdlib/src/sync.rs +++ b/stdlib/src/sync.rs @@ -125,4 +125,30 @@ mod tests { let guard = mutex.locked.lock().unwrap(); assert_eq!(*guard, false); } + + #[test] + fn test_script_mutex_lock_unlock() { + use std::sync::Arc; + use std::thread; + use std::time::Duration; + + let mutex = Arc::new(ScriptMutex::new()); + let mutex_clone = Arc::clone(&mutex); + + mutex.lock(); + + let handle = thread::spawn(move || { + mutex_clone.lock(); + mutex_clone.unlock(); + }); + + thread::sleep(Duration::from_millis(50)); + + mutex.unlock(); + + handle.join().unwrap(); + + let guard = mutex.locked.lock().unwrap(); + assert_eq!(*guard, false); + } }