test: add a regression test for the bugs discovered with #527

This commit is contained in:
Ryan Leckey 2020-07-17 04:56:58 -07:00
parent cc736df4d6
commit 9befdc81bf

View File

@ -1,11 +1,13 @@
use futures::{FutureExt, TryFutureExt};
use sqlx::any::AnyPoolOptions;
use sqlx::prelude::*;
use sqlx_core::any::AnyPool;
use sqlx_test::new;
use std::sync::{
atomic::{AtomicUsize, Ordering},
Arc,
};
use std::time::Duration;
#[sqlx_macros::test]
async fn pool_should_invoke_after_connect() -> anyhow::Result<()> {
@ -35,3 +37,32 @@ async fn pool_should_invoke_after_connect() -> anyhow::Result<()> {
Ok(())
}
// https://github.com/launchbadge/sqlx/issues/527
#[sqlx_macros::test]
async fn pool_should_be_returned_failed_transactions() -> anyhow::Result<()> {
let pool = AnyPoolOptions::new()
.max_connections(2)
.connect_timeout(Duration::from_secs(3))
.connect(&dotenv::var("DATABASE_URL")?)
.await?;
let query = "blah blah";
let mut tx = pool.begin().await?;
let res = sqlx::query(query).execute(&mut tx).await;
assert!(res.is_err());
drop(tx);
let mut tx = pool.begin().await?;
let res = sqlx::query(query).execute(&mut tx).await;
assert!(res.is_err());
drop(tx);
let mut tx = pool.begin().await?;
let res = sqlx::query(query).execute(&mut tx).await;
assert!(res.is_err());
drop(tx);
Ok(())
}