From 522b64125bbef1bed640b1afb55b9ccec45e4585 Mon Sep 17 00:00:00 2001 From: olexiyb Date: Thu, 13 Jun 2024 20:47:23 +0300 Subject: [PATCH] use V16 for tests cleanup zip file binaries another fix of windows test --- Cargo.toml | 5 +++-- src/pg_access.rs | 13 +++++++++---- tests/common.rs | 17 +++++++++++++---- tests/postgres_tokio.rs | 4 ++-- 4 files changed, 27 insertions(+), 12 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 8556b3e..4def84c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -45,9 +45,10 @@ async-trait = "0.1" xz2 = "0.1" tar = "0.4" + [dev-dependencies] -serial_test = "2.0.0" -env_logger = "0.10" +serial_test = "3" +env_logger = "0.11" [[test]] name = "migration_tokio" diff --git a/src/pg_access.rs b/src/pg_access.rs index dde372e..115edbb 100644 --- a/src/pg_access.rs +++ b/src/pg_access.rs @@ -72,11 +72,9 @@ impl PgAccess { Self::create_db_dir_structure(database_dir).await?; // pg_ctl executable - let mut pg_ctl = cache_dir.clone(); - pg_ctl.push("bin/pg_ctl"); + let pg_ctl = cache_dir.clone().join("bin").join("pg_ctl"); // initdb executable - let mut init_db = cache_dir.clone(); - init_db.push("bin/initdb"); + let init_db = cache_dir.clone().join("bin").join("initdb"); // postgres zip file let mut zip_file_path = cache_dir.clone(); let platform = fetch_settings.platform(); @@ -168,6 +166,13 @@ impl PgAccess { self.cache_dir.display() ); pg_unpack::unpack_postgres(&self.zip_file_path, &self.cache_dir).await?; + tokio::fs::remove_file(&self.zip_file_path) + .await + .map_err(|e| PgEmbedError { + error_type: PgEmbedErrorType::PgCleanUpFailure, + source: Some(Box::new(e)), + message: None, + })?; lock.insert(self.cache_dir.clone(), PgAcquisitionStatus::Finished); Ok(()) diff --git a/tests/common.rs b/tests/common.rs index 1e5cff5..7b49d19 100644 --- a/tests/common.rs +++ b/tests/common.rs @@ -2,10 +2,11 @@ use std::path::PathBuf; use std::time::Duration; use env_logger::Env; +use futures::TryFutureExt; use pg_embed::pg_enums::PgAuthMethod; -use pg_embed::pg_errors::PgEmbedError; -use pg_embed::pg_fetch::{PgFetchSettings, PG_V15}; +use pg_embed::pg_errors::{PgEmbedError, PgEmbedErrorType}; +use pg_embed::pg_fetch::{PgFetchSettings, PG_V16}; use pg_embed::postgres::{PgEmbed, PgSettings}; pub async fn setup( @@ -17,9 +18,17 @@ pub async fn setup( let _ = env_logger::Builder::from_env(Env::default().default_filter_or("info")) .is_test(true) .try_init(); + let cache_dir = PathBuf::from("data_test").join("cache"); + tokio::fs::create_dir_all(&cache_dir) + .map_err(|e| PgEmbedError { + error_type: PgEmbedErrorType::DirCreationError, + source: Some(Box::new(e)), + message: None, + }) + .await?; let pg_settings = PgSettings { database_dir, - cache_dir: None, + cache_dir: Some(cache_dir), port, user: "postgres".to_string(), password: "password".to_string(), @@ -29,7 +38,7 @@ pub async fn setup( migration_dir, }; let fetch_settings = PgFetchSettings { - version: PG_V15, + version: PG_V16, ..Default::default() }; let mut pg = PgEmbed::new(pg_settings, fetch_settings).await?; diff --git a/tests/postgres_tokio.rs b/tests/postgres_tokio.rs index 76afe8c..d6b3066 100644 --- a/tests/postgres_tokio.rs +++ b/tests/postgres_tokio.rs @@ -8,7 +8,7 @@ use env_logger::Env; use pg_embed::pg_access::PgAccess; use pg_embed::pg_enums::{PgAuthMethod, PgServerStatus}; use pg_embed::pg_errors::PgEmbedError; -use pg_embed::pg_fetch::{PgFetchSettings, PG_V15}; +use pg_embed::pg_fetch::{PgFetchSettings, PG_V16}; use pg_embed::postgres::{PgEmbed, PgSettings}; use std::time::Duration; @@ -156,7 +156,7 @@ async fn postgres_server_timeout() -> Result<(), PgEmbedError> { migration_dir: None, }; let fetch_settings = PgFetchSettings { - version: PG_V15, + version: PG_V16, ..Default::default() }; let mut pg = PgEmbed::new(pg_settings, fetch_settings).await?;