From 2ea757027e90ecfb66eff071a15580dec14a0c0c Mon Sep 17 00:00:00 2001 From: Chris Guida Date: Fri, 26 Mar 2021 09:12:39 -0600 Subject: [PATCH] add a proptest --- patch-db/src/test.rs | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/patch-db/src/test.rs b/patch-db/src/test.rs index fc967cb..8f1a761 100644 --- a/patch-db/src/test.rs +++ b/patch-db/src/test.rs @@ -1,9 +1,10 @@ use super::*; use proptest::prelude::*; -use tokio::runtime::Builder; +use tokio::{fs, runtime::Builder}; -async fn init_test_env() -> PatchDb { - let db = PatchDb::open("test.db").await.unwrap(); +async fn init_db(db_name: String) -> PatchDb { + cleanup_db(&db_name).await; + let db = PatchDb::open(db_name).await.unwrap(); db.put( &JsonPointer::<&'static str>::default(), &Sample { @@ -18,6 +19,10 @@ async fn init_test_env() -> PatchDb { db } +async fn cleanup_db(db_name: &String) { + fs::remove_file(db_name).await.ok(); +} + async fn put_string_into_root(db: PatchDb, s: String) -> Arc { println!("trying string: {}", s); db.put( @@ -30,25 +35,26 @@ async fn put_string_into_root(db: PatchDb, s: String) -> Arc { #[tokio::test] async fn basic() { - let db = init_test_env().await; + let db = init_db("basic".to_string()).await; let ptr: JsonPointer = "/b/b".parse().unwrap(); let mut get_res: Value = db.get(&ptr).await.unwrap(); assert_eq!(get_res, 1); db.put(&ptr, &"hello").await.unwrap(); get_res = db.get(&ptr).await.unwrap(); assert_eq!(get_res, "hello"); + cleanup_db(&"basic".to_string()).await; } #[tokio::test] async fn transaction() { - let db = init_test_env().await; + let db = init_db("transaction".to_string()).await; let mut tx = db.begin(); let ptr: JsonPointer = "/b/b".parse().unwrap(); tx.put(&ptr, &(2 as usize)).await.unwrap(); tx.put(&ptr, &(1 as usize)).await.unwrap(); let _res = tx.commit().await.unwrap(); println!("res = {:?}", _res); - + cleanup_db(&"transaction".to_string()).await; } proptest! { @@ -61,9 +67,11 @@ proptest! { .thread_stack_size(3 * 1024 * 1024) .build() .unwrap(); - let db = runtime.block_on(init_test_env()); + let db = runtime.block_on(init_db("doesnt_crash".to_string())); let put_future = put_string_into_root(db, s); runtime.block_on(put_future); + runtime.block_on(cleanup_db(&"doesnt_crash".to_string())); + } }